OpenMS
FLASHDeconvAlgorithm.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: Kyowon Jeong, Jihyung Kim $
6 // $Authors: Kyowon Jeong, Jihyung Kim $
7 // --------------------------------------------------------------------------
8 
9 #pragma once
10 
19 #include <boost/dynamic_bitset.hpp>
20 #include <iostream>
21 
22 namespace OpenMS
23 {
34  class OPENMS_DLLAPI FLASHDeconvAlgorithm : public DefaultParamHandler, public ProgressLogger
35  {
36  public:
39 
42 
44  FLASHDeconvAlgorithm(FLASHDeconvAlgorithm&& other) noexcept = default;
45 
48 
51 
53  ~FLASHDeconvAlgorithm() override = default;
54 
55  std::vector<double> getTolerances() const;
56 
63  void run(MSExperiment& map, std::vector<DeconvolvedSpectrum>& deconvolved_spectra, std::vector<FLASHHelperClasses::MassFeature>& deconvolved_feature);
64 
67 
70 
72  double getNoiseDecoyWeight() const
73  {
74  return noise_decoy_weight_;
75  }
77  static int getScanNumber(const MSExperiment& map, Size index);
78 
79  protected:
80  void updateMembers_() override;
81 
82  private:
84  SpectralDeconvolution sd_, sd_noise_decoy_, sd_signal_decoy_;
85 
87  int merge_spec_ = 0;
88 
90  int forced_ms_level_ = 0;
91 
93  UInt max_ms_level_ = 4;
94 
96  UInt current_max_ms_level_ = 0;
97 
99  UInt current_min_ms_level_ = 0;
100 
102  int precursor_MS1_window_ = 0;
103 
106 
109 
111  bool use_RNA_averagine_ = false;
112 
114  bool report_decoy_ = false;
115 
117  double isolation_window_size_{3.0};
118 
120  double noise_decoy_weight_ = 1;
122  std::map<int, std::vector<std::vector<float>>> precursor_map_for_ida_;
124  std::map<String, PeakGroup> native_id_precursor_peak_group_map_;
125 
128 
130  void mergeSpectra_(MSExperiment& map, uint ms_level);
131 
133  void runSpectralDeconvolution_(MSExperiment& map, std::vector<DeconvolvedSpectrum>& deconvolved_spectra);
134 
136  int findPrecursorScanNumber_(const MSExperiment& map, Size index, uint ms_level) const;
137 
139  void appendDecoyPeakGroups_(DeconvolvedSpectrum& deconvolved_spectrum, const MSSpectrum& spec, int scan_number, const PeakGroup& precursor_pg);
140 
142  void runFeatureFinding_(std::vector<DeconvolvedSpectrum>& deconvolved_spectra, std::vector<FLASHHelperClasses::MassFeature>& deconvolved_features);
143 
145  static void updatePrecursorQScores_(std::vector<DeconvolvedSpectrum>& deconvolved_spectra, int ms_level);
146 
148  void findPrecursorPeakGroupsFormIdaLog_(const MSExperiment& map, Size index, double start_mz, double end_mz);
149 
151  void findPrecursorPeakGroupsForMSnSpectra_(const MSExperiment& map, const std::vector<DeconvolvedSpectrum>& deconvolved_spectra, uint ms_level);
152 
154  std::pair<int, int> findScanNumberBounds_(const MSExperiment& map, Size index, uint ms_level) const;
155 
157  std::vector<DeconvolvedSpectrum> collectSurveyScans_(const std::vector<DeconvolvedSpectrum>& deconvolved_spectra, int b_scan_number, int a_scan_number, uint ms_level) const;
158 
160  std::pair<double, double> getIsolationWindowMzRange_(const MSSpectrum& spec) const;
161 
163  PeakGroup findBestPrecursorPeakGroup_(const std::vector<DeconvolvedSpectrum>& survey_scans, double start_mz, double end_mz) const;
164 
166  void determineTolerance_(const MSExperiment& map, const Param& sd_param, const FLASHHelperClasses::PrecalculatedAveragine& avg, uint ms_level);
167 
169  static std::vector<int> getHistogram_(const std::vector<double>& data, double min_range, double max_range, double bin_size);
170 
172  static void filterLowPeaks_(MSExperiment& map);
173  };
174 } // namespace OpenMS
A class representing a deconvolved spectrum. DeconvolvedSpectrum consists of PeakGroup instances repr...
Definition: DeconvolvedSpectrum.h:30
A base class for all classes handling default parameters.
Definition: DefaultParamHandler.h:66
FLASHDeconv algorithm: ultrafast mass deconvolution algorithm for top down mass spectrometry dataset ...
Definition: FLASHDeconvAlgorithm.h:35
std::vector< DeconvolvedSpectrum > collectSurveyScans_(const std::vector< DeconvolvedSpectrum > &deconvolved_spectra, int b_scan_number, int a_scan_number, uint ms_level) const
collect survey scans within the given scan number bounds
FLASHDeconvAlgorithm()
default constructor
double getNoiseDecoyWeight() const
get noise decoy weight
Definition: FLASHDeconvAlgorithm.h:72
int findPrecursorScanNumber_(const MSExperiment &map, Size index, uint ms_level) const
find precursor scan number when peak group is not found
void updateMSLevels_(MSExperiment &map)
read dataset to update ms level information
static std::vector< int > getHistogram_(const std::vector< double > &data, double min_range, double max_range, double bin_size)
get histogram
std::vector< double > getTolerances() const
DoubleList min_cos_
Definition: FLASHDeconvAlgorithm.h:108
PeakGroup findBestPrecursorPeakGroup_(const std::vector< DeconvolvedSpectrum > &survey_scans, double start_mz, double end_mz) const
find the best precursor peak group from survey scans within the isolation window
static void filterLowPeaks_(MSExperiment &map)
filter low intensity peaks
void findPrecursorPeakGroupsFormIdaLog_(const MSExperiment &map, Size index, double start_mz, double end_mz)
find precursor peak groups from FLASHIda log file
void determineTolerance_(const MSExperiment &map, const Param &sd_param, const FLASHHelperClasses::PrecalculatedAveragine &avg, uint ms_level)
determine tolerance
std::pair< double, double > getIsolationWindowMzRange_(const MSSpectrum &spec) const
get isolation window m/z range from precursors
void mergeSpectra_(MSExperiment &map, uint ms_level)
merge spectra
std::map< String, PeakGroup > native_id_precursor_peak_group_map_
a map from native ID to precursor peak group
Definition: FLASHDeconvAlgorithm.h:124
void runFeatureFinding_(std::vector< DeconvolvedSpectrum > &deconvolved_spectra, std::vector< FLASHHelperClasses::MassFeature > &deconvolved_features)
run feature finding to get deconvolved features
void runSpectralDeconvolution_(MSExperiment &map, std::vector< DeconvolvedSpectrum > &deconvolved_spectra)
run spectral deconvolution
static void updatePrecursorQScores_(std::vector< DeconvolvedSpectrum > &deconvolved_spectra, int ms_level)
with found deconvolved features, update QScores for masses that are contained in features.
const FLASHHelperClasses::PrecalculatedAveragine & getAveragine()
get calculated averagine. Call after calculateAveragine is called.
FLASHDeconvAlgorithm(const FLASHDeconvAlgorithm &)=default
copy constructor
std::pair< int, int > findScanNumberBounds_(const MSExperiment &map, Size index, uint ms_level) const
find scan number bounds for precursor search
FLASHDeconvAlgorithm & operator=(const FLASHDeconvAlgorithm &fd)=default
assignment operator
String ida_log_file_
FLASHIda log file name.
Definition: FLASHDeconvAlgorithm.h:105
SpectralDeconvolution sd_
SpectralDeconvolution instances for spectral deconvolution for target and decoys.
Definition: FLASHDeconvAlgorithm.h:84
static int getScanNumber(const MSExperiment &map, Size index)
get scan number of the spectrum in index -th in map
void findPrecursorPeakGroupsForMSnSpectra_(const MSExperiment &map, const std::vector< DeconvolvedSpectrum > &deconvolved_spectra, uint ms_level)
register the precursor peak group (or mass) if possible for MSn (n>1) spectrum.
void updateMembers_() override
This method is used to update extra member variables at the end of the setParameters() method.
~FLASHDeconvAlgorithm() override=default
destructor
void run(MSExperiment &map, std::vector< DeconvolvedSpectrum > &deconvolved_spectra, std::vector< FLASHHelperClasses::MassFeature > &deconvolved_feature)
Run FLASHDeconv algorithm for map and store deconvolved_spectra and deconvolved_feature.
FLASHDeconvAlgorithm & operator=(FLASHDeconvAlgorithm &&fd)=default
move assignment operator
std::map< int, std::vector< std::vector< float > > > precursor_map_for_ida_
FLASHIda parsing information is stored here: MS1 scan - information.
Definition: FLASHDeconvAlgorithm.h:122
const FLASHHelperClasses::PrecalculatedAveragine & getDecoyAveragine()
get calculated decoy averagine. Call after calculateAveragine is called.
FLASHDeconvAlgorithm(FLASHDeconvAlgorithm &&other) noexcept=default
move constructor
void appendDecoyPeakGroups_(DeconvolvedSpectrum &deconvolved_spectrum, const MSSpectrum &spec, int scan_number, const PeakGroup &precursor_pg)
append decoy peak groups to deconvolved spectrum
Averagine patterns pre-calculated for speed up. Other variables are also calculated for fast cosine c...
Definition: FLASHHelperClasses.h:39
In-Memory representation of a mass spectrometry run.
Definition: MSExperiment.h:49
The representation of a 1D spectrum.
Definition: MSSpectrum.h:44
Management and storage of parameters / INI files.
Definition: Param.h:46
Class describing a deconvolved mass. A mass contains multiple (LogMz) peaks of different charges and ...
Definition: PeakGroup.h:26
Base class for all classes that want to report their progress.
Definition: ProgressLogger.h:27
FLASHDeconv algorithm: ultrafast mass deconvolution algorithm for top down mass spectrometry dataset ...
Definition: SpectralDeconvolution.h:34
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
std::vector< double > DoubleList
Vector of double precision real types.
Definition: ListUtils.h:36
Main OpenMS namespace.
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19