OpenMS
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
16 
17 #include <OpenMS/FORMAT/FileHandler.h> // debug file store only
18 
19 // Kernel and implementations
25 
26 // Helpers
28 // #include <OpenMS/ANALYSIS/OPENSWATH/DATAACCESS/DataAccessHelper.h>
32 
33 // Algorithms
40 
41 #include <cassert>
42 #include <limits>
43 
44 // #define OPENSWATH_WORKFLOW_DEBUG
45 
46 // The workflow class
47 namespace OpenMS
48 {
49 
57  {
65  bool ppm;
72  };
73 
74  class OPENMS_DLLAPI OpenSwathWorkflowBase :
75  public ProgressLogger
76  {
77 
78 protected:
79 
86  use_ms1_traces_(false),
87  use_ms1_ion_mobility_(false),
88  prm_(false),
89  pasef_(false),
90  threads_outer_loop_(-1)
91  {
92  }
93 
109  OpenSwathWorkflowBase(bool use_ms1_traces, bool use_ms1_ion_mobility, bool prm, bool pasef, int threads_outer_loop) :
110  use_ms1_traces_(use_ms1_traces),
111  use_ms1_ion_mobility_(use_ms1_ion_mobility),
112  prm_(prm),
113  pasef_(pasef),
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 
173  OpenSwath::SpectrumAccessPtr ms1_map_ = nullptr;
174 
177 
180 
189  bool prm_;
190 
199  bool pasef_;
200 
211 
212 };
213 
230  class OPENMS_DLLAPI OpenSwathCalibrationWorkflow :
231  public OpenSwathWorkflowBase
232  {
233  public:
234 
237  {
238  }
239 
240  explicit OpenSwathCalibrationWorkflow(bool use_ms1_traces) :
241  OpenSwathWorkflowBase(use_ms1_traces, false, false, false, -1)
242  {
243  }
244 
272  std::vector< OpenSwath::SwathMap > & swath_maps,
273  TransformationDescription& im_trafo,
274  double min_rsq,
275  double min_coverage,
276  const Param & feature_finder_param,
277  const ChromExtractParams & cp_irt,
278  const Param& irt_detection_param,
279  const Param& calibration_param,
280  const String& irt_mzml_out,
281  Size debug_level,
282  bool sonar = false,
283  bool pasef = false,
284  bool load_into_memory = false);
285 
286  public:
287 
321  const std::vector< OpenMS::MSChromatogram >& chromatograms,
322  TransformationDescription& im_trafo,
323  std::vector< OpenSwath::SwathMap > & swath_maps,
324  double min_rsq,
325  double min_coverage,
326  const Param& default_ffparam,
327  const Param& irt_detection_param,
328  const Param& calibration_param,
329  const bool pasef);
330 
343  void simpleExtractChromatograms_(const std::vector< OpenSwath::SwathMap > & swath_maps,
344  const OpenSwath::LightTargetedExperiment & irt_transitions,
345  std::vector< OpenMS::MSChromatogram > & chromatograms,
346  const TransformationDescription& trafo,
347  const ChromExtractParams & cp,
348  bool sonar,
349  bool pasef,
350  bool load_into_memory);
351 
358  static void addChromatograms(MSChromatogram& base_chrom, const MSChromatogram& newchrom);
359 
360  };
361 
390  class OPENMS_DLLAPI OpenSwathWorkflow :
391  public OpenSwathWorkflowBase
392  {
395 
396  public:
397 
413  OpenSwathWorkflow(bool use_ms1_traces, bool use_ms1_ion_mobility, bool prm, bool pasef, int threads_outer_loop) :
414  OpenSwathWorkflowBase(use_ms1_traces, use_ms1_ion_mobility, prm, pasef, threads_outer_loop)
415  {
416  }
417 
443  void performExtraction(const std::vector<OpenSwath::SwathMap>& swath_maps,
444  const TransformationDescription& rt_trafo,
445  const ChromExtractParams & chromatogram_extraction_params,
446  const ChromExtractParams & ms1_chromatogram_extraction_params,
447  const Param & feature_finder_param,
448  const OpenSwath::LightTargetedExperiment& assay_library,
449  FeatureMap& result_featureFile,
450  bool store_features_in_featureFile,
451  OpenSwathTSVWriter & result_tsv,
452  OpenSwathOSWWriter & result_osw,
453  Interfaces::IMSDataConsumer * result_chromatograms,
454  int batchSize,
455  int ms1_isotopes,
456  bool load_into_memory);
457 
458  protected:
459 
460 
476  void writeOutFeaturesAndChroms_(std::vector< OpenMS::MSChromatogram > & chromatograms,
477  std::vector< MSChromatogram >& ms1_chromatograms,
478  const FeatureMap & featureFile,
479  FeatureMap& out_featureFile,
480  bool store_features,
481  Interfaces::IMSDataConsumer * chromConsumer);
482 
521  const std::vector<OpenMS::MSChromatogram>& ms2_chromatograms,
522  const std::vector<OpenMS::MSChromatogram>& ms1_chromatograms,
523  const std::vector<OpenSwath::SwathMap>& swath_maps,
524  const OpenSwath::LightTargetedExperiment& transition_exp,
525  const Param& feature_finder_param,
526  const TransformationDescription& trafo,
527  const double rt_extraction_window,
528  FeatureMap& output,
529  OpenSwathTSVWriter& tsv_writer,
530  OpenSwathOSWWriter& osw_writer,
531  int nr_ms1_isotopes = 0,
532  bool ms1only = false) const;
533 
550  OpenSwath::LightTargetedExperiment& transition_exp_used, int batch_size, size_t batch_idx);
551 
562  void copyBatchTransitions_(const std::vector<OpenSwath::LightCompound>& used_compounds,
563  const std::vector<OpenSwath::LightTransition>& all_transitions,
564  std::vector<OpenSwath::LightTransition>& output);
565  };
566 
592  class OPENMS_DLLAPI OpenSwathWorkflowSonar :
593  public OpenSwathWorkflow
594  {
595 
596  public:
597 
598  explicit OpenSwathWorkflowSonar(bool use_ms1_traces) :
599  OpenSwathWorkflow(use_ms1_traces, false, false, false, -1)
600  {
601  }
602 
625  void performExtractionSonar(const std::vector<OpenSwath::SwathMap>& swath_maps,
626  const TransformationDescription& trafo,
627  const ChromExtractParams& cp,
628  const ChromExtractParams& cp_ms1,
629  const Param& feature_finder_param,
630  const OpenSwath::LightTargetedExperiment& transition_exp,
631  FeatureMap& out_featureFile,
632  bool store_features,
633  OpenSwathTSVWriter& tsv_writer,
634  OpenSwathOSWWriter& osw_writer,
635  Interfaces::IMSDataConsumer* chromConsumer,
636  int batchSize,
637  bool load_into_memory);
638 
642  void computeSonarWindows_(const std::vector< OpenSwath::SwathMap > & swath_maps,
643  double & sonar_winsize,
644  double & sonar_start,
645  double & sonar_end,
646  int & sonar_total_win);
647 
651  void performSonarExtraction_(const std::vector< OpenSwath::SwathMap > & used_maps,
652  const std::vector< ChromatogramExtractor::ExtractionCoordinates > & coordinates,
653  std::vector< OpenSwath::ChromatogramPtr > & chrom_list,
654  const ChromExtractParams & cp);
655 
663  };
664 
665 }
666 
667 
A container for features.
Definition: FeatureMap.h:80
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:232
OpenSwathCalibrationWorkflow()
Definition: OpenSwathWorkflow.h:235
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 String &irt_mzml_out, Size debug_level, bool sonar=false, bool pasef=false, bool load_into_memory=false)
Perform RT and m/z correction of the input data using RT-normalization peptides.
static void addChromatograms(MSChromatogram &base_chrom, const MSChromatogram &newchrom)
Add two chromatograms.
OpenSwathCalibrationWorkflow(bool use_ms1_traces)
Definition: OpenSwathWorkflow.h:240
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.
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, bool sonar, bool pasef, bool load_into_memory)
Simple method to extract chromatograms (for the RT-normalization peptides)
Class to write out an OpenSwath OSW SQLite output (PyProphet input).
Definition: OpenSwathOSWWriter.h:90
Class to write out an OpenSwath TSV output (mProphet input).
Definition: OpenSwathTSVWriter.h:104
Definition: OpenSwathWorkflow.h:76
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:210
OpenSwathWorkflowBase()
Default constructor.
Definition: OpenSwathWorkflow.h:85
bool use_ms1_ion_mobility_
Whether to use ion mobility extraction on MS1 traces.
Definition: OpenSwathWorkflow.h:179
OpenSwathWorkflowBase(bool use_ms1_traces, bool use_ms1_ion_mobility, bool prm, bool pasef, int threads_outer_loop)
Constructor.
Definition: OpenSwathWorkflow.h:109
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 pasef_
Whether data is diaPASEF data.
Definition: OpenSwathWorkflow.h:199
Execute all steps in an OpenEcho analysis (OpenSwath for SONAR data)
Definition: OpenSwathWorkflow.h:594
OpenSwathWorkflowSonar(bool use_ms1_traces)
Definition: OpenSwathWorkflow.h:598
void computeSonarWindows_(const std::vector< OpenSwath::SwathMap > &swath_maps, double &sonar_winsize, double &sonar_start, double &sonar_end, int &sonar_total_win)
Compute start, end and total number of (virtual) SONAR windows.
OpenSwath::ChromatogramPtr addChromatograms(OpenSwath::ChromatogramPtr base_chrom, OpenSwath::ChromatogramPtr newchrom)
Add two chromatograms.
void performSonarExtraction_(const std::vector< OpenSwath::SwathMap > &used_maps, const std::vector< ChromatogramExtractor::ExtractionCoordinates > &coordinates, std::vector< OpenSwath::ChromatogramPtr > &chrom_list, const ChromExtractParams &cp)
Perform extraction from multiple SONAR windows.
void performExtractionSonar(const std::vector< OpenSwath::SwathMap > &swath_maps, const TransformationDescription &trafo, const ChromExtractParams &cp, const ChromExtractParams &cp_ms1, const Param &feature_finder_param, const OpenSwath::LightTargetedExperiment &transition_exp, FeatureMap &out_featureFile, bool store_features, OpenSwathTSVWriter &tsv_writer, OpenSwathOSWWriter &osw_writer, Interfaces::IMSDataConsumer *chromConsumer, int batchSize, bool load_into_memory)
Execute OpenSWATH analysis on a set of SONAR SwathMaps and transitions.
Execute all steps in an OpenSwath analysis.
Definition: OpenSwathWorkflow.h:392
MRMTransitionGroup< MSChromatogram, TransitionType > MRMTransitionGroupType
Definition: OpenSwathWorkflow.h:394
OpenSwathWorkflow(bool use_ms1_traces, bool use_ms1_ion_mobility, bool prm, bool pasef, int threads_outer_loop)
Constructor.
Definition: OpenSwathWorkflow.h:413
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:393
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, OpenSwathTSVWriter &tsv_writer, OpenSwathOSWWriter &osw_writer, int nr_ms1_isotopes=0, bool ms1only=false) const
Perform scoring on a set of chromatograms.
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, OpenSwathTSVWriter &result_tsv, OpenSwathOSWWriter &result_osw, Interfaces::IMSDataConsumer *result_chromatograms, int batchSize, int ms1_isotopes, bool load_into_memory)
Execute OpenSWATH analysis on a set of SwathMaps and transitions.
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_()
Management and storage of parameters / INI files.
Definition: Param.h:44
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:63
bool ppm
Whether the extraction window is given in ppm or Da.
Definition: OpenSwathWorkflow.h:65
String extraction_function
The extraction function in mass space.
Definition: OpenSwathWorkflow.h:67
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:71
double min_upper_edge_dist
Whether to not extract anything closer than this (in Da) from the upper edge.
Definition: OpenSwathWorkflow.h:59
double mz_extraction_window
Extraction window in Da or ppm (e.g. 50ppm means extraction +/- 25ppm)
Definition: OpenSwathWorkflow.h:61
double rt_extraction_window
The retention time extraction window.
Definition: OpenSwathWorkflow.h:69
ChromatogramExtractor parameters.
Definition: OpenSwathWorkflow.h:57
boost::shared_ptr< Chromatogram > ChromatogramPtr
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/DataStructures.h:146
boost::shared_ptr< ISpectrumAccess > SpectrumAccessPtr
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:131
Definition: TransitionExperiment.h:185
Definition: TransitionExperiment.h:20