1
// -*- mode: C++; tab-width: 2; -*-
4
// --------------------------------------------------------------------------
5
// OpenMS Mass Spectrometry Framework
6
// --------------------------------------------------------------------------
7
// Copyright (C) 2003-2011 -- Oliver Kohlbacher, Knut Reinert
9
// This library is free software; you can redistribute it and/or
10
// modify it under the terms of the GNU Lesser General Public
11
// License as published by the Free Software Foundation; either
12
// version 2.1 of the License, or (at your option) any later version.
14
// This library is distributed in the hope that it will be useful,
15
// but WITHOUT ANY WARRANTY; without even the implied warranty of
16
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
// Lesser General Public License for more details.
19
// You should have received a copy of the GNU Lesser General Public
20
// License along with this library; if not, write to the Free Software
21
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23
// --------------------------------------------------------------------------
24
// $Maintainer: Clemens Groepl $
26
// --------------------------------------------------------------------------
29
#ifndef OPENMS_TRANSFORMATIONS_FEATUREFINDER_EXTENDEDISOTOPEMODEL_H
30
#define OPENMS_TRANSFORMATIONS_FEATUREFINDER_EXTENDEDISOTOPEMODEL_H
32
#include <OpenMS/TRANSFORMATIONS/FEATUREFINDER/InterpolationModel.h>
37
@brief Extended isotope distribution approximated using linear interpolation.
39
This models a smoothed (widened) distribution, i.e. can be used to sample actual raw peaks (depending on the points you query).
40
If you only want the distribution (no widening), use either
41
EmpiricalFormula::getIsotopeDistribution() // for a certain sum formula
43
IsotopeDistribution::estimateFromPeptideWeight (double average_weight) // for averagine
45
Peak widening is achieved by a Gaussian shape.
47
@htmlinclude OpenMS_ExtendedIsotopeModel.parameters
49
class OPENMS_DLLAPI ExtendedIsotopeModel
50
: public InterpolationModel
54
typedef InterpolationModel::CoordinateType CoordinateType;
55
typedef InterpolationModel::CoordinateType IntensityType;
57
enum Averagines{C=0,H,N,O,S,AVERAGINE_NUM};
59
/// Default constructor
60
ExtendedIsotopeModel();
63
ExtendedIsotopeModel(const ExtendedIsotopeModel& source);
66
virtual ~ExtendedIsotopeModel();
68
/// assignment operator
69
virtual ExtendedIsotopeModel& operator = (const ExtendedIsotopeModel& source);
73
/// create new ExtendedIsotopeModel object (needed by Factory)
74
static BaseModel<1>* create()
76
return new ExtendedIsotopeModel();
79
/// name of the model (needed by Factory)
80
static const String getProductName()
82
return "ExtendedIsotopeModel";
85
/** @brief set the offset of the model
87
The whole model will be shifted to the new offset without being computing all over.
88
This leaves a discrepancy which is minor in small shifts (i.e. shifting by one or two
89
standard deviations) but can get significant otherwise. In that case use setParameters()
90
which enforces a recomputation of the model.
92
void setOffset(CoordinateType offset);
94
CoordinateType getOffset();
96
/// set sample/supporting points of interpolation
99
/** @brief get the monoisotopic mass of the Isotope model
101
CoordinateType getCenter() const;
104
CoordinateType isotope_stdev_;
106
CoordinateType monoisotopic_mz_;
107
DoubleReal averagine_[AVERAGINE_NUM];
109
DoubleReal trim_right_cutoff_;
110
DoubleReal isotope_distance_;
112
void updateMembers_();
116
#endif // OPENMS_TRANSFORMATIONS_FEATUREFINDER_EXTENDEDISOTOPEMODEL_H