Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef OPENMS_CHEMISTRY_ISOTOPEDISTRIBUTION_H
00036 #define OPENMS_CHEMISTRY_ISOTOPEDISTRIBUTION_H
00037
00038 #include <OpenMS/CONCEPT/Types.h>
00039
00040 #include <utility>
00041 #include <vector>
00042
00043 namespace OpenMS
00044 {
00061 class OPENMS_DLLAPI IsotopeDistribution
00062 {
00063 public:
00064
00066
00067
00068 typedef std::vector<std::pair<Size, double> > ContainerType;
00069 typedef ContainerType::iterator iterator;
00070 typedef ContainerType::iterator Iterator;
00071 typedef ContainerType::const_iterator const_iterator;
00072 typedef ContainerType::const_iterator ConstIterator;
00074
00076
00077
00080 IsotopeDistribution();
00081
00083 IsotopeDistribution(Size max_isotope);
00084
00086 IsotopeDistribution(const IsotopeDistribution & isotope_distribution);
00087
00089 virtual ~IsotopeDistribution();
00091
00093
00094
00100 void setMaxIsotope(Size max_isotope);
00101
00103 Size getMaxIsotope() const;
00104
00106 void set(const ContainerType & distribution);
00107
00109 const ContainerType & getContainer() const;
00110
00112 Size getMax() const;
00113
00115 Size getMin() const;
00116
00118 Size size() const;
00119
00121 void clear();
00122
00129 void estimateFromPeptideWeight(double average_weight);
00130
00136 void renormalize();
00137
00146 void trimRight(DoubleReal cutoff);
00147
00156 void trimLeft(DoubleReal cutoff);
00158
00160
00161
00162 IsotopeDistribution & operator=(const IsotopeDistribution & isotope_distribution);
00163
00165 IsotopeDistribution operator+(const IsotopeDistribution & isotope_distribution) const;
00166
00168 IsotopeDistribution & operator+=(const IsotopeDistribution & isotope_distribution);
00169
00171 IsotopeDistribution operator*(Size factor) const;
00172
00174 IsotopeDistribution & operator*=(Size factor);
00175
00177 bool operator==(const IsotopeDistribution & isotope_distribution) const;
00178
00180 bool operator!=(const IsotopeDistribution & isotope_distribution) const;
00182
00184
00185 inline Iterator begin() { return distribution_.begin(); }
00186
00187 inline Iterator end() { return distribution_.end(); }
00188
00189 inline ConstIterator begin() const { return distribution_.begin(); }
00190
00191 inline ConstIterator end() const { return distribution_.end(); }
00193
00194 protected:
00195
00197 void convolve_(ContainerType & result, const ContainerType & left, const ContainerType & right) const;
00198
00200 void convolvePow_(ContainerType & result, const ContainerType & input, Size factor) const;
00201
00203 void convolveSquare_(ContainerType & result, const ContainerType & input) const;
00204
00206 Size max_isotope_;
00207
00209 ContainerType distribution_;
00210 };
00211
00212 }
00213
00214 #endif // OPENMS_CHEMISTRY_ISOTOPEDISTRIBUTION_H