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_IMSALPHABET_H
00037 #define OPENMS_CHEMISTRY_MASSDECOMPOSITION_IMS_IMSALPHABET_H
00038
00039 #include <vector>
00040 #include <string>
00041 #include <ostream>
00042
00043 #include <OpenMS/CONCEPT/Exception.h>
00044
00045 #include <OpenMS/CHEMISTRY/MASSDECOMPOSITION/IMS/IMSElement.h>
00046 #include <OpenMS/CHEMISTRY/MASSDECOMPOSITION/IMS/IMSAlphabetParser.h>
00047
00048 namespace OpenMS
00049 {
00050
00051 namespace ims
00052 {
00053
00082 class OPENMS_DLLAPI IMSAlphabet
00083 {
00084
00085 public:
00086 typedef IMSElement element_type;
00087 typedef element_type::mass_type mass_type;
00088 typedef element_type::name_type name_type;
00089 typedef std::vector<element_type> container;
00090 typedef container::size_type size_type;
00091 typedef container::iterator iterator;
00092 typedef container::const_iterator const_iterator;
00093 typedef std::vector<name_type> name_container;
00094 typedef name_container::iterator name_iterator;
00095 typedef name_container::const_iterator const_name_iterator;
00096 typedef std::vector<mass_type> mass_container;
00097 typedef mass_container::iterator mass_iterator;
00098 typedef mass_container::const_iterator const_mass_iterator;
00099 typedef std::vector<mass_type> masses_type;
00100
00104 IMSAlphabet() {}
00105
00106
00112 explicit IMSAlphabet(const container & elements) :
00113 elements_(elements)
00114 {}
00115
00116
00122 IMSAlphabet(const IMSAlphabet & alphabet) :
00123 elements_(alphabet.elements_)
00124 {}
00125
00131 size_type size() const
00132 {
00133 return elements_.size();
00134 }
00135
00143 const element_type & getElement(size_type index) const
00144 {
00145 return elements_[index];
00146 }
00147
00158 void setElement(const name_type & name, mass_type mass, bool forced = false);
00159
00166 bool erase(const name_type & name);
00167
00176 const element_type & getElement(const name_type & name) const;
00177
00184 const name_type & getName(size_type index) const;
00185
00195 mass_type getMass(const name_type & name) const;
00196
00204 mass_type getMass(size_type index) const;
00205
00212 masses_type getMasses(size_type isotope_index = 0) const;
00213
00219 masses_type getAverageMasses() const;
00220
00228 bool hasName(const name_type & name) const;
00229
00239 void push_back(const name_type & name, mass_type value)
00240 {
00241 push_back(element_type(name, value));
00242 }
00243
00249 void push_back(const element_type & element)
00250 {
00251 elements_.push_back(element);
00252 }
00253
00257 void clear()
00258 {
00259 elements_.clear();
00260 }
00261
00267 virtual void sortByNames();
00268
00269
00275 virtual void sortByValues();
00276
00277
00287 virtual void load(const std::string & fname);
00288
00289
00301 virtual void load(const std::string & fname, IMSAlphabetParser<> * parser);
00302
00303
00307 virtual ~IMSAlphabet() {}
00308
00309 private:
00313 container elements_;
00314
00318 class OPENMS_DLLAPI MassSortingCriteria_
00319 {
00320 public:
00321 bool operator()(const element_type & el1,
00322 const element_type & el2) const
00323 {
00324 return el1.getMass() < el2.getMass();
00325 }
00326
00327 };
00328
00329 };
00330
00337 OPENMS_DLLAPI std::ostream & operator<<(std::ostream & os, const IMSAlphabet & alphabet);
00338
00339 }
00340
00341 }
00342
00343 #endif // OPENMS_CHEMISTRY_MASSDECOMPOSITION_IMS_ALPHABET_H