OpenMS
MassTraceDetection.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, Mohammed Alhigaylan $
7 // --------------------------------------------------------------------------
8 
9 #pragma once
10 
16 
17 #include <boost/dynamic_bitset.hpp>
18 
19 namespace OpenMS
20 {
21 
48  class OPENMS_DLLAPI MassTraceDetection :
49  public DefaultParamHandler,
50  public ProgressLogger
51  {
52  public:
55  {
57  SAMPLE_RATE
58  };
59 
62 
64  ~MassTraceDetection() override;
65 
73  void run(const PeakMap &, std::vector<MassTrace> &, const Size max_traces = 0);
74 
76  void run(PeakMap::ConstAreaIterator & begin, PeakMap::ConstAreaIterator & end, std::vector<MassTrace> & found_masstraces);
77 
79  bool hasFwhmMz() const { return has_fwhm_mz_; }
80  bool hasFwhmIm() const { return has_fwhm_im_; }
81  bool hasCentroidIm() const { return has_centroid_im_; }
82 
85  protected:
86  void updateMembers_() override;
88  static void updateIterativeWeightedMean_(const double& added_value,
89  const double& added_intensity,
90  double& centroid_value,
91  double& prev_counter,
92  double& prev_denom);
93 
94  private:
95 
96  struct Apex
97  {
98  Apex(double intensity, Size scan_idx, Size peak_idx);
99  double intensity;
102  };
103 
106  {
108  double mz;
109  double intensity;
110  double im;
111  bool found;
112 
113  PeakCandidate() : idx(0), mz(-1.0), intensity(-1.0), im(-1.0), found(false) {}
114  };
115 
118  {
122  bool active;
123 
124  TraceExtensionState() : scan_counter(0), hitting_peak_count(0), consecutive_missed(0), active(true) {}
125  };
126 
128  void run_(const std::vector<Apex>& chrom_apices,
129  const Size peak_count,
130  const PeakMap & work_exp,
131  const std::vector<Size>& spec_offsets,
132  std::vector<MassTrace> & found_masstraces,
133  const Size max_traces = 0);
134 
136  void getIMIndices_(const PeakMap& spectra,
137  int& fwhm_meta_idx, bool& has_fwhm_mz,
138  int& im_idx, bool& has_centroid_im,
139  int& im_fwhm_idx, bool& has_fwhm_im) const;
140 
143  double centroid_mz,
144  double ftl_sd,
145  double centroid_im = -1.0) const;
146 
148  bool isPeakAcceptable_(const PeakCandidate& candidate,
149  double centroid_mz,
150  double ftl_sd,
151  double centroid_im,
152  Size spectrum_idx,
153  const std::vector<Size>& spec_offsets,
154  const boost::dynamic_bitset<>& peak_visited) const;
155 
157  void processPeak_(const PeakCandidate& candidate,
158  const MSSpectrum& spectrum,
159  std::list<PeakType>& current_trace,
160  std::vector<std::pair<Size, Size>>& gathered_idx,
161  std::vector<double>& fwhms_mz,
162  std::vector<double>& fwhms_im,
163  double& centroid_mz,
164  double& centroid_im,
165  double& prev_counter,
166  double& prev_denom,
167  double& prev_counter_im,
168  double& prev_denom_im,
169  double& ftl_sd,
170  double& intensity_so_far,
171  Size spectrum_idx,
172  bool is_upward_extension);
173 
174 
176  bool isTraceValid_(const std::list<PeakType>& trace,
177  Size total_scans_visited,
178  Size consecutive_missed_down,
179  Size consecutive_missed_up) const;
180 
181  // Metadata availability flags – set by getIMIndices_ and valid after run_()
182  bool has_fwhm_mz_ = false;
183  bool has_fwhm_im_ = false;
184  bool has_centroid_im_ = false;
185 
186  // parameter stuff
193 
199 
201 
202  // Metadata array indices - set during run_()
203  mutable int fwhm_meta_idx_ = -1;
204  mutable int ion_mobility_idx_ = -1;
205  mutable int im_fwhm_idx_ = -1;
206  };
207 }
A base class for all classes handling default parameters.
Definition: DefaultParamHandler.h:66
Forward iterator for an area of peaks in an experiment.
Definition: AreaIterator.h:36
In-Memory representation of a mass spectrometry run.
Definition: MSExperiment.h:49
The representation of a 1D spectrum.
Definition: MSSpectrum.h:44
A mass trace extraction method that gathers peaks similar in m/z and moving along retention time.
Definition: MassTraceDetection.h:51
double ion_mobility_tolerance_
Definition: MassTraceDetection.h:191
PeakCandidate findBestPeak_(const MSSpectrum &spectrum, double centroid_mz, double ftl_sd, double centroid_im=-1.0) const
Find the best matching peak in a spectrum considering m/z and optionally ion mobility.
TraceTerminationCriterion trace_termination_criterion_
Definition: MassTraceDetection.h:194
double noise_threshold_int_
Definition: MassTraceDetection.h:189
void getIMIndices_(const PeakMap &spectra, int &fwhm_meta_idx, bool &has_fwhm_mz, int &im_idx, bool &has_centroid_im, int &im_fwhm_idx, bool &has_fwhm_im) const
Internal helper to extract and validate metadata float array indices.
bool isPeakAcceptable_(const PeakCandidate &candidate, double centroid_mz, double ftl_sd, double centroid_im, Size spectrum_idx, const std::vector< Size > &spec_offsets, const boost::dynamic_bitset<> &peak_visited) const
Check if peak candidate meets acceptance criteria.
double mass_error_da_
Definition: MassTraceDetection.h:188
void processPeak_(const PeakCandidate &candidate, const MSSpectrum &spectrum, std::list< PeakType > &current_trace, std::vector< std::pair< Size, Size >> &gathered_idx, std::vector< double > &fwhms_mz, std::vector< double > &fwhms_im, double &centroid_mz, double &centroid_im, double &prev_counter, double &prev_denom, double &prev_counter_im, double &prev_denom_im, double &ftl_sd, double &intensity_so_far, Size spectrum_idx, bool is_upward_extension)
Process a single peak during trace extension.
double chrom_peak_snr_
Definition: MassTraceDetection.h:190
bool hasCentroidIm() const
Definition: MassTraceDetection.h:81
MassTrace::MT_QUANTMETHOD quant_method_
Definition: MassTraceDetection.h:192
static void updateIterativeWeightedMean_(const double &added_value, const double &added_intensity, double &centroid_value, double &prev_counter, double &prev_denom)
allows for the iterative computation of intensity weighted of a mass trace's centroid m/z or ion mobi...
MassTraceDetection()
Default constructor.
bool hasFwhmMz() const
determine if meta array is available
Definition: MassTraceDetection.h:79
Size trace_termination_outliers_
Definition: MassTraceDetection.h:195
double min_trace_length_
Definition: MassTraceDetection.h:197
void run_(const std::vector< Apex > &chrom_apices, const Size peak_count, const PeakMap &work_exp, const std::vector< Size > &spec_offsets, std::vector< MassTrace > &found_masstraces, const Size max_traces=0)
The internal run method.
double min_sample_rate_
Definition: MassTraceDetection.h:196
void run(const PeakMap &, std::vector< MassTrace > &, const Size max_traces=0)
Main method of MassTraceDetection. Extracts mass traces of a MSExperiment and gathers them into a vec...
~MassTraceDetection() override
Default destructor.
double mass_error_ppm_
Definition: MassTraceDetection.h:187
TraceTerminationCriterion
Trace termination criteria enum for performance optimization.
Definition: MassTraceDetection.h:55
@ OUTLIER
Terminate when consecutive outliers exceed threshold.
Definition: MassTraceDetection.h:56
void updateMembers_() override
This method is used to update extra member variables at the end of the setParameters() method.
double max_trace_length_
Definition: MassTraceDetection.h:198
bool isTraceValid_(const std::list< PeakType > &trace, Size total_scans_visited, Size consecutive_missed_down, Size consecutive_missed_up) const
Check if a mass trace meets quality criteria.
bool reestimate_mt_sd_
Definition: MassTraceDetection.h:200
bool hasFwhmIm() const
Definition: MassTraceDetection.h:80
void run(PeakMap::ConstAreaIterator &begin, PeakMap::ConstAreaIterator &end, std::vector< MassTrace > &found_masstraces)
Invokes the run method (see above) on merely a subregion of a MSExperiment map.
MT_QUANTMETHOD
Definition: MassTrace.h:40
Base class for all classes that want to report their progress.
Definition: ProgressLogger.h:27
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
Definition: MassTraceDetection.h:97
Size scan_idx
Definition: MassTraceDetection.h:100
Apex(double intensity, Size scan_idx, Size peak_idx)
double intensity
Definition: MassTraceDetection.h:99
Size peak_idx
Definition: MassTraceDetection.h:101
Encapsulates peak finding logic for both up and down directions.
Definition: MassTraceDetection.h:106
double intensity
Definition: MassTraceDetection.h:109
double mz
Definition: MassTraceDetection.h:108
bool found
Definition: MassTraceDetection.h:111
double im
Definition: MassTraceDetection.h:110
Size idx
Definition: MassTraceDetection.h:107
PeakCandidate()
Definition: MassTraceDetection.h:113
Encapsulates trace extension state.
Definition: MassTraceDetection.h:118
bool active
Definition: MassTraceDetection.h:122
Size hitting_peak_count
Definition: MassTraceDetection.h:120
Size scan_counter
Definition: MassTraceDetection.h:119
TraceExtensionState()
Definition: MassTraceDetection.h:124
Size consecutive_missed
Definition: MassTraceDetection.h:121