35 #ifndef OPENMS_FORMAT_DATAACCESS_MSDATAWRITINGCONSUMER_H 36 #define OPENMS_FORMAT_DATAACCESS_MSDATAWRITINGCONSUMER_H 47 #include <boost/shared_ptr.hpp> 106 started_writing_(false),
107 writing_spectra_(false),
108 writing_chromatograms_(false),
110 chromatograms_written_(0),
111 spectra_expected_(0),
112 chromatograms_expected_(0),
113 add_dataprocessing_(false)
118 ofs_.open(filename.c_str(), std::ios::out | std::ios::binary);
154 spectra_expected_ = expectedSpectra;
155 chromatograms_expected_ = expectedChromatograms;
168 if (writing_chromatograms_)
171 "Cannot write spectra after writing chromatograms.");
175 SpectrumType scpy = s;
176 processSpectrum_(scpy);
179 if (add_dataprocessing_)
184 if (!started_writing_)
197 started_writing_ =
true;
199 if (!writing_spectra_)
202 ofs_ <<
"\t\t<spectrumList count=\"" << spectra_expected_ <<
"\" defaultDataProcessingRef=\"dp_sp_0\">\n";
203 writing_spectra_ =
true;
205 bool renew_native_ids =
false;
209 spectra_written_++, *validator_, renew_native_ids, dps_);
223 if (writing_spectra_)
225 ofs_ <<
"\t\t</spectrumList>\n";
229 ChromatogramType ccpy =
c;
230 processChromatogram_(ccpy);
232 if (add_dataprocessing_)
237 if (!started_writing_)
250 started_writing_ =
true;
252 if (!writing_chromatograms_)
254 ofs_ <<
"\t\t<chromatogramList count=\"" << chromatograms_expected_ <<
"\" defaultDataProcessingRef=\"dp_sp_0\">\n";
255 writing_chromatograms_ =
true;
256 writing_spectra_ =
false;
259 chromatograms_written_++, *validator_);
273 additional_dataprocessing_ = d;
274 add_dataprocessing_ =
true;
295 virtual void processSpectrum_(SpectrumType & s) = 0;
302 virtual void processChromatogram_(ChromatogramType &
c) = 0;
316 if (writing_spectra_)
318 ofs_ <<
"\t\t</spectrumList>\n";
320 else if (writing_chromatograms_)
322 ofs_ <<
"\t\t</chromatogramList>\n";
326 if (started_writing_)
361 std::vector<std::vector<DataProcessing> >
dps_;
Description of the applied preprocessing steps.
Definition: DataProcessing.h:51
const std::vector< DataProcessing > & getDataProcessing() const
returns a const reference to the description of the applied processing
virtual Size getNrSpectraWritten()
Return the number of spectra written.
Definition: MSDataWritingConsumer.h:280
A more convenient string class.
Definition: String.h:57
virtual void setExperimentalSettings(const ExperimentalSettings &exp)
Set experimental settings for the whole file.
Definition: MSDataWritingConsumer.h:137
bool writing_spectra_
Stores whether we are currently writing spectra.
Definition: MSDataWritingConsumer.h:341
Consumer class that writes MS data to disk using the mzML format.
Definition: MSDataWritingConsumer.h:375
void processChromatogram_(MapType::ChromatogramType &)
Process a chromatogram before storing to disk.
Definition: MSDataWritingConsumer.h:379
Semantically validates MzXML files.
Definition: MzMLValidator.h:52
Consumer class that perform no operation.
Definition: MSDataWritingConsumer.h:393
std::ofstream ofs_
File stream (to write mzML)
Definition: MSDataWritingConsumer.h:336
Int writtenDigits(const FloatingPointType &=FloatingPointType())
Number of digits commonly used for writing a floating point type (a.k.a. precision). Specializations are defined for float, double, long double.
Definition: Types.h:288
Size spectra_expected_
Number of spectra expected.
Definition: MSDataWritingConsumer.h:349
ExperimentalSettings settings_
Experimental settings to use for the whole file.
Definition: MSDataWritingConsumer.h:359
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:47
void addChromatogram(const MSChromatogram< ChromatogramPeakType > &chromatogram)
adds a chromatogram to the list
Definition: MSExperiment.h:782
bool writing_chromatograms_
Stores whether we are currently writing chromatograms.
Definition: MSDataWritingConsumer.h:343
void writeHeader_(std::ostream &os, const MapType &exp, std::vector< std::vector< DataProcessing > > &dps, Internal::MzMLValidator &validator)
Definition: MzMLHandler.h:4003
const std::vector< DataProcessing > & getDataProcessing() const
returns a const reference to the description of the applied processing
bool add_dataprocessing_
Whether to add dataprocessing term to the data before writing.
Definition: MSDataWritingConsumer.h:353
File adapter for MzML files.
Definition: MzMLFile.h:55
virtual void addDataProcessing(DataProcessing d)
Optionally add a data processing method to each chromatogram and spectrum.
Definition: MSDataWritingConsumer.h:271
XML handler for MzMLFile.
Definition: MzMLHandler.h:108
void setExperimentalSettings(const ExperimentalSettings &)
Set experimental settings for the whole file.
Definition: MSDataWritingConsumer.h:399
A method or algorithm argument contains illegal values.
Definition: Exception.h:634
PlainMSDataWritingConsumer(String filename)
Definition: MSDataWritingConsumer.h:383
void processSpectrum_(MapType::SpectrumType &)
Process a spectrum before storing to disk.
Definition: MSDataWritingConsumer.h:378
std::vector< std::vector< DataProcessing > > dps_
Vector of data processing objects -> will be filled by writeHeader_.
Definition: MSDataWritingConsumer.h:361
MapType::SpectrumType SpectrumType
Definition: MSDataWritingConsumer.h:96
void consumeSpectrum(SpectrumType &)
Consume a spectrum.
Definition: MSDataWritingConsumer.h:400
void consumeChromatogram(ChromatogramType &)
Consume a chromatogram.
Definition: MSDataWritingConsumer.h:401
static void writeFooter_(std::ostream &os, const PeakFileOptions &options_, std::vector< std::pair< std::string, long > > &spectra_offsets, std::vector< std::pair< std::string, long > > &chromatograms_offsets)
Write the mzML footer the appropriate compression term given the PeakFileOptions and the NumpressConf...
virtual ~MSDataWritingConsumer()
Destructor.
Definition: MSDataWritingConsumer.h:123
void processSpectrum_(MapType::SpectrumType &)
Process a spectrum before storing to disk.
Definition: MSDataWritingConsumer.h:406
MapType::ChromatogramType ChromatogramType
Definition: MSDataWritingConsumer.h:97
Internal::MzMLValidator * validator_
Validator that knows about CV terms.
Definition: MSDataWritingConsumer.h:356
MSExperiment MapType
Definition: MSDataWritingConsumer.h:95
bool started_writing_
Stores whether we have already started writing any data.
Definition: MSDataWritingConsumer.h:339
void addSpectrum(const MSSpectrum< PeakT > &spectrum)
adds a spectra to the list
Definition: MSExperiment.h:758
void doCleanup_()
Cleanup function called by the destructor.
Definition: MSDataWritingConsumer.h:405
void processChromatogram_(MapType::ChromatogramType &)
Process a chromatogram before storing to disk.
Definition: MSDataWritingConsumer.h:407
Consumer class that writes MS data to disk using the mzML format.
Definition: MSDataWritingConsumer.h:89
The interface of a consumer of spectra and chromatograms.
Definition: IMSDataConsumer.h:68
Size chromatograms_expected_
Number of chromatograms expected.
Definition: MSDataWritingConsumer.h:351
virtual void doCleanup_()
Cleanup function called by the destructor.
Definition: MSDataWritingConsumer.h:310
Base class for all classes that want to report their progress.
Definition: ProgressLogger.h:55
NoopMSDataWritingConsumer(String filename)
Definition: MSDataWritingConsumer.h:398
virtual Size getNrChromatogramsWritten()
Return the number of chromatograms written.
Definition: MSDataWritingConsumer.h:284
void writeSpectrum_(std::ostream &os, const SpectrumType &spec, Size s, Internal::MzMLValidator &validator, bool renew_native_ids, std::vector< std::vector< DataProcessing > > &dps)
Definition: MzMLHandler.h:4913
virtual void consumeChromatogram(ChromatogramType &c)
Consume a chromatogram.
Definition: MSDataWritingConsumer.h:220
MSDataWritingConsumer(String filename)
Constructor.
Definition: MSDataWritingConsumer.h:104
void writeChromatogram_(std::ostream &os, const ChromatogramType &chromatogram, Size c, Internal::MzMLValidator &validator)
Definition: MzMLHandler.h:5246
Size chromatograms_written_
Number of chromatograms written.
Definition: MSDataWritingConsumer.h:347
Description of the experimental settings.
Definition: ExperimentalSettings.h:59
virtual void setExpectedSize(Size expectedSpectra, Size expectedChromatograms)
Set expected size of spectra and chromatograms to be written.
Definition: MSDataWritingConsumer.h:152
Size spectra_written_
Number of spectra written.
Definition: MSDataWritingConsumer.h:345
virtual void consumeSpectrum(SpectrumType &s)
Consume a spectrum.
Definition: MSDataWritingConsumer.h:166
DataProcessing additional_dataprocessing_
The dataprocessing to be added to each spectrum/chromatogram.
Definition: MSDataWritingConsumer.h:363