OpenMS
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
IMSIsotopeDistribution.h
Go to the documentation of this file.
1 // Copyright (c) 2002-present, OpenMS Inc. -- 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 <algorithm> // std::min
13 #include <vector>
14 #include <iosfwd>
15 
16 #include <OpenMS/config.h>
17 
18 namespace OpenMS
19 {
20 
21  namespace ims
22  {
23 
61  class OPENMS_DLLAPI IMSIsotopeDistribution
62  {
63 
64 public:
66  typedef double mass_type;
67 
69  typedef double abundance_type;
70 
72  typedef unsigned int nominal_mass_type;
73 
75  struct Peak
76  {
77  Peak(mass_type local_mass = 0.0, abundance_type local_abundance = 0.0) :
78  mass(local_mass), abundance(local_abundance)
79  {}
80 
81  bool operator==(const Peak& peak) const = default;
82 
85  };
86 
88  typedef Peak peak_type;
89 
91  typedef std::vector<peak_type> peaks_container;
92 
94  typedef peaks_container::iterator peaks_iterator;
95 
97  typedef peaks_container::const_iterator const_peaks_iterator;
98 
100  typedef peaks_container::size_type size_type;
101 
103  typedef std::vector<mass_type> masses_container;
104 
106  typedef masses_container::iterator masses_iterator;
107 
109  typedef masses_container::const_iterator const_masses_iterator;
110 
112  typedef std::vector<abundance_type> abundances_container;
113 
115  typedef abundances_container::iterator abundances_iterator;
116 
118  typedef abundances_container::const_iterator const_abundances_iterator;
119 
122 
124  static size_type SIZE;
125 
127  explicit IMSIsotopeDistribution(nominal_mass_type nominalMass = 0) :
128  nominal_mass_(nominalMass)
129  {}
130 
133  nominal_mass_(0)
134  {
135  peaks_.push_back(peaks_container::value_type(mass, 1.0));
136  }
137 
140  nominal_mass_type nominalMass = 0) :
141  peaks_(peaks),
142  nominal_mass_(nominalMass)
143  {}
144 
147  peaks_(distribution.peaks_),
148  nominal_mass_(distribution.nominal_mass_)
149  {}
150 
153  {}
154 
161  size_type size() const { return std::min(peaks_.size(), SIZE); }
162 
170  const IMSIsotopeDistribution & distribution);
171 
179  bool operator==(const IMSIsotopeDistribution & distribution) const;
180 
188  bool operator!=(const IMSIsotopeDistribution & distribution) const;
189 
201  const IMSIsotopeDistribution & distribution);
202 
213  IMSIsotopeDistribution & operator*=(unsigned int pow);
214 
222  {
223  return peaks_[i].mass + nominal_mass_ + i;
224  }
225 
233  {
234  return peaks_[i].abundance;
235  }
236 
243 
249  nominal_mass_type getNominalMass() const { return nominal_mass_; }
250 
257  {
258  this->nominal_mass_ = nominalMass;
259  }
260 
267 
274 
280  void normalize();
281 
287  bool empty() const { return peaks_.empty(); }
288 
289 private:
292 
295 
298  };
299 
306  OPENMS_DLLAPI std::ostream & operator<<(std::ostream & os,
307  const IMSIsotopeDistribution & distribution);
308 
309  } // namespace ims
310 } // namespace OpenMS
311 
Represents a distribution of isotopes restricted to the first K elements.
Definition: IMSIsotopeDistribution.h:62
masses_container getMasses() const
IMSIsotopeDistribution & operator*=(unsigned int pow)
peaks_container peaks_
Container for isotopes.
Definition: IMSIsotopeDistribution.h:291
void setMinimumSize_()
Sets peaks/isotopes container minimum size.
std::vector< peak_type > peaks_container
Type of container to store peaks.
Definition: IMSIsotopeDistribution.h:91
bool operator!=(const IMSIsotopeDistribution &distribution) const
nominal_mass_type nominal_mass_
Nominal mass of distribution.
Definition: IMSIsotopeDistribution.h:294
IMSIsotopeDistribution(nominal_mass_type nominalMass=0)
Constructor with nominal mass.
Definition: IMSIsotopeDistribution.h:127
IMSIsotopeDistribution(const peaks_container &peaks, nominal_mass_type nominalMass=0)
Constructor with isotopes and nominal mass.
Definition: IMSIsotopeDistribution.h:139
nominal_mass_type getNominalMass() const
Definition: IMSIsotopeDistribution.h:249
IMSIsotopeDistribution & operator=(const IMSIsotopeDistribution &distribution)
double abundance_type
Type of isotope abundance.
Definition: IMSIsotopeDistribution.h:69
IMSIsotopeDistribution(mass_type mass)
Constructor with single isotope.
Definition: IMSIsotopeDistribution.h:132
size_type size() const
Definition: IMSIsotopeDistribution.h:161
std::vector< abundance_type > abundances_container
Type of container with isotope abundances.
Definition: IMSIsotopeDistribution.h:112
bool empty() const
Definition: IMSIsotopeDistribution.h:287
abundances_container getAbundances() const
IMSIsotopeDistribution & operator*=(const IMSIsotopeDistribution &distribution)
peaks_container::size_type size_type
Type of peaks container's size.
Definition: IMSIsotopeDistribution.h:100
peaks_container::iterator peaks_iterator
Type of iterator over container with peaks.
Definition: IMSIsotopeDistribution.h:94
static size_type SIZE
Length of isotope distribution.
Definition: IMSIsotopeDistribution.h:124
~IMSIsotopeDistribution()
Destructor.
Definition: IMSIsotopeDistribution.h:152
bool operator==(const IMSIsotopeDistribution &distribution) const
Peak peak_type
Type of isotope peak.
Definition: IMSIsotopeDistribution.h:88
IMSIsotopeDistribution(const IMSIsotopeDistribution &distribution)
Copy constructor.
Definition: IMSIsotopeDistribution.h:146
abundance_type getAbundance(size_type i) const
Definition: IMSIsotopeDistribution.h:232
mass_type getMass(size_type i) const
Definition: IMSIsotopeDistribution.h:221
abundances_container::iterator abundances_iterator
Type of iterator over container with isotope abundances.
Definition: IMSIsotopeDistribution.h:115
masses_container::const_iterator const_masses_iterator
Type of const iterator over container with isotope masses.
Definition: IMSIsotopeDistribution.h:109
abundances_container::const_iterator const_abundances_iterator
Type of const iterator over container with isotope abundances.
Definition: IMSIsotopeDistribution.h:118
peaks_container::const_iterator const_peaks_iterator
Type of const iterator over container with peaks.
Definition: IMSIsotopeDistribution.h:97
std::vector< mass_type > masses_container
Type of container with isotope masses.
Definition: IMSIsotopeDistribution.h:103
masses_container::iterator masses_iterator
Type of iterator over container with isotope masses.
Definition: IMSIsotopeDistribution.h:106
double mass_type
Type of isotope mass.
Definition: IMSIsotopeDistribution.h:66
static abundance_type ABUNDANCES_SUM_ERROR
Error to be allowed for isotope distribution.
Definition: IMSIsotopeDistribution.h:121
void setNominalMass(nominal_mass_type nominalMass)
Definition: IMSIsotopeDistribution.h:256
unsigned int nominal_mass_type
Type of isotope nominal mass.
Definition: IMSIsotopeDistribution.h:72
std::ostream & operator<<(std::ostream &os, const IMSAlphabet &alphabet)
Main OpenMS namespace.
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
Structure that represents an isotope peak - pair of mass and abundance.
Definition: IMSIsotopeDistribution.h:76
bool operator==(const Peak &peak) const =default
Peak(mass_type local_mass=0.0, abundance_type local_abundance=0.0)
Definition: IMSIsotopeDistribution.h:77
abundance_type abundance
Definition: IMSIsotopeDistribution.h:84
mass_type mass
Definition: IMSIsotopeDistribution.h:83