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-2017.
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: Timo Sachsenberg $
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 
62  class OPENMS_DLLAPI MassTrace
63  {
64 public:
65 
66  // must match to names_of_quantmethod[]
68  MT_QUANT_AREA = 0, //< quantify by area
69  MT_QUANT_MEDIAN, //< quantify by median of intensities
70  SIZE_OF_MT_QUANTMETHOD
71  };
72  static const std::string names_of_quantmethod[SIZE_OF_MT_QUANTMETHOD];
73 
75  static MT_QUANTMETHOD getQuantMethod(const String& val);
76 
79 
82  MassTrace();
83 
86  MassTrace(const std::list<PeakType>& trace_peaks);
87 
89  MassTrace(const std::vector<PeakType>& trace_peaks);
90 
92  ~MassTrace();
93 
95  MassTrace(const MassTrace &);
96 
98  MassTrace & operator=(const MassTrace &);
99 
101  PeakType& operator[](const Size & mt_idx);
102  const PeakType& operator[](const Size & mt_idx) const;
104 
108  typedef std::vector<PeakType>::iterator iterator;
110  typedef std::vector<PeakType>::const_iterator const_iterator;
111  typedef std::vector<PeakType>::reverse_iterator reverse_iterator;
112  typedef std::vector<PeakType>::const_reverse_iterator const_reverse_iterator;
113 
114  iterator begin()
115  {
116  return trace_peaks_.begin();
117  }
118 
119  iterator end()
120  {
121  return trace_peaks_.end();
122  }
123 
124  const_iterator begin() const
125  {
126  return trace_peaks_.begin();
127  }
128 
129  const_iterator end() const
130  {
131  return trace_peaks_.end();
132  }
133 
134  reverse_iterator rbegin()
135  {
136  return trace_peaks_.rbegin();
137  }
138 
139  reverse_iterator rend()
140  {
141  return trace_peaks_.rend();
142  }
143 
144  const_reverse_iterator rbegin() const
145  {
146  return trace_peaks_.rbegin();
147  }
148 
149  const_reverse_iterator rend() const
150  {
151  return trace_peaks_.rend();
152  }
154 
158 
161  Size getSize() const
162  {
163  return trace_peaks_.size();
164  }
165 
167  String getLabel() const
168  {
169  return label_;
170  }
171 
173  void setLabel(const String & label)
174  {
175  label_ = label;
176  }
177 
179  double getCentroidMZ() const
180  {
181  return centroid_mz_;
182  }
183 
185  double getCentroidRT() const
186  {
187  return centroid_rt_;
188  }
189 
190  double getCentroidSD() const
191  {
192  return centroid_sd_;
193  }
194 
195  void setCentroidSD(const double & tmp_sd)
196  {
197  centroid_sd_ = tmp_sd;
198  }
199 
200  double getFWHM() const
201  {
202  return fwhm_;
203  }
204 
206  double getTraceLength() const
207  {
208  double length(0.0);
209 
210  if (trace_peaks_.size() > 1)
211  {
212  length = std::fabs(trace_peaks_.rbegin()->getRT() - trace_peaks_.begin()->getRT());
213  }
214 
215  return length;
216  }
217 
218  std::pair<Size, Size> getFWHMborders() const
219  {
220  return std::make_pair(fwhm_start_idx_, fwhm_end_idx_);
221  }
222 
224  const std::vector<double>& getSmoothedIntensities() const
225  {
226  return smoothed_intensities_;
227  }
228 
230  void setSmoothedIntensities(const std::vector<double> & db_vec)
231  {
232  if (trace_peaks_.size() != db_vec.size())
233  {
234  throw Exception::InvalidValue(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION,
235  "Number of smoothed intensities deviates from mass trace size! Aborting...", String(db_vec.size()));
236  }
237 
238  smoothed_intensities_ = db_vec;
239  }
240 
242  double getAverageMS1CycleTime() const
243  {
244  if (trace_peaks_.size() <= 1) return 0.0;
245 
246  return (trace_peaks_.rbegin()->getRT() - trace_peaks_.begin()->getRT()) / (trace_peaks_.size() - 1);
247  }
249 
252 
255  double computeSmoothedPeakArea() const;
256 
258  double computePeakArea() const;
259 
261  Size findMaxByIntPeak(bool use_smoothed_ints = false) const;
262 
265  double estimateFWHM(bool use_smoothed_ints = false);
266 
268  void setQuantMethod(MT_QUANTMETHOD method);
269 
271  MT_QUANTMETHOD getQuantMethod() const;
272 
274  double computeFwhmAreaSmooth() const;
275  double computeFwhmArea() const;
276  // double computeFwhmAreaSmoothRobust() const;
277  // double computeFwhmAreaRobust() const;
278 
279  double getIntensity(bool smoothed) const;
280  double getMaxIntensity(bool smoothed) const;
281 
283  ConvexHull2D getConvexhull() const;
285 
288 
290  void updateSmoothedMaxRT();
291 
293  void updateWeightedMeanRT();
294 
295  void updateSmoothedWeightedMeanRT();
296 
298  void updateMedianRT();
299 
301  void updateMedianMZ();
302 
304  void updateMeanMZ();
305 
307  void updateWeightedMeanMZ();
308 
314  void updateWeightedMZsd();
316 
318  double fwhm_mz_avg;
319 
320 private:
321 
323  double computeMedianIntensity_() const;
324 
326  std::vector<PeakType> trace_peaks_;
327 
329  double centroid_mz_;
330 
332  double centroid_sd_;
333 
335  double centroid_rt_;
336 
339 
341  std::vector<double> smoothed_intensities_;
342 
343  double fwhm_; //< FWHM of RT peak
344  Size fwhm_start_idx_; //< index into 'trace_peaks_' vector (inclusive)
345  Size fwhm_end_idx_; //< index into 'trace_peaks_' vector (inclusive)
346 
349 
350  };
351 
352 }
353 
354 #endif // OPENMS_KERNEL_MASSTRACE_H
iterator end()
Definition: MassTrace.h:119
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:230
MT_QUANTMETHOD quant_method_
use area under mass trace or the median of intensities
Definition: MassTrace.h:348
Peak2D PeakType
Definition: MassTrace.h:48
MT_QUANTMETHOD
Definition: MassTrace.h:67
double centroid_sd_
intensity-weighted STD
Definition: MassTrace.h:332
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:47
reverse_iterator rbegin()
Definition: MassTrace.h:134
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:110
double getTraceLength() const
Returns the length of the trace (as difference in RT)
Definition: MassTrace.h:206
double centroid_rt_
Centroid RT.
Definition: MassTrace.h:335
const_iterator begin() const
Definition: MassTrace.h:124
std::vector< PeakType >::iterator iterator
Definition: MassTrace.h:109
double getCentroidRT() const
Returns the centroid RT.
Definition: MassTrace.h:185
Definition: MassTrace.h:69
double getCentroidMZ() const
Returns the centroid m/z.
Definition: MassTrace.h:179
double getAverageMS1CycleTime() const
Get average scan time of mass trace.
Definition: MassTrace.h:242
std::vector< PeakType >::reverse_iterator reverse_iterator
Definition: MassTrace.h:111
void setCentroidSD(const double &tmp_sd)
Definition: MassTrace.h:195
iterator begin()
Definition: MassTrace.h:114
double getCentroidSD() const
Definition: MassTrace.h:190
Size fwhm_end_idx_
Definition: MassTrace.h:345
const std::vector< double > & getSmoothedIntensities() const
Gets smoothed intensities (empty if no smoothing was explicitly done beforehand!).
Definition: MassTrace.h:224
std::vector< PeakType > trace_peaks_
Actual MassTrace container for doing centroid calculation, peak width estimation etc.
Definition: MassTrace.h:326
double centroid_mz_
Centroid m/z.
Definition: MassTrace.h:329
double fwhm_
Definition: MassTrace.h:343
std::vector< PeakType >::const_reverse_iterator const_reverse_iterator
Definition: MassTrace.h:112
Invalid value exception.
Definition: Exception.h:336
std::vector< double > smoothed_intensities_
Container for smoothed intensities. Smoothing must be done externally.
Definition: MassTrace.h:341
double getFWHM() const
Definition: MassTrace.h:200
const_reverse_iterator rbegin() const
Definition: MassTrace.h:144
reverse_iterator rend()
Definition: MassTrace.h:139
Size fwhm_start_idx_
Definition: MassTrace.h:344
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:128
void setLabel(const String &label)
Sets label of mass trace.
Definition: MassTrace.h:173
const_iterator end() const
Definition: MassTrace.h:129
String label_
Trace label.
Definition: MassTrace.h:338
Size getSize() const
Returns the number of peaks contained in the mass trace.
Definition: MassTrace.h:161
double fwhm_mz_avg
Average FWHM of m/z peaks.
Definition: MassTrace.h:318
A container type that gathers peaks similar in m/z and moving along retention time.
Definition: MassTrace.h:62
const_reverse_iterator rend() const
Definition: MassTrace.h:149
std::pair< Size, Size > getFWHMborders() const
Definition: MassTrace.h:218
String getLabel() const
Gets label of mass trace.
Definition: MassTrace.h:167

OpenMS / TOPP release 2.3.0 Documentation generated on Tue Jan 9 2018 18:22:01 using doxygen 1.8.13