Home  · Classes  · Annotated Classes  · Modules  · Members  · Namespaces  · Related Pages
MassTrace.h
Go to the documentation of this file.
1 // --------------------------------------------------------------------------
2 // OpenMS -- Open-Source Mass Spectrometry
3 // --------------------------------------------------------------------------
4 // Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
5 // ETH Zurich, and Freie Universitaet Berlin 2002-2015.
6 //
7 // This software is released under a three-clause BSD license:
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright
11 // notice, this list of conditions and the following disclaimer in the
12 // documentation and/or other materials provided with the distribution.
13 // * Neither the name of any author or any participating institution
14 // may be used to endorse or promote products derived from this software
15 // without specific prior written permission.
16 // For a full list of authors, refer to the file AUTHORS.
17 // --------------------------------------------------------------------------
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 // ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
22 // INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 //
30 // --------------------------------------------------------------------------
31 // $Maintainer: Erhan Kenar $
32 // $Authors: Erhan Kenar, Holger Franken, Chris Bielow $
33 // --------------------------------------------------------------------------
34 
35 #ifndef OPENMS_KERNEL_MASSTRACE_H
36 #define OPENMS_KERNEL_MASSTRACE_H
37 
38 #include <OpenMS/KERNEL/Peak2D.h>
40 
41 
42 #include <vector>
43 #include <list>
44 #include <map>
45 
46 namespace OpenMS
47 {
48  typedef Peak2D PeakType;
49  class string;
50 
59  class OPENMS_DLLAPI MassTrace
60  {
61 public:
62 
63  // must match to names_of_quantmethod[]
65  MT_QUANT_AREA = 0, //< quantify by area
66  MT_QUANT_MEDIAN, //< quantify by median of intensities
67  SIZE_OF_MT_QUANTMETHOD
68  };
69  static const std::string names_of_quantmethod[SIZE_OF_MT_QUANTMETHOD];
70 
72  static MT_QUANTMETHOD getQuantMethod(const String& val);
73 
76  MassTrace();
78 
81  MassTrace(const std::list<PeakType>& trace_peaks);
82 
84  MassTrace(const std::vector<PeakType>& trace_peaks);
85 
87  ~MassTrace();
88 
90  MassTrace(const MassTrace &);
91 
93  MassTrace & operator=(const MassTrace &);
94 
96  PeakType& operator[](const Size & mt_idx);
97  const PeakType& operator[](const Size & mt_idx) const;
98 
99 
103  typedef std::vector<PeakType>::iterator iterator;
104  typedef std::vector<PeakType>::const_iterator const_iterator;
105  typedef std::vector<PeakType>::reverse_iterator reverse_iterator;
106  typedef std::vector<PeakType>::const_reverse_iterator const_reverse_iterator;
107 
108  iterator begin()
109  {
110  return trace_peaks_.begin();
111  }
112 
113  iterator end()
114  {
115  return trace_peaks_.end();
116  }
117 
118  const_iterator begin() const
119  {
120  return trace_peaks_.begin();
121  }
122 
123  const_iterator end() const
124  {
125  return trace_peaks_.end();
126  }
127 
128  reverse_iterator rbegin()
129  {
130  return trace_peaks_.rbegin();
131  }
132 
133  reverse_iterator rend()
134  {
135  return trace_peaks_.rend();
136  }
137 
138  const_reverse_iterator rbegin() const
139  {
140  return trace_peaks_.rbegin();
141  }
142 
143  const_reverse_iterator rend() const
144  {
145  return trace_peaks_.rend();
146  }
147 
151  Size getSize() const
153  {
154  return trace_peaks_.size();
155  }
156 
158  String getLabel() const
159  {
160  return label_;
161  }
162 
164  void setLabel(const String & label)
165  {
166  label_ = label;
167  }
168 
170  double getCentroidMZ() const
171  {
172  return centroid_mz_;
173  }
174 
176  double getCentroidRT() const
177  {
178  return centroid_rt_;
179  }
180 
181  double getCentroidSD() const
182  {
183  return centroid_sd_;
184  }
185 
186  void setCentroidSD(const double & tmp_sd)
187  {
188  centroid_sd_ = tmp_sd;
189  }
190 
191  double getFWHM() const
192  {
193  return fwhm_;
194  }
195 
196  double getTraceLength() const
197  {
198  double length(0.0);
199 
200  if (trace_peaks_.size() > 1)
201  {
202  length = std::fabs(trace_peaks_.rbegin()->getRT() - trace_peaks_.begin()->getRT());
203  }
204 
205  return length;
206  }
207 
208  std::pair<Size, Size> getFWHMborders() const
209  {
210  return std::make_pair(fwhm_start_idx_, fwhm_end_idx_);
211  }
212 
214  const std::vector<double>& getSmoothedIntensities() const
215  {
216  return smoothed_intensities_;
217  }
218 
220  void setSmoothedIntensities(const std::vector<double> & db_vec)
221  {
222  if (trace_peaks_.size() != db_vec.size())
223  {
224  throw Exception::InvalidValue(__FILE__, __LINE__, __PRETTY_FUNCTION__, "Number of smoothed intensities deviates from mass trace size! Aborting...", String(db_vec.size()));
225  }
226 
227  smoothed_intensities_ = db_vec;
228  }
229 
231  double getAverageMS1CycleTime() const
232  {
233  if (trace_peaks_.size() <= 1) return 0.0;
234 
235  return (trace_peaks_.rbegin()->getRT() - trace_peaks_.begin()->getRT()) / (trace_peaks_.size() - 1);
236  }
237 
240  double computeSmoothedPeakArea() const;
242 
244  double computePeakArea() const;
245 
247  Size findMaxByIntPeak(bool use_smoothed_ints = false) const;
248 
251  double estimateFWHM(bool use_smoothed_ints = false);
252 
254  void setQuantMethod(MT_QUANTMETHOD method);
255 
257  MT_QUANTMETHOD getQuantMethod() const;
258 
260  double computeFwhmAreaSmooth() const;
261  double computeFwhmArea() const;
262  // double computeFwhmAreaSmoothRobust() const;
263  // double computeFwhmAreaRobust() const;
264 
265  double getIntensity(bool smoothed) const;
266  double getMaxIntensity(bool smoothed) const;
267 
269  ConvexHull2D getConvexhull() const;
270 
271 
275  void updateSmoothedMaxRT();
276 
278  void updateWeightedMeanRT();
279 
280  void updateSmoothedWeightedMeanRT();
281 
283  void updateMedianRT();
284 
286  void updateMedianMZ();
287 
289  void updateMeanMZ();
290 
292  void updateWeightedMeanMZ();
293 
297  void updateWeightedMZsd();
298 
299 private:
301  double computeMedianIntensity_() const;
302 
304  std::vector<PeakType> trace_peaks_;
305 
307  double centroid_mz_;
308 
310  double centroid_sd_;
311 
313  double centroid_rt_;
314 
317 
319  std::vector<double> smoothed_intensities_;
320 
321  double fwhm_;
322  Size fwhm_start_idx_; // index into 'trace_peaks_' vector (inclusive)
323  Size fwhm_end_idx_; // index into 'trace_peaks_' vector (inclusive)
324 
327 
328  };
329 
330 }
331 
332 #endif // OPENMS_KERNEL_MASSTRACE_H
double getCentroidSD() const
Definition: MassTrace.h:181
const std::vector< double > & getSmoothedIntensities() const
Gets smoothed intensities (empty if no smoothing was explicitly done beforehand!).
Definition: MassTrace.h:214
iterator end()
Definition: MassTrace.h:113
A more convenient string class.
Definition: String.h:57
A 2-dimensional raw data point or peak.
Definition: Peak2D.h:55
void setSmoothedIntensities(const std::vector< double > &db_vec)
Set smoothed intensities (smoothing is done externally, e.g. by LowessSmoothing). ...
Definition: MassTrace.h:220
MT_QUANTMETHOD quant_method_
use area under mass trace or the median of intensities
Definition: MassTrace.h:326
double getAverageMS1CycleTime() const
Get average scan time of mass trace.
Definition: MassTrace.h:231
Peak2D PeakType
Definition: MassTrace.h:48
MT_QUANTMETHOD
Definition: MassTrace.h:64
double centroid_sd_
intensity-weighted STD
Definition: MassTrace.h:310
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:47
reverse_iterator rbegin()
Definition: MassTrace.h:128
A 2-dimensional hull representation in [counter]clockwise direction - depending on axis labelling...
Definition: ConvexHull2D.h:73
std::vector< PeakType >::const_iterator const_iterator
Definition: MassTrace.h:104
const_reverse_iterator rbegin() const
Definition: MassTrace.h:138
double centroid_rt_
Centroid RT.
Definition: MassTrace.h:313
std::vector< PeakType >::iterator iterator
Definition: MassTrace.h:103
double getCentroidMZ() const
Returns the centroid m/z.
Definition: MassTrace.h:170
Definition: MassTrace.h:66
std::vector< PeakType >::reverse_iterator reverse_iterator
Definition: MassTrace.h:105
double getTraceLength() const
Definition: MassTrace.h:196
const_iterator begin() const
Definition: MassTrace.h:118
void setCentroidSD(const double &tmp_sd)
Definition: MassTrace.h:186
iterator begin()
Definition: MassTrace.h:108
Size fwhm_end_idx_
Definition: MassTrace.h:323
std::vector< PeakType > trace_peaks_
Actual MassTrace container for doing centroid calculation, peak width estimation etc.
Definition: MassTrace.h:304
double centroid_mz_
Centroid m/z.
Definition: MassTrace.h:307
double fwhm_
Definition: MassTrace.h:321
std::vector< PeakType >::const_reverse_iterator const_reverse_iterator
Definition: MassTrace.h:106
Invalid value exception.
Definition: Exception.h:336
std::vector< double > smoothed_intensities_
Container for smoothed intensities. Smoothing must be done externally.
Definition: MassTrace.h:319
const_reverse_iterator rend() const
Definition: MassTrace.h:143
reverse_iterator rend()
Definition: MassTrace.h:133
Size fwhm_start_idx_
Definition: MassTrace.h:322
void setLabel(const String &label)
Sets label of mass trace.
Definition: MassTrace.h:164
String getLabel() const
Gets label of mass trace.
Definition: MassTrace.h:158
std::pair< Size, Size > getFWHMborders() const
Definition: MassTrace.h:208
String label_
Trace label.
Definition: MassTrace.h:316
double getFWHM() const
Definition: MassTrace.h:191
double getCentroidRT() const
Returns the centroid RT.
Definition: MassTrace.h:176
A container type that gathers peaks similar in m/z and moving along retention time.
Definition: MassTrace.h:59
const_iterator end() const
Definition: MassTrace.h:123

OpenMS / TOPP release 2.0.0 Documentation generated on Wed Mar 30 2016 12:49:24 using doxygen 1.8.11