OpenMS
Loading...
Searching...
No Matches
OpenSwathWorkflow.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// Interfaces
12
17
18// Kernel and implementations
24
25// Helpers
27// #include <OpenMS/ANALYSIS/OPENSWATH/DATAACCESS/DataAccessHelper.h>
30
31// Algorithms
38#include <cassert>
39#include <limits>
40
41// #define OPENSWATH_WORKFLOW_DEBUG
42
43// The workflow class
44namespace OpenMS
45{
46
70
71 class OPENMS_DLLAPI OpenSwathWorkflowBase :
72 public ProgressLogger
73 {
74
75protected:
76
83 use_ms1_traces_(false),
84 use_ms1_ion_mobility_(false),
85 prm_(false),
86 pasef_(false),
87 mrm_(false),
88 threads_outer_loop_(-1)
89 {
90 }
91
108 OpenSwathWorkflowBase(bool use_ms1_traces, bool use_ms1_ion_mobility, bool prm, bool pasef, bool mrm, int threads_outer_loop) :
109 use_ms1_traces_(use_ms1_traces),
110 use_ms1_ion_mobility_(use_ms1_ion_mobility),
111 prm_(prm),
112 pasef_(pasef),
113 mrm_(mrm),
114 threads_outer_loop_(threads_outer_loop)
115 {
116 }
117
131 const std::vector<OpenSwath::SwathMap>& swath_maps,
132 std::vector<MSChromatogram>& ms1_chromatograms,
133 const ChromExtractParams& cp,
134 const OpenSwath::LightTargetedExperiment& transition_exp,
135 const TransformationDescription& trafo_inverse,
136 bool ms1_only = false,
137 int ms1_isotopes = 0);
138
157 void prepareExtractionCoordinates_(std::vector< OpenSwath::ChromatogramPtr > & chrom_list,
158 std::vector< ChromatogramExtractorAlgorithm::ExtractionCoordinates > & coordinates,
159 const OpenSwath::LightTargetedExperiment & transition_exp_used,
160 const TransformationDescription& trafo_inverse,
161 const ChromExtractParams & cp,
162 const bool ms1 = false,
163 const int ms1_isotopes = -1) const;
164
165
174
177
180
189 bool prm_;
190
199 bool pasef_;
200
206 bool mrm_;
207
218
219};
220
237 class OPENMS_DLLAPI OpenSwathCalibrationWorkflow :
239 {
240 public:
241
246
247 explicit OpenSwathCalibrationWorkflow(bool use_ms1_traces) :
248 OpenSwathWorkflowBase(use_ms1_traces, false, false, false, false, -1)
249 {
250 }
251
279 std::vector< OpenSwath::SwathMap > & swath_maps,
281 double min_rsq,
282 double min_coverage,
283 const Param & feature_finder_param,
284 const ChromExtractParams & cp_irt,
285 const Param& irt_detection_param,
286 const Param& calibration_param,
287 const Param& mrm_mapping_param,
288 const String& irt_mzml_out,
289 Size debug_level,
290 bool pasef = false,
291 bool load_into_memory = false);
292
293 public:
294
328 const std::vector< OpenMS::MSChromatogram >& chromatograms,
330 std::vector< OpenSwath::SwathMap > & swath_maps,
331 double min_rsq,
332 double min_coverage,
333 const Param& default_ffparam,
334 const Param& irt_detection_param,
335 const Param& calibration_param,
336 const bool pasef);
337
350 void simpleExtractChromatograms_(const std::vector< OpenSwath::SwathMap > & swath_maps,
351 const OpenSwath::LightTargetedExperiment & irt_transitions,
352 std::vector< OpenMS::MSChromatogram > & chromatograms,
353 const TransformationDescription& trafo,
354 const ChromExtractParams & cp,
355 const Param & mrm_mapping_param,
356 bool pasef,
357 bool load_into_memory);
358
365 static void addChromatograms(MSChromatogram& base_chrom, const MSChromatogram& newchrom);
366
368 double getEstimatedMzWindow() const;
369
371 void setEstimatedMzWindow(double estimatedMzWindow);
372
374 double getEstimatedImWindow() const;
375
377 void setEstimatedImWindow(double estimatedImWindow);
378
381
383 void setEstimatedMs1MzWindow(double estimatedMs1MzWindow);
384
387
389 void setEstimatedMs1ImWindow(double estimatedMs1ImWindow);
390
391 protected:
393 double estimated_mz_window_ = -1;
394 double estimated_im_window_ = -1;
395 double estimated_ms1_mz_window_ = -1;
396 double estimated_ms1_im_window_ = -1;
397 };
398
427 class OPENMS_DLLAPI OpenSwathWorkflow :
429 {
432
433 public:
434
451 OpenSwathWorkflow(bool use_ms1_traces, bool use_ms1_ion_mobility, bool prm, bool pasef, bool mrm, int threads_outer_loop) :
452 OpenSwathWorkflowBase(use_ms1_traces, use_ms1_ion_mobility, prm, pasef, mrm, threads_outer_loop)
453 {
454 }
455
481 void performExtraction(const std::vector<OpenSwath::SwathMap>& swath_maps,
482 const TransformationDescription& rt_trafo,
483 const ChromExtractParams & chromatogram_extraction_params,
484 const ChromExtractParams & ms1_chromatogram_extraction_params,
485 const Param & feature_finder_param,
486 const OpenSwath::LightTargetedExperiment& assay_library,
487 FeatureMap& result_featureFile,
488 bool store_features_in_featureFile,
489 OpenSwathOSWWriter & result_osw,
490 Interfaces::IMSDataConsumer * result_chromatograms,
491 int batchSize,
492 int ms1_isotopes,
493 bool load_into_memory,
494 const Param & mrm_mapping_param = Param());
495
496 protected:
497
498
514 void writeOutFeaturesAndChroms_(std::vector< OpenMS::MSChromatogram > & chromatograms,
515 std::vector< MSChromatogram >& ms1_chromatograms,
516 const FeatureMap & featureFile,
517 FeatureMap& out_featureFile,
518 bool store_features,
519 Interfaces::IMSDataConsumer * chromConsumer);
520
558 const std::vector<OpenMS::MSChromatogram>& ms2_chromatograms,
559 const std::vector<OpenMS::MSChromatogram>& ms1_chromatograms,
560 const std::vector<OpenSwath::SwathMap>& swath_maps,
561 const OpenSwath::LightTargetedExperiment& transition_exp,
562 const Param& feature_finder_param,
563 const TransformationDescription& trafo,
564 const double rt_extraction_window,
565 FeatureMap& output,
566 OpenSwathOSWWriter& osw_writer,
567 int nr_ms1_isotopes = 0,
568 bool ms1only = false) const;
569
586 OpenSwath::LightTargetedExperiment& transition_exp_used, int batch_size, size_t batch_idx);
587
598 void copyBatchTransitions_(const std::vector<OpenSwath::LightCompound>& used_compounds,
599 const std::vector<OpenSwath::LightTransition>& all_transitions,
600 std::vector<OpenSwath::LightTransition>& output);
601 };
602}
603
604
A container for features.
Definition FeatureMap.h:82
The interface of a consumer of spectra and chromatograms.
Definition IMSDataConsumer.h:46
The representation of a group of transitions in a targeted proteomics experiment.
Definition MRMTransitionGroup.h:42
The representation of a chromatogram.
Definition MSChromatogram.h:30
Execute all steps for retention time and m/z calibration of SWATH-MS data.
Definition OpenSwathWorkflow.h:239
OpenSwathCalibrationWorkflow()
Definition OpenSwathWorkflow.h:242
double getEstimatedImWindow() const
Retrieve the estimated fragment ion mobility.
double getEstimatedMzWindow() const
Retrieve the estimated fragment m/z window (ppm)
void setEstimatedMzWindow(double estimatedMzWindow)
Set the estimated fragment m/z window (ppm)
static void addChromatograms(MSChromatogram &base_chrom, const MSChromatogram &newchrom)
Add two chromatograms.
OpenSwathCalibrationWorkflow(bool use_ms1_traces)
Definition OpenSwathWorkflow.h:247
TransformationDescription doDataNormalization_(const OpenSwath::LightTargetedExperiment &transition_exp_, const std::vector< OpenMS::MSChromatogram > &chromatograms, TransformationDescription &im_trafo, std::vector< OpenSwath::SwathMap > &swath_maps, double min_rsq, double min_coverage, const Param &default_ffparam, const Param &irt_detection_param, const Param &calibration_param, const bool pasef)
Perform retention time and m/z calibration.
double getEstimatedMs1MzWindow() const
Retrieve the estimated MS1 m/z window (ppm)
void setEstimatedImWindow(double estimatedImWindow)
Set the estimated fragment ion mobility.
void setEstimatedMs1MzWindow(double estimatedMs1MzWindow)
Set the estimated MS1 m/z window (ppm)
void setEstimatedMs1ImWindow(double estimatedMs1ImWindow)
Set the estimated MS1 ion mobility window.
void simpleExtractChromatograms_(const std::vector< OpenSwath::SwathMap > &swath_maps, const OpenSwath::LightTargetedExperiment &irt_transitions, std::vector< OpenMS::MSChromatogram > &chromatograms, const TransformationDescription &trafo, const ChromExtractParams &cp, const Param &mrm_mapping_param, bool pasef, bool load_into_memory)
Simple method to extract chromatograms (for the RT-normalization peptides)
TransformationDescription performRTNormalization(const OpenSwath::LightTargetedExperiment &irt_transitions, std::vector< OpenSwath::SwathMap > &swath_maps, TransformationDescription &im_trafo, double min_rsq, double min_coverage, const Param &feature_finder_param, const ChromExtractParams &cp_irt, const Param &irt_detection_param, const Param &calibration_param, const Param &mrm_mapping_param, const String &irt_mzml_out, Size debug_level, bool pasef=false, bool load_into_memory=false)
Perform RT and m/z correction of the input data using RT-normalization peptides.
double getEstimatedMs1ImWindow() const
Retrieve the estimated MS1 ion mobility window.
Class to write out an OpenSwath OSW SQLite output (PyProphet input).
Definition OpenSwathOSWWriter.h:90
Definition OpenSwathWorkflow.h:73
void MS1Extraction_(const OpenSwath::SpectrumAccessPtr &ms1_map, const std::vector< OpenSwath::SwathMap > &swath_maps, std::vector< MSChromatogram > &ms1_chromatograms, const ChromExtractParams &cp, const OpenSwath::LightTargetedExperiment &transition_exp, const TransformationDescription &trafo_inverse, bool ms1_only=false, int ms1_isotopes=0)
Perform MS1 extraction and store result in ms1_chromatograms.
bool prm_
Whether data is acquired in targeted DIA (e.g. PRM mode) with potentially overlapping windows.
Definition OpenSwathWorkflow.h:189
bool use_ms1_traces_
Whether to use the MS1 traces.
Definition OpenSwathWorkflow.h:176
int threads_outer_loop_
How many threads should be used for the outer loop.
Definition OpenSwathWorkflow.h:217
OpenSwathWorkflowBase(bool use_ms1_traces, bool use_ms1_ion_mobility, bool prm, bool pasef, bool mrm, int threads_outer_loop)
Constructor.
Definition OpenSwathWorkflow.h:108
OpenSwathWorkflowBase()
Default constructor.
Definition OpenSwathWorkflow.h:82
bool use_ms1_ion_mobility_
Whether to use ion mobility extraction on MS1 traces.
Definition OpenSwathWorkflow.h:179
void prepareExtractionCoordinates_(std::vector< OpenSwath::ChromatogramPtr > &chrom_list, std::vector< ChromatogramExtractorAlgorithm::ExtractionCoordinates > &coordinates, const OpenSwath::LightTargetedExperiment &transition_exp_used, const TransformationDescription &trafo_inverse, const ChromExtractParams &cp, const bool ms1=false, const int ms1_isotopes=-1) const
Function to prepare extraction coordinates that also correctly handles RT transformations.
bool mrm_
Whether data is chromatogram-only SRM/MRM data.
Definition OpenSwathWorkflow.h:206
bool pasef_
Whether data is diaPASEF data.
Definition OpenSwathWorkflow.h:199
Execute all steps in an OpenSwath analysis.
Definition OpenSwathWorkflow.h:429
MRMTransitionGroup< MSChromatogram, TransitionType > MRMTransitionGroupType
Definition OpenSwathWorkflow.h:431
void writeOutFeaturesAndChroms_(std::vector< OpenMS::MSChromatogram > &chromatograms, std::vector< MSChromatogram > &ms1_chromatograms, const FeatureMap &featureFile, FeatureMap &out_featureFile, bool store_features, Interfaces::IMSDataConsumer *chromConsumer)
Write output features and chromatograms.
void selectCompoundsForBatch_(const OpenSwath::LightTargetedExperiment &transition_exp_used_all, OpenSwath::LightTargetedExperiment &transition_exp_used, int batch_size, size_t batch_idx)
Select which compounds to analyze in the next batch (and copy to output)
OpenSwath::LightTransition TransitionType
Definition OpenSwathWorkflow.h:430
void performExtraction(const std::vector< OpenSwath::SwathMap > &swath_maps, const TransformationDescription &rt_trafo, const ChromExtractParams &chromatogram_extraction_params, const ChromExtractParams &ms1_chromatogram_extraction_params, const Param &feature_finder_param, const OpenSwath::LightTargetedExperiment &assay_library, FeatureMap &result_featureFile, bool store_features_in_featureFile, OpenSwathOSWWriter &result_osw, Interfaces::IMSDataConsumer *result_chromatograms, int batchSize, int ms1_isotopes, bool load_into_memory, const Param &mrm_mapping_param=Param())
Execute OpenSWATH analysis on a set of SwathMaps and transitions.
void scoreAllChromatograms_(const std::vector< OpenMS::MSChromatogram > &ms2_chromatograms, const std::vector< OpenMS::MSChromatogram > &ms1_chromatograms, const std::vector< OpenSwath::SwathMap > &swath_maps, const OpenSwath::LightTargetedExperiment &transition_exp, const Param &feature_finder_param, const TransformationDescription &trafo, const double rt_extraction_window, FeatureMap &output, OpenSwathOSWWriter &osw_writer, int nr_ms1_isotopes=0, bool ms1only=false) const
Perform scoring on a set of chromatograms.
void copyBatchTransitions_(const std::vector< OpenSwath::LightCompound > &used_compounds, const std::vector< OpenSwath::LightTransition > &all_transitions, std::vector< OpenSwath::LightTransition > &output)
Helper function for selectCompoundsForBatch_()
OpenSwathWorkflow(bool use_ms1_traces, bool use_ms1_ion_mobility, bool prm, bool pasef, bool mrm, int threads_outer_loop)
Constructor.
Definition OpenSwathWorkflow.h:451
Management and storage of parameters / INI files.
Definition Param.h:46
Base class for all classes that want to report their progress.
Definition ProgressLogger.h:27
A more convenient string class.
Definition String.h:34
Generic description of a coordinate transformation.
Definition TransformationDescription.h:37
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
double im_extraction_window
Extraction window in ion mobility.
Definition OpenSwathWorkflow.h:60
bool ppm
Whether the extraction window is given in ppm or Da.
Definition OpenSwathWorkflow.h:62
String extraction_function
The extraction function in mass space.
Definition OpenSwathWorkflow.h:64
double extra_rt_extract
Whether to extract some extra in the retention time (can be useful if one wants to look at the chroma...
Definition OpenSwathWorkflow.h:68
double min_upper_edge_dist
Whether to not extract anything closer than this (in Da) from the upper edge.
Definition OpenSwathWorkflow.h:56
double mz_extraction_window
Extraction window in Da or ppm (e.g. 50ppm means extraction +/- 25ppm)
Definition OpenSwathWorkflow.h:58
double rt_extraction_window
The retention time extraction window.
Definition OpenSwathWorkflow.h:66
ChromatogramExtractor parameters.
Definition OpenSwathWorkflow.h:54
std::shared_ptr< ISpectrumAccess > SpectrumAccessPtr
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:131
Definition TransitionExperiment.h:356
Definition TransitionExperiment.h:105