OpenMS
Loading...
Searching...
No Matches
IonMobilityScoring.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: Hannes Roest $
6// $Authors: Hannes Roest $
7// --------------------------------------------------------------------------
8
9#pragma once
10
11// data access
19
20// Kernel classes
23
24// scoring
26
28#include <limits>
29#include <vector>
30namespace OpenMS
31{
32
33 struct RangeMobility;
34 struct RangeMZ;
35
36 // Forward declaration for optional mobilogram consumer to stream mobilograms to disk
37 class MobilogramParquetConsumer;
38
50 class OPENMS_DLLAPI IonMobilityScoring
51 {
55
56 public:
57
60
63
84 static void driftScoring(const SpectrumSequence& spectra,
85 const std::vector<TransitionType> & transitions,
86 OpenSwath_Scores & scores,
87 const double drift_target,
88 RangeMobility im_range,
89 const double dia_extraction_window_,
90 const bool dia_extraction_ppm_,
91 const double drift_extra,
92 const bool apply_im_peak_picking,
93 MobilogramParquetConsumer* mobilogram_consumer = nullptr,
94 const double feature_rt = std::numeric_limits<double>::quiet_NaN(),
95 Int64 feature_id = -1);
96
114 static void driftScoringMS1(const SpectrumSequence& spectra,
115 const std::vector<TransitionType> & transitions,
116 OpenSwath_Scores & scores,
117 const double drift_target,
118 RangeMobility im_range,
119 const double dia_extraction_window_,
120 const bool dia_extraction_ppm_,
121 const double drift_extra,
122 MobilogramParquetConsumer* mobilogram_consumer = nullptr,
123 const double feature_rt = std::numeric_limits<double>::quiet_NaN(),
124 Int64 feature_id = -1);
125
143 static void driftScoringMS1Contrast(const SpectrumSequence& spectra, const SpectrumSequence& ms1spectrum,
144 const std::vector<TransitionType> & transitions,
145 OpenSwath_Scores & scores,
146 RangeMobility im_range,
147 const double dia_extraction_window_,
148 const bool dia_extraction_ppm_,
149 const double drift_extra,
150 MobilogramParquetConsumer* mobilogram_consumer = nullptr,
151 const double feature_rt = std::numeric_limits<double>::quiet_NaN(),
152 Int64 feature_id = -1);
153
171 static void driftIdScoring(const SpectrumSequence& spectra,
172 const std::vector<TransitionType> & transitions,
173 MRMTransitionGroupType& transition_group_detection,
174 OpenSwath_Scores & scores,
175 const double drift_target,
176 RangeMobility im_range,
177 const double dia_extract_window_,
178 const bool dia_extraction_ppm_,
179 const double drift_extra,
180 const bool apply_im_peak_picking,
181 MobilogramParquetConsumer* mobilogram_consumer = nullptr,
182 const double feature_rt = std::numeric_limits<double>::quiet_NaN(),
183 Int64 feature_id = -1);
184
197 static void computeIonMobilogram(const SpectrumSequence& spectra,
198 const RangeMZ & mz_range,
199 const RangeMobility & im_range,
200 double & im,
201 double & intensity,
202 Mobilogram & res,
203 double eps);
204
205
206 private:
210 static std::vector<double> computeGrid_(const std::vector< Mobilogram >& mobilograms, double eps);
211
212
213 /*
214 @brief Extracts ion mobility values projected onto a grid
215
216 For a given ion mobility profile and a grid, compute an ion mobilogram
217 across the grid for each ion mobility data point. Returns two data arrays
218 for the ion mobilogram: intensity (y) and ion mobility (x). Zero values are
219 inserted if no data point was found for a given grid value.
220
221 @param[in] profile The ion mobility data
222 @param[in] im_grid The grid to be used
223 @param[in] eps Epsilon used for computing the ion mobility grid
224 @param[in] max_peak_idx The grid position of the maximum
225 */
226 static void alignToGrid_(const Mobilogram& profile,
227 const std::vector<double>& im_grid,
228 Mobilogram & aligned_profile,
229 double eps,
230 Size & max_peak_idx);
231
232 /*
233 @brief Extracts intensity values from a vector of Mobilogram objects
234
235 This function takes a vector of Mobilogram objects and extracts the intensity
236 values from each Mobilogram, storing them in a 2D vector of doubles. The
237 resulting vector of intensity values is stored in the provided output parameter.
238
239 @param[in] mobilograms A const reference to a vector of Mobilogram objects
240 from which to extract intensity values.
241 @param[out] int_values A reference to a vector of vector of doubles where
242 the extracted intensity values will be stored. This
243 vector will be cleared and resized as necessary.
244 */
245 static void extractIntensities(const std::vector< Mobilogram >& mobilograms,
246 std::vector<std::vector<double>>& int_values);
247
257 static std::vector<double> extractIntensities(const Mobilogram& mobilogram);
258
259 };
260
261 /*
262 @brief Helper function to sum up aligned mobilograms
263
264 This function takes a vector of aligned mobilograms and sums them up to create a single Mobilogram object. The resulting Mobilogram object will contain the sum of the intensity values from all the input mobilograms.
265
266 @note the input vector of Mobilograms all need to have the same size, otherwise the function will throw a pre-condition exception.
267
268 @param[in] aligned_mobilograms A vector of aligned mobilograms
269 @return A Mobilogram object that is the sum of the input mobilograms
270 */
271 OpenMS::Mobilogram sumAlignedMobilograms(const std::vector<OpenMS::Mobilogram>& aligned_mobilograms);
272
273 } // namespace OpenMS
A class that calls the ion mobility scoring routines.
Definition IonMobilityScoring.h:51
MRMTransitionGroup< MSChromatogram, TransitionType > MRMTransitionGroupType
Definition IonMobilityScoring.h:54
static void extractIntensities(const std::vector< Mobilogram > &mobilograms, std::vector< std::vector< double > > &int_values)
static void driftIdScoring(const SpectrumSequence &spectra, const std::vector< TransitionType > &transitions, MRMTransitionGroupType &transition_group_detection, OpenSwath_Scores &scores, const double drift_target, RangeMobility im_range, const double dia_extract_window_, const bool dia_extraction_ppm_, const double drift_extra, const bool apply_im_peak_picking, MobilogramParquetConsumer *mobilogram_consumer=nullptr, const double feature_rt=std::numeric_limits< double >::quiet_NaN(), Int64 feature_id=-1)
Performs scoring of the ion mobility dimension for identification transitions against detection trans...
~IonMobilityScoring()
Destructor.
static void driftScoringMS1(const SpectrumSequence &spectra, const std::vector< TransitionType > &transitions, OpenSwath_Scores &scores, const double drift_target, RangeMobility im_range, const double dia_extraction_window_, const bool dia_extraction_ppm_, const double drift_extra, MobilogramParquetConsumer *mobilogram_consumer=nullptr, const double feature_rt=std::numeric_limits< double >::quiet_NaN(), Int64 feature_id=-1)
Performs scoring of the ion mobility dimension in MS1.
OpenSwath::LightTransition TransitionType
Definition IonMobilityScoring.h:53
static void computeIonMobilogram(const SpectrumSequence &spectra, const RangeMZ &mz_range, const RangeMobility &im_range, double &im, double &intensity, Mobilogram &res, double eps)
computes ion mobilogram to be used in scoring based on mz_range and im_range. Also integrates intensi...
static void driftScoringMS1Contrast(const SpectrumSequence &spectra, const SpectrumSequence &ms1spectrum, const std::vector< TransitionType > &transitions, OpenSwath_Scores &scores, RangeMobility im_range, const double dia_extraction_window_, const bool dia_extraction_ppm_, const double drift_extra, MobilogramParquetConsumer *mobilogram_consumer=nullptr, const double feature_rt=std::numeric_limits< double >::quiet_NaN(), Int64 feature_id=-1)
Performs scoring of the ion mobility dimension in MS1 and MS2 (contrast)
static void driftScoring(const SpectrumSequence &spectra, const std::vector< TransitionType > &transitions, OpenSwath_Scores &scores, const double drift_target, RangeMobility im_range, const double dia_extraction_window_, const bool dia_extraction_ppm_, const double drift_extra, const bool apply_im_peak_picking, MobilogramParquetConsumer *mobilogram_consumer=nullptr, const double feature_rt=std::numeric_limits< double >::quiet_NaN(), Int64 feature_id=-1)
Performs scoring of the ion mobility dimension in MS2.
static std::vector< double > extractIntensities(const Mobilogram &mobilogram)
Extracts intensity values from a single Mobilogram object.
OpenSwath::LightCompound CompoundType
Definition IonMobilityScoring.h:52
static void alignToGrid_(const Mobilogram &profile, const std::vector< double > &im_grid, Mobilogram &aligned_profile, double eps, Size &max_peak_idx)
static std::vector< double > computeGrid_(const std::vector< Mobilogram > &mobilograms, double eps)
helper function to computeIonMobilogram. Discretizes ion mobility values into a grid.
IonMobilityScoring()
Constructor.
The representation of a group of transitions in a targeted proteomics experiment.
Definition MRMTransitionGroup.h:42
Writes Mobilograms (ion-mobility traces) to a Parquet file using a PyProphet-compatible-like schema.
Definition MobilogramParquetConsumer.h:25
The representation of a 1D ion mobilogram.
Definition Mobilogram.h:32
int64_t Int64
Signed integer type (64bit)
Definition Types.h:40
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
OpenMS::Mobilogram sumAlignedMobilograms(const std::vector< OpenMS::Mobilogram > &aligned_mobilograms)
std::vector< OpenSwath::SpectrumPtr > SpectrumSequence
a vector of spectrum pointers that DIA scores can operate on, allows for clever integration of only t...
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:20
A structure to hold the different scores computed by OpenSWATH.
Definition OpenSwathScores.h:57
Definition RangeManager.h:358
Definition RangeManager.h:482
Definition TransitionExperiment.h:268
Definition TransitionExperiment.h:105