OpenMS  3.0.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-2022.
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  pasef_(false),
116  threads_outer_loop_(-1)
117  {
118  }
119 
132  OpenSwathWorkflowBase(bool use_ms1_traces, bool use_ms1_ion_mobility, bool prm, bool pasef, int threads_outer_loop) :
133  use_ms1_traces_(use_ms1_traces),
134  use_ms1_ion_mobility_(use_ms1_ion_mobility),
135  prm_(prm),
136  pasef_(pasef),
137  threads_outer_loop_(threads_outer_loop)
138  {
139  }
140 
154  void MS1Extraction_(const OpenSwath::SpectrumAccessPtr ms1_map,
155  const std::vector< OpenSwath::SwathMap > & swath_maps,
156  std::vector< MSChromatogram >& ms1_chromatograms,
157  Interfaces::IMSDataConsumer * chromConsumer,
158  const ChromExtractParams & cp,
159  const OpenSwath::LightTargetedExperiment& transition_exp,
160  const TransformationDescription& trafo_inverse,
161  bool ms1only = false,
162  int ms1_isotopes = 0);
163 
181  void prepareExtractionCoordinates_(std::vector< OpenSwath::ChromatogramPtr > & chrom_list,
182  std::vector< ChromatogramExtractorAlgorithm::ExtractionCoordinates > & coordinates,
183  const OpenSwath::LightTargetedExperiment & transition_exp_used,
184  const TransformationDescription trafo_inverse,
185  const ChromExtractParams & cp,
186  const bool ms1 = false,
187  const int ms1_isotopes = -1) const;
188 
189 
197  OpenSwath::SpectrumAccessPtr ms1_map_ = nullptr;
198 
201 
204 
213  bool prm_;
214 
223  bool pasef_;
224 
235 
236 };
237 
254  class OPENMS_DLLAPI OpenSwathCalibrationWorkflow :
255  public OpenSwathWorkflowBase
256  {
257  public:
258 
261  {
262  }
263 
264  explicit OpenSwathCalibrationWorkflow(bool use_ms1_traces) :
265  OpenSwathWorkflowBase(use_ms1_traces, false, false, false, -1)
266  {
267  }
268 
294  TransformationDescription performRTNormalization(const OpenSwath::LightTargetedExperiment & irt_transitions,
295  std::vector< OpenSwath::SwathMap > & swath_maps,
296  TransformationDescription& im_trafo,
297  double min_rsq,
298  double min_coverage,
299  const Param & feature_finder_param,
300  const ChromExtractParams & cp_irt,
301  const Param& irt_detection_param,
302  const Param& calibration_param,
303  const String& irt_mzml_out,
304  Size debug_level,
305  bool sonar = false,
306  bool pasef = false,
307  bool load_into_memory = false);
308 
309  public:
310 
341  TransformationDescription doDataNormalization_(const OpenSwath::LightTargetedExperiment& transition_exp_,
342  const std::vector< OpenMS::MSChromatogram >& chromatograms,
343  TransformationDescription& im_trafo,
344  std::vector< OpenSwath::SwathMap > & swath_maps,
345  double min_rsq,
346  double min_coverage,
347  const Param& default_ffparam,
348  const Param& irt_detection_param,
349  const Param& calibration_param,
350  const bool pasef);
351 
364  void simpleExtractChromatograms_(const std::vector< OpenSwath::SwathMap > & swath_maps,
365  const OpenSwath::LightTargetedExperiment & irt_transitions,
366  std::vector< OpenMS::MSChromatogram > & chromatograms,
367  const TransformationDescription& trafo,
368  const ChromExtractParams & cp,
369  bool sonar,
370  bool pasef,
371  bool load_into_memory);
372 
379  static void addChromatograms(MSChromatogram& base_chrom, const MSChromatogram& newchrom);
380 
381  };
382 
411  class OPENMS_DLLAPI OpenSwathWorkflow :
412  public OpenSwathWorkflowBase
413  {
416 
417  public:
418 
433  OpenSwathWorkflow(bool use_ms1_traces, bool use_ms1_ion_mobility, bool prm, bool pasef, int threads_outer_loop) :
434  OpenSwathWorkflowBase(use_ms1_traces, use_ms1_ion_mobility, prm, pasef, threads_outer_loop)
435  {
436  }
437 
463  void performExtraction(const std::vector< OpenSwath::SwathMap > & swath_maps,
464  const TransformationDescription trafo,
465  const ChromExtractParams & chromatogram_extraction_params,
466  const ChromExtractParams & ms1_chromatogram_extraction_params,
467  const Param & feature_finder_param,
468  const OpenSwath::LightTargetedExperiment& assay_library,
469  FeatureMap& result_featureFile,
470  bool store_features_in_featureFile,
471  OpenSwathTSVWriter & result_tsv,
472  OpenSwathOSWWriter & result_osw,
473  Interfaces::IMSDataConsumer * result_chromatograms,
474  int batchSize,
475  int ms1_isotopes,
476  bool load_into_memory);
477 
478  protected:
479 
480 
495  void writeOutFeaturesAndChroms_(std::vector< OpenMS::MSChromatogram > & chromatograms,
496  const FeatureMap & featureFile,
497  FeatureMap& out_featureFile,
498  bool store_features,
499  Interfaces::IMSDataConsumer * chromConsumer);
500 
537  void scoreAllChromatograms_(
538  const std::vector< OpenMS::MSChromatogram > & ms2_chromatograms,
539  const std::vector< OpenMS::MSChromatogram > & ms1_chromatograms,
540  const std::vector< OpenSwath::SwathMap >& swath_maps,
541  const OpenSwath::LightTargetedExperiment& transition_exp,
542  const Param& feature_finder_param,
544  const double rt_extraction_window,
545  FeatureMap& output,
546  OpenSwathTSVWriter & tsv_writer,
547  OpenSwathOSWWriter & osw_writer,
548  int nr_ms1_isotopes = 0,
549  bool ms1only = false) const;
550 
566  void selectCompoundsForBatch_(const OpenSwath::LightTargetedExperiment& transition_exp_used_all,
567  OpenSwath::LightTargetedExperiment& transition_exp_used, int batch_size, size_t batch_idx);
568 
579  void copyBatchTransitions_(const std::vector<OpenSwath::LightCompound>& used_compounds,
580  const std::vector<OpenSwath::LightTransition>& all_transitions,
581  std::vector<OpenSwath::LightTransition>& output);
582  };
583 
609  class OPENMS_DLLAPI OpenSwathWorkflowSonar :
610  public OpenSwathWorkflow
611  {
612 
613  public:
614 
615  explicit OpenSwathWorkflowSonar(bool use_ms1_traces) :
616  OpenSwathWorkflow(use_ms1_traces, false, false, false, -1)
617  {
618  }
619 
641  void performExtractionSonar(const std::vector< OpenSwath::SwathMap > & swath_maps,
642  const TransformationDescription trafo,
643  const ChromExtractParams & cp,
644  const ChromExtractParams & cp_ms1,
645  const Param & feature_finder_param,
646  const OpenSwath::LightTargetedExperiment& transition_exp,
647  FeatureMap& out_featureFile,
648  bool store_features,
649  OpenSwathTSVWriter & tsv_writer,
650  OpenSwathOSWWriter & osw_writer,
651  Interfaces::IMSDataConsumer * chromConsumer,
652  int batchSize,
653  bool load_into_memory);
654 
658  void computeSonarWindows_(const std::vector< OpenSwath::SwathMap > & swath_maps,
659  double & sonar_winsize,
660  double & sonar_start,
661  double & sonar_end,
662  int & sonar_total_win);
663 
667  void performSonarExtraction_(const std::vector< OpenSwath::SwathMap > & used_maps,
668  const std::vector< ChromatogramExtractor::ExtractionCoordinates > & coordinates,
669  std::vector< OpenSwath::ChromatogramPtr > & chrom_list,
670  const ChromExtractParams & cp);
671 
679  };
680 
681 }
682 
683 
ChromatogramExtractor parameters.
Definition: OpenSwathWorkflow.h:82
int threads_outer_loop_
How many threads should be used for the outer loop.
Definition: OpenSwathWorkflow.h:234
A more convenient string class.
Definition: String.h:58
OpenSwathWorkflowSonar(bool use_ms1_traces)
Definition: OpenSwathWorkflow.h:615
OpenSwathWorkflowBase()
Default constructor.
Definition: OpenSwathWorkflow.h:111
boost::shared_ptr< ISpectrumAccess > SpectrumAccessPtr
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:87
The representation of a chromatogram.
Definition: MSChromatogram.h:53
OpenSwathCalibrationWorkflow()
Definition: OpenSwathWorkflow.h:259
A container for features.
Definition: FeatureMap.h:98
Definition: OpenSwathWorkflow.h:100
Class to write out an OpenSwath TSV output (mProphet input).
Definition: OpenSwathTSVWriter.h:129
MRMTransitionGroup< MSChromatogram, TransitionType > MRMTransitionGroupType
Definition: OpenSwathWorkflow.h:415
double mz_extraction_window
Extraction window in Da or ppm (e.g. 50ppm means extraction +/- 25ppm)
Definition: OpenSwathWorkflow.h:87
Execute all steps in an OpenSwath analysis.
Definition: OpenSwathWorkflow.h:411
Execute all steps in an OpenEcho analysis (OpenSwath for SONAR data)
Definition: OpenSwathWorkflow.h:609
OpenSwath::LightTransition TransitionType
Definition: OpenSwathWorkflow.h:414
OpenSwathWorkflow(bool use_ms1_traces, bool use_ms1_ion_mobility, bool prm, bool pasef, int threads_outer_loop)
Constructor.
Definition: OpenSwathWorkflow.h:433
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:47
Class to write out an OpenSwath OSW SQLite output (PyProphet input).
Definition: OpenSwathOSWWriter.h:115
bool pasef_
Whether data is diaPASEF data.
Definition: OpenSwathWorkflow.h:223
double im_extraction_window
Extraction window in ion mobility.
Definition: OpenSwathWorkflow.h:89
The representation of a group of transitions in a targeted proteomics experiment. ...
Definition: MRMTransitionGroup.h:67
bool ppm
Whether the extraction window is given in ppm or Da.
Definition: OpenSwathWorkflow.h:91
bool use_ms1_traces_
Whether to use the MS1 traces.
Definition: OpenSwathWorkflow.h:200
double rt_extraction_window
The retention time extraction window.
Definition: OpenSwathWorkflow.h:95
bool use_ms1_ion_mobility_
Whether to use ion mobility extraction on MS1 traces.
Definition: OpenSwathWorkflow.h:203
String extraction_function
The extraction function in mass space.
Definition: OpenSwathWorkflow.h:93
boost::shared_ptr< Chromatogram > ChromatogramPtr
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/DataStructures.h:172
double min_upper_edge_dist
Whether to not extract anything closer than this (in Da) from the upper edge.
Definition: OpenSwathWorkflow.h:85
OpenSwathWorkflowBase(bool use_ms1_traces, bool use_ms1_ion_mobility, bool prm, bool pasef, int threads_outer_loop)
Constructor.
Definition: OpenSwathWorkflow.h:132
Management and storage of parameters / INI files.
Definition: Param.h:69
Definition: TransitionExperiment.h:45
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
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:127
The interface of a consumer of spectra and chromatograms.
Definition: IMSDataConsumer.h:69
OpenSwathCalibrationWorkflow(bool use_ms1_traces)
Definition: OpenSwathWorkflow.h:264
Base class for all classes that want to report their progress.
Definition: ProgressLogger.h:52
Execute all steps for retention time and m/z calibration of SWATH-MS data.
Definition: OpenSwathWorkflow.h:254
Generic description of a coordinate transformation.
Definition: TransformationDescription.h:62
Definition: TransitionExperiment.h:218
bool prm_
Whether data is acquired in targeted DIA (e.g. PRM mode) with potentially overlapping windows...
Definition: OpenSwathWorkflow.h:213