OpenMS
MassTrace.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: Erhan Kenar, Holger Franken, Chris Bielow $
7 // --------------------------------------------------------------------------
8 
9 #pragma once
10 
11 #include <OpenMS/KERNEL/Peak2D.h>
13 
14 
15 #include <vector>
16 #include <list>
17 #include <map>
18 
19 namespace OpenMS
20 {
21  typedef Peak2D PeakType;
22  class string;
23 
35  class OPENMS_DLLAPI MassTrace
36  {
37 public:
38 
39  // must match to names_of_quantmethod[]
41  MT_QUANT_AREA = 0,
44  SIZE_OF_MT_QUANTMETHOD
45  };
46  static const std::string names_of_quantmethod[SIZE_OF_MT_QUANTMETHOD];
47 
49  static MT_QUANTMETHOD getQuantMethod(const String& val);
50 
54 
56  MassTrace() = default;
57 
60  MassTrace(const std::list<PeakType>& trace_peaks);
61 
63  MassTrace(const std::vector<PeakType>& trace_peaks);
64 
66  ~MassTrace() = default;
67 
69  MassTrace(const MassTrace &) = default;
70 
72  MassTrace & operator=(const MassTrace &) = default;
73 
75  PeakType& operator[](const Size & mt_idx);
76  const PeakType& operator[](const Size & mt_idx) const;
78 
83  typedef std::vector<PeakType>::iterator iterator;
84  typedef std::vector<PeakType>::const_iterator const_iterator;
85  typedef std::vector<PeakType>::reverse_iterator reverse_iterator;
86  typedef std::vector<PeakType>::const_reverse_iterator const_reverse_iterator;
87 
89  {
90  return trace_peaks_.begin();
91  }
92 
94  {
95  return trace_peaks_.end();
96  }
97 
99  {
100  return trace_peaks_.begin();
101  }
102 
104  {
105  return trace_peaks_.end();
106  }
107 
109  {
110  return trace_peaks_.rbegin();
111  }
112 
114  {
115  return trace_peaks_.rend();
116  }
117 
119  {
120  return trace_peaks_.rbegin();
121  }
122 
124  {
125  return trace_peaks_.rend();
126  }
128 
133 
135  Size getSize() const
136  {
137  return trace_peaks_.size();
138  }
139 
141  String getLabel() const
142  {
143  return label_;
144  }
145 
147  void setLabel(const String & label)
148  {
149  label_ = label;
150  }
151 
153  double getCentroidMZ() const
154  {
155  return centroid_mz_;
156  }
157 
159  double getCentroidIM() const
160  {
161  return centroid_im_;
162  }
163 
165  double getCentroidRT() const
166  {
167  return centroid_rt_;
168  }
169 
170  double getCentroidSD() const
171  {
172  return centroid_sd_;
173  }
174 
175  void setCentroidSD(const double & tmp_sd)
176  {
177  centroid_sd_ = tmp_sd;
178  }
179 
180  void setCentroidIM(const double & im)
181  {
182  centroid_im_ = im;
183  }
184 
185  double getFWHM() const
186  {
187  return fwhm_;
188  }
189 
191  double getTraceLength() const
192  {
193  double length(0.0);
194 
195  if (trace_peaks_.size() > 1)
196  {
197  length = std::fabs(trace_peaks_.rbegin()->getRT() - trace_peaks_.begin()->getRT());
198  }
199 
200  return length;
201  }
202 
203  std::pair<Size, Size> getFWHMborders() const
204  {
205  return std::make_pair(fwhm_start_idx_, fwhm_end_idx_);
206  }
207 
209  const std::vector<double>& getSmoothedIntensities() const
210  {
211  return smoothed_intensities_;
212  }
213 
215  void setSmoothedIntensities(const std::vector<double> & db_vec)
216  {
217  if (trace_peaks_.size() != db_vec.size())
218  {
219  throw Exception::InvalidValue(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION,
220  "Number of smoothed intensities deviates from mass trace size! Aborting...", String(db_vec.size()));
221  }
222 
223  smoothed_intensities_ = db_vec;
224  }
225 
227  double getAverageMS1CycleTime() const
228  {
229  if (trace_peaks_.size() <= 1) return 0.0;
230 
231  return (trace_peaks_.rbegin()->getRT() - trace_peaks_.begin()->getRT()) / (trace_peaks_.size() - 1);
232  }
234 
238 
240  double computeSmoothedPeakArea() const;
241 
243  double computePeakArea() const;
244 
246  double computeIntensitySum() const;
247 
249  Size findMaxByIntPeak(bool use_smoothed_ints = false) const;
250 
254  double estimateFWHM(bool use_smoothed_ints = false);
255 
258 
261 
263  double computeFwhmAreaSmooth() const;
264  double computeFwhmArea() const;
265  // double computeFwhmAreaSmoothRobust() const;
266  // double computeFwhmAreaRobust() const;
267 
268  double getIntensity(bool smoothed) const;
269  double getMaxIntensity(bool smoothed) const;
270 
274 
278 
280 
283 
285 
288 
291 
293  void updateMeanMZ();
294 
297 
305 
308  double fwhm_mz_avg = 0;
309 
312  double fwhm_im_avg = 0;
313 
314 private:
315 
317  double computeMedianIntensity_() const;
318 
322  double linearInterpolationAtY_(double xA, double xB, double yA, double yB, double y_eval) const;
323 
325  std::vector<PeakType> trace_peaks_;
326 
328  double centroid_mz_ = 0.0;
329 
332  double centroid_im_ = 0.0;
333 
335  double centroid_sd_ = 0.0;
336 
338  double centroid_rt_ = 0.0;
339 
342 
344  std::vector<double> smoothed_intensities_;
345 
346  double fwhm_ = 0.0;
347  Size fwhm_start_idx_ = 0;
348  Size fwhm_end_idx_ = 0;
349 
351  MT_QUANTMETHOD quant_method_ = MT_QUANT_AREA;
352 
353  };
354 
355 }
356 
Definition: ConvexHull2D.h:47
Invalid value exception.
Definition: Exception.h:305
A container type that gathers peaks similar in m/z and moving along retention time.
Definition: MassTrace.h:36
void setSmoothedIntensities(const std::vector< double > &db_vec)
Set smoothed intensities (smoothing is done externally, e.g. by LowessSmoothing).
Definition: MassTrace.h:215
double computePeakArea() const
Compute area of peaks in the mass trace.
void updateMedianMZ()
Compute & update centroid m/z as median of m/z values.
String getLabel() const
Gets label of mass trace.
Definition: MassTrace.h:141
const_reverse_iterator rend() const
Definition: MassTrace.h:123
void updateMedianRT()
Compute & update centroid RT as median position of intensities.
double getCentroidMZ() const
Returns the centroid m/z.
Definition: MassTrace.h:153
void setLabel(const String &label)
Sets label of mass trace.
Definition: MassTrace.h:147
std::vector< PeakType >::const_reverse_iterator const_reverse_iterator
Definition: MassTrace.h:86
const_iterator begin() const
Definition: MassTrace.h:98
void setQuantMethod(MT_QUANTMETHOD method)
determine if area or median is used for quantification
MT_QUANTMETHOD getQuantMethod() const
check if area or median is used for quantification
std::pair< Size, Size > getFWHMborders() const
Definition: MassTrace.h:203
Size getSize() const
Returns the number of peaks contained in the mass trace.
Definition: MassTrace.h:135
Size findMaxByIntPeak(bool use_smoothed_ints=false) const
Return the index of the mass trace's highest peak within the MassTrace container (based either on raw...
double getTraceLength() const
Returns the length of the trace (as difference in RT)
Definition: MassTrace.h:191
double getFWHM() const
Definition: MassTrace.h:185
double estimateFWHM(bool use_smoothed_ints=false)
static MT_QUANTMETHOD getQuantMethod(const String &val)
converts a string to enum value; returns 'SIZE_OF_MT_QUANTMETHOD' upon error
void setCentroidIM(const double &im)
Definition: MassTrace.h:180
double computeMedianIntensity_() const
median of trace intensities
MassTrace()=default
Default constructor.
PeakType & operator[](const Size &mt_idx)
Random access operator.
std::vector< PeakType >::const_iterator const_iterator
Definition: MassTrace.h:84
double getIntensity(bool smoothed) const
reverse_iterator rend()
Definition: MassTrace.h:113
MassTrace(const std::vector< PeakType > &trace_peaks)
Detailed constructor for vector.
double computeFwhmAreaSmooth() const
Compute chromatographic peak area within the FWHM range.
double linearInterpolationAtY_(double xA, double xB, double yA, double yB, double y_eval) const
std::vector< PeakType >::reverse_iterator reverse_iterator
Definition: MassTrace.h:85
MassTrace(const MassTrace &)=default
Copy constructor.
std::vector< double > smoothed_intensities_
Container for smoothed intensities. Smoothing must be done externally.
Definition: MassTrace.h:344
double computeSmoothedPeakArea() const
Sum all non-negative (smoothed!) intensities in the mass trace.
String label_
Trace label.
Definition: MassTrace.h:341
double getCentroidRT() const
Returns the centroid RT.
Definition: MassTrace.h:165
double getCentroidSD() const
Definition: MassTrace.h:170
const std::vector< double > & getSmoothedIntensities() const
Gets smoothed intensities (empty if no smoothing was explicitly done beforehand!).
Definition: MassTrace.h:209
void updateSmoothedWeightedMeanRT()
double computeFwhmArea() const
void updateMeanMZ()
Compute & update centroid m/z as mean of m/z values.
void updateSmoothedMaxRT()
std::vector< PeakType >::iterator iterator
Definition: MassTrace.h:83
double getCentroidIM() const
Returns the centroid ion mobility.
Definition: MassTrace.h:159
~MassTrace()=default
Destructor.
double getAverageMS1CycleTime() const
Get average scan time of mass trace.
Definition: MassTrace.h:227
ConvexHull2D getConvexhull() const
Return the mass trace's convex hull.
void updateWeightedMeanRT()
Compute & update centroid RT as a intensity-weighted mean of RTs.
iterator end()
Definition: MassTrace.h:93
const_iterator end() const
Definition: MassTrace.h:103
reverse_iterator rbegin()
Definition: MassTrace.h:108
const PeakType & operator[](const Size &mt_idx) const
void updateWeightedMZsd()
Compute & update m/z standard deviation of mass trace as weighted mean of m/z values.
MassTrace(const std::list< PeakType > &trace_peaks)
void setCentroidSD(const double &tmp_sd)
Definition: MassTrace.h:175
iterator begin()
Definition: MassTrace.h:88
MT_QUANTMETHOD
Definition: MassTrace.h:40
@ MT_QUANT_MEDIAN
quantify by median of intensities
Definition: MassTrace.h:42
@ MT_QUANT_HEIGHT
quantify by peak height
Definition: MassTrace.h:43
std::vector< PeakType > trace_peaks_
Actual MassTrace container for doing centroid calculation, peak width estimation etc.
Definition: MassTrace.h:325
const_reverse_iterator rbegin() const
Definition: MassTrace.h:118
void updateWeightedMeanMZ()
Compute & update centroid m/z as weighted mean of m/z values.
double getMaxIntensity(bool smoothed) const
MassTrace & operator=(const MassTrace &)=default
Assignment operator.
double computeIntensitySum() const
Sum all peak intensities in the mass trace.
A 2-dimensional raw data point or peak.
Definition: Peak2D.h:29
A more convenient string class.
Definition: String.h:34
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:97
Main OpenMS namespace.
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
Peak2D PeakType
Definition: MassTrace.h:21