OpenMS
PeakPickerMobilogram.h
Go to the documentation of this file.
1 // Copyright (c) 2002-present, The OpenMS Team -- EKU Tuebingen, ETH Zurich, and FU Berlin
2 // SPDX-License-Identifier: BSD-3-Clause
3 //
4 // --------------------------------------------------------------------------
5 // $Maintainer: Justin Sing $
6 // $Authors: Justin Sing $
7 // --------------------------------------------------------------------------
8 
9 #pragma once
10 
18 
22 
24 #include <vector>
25 
26 namespace OpenMS
27 {
40  class OPENMS_DLLAPI PeakPickerMobilogram :
41  public DefaultParamHandler
42  {
43  public:
47 
49  ~PeakPickerMobilogram() override {}
51 
53  enum FLOATINDICES { IDX_FWHM = 0, IDX_ABUNDANCE = 1, IDX_LEFTBORDER = 2, IDX_RIGHTBORDER = 3, IDX_OF_LEFTBORDER_IDX = 4, IDX_OF_RIGHTBORDER_IDX = 5, SIZE_OF_FLOATINDICES };
54 
56  struct PeakPositions {
57  size_t left; // Left position of the peak
58  size_t apex; // Apex (highest point) position of the peak
59  size_t right; // Right position of the peak
60  };
61 
69  void pickMobilogram(const Mobilogram& mobilogram, Mobilogram& picked_mobilogram);
70 
78  void pickMobilogram(Mobilogram mobilogram, Mobilogram& picked_mobilogram, Mobilogram& smoothed_mobilogram);
79 
83  void filterTopPeak(Mobilogram& picked_mobilogram, std::vector<Mobilogram>& mobilograms, PeakPositions& peak_pos);
84 
88  void filterTopPeak(Mobilogram& picked_mobilogram, Mobilogram& mobilogram, PeakPositions& peak_pos);
89 
91  std::vector<double> integrated_intensities_;
92 
94  std::vector<Size> left_width_;
95 
97  std::vector<Size> right_width_;
98 
99  protected:
100  void pickMobilogram_(const Mobilogram& mobilogram, Mobilogram& picked_mobilogram);
101 
105  void integratePeaks_(const Mobilogram& mobilogram);
106 
115  Size findClosestPeak_(const Mobilogram& mobilogram, double target_im, Size current_peak = 0);
116 
132  static PeakPositions findHighestPeak_(const std::vector<double> intensities,
133  const std::vector<Size> left_widths,
134  const std::vector<Size> right_widths,
135  const size_t im_size);
136 
149  size_t left_index,
150  size_t right_index);
151 
163  void filterPeakIntensities_(std::vector<Mobilogram>& mobilograms,
164  size_t left_index,
165  size_t right_index);
166 
173  static std::vector<double> extractFloatValues_(const OpenMS::DataArrays::FloatDataArray& floatDataArray);
174 
181  static std::vector<std::size_t> extractIntValues_(const OpenMS::DataArrays::FloatDataArray& floatDataArray);
182 
186  PeakPositions filterTopPeak_(Mobilogram& picked_mobilogram, std::vector<Mobilogram>& mobilograms);
187 
191  PeakPositions filterTopPeak_(Mobilogram& picked_mobilogram, Mobilogram& mobilograms);
192 
197  void removeOverlappingPeaks_(const Mobilogram& mobilogram, Mobilogram& picked_mobilogram);
198 
200  void updateMembers_() override;
201 
202  // Members
208  double gauss_width_;
213 
215  double peak_width_;
218 
220  double sn_win_len_;
227 
231  };
232 }
Float data array class.
Definition: DataArrays.h:22
A base class for all classes handling default parameters.
Definition: DefaultParamHandler.h:66
This class represents a Gaussian lowpass-filter which works on uniform as well as on non-uniform prof...
Definition: GaussFilter.h:47
The representation of a 1D ion mobilogram.
Definition: Mobilogram.h:32
This class implements a fast peak-picking algorithm best suited for high resolution MS data (FT-ICR-M...
Definition: PeakPickerHiRes.h:59
The PeakPickerMobilogram finds peaks a single mobilogram.
Definition: PeakPickerMobilogram.h:42
std::vector< Size > right_width_
Temporary vector to hold the peak right widths.
Definition: PeakPickerMobilogram.h:97
std::vector< Size > left_width_
Temporary vector to hold the peak left widths.
Definition: PeakPickerMobilogram.h:94
static std::vector< std::size_t > extractIntValues_(const OpenMS::DataArrays::FloatDataArray &floatDataArray)
Helper function to convert OpenMS IntegerDataArray to a vector of std::size.
static std::vector< double > extractFloatValues_(const OpenMS::DataArrays::FloatDataArray &floatDataArray)
Helper function yo convert OpenMS FloatDataArray to a vector of doubles.
GaussFilter gauss_
Definition: PeakPickerMobilogram.h:230
double sn_win_len_
Signal to noise window length.
Definition: PeakPickerMobilogram.h:220
static PeakPositions findHighestPeak_(const std::vector< double > intensities, const std::vector< Size > left_widths, const std::vector< Size > right_widths, const size_t im_size)
Helper function to find the highest peak in a mobilogram.
UInt sgolay_frame_length_
Frame length for the SGolay smoothing.
Definition: PeakPickerMobilogram.h:204
String method_
Peak picker method.
Definition: PeakPickerMobilogram.h:226
double signal_to_noise_
Signal to noise threshold.
Definition: PeakPickerMobilogram.h:217
Size findClosestPeak_(const Mobilogram &mobilogram, double target_im, Size current_peak=0)
Helper function to find the closest peak in a mobilogram to "target_im".
double gauss_width_
Width of the Gaussian smoothing.
Definition: PeakPickerMobilogram.h:208
PeakPositions filterTopPeak_(Mobilogram &picked_mobilogram, Mobilogram &mobilograms)
Filter single mobilogram for the highest peak based on the picked mobilogram.
bool use_gauss_
Whether to use Gaussian smoothing.
Definition: PeakPickerMobilogram.h:210
std::vector< double > integrated_intensities_
Temporary vector to hold the integrated intensities.
Definition: PeakPickerMobilogram.h:91
bool write_sn_log_messages_
Whether to write out log messages of the SN estimator.
Definition: PeakPickerMobilogram.h:224
void removeOverlappingPeaks_(const Mobilogram &mobilogram, Mobilogram &picked_mobilogram)
Helper function to remove overlapping peaks in a single Chromatogram.
void filterPeakIntensities_(Mobilogram &mobilogram, size_t left_index, size_t right_index)
Helper function to filter peak intensities in a mobilogram.
size_t left
Definition: PeakPickerMobilogram.h:57
double peak_width_
Forced peak with.
Definition: PeakPickerMobilogram.h:215
bool remove_overlapping_
Whether to resolve overlapping peaks.
Definition: PeakPickerMobilogram.h:212
size_t right
Definition: PeakPickerMobilogram.h:59
void pickMobilogram_(const Mobilogram &mobilogram, Mobilogram &picked_mobilogram)
~PeakPickerMobilogram() override
Destructor.
Definition: PeakPickerMobilogram.h:49
FLOATINDICES
indices into FloatDataArrays of resulting picked mobilogram
Definition: PeakPickerMobilogram.h:53
void filterTopPeak(Mobilogram &picked_mobilogram, Mobilogram &mobilogram, PeakPositions &peak_pos)
Filters a single mobilogram for the highest peak based on the picked mobilogram.
void updateMembers_() override
Synchronize members with param class.
void pickMobilogram(Mobilogram mobilogram, Mobilogram &picked_mobilogram, Mobilogram &smoothed_mobilogram)
Finds peaks in a single mobilogram and annotates left/right borders.
UInt sgolay_polynomial_order_
Polynomial order for the SGolay smoothing.
Definition: PeakPickerMobilogram.h:206
UInt sn_bin_count_
Signal to noise bin count.
Definition: PeakPickerMobilogram.h:222
void pickMobilogram(const Mobilogram &mobilogram, Mobilogram &picked_mobilogram)
Finds peaks in a single mobilogram and annotates left/right borders.
PeakPickerHiRes pp_
Definition: PeakPickerMobilogram.h:228
void filterTopPeak(Mobilogram &picked_mobilogram, std::vector< Mobilogram > &mobilograms, PeakPositions &peak_pos)
Filters a vector of mobilograms for the highest peak based on the picked mobilogram.
size_t apex
Definition: PeakPickerMobilogram.h:58
void integratePeaks_(const Mobilogram &mobilogram)
Compute peak area (peak integration)
SavitzkyGolayFilter sgolay_
Definition: PeakPickerMobilogram.h:229
void filterPeakIntensities_(std::vector< Mobilogram > &mobilograms, size_t left_index, size_t right_index)
Helper function to filter peak intensities for a vector of mobilograms.
PeakPositions filterTopPeak_(Mobilogram &picked_mobilogram, std::vector< Mobilogram > &mobilograms)
Filter vector of mobilograms for the highest peak based on the picked mobilogram.
Struct to hold peak positions.
Definition: PeakPickerMobilogram.h:56
Computes the Savitzky-Golay filter coefficients using QR decomposition.
Definition: SavitzkyGolayFilter.h:79
A more convenient string class.
Definition: String.h:34
unsigned int UInt
Unsigned integer type.
Definition: Types.h:64
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