OpenMS
Loading...
Searching...
No Matches
MultiplexFiltering.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: Lars Nilse $
6// $Authors: Lars Nilse $
7// --------------------------------------------------------------------------
8
9#pragma once
10
20
21#include <functional>
22#include <optional>
23#include <vector>
24#include <algorithm>
25#include <iostream>
26
27
28namespace OpenMS
29{
49 class OPENMS_DLLAPI MultiplexFiltering :
50 public ProgressLogger
51 {
52public:
64 typedef std::vector<std::map<int, int> > White2Original;
65
82 MultiplexFiltering(const MSExperiment& exp_centroided, const std::vector<MultiplexIsotopicPeakPattern>& patterns, int isotopes_per_peptide_min,
83 int isotopes_per_peptide_max, double intensity_cutoff, double rt_band, double mz_tolerance, bool mz_tolerance_unit,
84 double peptide_similarity, double averagine_similarity, double averagine_similarity_scaling, std::string averagine_type="peptide");
89
94
95protected:
100 {
101 size_t rt_idx;
102 size_t mz_idx;
103 int value;
104 };
105
114
125 int checkForSignificantPeak_(double mz, double mz_tolerance, MSExperiment::ConstIterator& it_rt, double intensity_first_peak) const;
126
143 bool filterPeakPositions_(double mz, const MSExperiment::ConstIterator& it_rt_begin, const MSExperiment::ConstIterator& it_rt_band_begin, const MSExperiment::ConstIterator& it_rt_band_end, const MultiplexIsotopicPeakPattern& pattern, MultiplexFilteredPeak& peak, std::vector<BlacklistEntry>* blacklist_reads = nullptr) const;
144
153
164 void blacklistPeak_(const MultiplexFilteredPeak& peak, unsigned pattern_idx);
165
175 void blacklistEntries_(const MultiplexFilteredPeak& peak, unsigned pattern_idx, std::vector<BlacklistEntry>& entries) const;
176
184 typedef std::function<std::optional<MultiplexFilteredPeak>(SignedSize, std::vector<BlacklistEntry>*)> PeakFilter;
185
202 void filterSpectrum_(size_t idx_rt, unsigned pattern_idx, const PeakFilter& filter_peak, MultiplexFilteredMSExperiment& result);
203
216
230
235
239 std::vector<std::vector<int> > blacklist_;
240
246 std::vector<std::vector<BlacklistEntry>> blacklist_reads_;
247
251 std::vector<std::vector<BlacklistEntry>> blacklist_writes_;
252
259
264
268 std::vector<MultiplexIsotopicPeakPattern> patterns_;
269
274
279
284
288 double rt_band_;
289
294
299
304
309
314
319 std::string averagine_type_;
320
321 };
322
323}
324
In-Memory representation of a mass spectrometry run.
Definition MSExperiment.h:49
std::vector< SpectrumType >::const_iterator ConstIterator
Non-mutable iterator.
Definition MSExperiment.h:86
data structure storing all peaks (and optionally their raw data points) of an experiment correspondin...
Definition MultiplexFilteredMSExperiment.h:27
data structure storing a single peak that passed all filters
Definition MultiplexFilteredPeak.h:44
base class for filtering centroided and profile data for peak patterns
Definition MultiplexFiltering.h:51
std::function< std::optional< MultiplexFilteredPeak >(SignedSize, std::vector< BlacklistEntry > *)> PeakFilter
decides on one peak of a 'white' spectrum
Definition MultiplexFiltering.h:184
std::vector< std::vector< BlacklistEntry > > blacklist_writes_
for each peak of the spectrum being filtered that passes, the entries of blacklist_ it sets (see filt...
Definition MultiplexFiltering.h:251
bool filterPeptideCorrelation_(const MultiplexIsotopicPeakPattern &pattern, const MultiplexFilteredPeak &peak) const
check if corresponding satellite peaks of different peptides show a good correlation
MSExperiment exp_centroided_white_
"white" centroided experimental data
Definition MultiplexFiltering.h:258
double rt_band_
RT range used for filtering.
Definition MultiplexFiltering.h:288
MSExperiment exp_centroided_
centroided experimental data
Definition MultiplexFiltering.h:234
double peptide_similarity_
peptide similarity
Definition MultiplexFiltering.h:303
double averagine_similarity_
averagine similarity
Definition MultiplexFiltering.h:308
int checkForSignificantPeak_(double mz, double mz_tolerance, MSExperiment::ConstIterator &it_rt, double intensity_first_peak) const
check for significant peak
size_t isotopes_per_peptide_max_
maximum number of isotopic peaks per peptide
Definition MultiplexFiltering.h:278
size_t mz_idx
Definition MultiplexFiltering.h:102
White2Original exp_centroided_mapping_
mapping of peak indices from a 'white' experiment exp_centroided_white_ to its original experiment ex...
Definition MultiplexFiltering.h:263
double averagine_similarity_scaling_
averagine similarity scaling
Definition MultiplexFiltering.h:313
bool filterAveragineModel_(const MultiplexIsotopicPeakPattern &pattern, const MultiplexFilteredPeak &peak) const
check if the satellite peaks conform with the averagine model
std::vector< MultiplexIsotopicPeakPattern > patterns_
list of peak patterns
Definition MultiplexFiltering.h:268
void blacklistEntries_(const MultiplexFilteredPeak &peak, unsigned pattern_idx, std::vector< BlacklistEntry > &entries) const
the entries of blacklist_ that blacklistPeak_() sets, with their new values, in the order it sets the...
size_t rt_idx
Definition MultiplexFiltering.h:101
MSExperiment getBlacklist()
returns the blacklisted, centroided peaks
MultiplexFiltering(const MSExperiment &exp_centroided, const std::vector< MultiplexIsotopicPeakPattern > &patterns, int isotopes_per_peptide_min, int isotopes_per_peptide_max, double intensity_cutoff, double rt_band, double mz_tolerance, bool mz_tolerance_unit, double peptide_similarity, double averagine_similarity, double averagine_similarity_scaling, std::string averagine_type="peptide")
constructor
std::vector< std::map< int, int > > White2Original
index mapping from a 'white' experiment to its original experiment
Definition MultiplexFiltering.h:64
double mz_tolerance_
m/z shift tolerance
Definition MultiplexFiltering.h:293
void filterSpectrum_(size_t idx_rt, unsigned pattern_idx, const PeakFilter &filter_peak, MultiplexFilteredMSExperiment &result)
filter all peaks of one 'white' spectrum, add the ones that pass to result and blacklist them
bool filterPeakPositions_(double mz, const MSExperiment::ConstIterator &it_rt_begin, const MSExperiment::ConstIterator &it_rt_band_begin, const MSExperiment::ConstIterator &it_rt_band_end, const MultiplexIsotopicPeakPattern &pattern, MultiplexFilteredPeak &peak, std::vector< BlacklistEntry > *blacklist_reads=nullptr) const
check if there are enough peaks in the RT band to form the pattern
void blacklistPeak_(const MultiplexFilteredPeak &peak, unsigned pattern_idx)
blacklist this peak
size_t isotopes_per_peptide_min_
minimum number of isotopic peaks per peptide
Definition MultiplexFiltering.h:273
int value
Definition MultiplexFiltering.h:103
void blacklistPeak_(const MultiplexFilteredPeak &peak)
blacklist this peak
bool mz_tolerance_unit_in_ppm_
unit for m/z shift tolerance (ppm - true, Da - false)
Definition MultiplexFiltering.h:298
MSExperiment & getCentroidedExperiment()
returns the intensity-filtered, centroided spectral data
double intensity_cutoff_
intensity cutoff
Definition MultiplexFiltering.h:283
std::vector< std::vector< int > > blacklist_
auxiliary structs for blacklisting
Definition MultiplexFiltering.h:239
void updateWhiteMSExperiment_()
construct an MS experiment from exp_centroided_ containing peaks which have not been previously black...
std::vector< std::vector< BlacklistEntry > > blacklist_reads_
for each peak of the spectrum being filtered, the entries of blacklist_ its decision read (see filter...
Definition MultiplexFiltering.h:246
std::string averagine_type_
type of averagine to use
Definition MultiplexFiltering.h:319
an entry of blacklist_ (spectrum index and peak index in exp_centroided_) and a value read from or wr...
Definition MultiplexFiltering.h:100
data structure for pattern of isotopic peaks
Definition MultiplexIsotopicPeakPattern.h:29
Base class for all classes that want to report their progress.
Definition ProgressLogger.h:28
ptrdiff_t SignedSize
Signed Size type e.g. used as pointer difference.
Definition Types.h:104
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19