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 
47 namespace OpenMS
48 {
49  typedef Peak2D PeakType;
50 
59  class OPENMS_DLLAPI MassTrace
60  {
61 public:
64  MassTrace();
66 
69  MassTrace(const std::list<PeakType>& trace_peaks);
70 
72  MassTrace(const std::vector<PeakType>& trace_peaks);
73 
75  ~MassTrace();
76 
78  MassTrace(const MassTrace &);
79 
81  MassTrace & operator=(const MassTrace &);
82 
84  PeakType& operator[](const Size & mt_idx);
85  const PeakType& operator[](const Size & mt_idx) const;
86 
87 
91  typedef std::vector<PeakType>::iterator iterator;
92  typedef std::vector<PeakType>::const_iterator const_iterator;
93  typedef std::vector<PeakType>::reverse_iterator reverse_iterator;
94  typedef std::vector<PeakType>::const_reverse_iterator const_reverse_iterator;
95 
96  iterator begin()
97  {
98  return trace_peaks_.begin();
99  }
100 
101  iterator end()
102  {
103  return trace_peaks_.end();
104  }
105 
106  const_iterator begin() const
107  {
108  return trace_peaks_.begin();
109  }
110 
111  const_iterator end() const
112  {
113  return trace_peaks_.end();
114  }
115 
116  reverse_iterator rbegin()
117  {
118  return trace_peaks_.rbegin();
119  }
120 
121  reverse_iterator rend()
122  {
123  return trace_peaks_.rend();
124  }
125 
126  const_reverse_iterator rbegin() const
127  {
128  return trace_peaks_.rbegin();
129  }
130 
131  const_reverse_iterator rend() const
132  {
133  return trace_peaks_.rend();
134  }
135 
139  Size getSize() const
141  {
142  return trace_peaks_.size();
143  }
144 
146  String getLabel() const
147  {
148  return label_;
149  }
150 
152  void setLabel(const String & label)
153  {
154  label_ = label;
155  }
156 
158  double getCentroidMZ() const
159  {
160  return centroid_mz_;
161  }
162 
164  double getCentroidRT() const
165  {
166  return centroid_rt_;
167  }
168 
169  double getCentroidSD() const
170  {
171  return centroid_sd_;
172  }
173 
174  void setCentroidSD(const double & tmp_sd)
175  {
176  centroid_sd_ = tmp_sd;
177  }
178 
179  double getFWHM() const
180  {
181  return fwhm_;
182  }
183 
184  double getTraceLength() const
185  {
186  double length(0.0);
187 
188  if (trace_peaks_.size() > 1)
189  {
190  length = std::fabs(trace_peaks_.rbegin()->getRT() - trace_peaks_.begin()->getRT());
191  }
192 
193  return length;
194  }
195 
196  std::pair<Size, Size> getFWHMborders() const
197  {
198  return std::make_pair(fwhm_start_idx_, fwhm_end_idx_);
199  }
200 
202  const std::vector<double>& getSmoothedIntensities() const
203  {
204  return smoothed_intensities_;
205  }
206 
208  void setSmoothedIntensities(const std::vector<double> & db_vec)
209  {
210  if (trace_peaks_.size() != db_vec.size())
211  {
212  throw Exception::InvalidValue(__FILE__, __LINE__, __PRETTY_FUNCTION__, "Number of smoothed intensities deviates from mass trace size! Aborting...", String(db_vec.size()));
213  }
214 
215  smoothed_intensities_ = db_vec;
216  }
217 
219  double getAverageMS1CycleTime() const
220  {
221  if (trace_peaks_.size() <= 1) return 0.0;
222 
223  return (trace_peaks_.rbegin()->getRT() - trace_peaks_.begin()->getRT()) / (trace_peaks_.size() - 1);
224  }
225 
228  double computeSmoothedPeakArea() const;
230 
232  double computePeakArea() const;
233 
235  Size findMaxByIntPeak(bool use_smoothed_ints = false) const;
236 
239  double estimateFWHM(bool use_smoothed_ints = false);
240 
243  void disableFHWM();
244 
246  double computeFwhmAreaSmooth() const;
247  double computeFwhmArea() const;
248  // double computeFwhmAreaSmoothRobust() const;
249  // double computeFwhmAreaRobust() const;
250 
251  double getIntensity(bool smoothed) const;
252  double getMaxIntensity(bool smoothed) const;
253 
255  ConvexHull2D getConvexhull() const;
256 
257 
261  void updateSmoothedMaxRT();
262 
264  void updateWeightedMeanRT();
265 
266  void updateSmoothedWeightedMeanRT();
267 
269  void updateMedianRT();
270 
272  void updateMedianMZ();
273 
275  void updateMeanMZ();
276 
278  void updateWeightedMeanMZ();
279 
283  void updateWeightedMZsd();
284 
285 private:
287  std::vector<PeakType> trace_peaks_;
288 
290  double centroid_mz_;
291 
293  double centroid_sd_;
294 
296  double centroid_rt_;
297 
300 
302  std::vector<double> smoothed_intensities_;
303 
304  double fwhm_;
305  Size fwhm_start_idx_; // index into 'trace_peaks_' vector (inclusive)
306  Size fwhm_end_idx_; // index into 'trace_peaks_' vector (inclusive)
307 
309  // Size fwhm_num_scans_;
310  };
311 
312 }
313 
314 #endif // OPENMS_KERNEL_MASSTRACE_H
double getCentroidSD() const
Definition: MassTrace.h:169
const std::vector< double > & getSmoothedIntensities() const
Gets smoothed intensities (empty if no smoothing was explicitly done beforehand!).
Definition: MassTrace.h:202
iterator end()
Definition: MassTrace.h:101
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:208
double getAverageMS1CycleTime() const
Get average scan time of mass trace.
Definition: MassTrace.h:219
Peak2D PeakType
Definition: MassTrace.h:49
double centroid_sd_
intensity-weighted STD
Definition: MassTrace.h:293
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:47
reverse_iterator rbegin()
Definition: MassTrace.h:116
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:92
const_reverse_iterator rbegin() const
Definition: MassTrace.h:126
double centroid_rt_
Centroid RT.
Definition: MassTrace.h:296
std::vector< PeakType >::iterator iterator
Definition: MassTrace.h:91
double getCentroidMZ() const
Returns the centroid m/z.
Definition: MassTrace.h:158
std::vector< PeakType >::reverse_iterator reverse_iterator
Definition: MassTrace.h:93
double getTraceLength() const
Definition: MassTrace.h:184
const_iterator begin() const
Definition: MassTrace.h:106
void setCentroidSD(const double &tmp_sd)
Definition: MassTrace.h:174
iterator begin()
Definition: MassTrace.h:96
Size fwhm_end_idx_
Definition: MassTrace.h:306
std::vector< PeakType > trace_peaks_
Actual MassTrace container for doing centroid calculation, peak width estimation etc.
Definition: MassTrace.h:287
double centroid_mz_
Centroid m/z.
Definition: MassTrace.h:290
double fwhm_
Definition: MassTrace.h:304
std::vector< PeakType >::const_reverse_iterator const_reverse_iterator
Definition: MassTrace.h:94
Invalid value exception.
Definition: Exception.h:336
std::vector< double > smoothed_intensities_
Container for smoothed intensities. Smoothing must be done externally.
Definition: MassTrace.h:302
const_reverse_iterator rend() const
Definition: MassTrace.h:131
reverse_iterator rend()
Definition: MassTrace.h:121
Size fwhm_start_idx_
Definition: MassTrace.h:305
void setLabel(const String &label)
Sets label of mass trace.
Definition: MassTrace.h:152
String getLabel() const
Gets label of mass trace.
Definition: MassTrace.h:146
std::pair< Size, Size > getFWHMborders() const
Definition: MassTrace.h:196
String label_
Trace label.
Definition: MassTrace.h:299
double getFWHM() const
Definition: MassTrace.h:179
double getCentroidRT() const
Returns the centroid RT.
Definition: MassTrace.h:164
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:111

OpenMS / TOPP release 2.0.0 Documentation generated on Sat May 16 2015 16:13:24 using doxygen 1.8.9.1