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
00036 #ifndef OPENMS_CHEMISTRY_MASSDECOMPOSITION_IMS_WEIGHTS_H
00037 #define OPENMS_CHEMISTRY_MASSDECOMPOSITION_IMS_WEIGHTS_H
00038
00039 #include <vector>
00040 #include <ostream>
00041
00042 #include <OpenMS/config.h>
00043
00044 namespace OpenMS
00045 {
00046 namespace ims
00047 {
00068 class OPENMS_DLLAPI Weights
00069 {
00070 public:
00072 typedef long unsigned int weight_type;
00073
00075 typedef double alphabet_mass_type;
00076
00078 typedef std::vector<weight_type> weights_type;
00079
00081 typedef std::vector<alphabet_mass_type> alphabet_masses_type;
00082
00084 typedef weights_type::size_type size_type;
00085
00087 Weights() {}
00088
00095 Weights(const alphabet_masses_type & masses, alphabet_mass_type precision) :
00096 alphabet_masses_(masses),
00097 precision_(precision)
00098 {
00099 setPrecision(precision);
00100 }
00101
00107 Weights(const Weights & other) :
00108 alphabet_masses_(other.alphabet_masses_),
00109 precision_(other.precision_),
00110 weights_(other.weights_) {}
00111
00118 Weights & operator=(const Weights & other);
00119
00125 size_type size() const
00126 {
00127 return weights_.size();
00128 }
00129
00136 weight_type getWeight(size_type i) const
00137 {
00138 return weights_[i];
00139 }
00140
00146 void setPrecision(alphabet_mass_type precision);
00147
00153 alphabet_mass_type getPrecision() const
00154 {
00155 return precision_;
00156 }
00157
00166 weight_type operator[](size_type i) const
00167 {
00168 return weights_[i];
00169 }
00170
00176 weight_type back() const
00177 {
00178 return weights_.back();
00179 }
00180
00187 alphabet_mass_type getAlphabetMass(size_type i) const
00188 {
00189 return alphabet_masses_[i];
00190 }
00191
00195 alphabet_mass_type getParentMass(const std::vector<unsigned int> & decomposition) const;
00196
00203 void swap(size_type index1, size_type index2);
00204
00217 bool divideByGCD();
00218
00219 alphabet_mass_type getMinRoundingError() const;
00220
00221 alphabet_mass_type getMaxRoundingError() const;
00222 private:
00226 alphabet_masses_type alphabet_masses_;
00227
00231 alphabet_mass_type precision_;
00232
00236 weights_type weights_;
00237 };
00238
00245 OPENMS_DLLAPI std::ostream & operator<<(std::ostream & os, const Weights & weights);
00246
00247 }
00248 }
00249
00250 #endif // OPENMS_CHEMISTRY_MASSDECOMPOSITION_IMS_WEIGHTS_H