OpenMS
IMSAlphabet.h
Go to the documentation of this file.
1 // Copyright (c) 2002-2023, The OpenMS Team -- EKU Tuebingen, ETH Zurich, and FU Berlin
2 // SPDX-License-Identifier: BSD-3-Clause
3 //
4 // --------------------------------------------------------------------------
5 // $Maintainer: Timo Sachsenberg $
6 // $Authors: Anton Pervukhin <Anton.Pervukhin@CeBiTec.Uni-Bielefeld.DE> $
7 // --------------------------------------------------------------------------
8 //
9 
10 #pragma once
11 
12 #include <vector>
13 #include <string>
14 #include <iosfwd>
15 
17 
20 
21 namespace OpenMS
22 {
23 
24  namespace ims
25  {
26 
55  class OPENMS_DLLAPI IMSAlphabet
56  {
57 
58 public:
62  typedef std::vector<element_type> container;
63  typedef container::size_type size_type;
64  typedef container::iterator iterator;
65  typedef container::const_iterator const_iterator;
66  typedef std::vector<name_type> name_container;
67  typedef name_container::iterator name_iterator;
68  typedef name_container::const_iterator const_name_iterator;
69  typedef std::vector<mass_type> mass_container;
70  typedef mass_container::iterator mass_iterator;
71  typedef mass_container::const_iterator const_mass_iterator;
72  typedef std::vector<mass_type> masses_type;
73 
78 
79 
85  explicit IMSAlphabet(const container & elements) :
86  elements_(elements)
87  {}
88 
89 
95  IMSAlphabet(const IMSAlphabet & alphabet) :
96  elements_(alphabet.elements_)
97  {}
98 
104  size_type size() const
105  {
106  return elements_.size();
107  }
108 
116  const element_type & getElement(size_type index) const
117  {
118  return elements_[index];
119  }
120 
131  void setElement(const name_type & name, mass_type mass, bool forced = false);
132 
139  bool erase(const name_type & name);
140 
149  const element_type & getElement(const name_type & name) const;
150 
157  const name_type & getName(size_type index) const;
158 
168  mass_type getMass(const name_type & name) const;
169 
178 
185  masses_type getMasses(size_type isotope_index = 0) const;
186 
193 
201  bool hasName(const name_type & name) const;
202 
212  void push_back(const name_type & name, mass_type value)
213  {
214  push_back(element_type(name, value));
215  }
216 
222  void push_back(const element_type & element)
223  {
224  elements_.push_back(element);
225  }
226 
230  void clear()
231  {
232  elements_.clear();
233  }
234 
240  virtual void sortByNames();
241 
242 
248  virtual void sortByValues();
249 
250 
260  virtual void load(const std::string & fname);
261 
262 
274  virtual void load(const std::string & fname, IMSAlphabetParser<> & parser);
275 
276 
280  virtual ~IMSAlphabet() {}
281 
282 private:
287 
291  class OPENMS_DLLAPI MassSortingCriteria_
292  {
293 public:
294  bool operator()(const element_type & el1,
295  const element_type & el2) const
296  {
297  return el1.getMass() < el2.getMass();
298  }
299 
300  };
301 
302  };
303 
310  OPENMS_DLLAPI std::ostream & operator<<(std::ostream & os, const IMSAlphabet & alphabet);
311 
312  } // namespace ims
313 
314 } // namespace OpenMS
315 
An abstract templatized parser to load the data that is used to initialize Alphabet objects.
Definition: IMSAlphabetParser.h:38
Private class-functor to sort out elements in mass ascending order.
Definition: IMSAlphabet.h:292
bool operator()(const element_type &el1, const element_type &el2) const
Definition: IMSAlphabet.h:294
Holds an indexed list of bio-chemical elements.
Definition: IMSAlphabet.h:56
masses_type getMasses(size_type isotope_index=0) const
element_type::mass_type mass_type
Definition: IMSAlphabet.h:60
container::size_type size_type
Definition: IMSAlphabet.h:63
virtual void load(const std::string &fname, IMSAlphabetParser<> &parser)
virtual void sortByValues()
container elements_
Definition: IMSAlphabet.h:286
IMSAlphabet()
Definition: IMSAlphabet.h:77
mass_type getMass(size_type index) const
virtual void load(const std::string &fname)
void push_back(const element_type &element)
Definition: IMSAlphabet.h:222
bool hasName(const name_type &name) const
IMSAlphabet(const IMSAlphabet &alphabet)
Definition: IMSAlphabet.h:95
size_type size() const
Definition: IMSAlphabet.h:104
const name_type & getName(size_type index) const
std::vector< mass_type > mass_container
Definition: IMSAlphabet.h:69
std::vector< element_type > container
Definition: IMSAlphabet.h:62
container::iterator iterator
Definition: IMSAlphabet.h:64
virtual void sortByNames()
masses_type getAverageMasses() const
void setElement(const name_type &name, mass_type mass, bool forced=false)
const element_type & getElement(const name_type &name) const
std::vector< name_type > name_container
Definition: IMSAlphabet.h:66
name_container::iterator name_iterator
Definition: IMSAlphabet.h:67
void push_back(const name_type &name, mass_type value)
Definition: IMSAlphabet.h:212
IMSElement element_type
Definition: IMSAlphabet.h:59
const element_type & getElement(size_type index) const
Definition: IMSAlphabet.h:116
std::vector< mass_type > masses_type
Definition: IMSAlphabet.h:72
mass_type getMass(const name_type &name) const
mass_container::const_iterator const_mass_iterator
Definition: IMSAlphabet.h:71
void clear()
Definition: IMSAlphabet.h:230
element_type::name_type name_type
Definition: IMSAlphabet.h:61
virtual ~IMSAlphabet()
Definition: IMSAlphabet.h:280
container::const_iterator const_iterator
Definition: IMSAlphabet.h:65
mass_container::iterator mass_iterator
Definition: IMSAlphabet.h:70
name_container::const_iterator const_name_iterator
Definition: IMSAlphabet.h:68
IMSAlphabet(const container &elements)
Definition: IMSAlphabet.h:85
bool erase(const name_type &name)
Represents a chemical atom with name and isotope distribution.
Definition: IMSElement.h:33
isotopes_type::mass_type mass_type
Type of isotope mass.
Definition: IMSElement.h:42
std::string name_type
Type of element's name.
Definition: IMSElement.h:36
mass_type getMass(size_type index=0) const
Definition: IMSElement.h:146
std::ostream & operator<<(std::ostream &os, const IMSAlphabet &alphabet)
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:22