OpenMS  2.8.0
OpenSwathWorkflow.h
Go to the documentation of this file.
1 // --------------------------------------------------------------------------
2 // OpenMS -- Open-Source Mass Spectrometry
3 // --------------------------------------------------------------------------
4 // Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,
5 // ETH Zurich, and Freie Universitaet Berlin 2002-2021.
6 //
7 // This software is released under a three-clause BSD license:
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright
11 // notice, this list of conditions and the following disclaimer in the
12 // documentation and/or other materials provided with the distribution.
13 // * Neither the name of any author or any participating institution
14 // may be used to endorse or promote products derived from this software
15 // without specific prior written permission.
16 // For a full list of authors, refer to the file AUTHORS.
17 // --------------------------------------------------------------------------
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 // ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING
22 // INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 //
30 // --------------------------------------------------------------------------
31 // $Maintainer: Hannes Roest $
32 // $Authors: Hannes Roest $
33 // --------------------------------------------------------------------------
34 
35 #pragma once
36 
37 // Interfaces
42 
43 #include <OpenMS/FORMAT/MzMLFile.h> // debug file store only
44 
45 // Kernel and implementations
51 
52 // Helpers
54 // #include <OpenMS/ANALYSIS/OPENSWATH/DATAACCESS/DataAccessHelper.h>
58 
59 // Algorithms
66 
67 #include <cassert>
68 #include <limits>
69 
70 // #define OPENSWATH_WORKFLOW_DEBUG
71 
72 // The workflow class
73 namespace OpenMS
74 {
75 
83  {
91  bool ppm;
98  };
99 
100  class OPENMS_DLLAPI OpenSwathWorkflowBase :
101  public ProgressLogger
102  {
103 
104 protected:
105 
112  use_ms1_traces_(false),
113  use_ms1_ion_mobility_(false),
114  prm_(false),
115  threads_outer_loop_(-1)
116  {
117  }
118 
131  OpenSwathWorkflowBase(bool use_ms1_traces, bool use_ms1_ion_mobility, bool prm, int threads_outer_loop) :
132  use_ms1_traces_(use_ms1_traces),
133  use_ms1_ion_mobility_(use_ms1_ion_mobility),
134  prm_(prm),
135  threads_outer_loop_(threads_outer_loop)
136  {
137  }
138 
153  const std::vector< OpenSwath::SwathMap > & swath_maps,
154  std::vector< MSChromatogram >& ms1_chromatograms,
155  Interfaces::IMSDataConsumer * chromConsumer,
156  const ChromExtractParams & cp,
157  const OpenSwath::LightTargetedExperiment& transition_exp,
158  const TransformationDescription& trafo_inverse,
159  bool ms1only = false,
160  int ms1_isotopes = 0);
161 
179  void prepareExtractionCoordinates_(std::vector< OpenSwath::ChromatogramPtr > & chrom_list,
180  std::vector< ChromatogramExtractorAlgorithm::ExtractionCoordinates > & coordinates,
181  const OpenSwath::LightTargetedExperiment & transition_exp_used,
182  const TransformationDescription trafo_inverse,
183  const ChromExtractParams & cp,
184  const bool ms1 = false,
185  const int ms1_isotopes = -1) const;
186 
187 
195  OpenSwath::SpectrumAccessPtr ms1_map_ = nullptr;
196 
199 
202 
204  bool prm_;
205 
216 
217 };
218 
235  class OPENMS_DLLAPI OpenSwathCalibrationWorkflow :
236  public OpenSwathWorkflowBase
237  {
238  public:
239 
242  {
243  }
244 
245  explicit OpenSwathCalibrationWorkflow(bool use_ms1_traces) :
246  OpenSwathWorkflowBase(use_ms1_traces, false, false, -1)
247  {
248  }
249 
275  std::vector< OpenSwath::SwathMap > & swath_maps,
276  TransformationDescription& im_trafo,
277  double min_rsq,
278  double min_coverage,
279  const Param & feature_finder_param,
280  const ChromExtractParams & cp_irt,
281  const Param& irt_detection_param,
282  const Param& calibration_param,
283  const String& irt_mzml_out,
284  Size debug_level,
285  bool sonar = false,
286  bool load_into_memory = false);
287 
288  public:
289 
320  const std::vector< OpenMS::MSChromatogram >& chromatograms,
321  TransformationDescription& im_trafo,
322  std::vector< OpenSwath::SwathMap > & swath_maps,
323  double min_rsq,
324  double min_coverage,
325  const Param& default_ffparam,
326  const Param& irt_detection_param,
327  const Param& calibration_param);
328 
340  void simpleExtractChromatograms_(const std::vector< OpenSwath::SwathMap > & swath_maps,
341  const OpenSwath::LightTargetedExperiment & irt_transitions,
342  std::vector< OpenMS::MSChromatogram > & chromatograms,
343  const TransformationDescription& trafo,
344  const ChromExtractParams & cp,
345  bool sonar,
346  bool load_into_memory);
347 
354  static void addChromatograms(MSChromatogram& base_chrom, const MSChromatogram& newchrom);
355 
356  };
357 
382  class OPENMS_DLLAPI OpenSwathWorkflow :
383  public OpenSwathWorkflowBase
384  {
387 
388  public:
389 
404  OpenSwathWorkflow(bool use_ms1_traces, bool use_ms1_ion_mobility, bool prm, int threads_outer_loop) :
405  OpenSwathWorkflowBase(use_ms1_traces, use_ms1_ion_mobility, prm, threads_outer_loop)
406  {
407  }
408 
434  void performExtraction(const std::vector< OpenSwath::SwathMap > & swath_maps,
435  const TransformationDescription trafo,
436  const ChromExtractParams & chromatogram_extraction_params,
437  const ChromExtractParams & ms1_chromatogram_extraction_params,
438  const Param & feature_finder_param,
439  const OpenSwath::LightTargetedExperiment& assay_library,
440  FeatureMap& result_featureFile,
441  bool store_features_in_featureFile,
442  OpenSwathTSVWriter & result_tsv,
443  OpenSwathOSWWriter & result_osw,
444  Interfaces::IMSDataConsumer * result_chromatograms,
445  int batchSize,
446  int ms1_isotopes,
447  bool load_into_memory);
448 
449  protected:
450 
451 
466  void writeOutFeaturesAndChroms_(std::vector< OpenMS::MSChromatogram > & chromatograms,
467  const FeatureMap & featureFile,
468  FeatureMap& out_featureFile,
469  bool store_features,
470  Interfaces::IMSDataConsumer * chromConsumer);
471 
509  const std::vector< OpenMS::MSChromatogram > & ms2_chromatograms,
510  const std::vector< OpenMS::MSChromatogram > & ms1_chromatograms,
511  const std::vector< OpenSwath::SwathMap >& swath_maps,
512  const OpenSwath::LightTargetedExperiment& transition_exp,
513  const Param& feature_finder_param,
515  const double rt_extraction_window,
516  FeatureMap& output,
517  OpenSwathTSVWriter & tsv_writer,
518  OpenSwathOSWWriter & osw_writer,
519  int nr_ms1_isotopes = 0,
520  bool ms1only = false) const;
521 
538  OpenSwath::LightTargetedExperiment& transition_exp_used, int batch_size, size_t batch_idx);
539 
550  void copyBatchTransitions_(const std::vector<OpenSwath::LightCompound>& used_compounds,
551  const std::vector<OpenSwath::LightTransition>& all_transitions,
552  std::vector<OpenSwath::LightTransition>& output);
553  };
554 
580  class OPENMS_DLLAPI OpenSwathWorkflowSonar :
581  public OpenSwathWorkflow
582  {
583 
584  public:
585 
586  explicit OpenSwathWorkflowSonar(bool use_ms1_traces) :
587  OpenSwathWorkflow(use_ms1_traces, false, false, -1)
588  {
589  }
590 
612  void performExtractionSonar(const std::vector< OpenSwath::SwathMap > & swath_maps,
613  const TransformationDescription trafo,
614  const ChromExtractParams & cp,
615  const ChromExtractParams & cp_ms1,
616  const Param & feature_finder_param,
617  const OpenSwath::LightTargetedExperiment& transition_exp,
618  FeatureMap& out_featureFile,
619  bool store_features,
620  OpenSwathTSVWriter & tsv_writer,
621  OpenSwathOSWWriter & osw_writer,
622  Interfaces::IMSDataConsumer * chromConsumer,
623  int batchSize,
624  bool load_into_memory);
625 
629  void computeSonarWindows_(const std::vector< OpenSwath::SwathMap > & swath_maps,
630  double & sonar_winsize,
631  double & sonar_start,
632  double & sonar_end,
633  int & sonar_total_win);
634 
638  void performSonarExtraction_(const std::vector< OpenSwath::SwathMap > & used_maps,
639  const std::vector< ChromatogramExtractor::ExtractionCoordinates > & coordinates,
640  std::vector< OpenSwath::ChromatogramPtr > & chrom_list,
641  const ChromExtractParams & cp);
642 
650  };
651 
652 }
653 
654 
A container for features.
Definition: FeatureMap.h:106
The interface of a consumer of spectra and chromatograms.
Definition: IMSDataConsumer.h:70
The representation of a group of transitions in a targeted proteomics experiment.
Definition: MRMTransitionGroup.h:68
The representation of a chromatogram.
Definition: MSChromatogram.h:57
Execute all steps for retention time and m/z calibration of SWATH-MS data.
Definition: OpenSwathWorkflow.h:237
OpenSwathCalibrationWorkflow()
Definition: OpenSwathWorkflow.h:240
static void addChromatograms(MSChromatogram &base_chrom, const MSChromatogram &newchrom)
Add two chromatograms.
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 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 String &irt_mzml_out, Size debug_level, bool sonar=false, bool load_into_memory=false)
Perform RT and m/z correction of the input data using RT-normalization peptides.
OpenSwathCalibrationWorkflow(bool use_ms1_traces)
Definition: OpenSwathWorkflow.h:245
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)
Perform retention time and m/z calibration.
Class to write out an OpenSwath OSW SQLite output (PyProphet input).
Definition: OpenSwathOSWWriter.h:116
Class to write out an OpenSwath TSV output (mProphet input).
Definition: OpenSwathTSVWriter.h:130
Definition: OpenSwathWorkflow.h:102
bool prm_
Whether data is acquired in targeted DIA (e.g. PRM mode) with potentially overlapping windows.
Definition: OpenSwathWorkflow.h:204
bool use_ms1_traces_
Whether to use the MS1 traces.
Definition: OpenSwathWorkflow.h:198
int threads_outer_loop_
How many threads should be used for the outer loop.
Definition: OpenSwathWorkflow.h:215
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.
OpenSwathWorkflowBase()
Default constructor.
Definition: OpenSwathWorkflow.h:111
bool use_ms1_ion_mobility_
Whether to use ion mobility extraction on MS1 traces.
Definition: OpenSwathWorkflow.h:201
OpenSwathWorkflowBase(bool use_ms1_traces, bool use_ms1_ion_mobility, bool prm, int threads_outer_loop)
Constructor.
Definition: OpenSwathWorkflow.h:131
void MS1Extraction_(const OpenSwath::SpectrumAccessPtr ms1_map, const std::vector< OpenSwath::SwathMap > &swath_maps, std::vector< MSChromatogram > &ms1_chromatograms, Interfaces::IMSDataConsumer *chromConsumer, const ChromExtractParams &cp, const OpenSwath::LightTargetedExperiment &transition_exp, const TransformationDescription &trafo_inverse, bool ms1only=false, int ms1_isotopes=0)
Perform MS1 extraction and store result in ms1_chromatograms.
Execute all steps in an OpenEcho analysis (OpenSwath for SONAR data)
Definition: OpenSwathWorkflow.h:582
OpenSwathWorkflowSonar(bool use_ms1_traces)
Definition: OpenSwathWorkflow.h:586
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 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.
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.
Execute all steps in an OpenSwath analysis.
Definition: OpenSwathWorkflow.h:384
MRMTransitionGroup< MSChromatogram, TransitionType > MRMTransitionGroupType
Definition: OpenSwathWorkflow.h:386
void writeOutFeaturesAndChroms_(std::vector< OpenMS::MSChromatogram > &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:385
void performExtraction(const std::vector< OpenSwath::SwathMap > &swath_maps, const TransformationDescription 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 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, 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 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, int threads_outer_loop)
Constructor.
Definition: OpenSwathWorkflow.h:404
Management and storage of parameters / INI files.
Definition: Param.h:70
Base class for all classes that want to report their progress.
Definition: ProgressLogger.h:53
A more convenient string class.
Definition: String.h:60
Generic description of a coordinate transformation.
Definition: TransformationDescription.h:63
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:127
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:47
double im_extraction_window
Extraction window in ion mobility.
Definition: OpenSwathWorkflow.h:89
bool ppm
Whether the extraction window is given in ppm or Da.
Definition: OpenSwathWorkflow.h:91
String extraction_function
The extraction function in mass space.
Definition: OpenSwathWorkflow.h:93
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:97
double min_upper_edge_dist
Whether to not extract anything closer than this (in Da) from the upper edge.
Definition: OpenSwathWorkflow.h:85
double mz_extraction_window
Extraction window in Da or ppm (e.g. 50ppm means extraction +/- 25ppm)
Definition: OpenSwathWorkflow.h:87
double rt_extraction_window
The retention time extraction window.
Definition: OpenSwathWorkflow.h:95
ChromatogramExtractor parameters.
Definition: OpenSwathWorkflow.h:83
boost::shared_ptr< Chromatogram > ChromatogramPtr
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/DataStructures.h:172
boost::shared_ptr< ISpectrumAccess > SpectrumAccessPtr
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:87
Definition: TransitionExperiment.h:207
Definition: TransitionExperiment.h:46