OpenMS
MSDataWritingConsumer.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-2023.
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 
38 
39 #include <OpenMS/FORMAT/MzMLFile.h>
42 
43 #include <vector>
44 #include <string>
45 #include <fstream>
46 #include <boost/shared_ptr.hpp>
47 
48 namespace OpenMS
49 {
88  class OPENMS_DLLAPI MSDataWritingConsumer :
89  public Internal::MzMLHandler,
91  {
92 
93  public:
94  typedef PeakMap MapType;
97 
103  explicit MSDataWritingConsumer(const String& filename);
104 
107 
109 
110 
118 
129  void setExpectedSize(Size expectedSpectra, Size expectedChromatograms) override;
130 
139  void consumeSpectrum(SpectrumType & s) override;
140 
151 
161 
166 
171 
172  private:
173 
175 
176 
181  virtual void processSpectrum_(SpectrumType & s) = 0;
182 
190 
196  virtual void doCleanup_();
197 
198  protected:
199 
201  std::ofstream ofs_;
202 
219 
222 
226  std::vector<std::vector< ConstDataProcessingPtr > > dps_;
229  };
230 
240  class OPENMS_DLLAPI PlainMSDataWritingConsumer :
241  public MSDataWritingConsumer
242  {
243  void processSpectrum_(MapType::SpectrumType & /* s */) override {}
245 
246  public:
247 
248  explicit PlainMSDataWritingConsumer(String filename) : MSDataWritingConsumer(filename) {}
249  };
250 
258  class OPENMS_DLLAPI NoopMSDataWritingConsumer :
259  public MSDataWritingConsumer
260  {
261  public:
262 
263  explicit NoopMSDataWritingConsumer(String filename) : MSDataWritingConsumer(filename) {}
264  void setExperimentalSettings(const ExperimentalSettings& /* exp */) override {}
265  void consumeSpectrum(SpectrumType & /* s */) override {}
266  void consumeChromatogram(ChromatogramType & /* c */) override {}
267 
268  private:
269 
270  void doCleanup_() override {}
271  void processSpectrum_(MapType::SpectrumType & /* s */) override {}
273  };
274 
275 
276 } //end namespace OpenMS
277 
278 
Description of the applied preprocessing steps.
Definition: DataProcessing.h:53
Description of the experimental settings.
Definition: ExperimentalSettings.h:62
The interface of a consumer of spectra and chromatograms.
Definition: IMSDataConsumer.h:70
Handler for mzML file format.
Definition: MzMLHandler.h:120
Semantically validates MzXML files.
Definition: MzMLValidator.h:51
The representation of a chromatogram.
Definition: MSChromatogram.h:57
Consumer class that writes MS data to disk using the mzML format.
Definition: MSDataWritingConsumer.h:91
virtual void processChromatogram_(ChromatogramType &c)=0
Process a chromatogram before storing to disk.
~MSDataWritingConsumer() override
Destructor.
std::ofstream ofs_
File stream (to write mzML)
Definition: MSDataWritingConsumer.h:201
virtual Size getNrChromatogramsWritten()
Return the number of chromatograms written.
Size spectra_expected_
Number of spectra expected.
Definition: MSDataWritingConsumer.h:214
void setExpectedSize(Size expectedSpectra, Size expectedChromatograms) override
Set expected size of spectra and chromatograms to be written.
bool writing_spectra_
Stores whether we are currently writing spectra.
Definition: MSDataWritingConsumer.h:206
Size spectra_written_
Number of spectra written.
Definition: MSDataWritingConsumer.h:210
virtual void addDataProcessing(DataProcessing d)
Optionally add a data processing method to each chromatogram and spectrum.
std::vector< std::vector< ConstDataProcessingPtr > > dps_
Vector of data processing objects -> will be filled by writeHeader_.
Definition: MSDataWritingConsumer.h:226
bool add_dataprocessing_
Whether to add dataprocessing term to the data before writing.
Definition: MSDataWritingConsumer.h:218
MSDataWritingConsumer(const String &filename)
Constructor.
MapType::ChromatogramType ChromatogramType
Definition: MSDataWritingConsumer.h:96
virtual void processSpectrum_(SpectrumType &s)=0
Process a spectrum before storing to disk.
void consumeChromatogram(ChromatogramType &c) override
Consume a chromatogram.
DataProcessingPtr additional_dataprocessing_
The dataprocessing to be added to each spectrum/chromatogram.
Definition: MSDataWritingConsumer.h:228
virtual void doCleanup_()
Cleanup function called by the destructor.
Size chromatograms_expected_
Number of chromatograms expected.
Definition: MSDataWritingConsumer.h:216
bool writing_chromatograms_
Stores whether we are currently writing chromatograms.
Definition: MSDataWritingConsumer.h:208
PeakMap MapType
Definition: MSDataWritingConsumer.h:94
void setExperimentalSettings(const ExperimentalSettings &exp) override
Set experimental settings for the whole file.
void consumeSpectrum(SpectrumType &s) override
Consume a spectrum.
MapType::SpectrumType SpectrumType
Definition: MSDataWritingConsumer.h:95
virtual Size getNrSpectraWritten()
Return the number of spectra written.
bool started_writing_
Stores whether we have already started writing any data.
Definition: MSDataWritingConsumer.h:204
ExperimentalSettings settings_
Experimental settings to use for the whole file.
Definition: MSDataWritingConsumer.h:224
Size chromatograms_written_
Number of chromatograms written.
Definition: MSDataWritingConsumer.h:212
Internal::MzMLValidator * validator_
Validator that knows about CV terms.
Definition: MSDataWritingConsumer.h:221
In-Memory representation of a mass spectrometry run.
Definition: MSExperiment.h:72
The representation of a 1D spectrum.
Definition: MSSpectrum.h:70
Consumer class that perform no operation.
Definition: MSDataWritingConsumer.h:260
void consumeChromatogram(ChromatogramType &) override
Consume a chromatogram.
Definition: MSDataWritingConsumer.h:266
void processChromatogram_(MapType::ChromatogramType &) override
Process a chromatogram before storing to disk.
Definition: MSDataWritingConsumer.h:272
NoopMSDataWritingConsumer(String filename)
Definition: MSDataWritingConsumer.h:263
void doCleanup_() override
Cleanup function called by the destructor.
Definition: MSDataWritingConsumer.h:270
void setExperimentalSettings(const ExperimentalSettings &) override
Set experimental settings for the whole file.
Definition: MSDataWritingConsumer.h:264
void processSpectrum_(MapType::SpectrumType &) override
Process a spectrum before storing to disk.
Definition: MSDataWritingConsumer.h:271
void consumeSpectrum(SpectrumType &) override
Consume a spectrum.
Definition: MSDataWritingConsumer.h:265
Consumer class that writes MS data to disk using the mzML format.
Definition: MSDataWritingConsumer.h:242
void processChromatogram_(MapType::ChromatogramType &) override
Process a chromatogram before storing to disk.
Definition: MSDataWritingConsumer.h:244
void processSpectrum_(MapType::SpectrumType &) override
Process a spectrum before storing to disk.
Definition: MSDataWritingConsumer.h:243
PlainMSDataWritingConsumer(String filename)
Definition: MSDataWritingConsumer.h:248
A more convenient string class.
Definition: String.h:60
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:127
const double c
Definition: Constants.h:214
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:48
boost::shared_ptr< DataProcessing > DataProcessingPtr
Definition: DataProcessing.h:136