Home  · Classes  · Annotated Classes  · Modules  · Members  · Namespaces  · Related Pages
Public Types | Public Member Functions | Protected Attributes | Private Member Functions | List of all members
MSDataWritingConsumer Class Referenceabstract

Consumer class that writes MS data to disk using the mzML format. More...

#include <OpenMS/FORMAT/DATAACCESS/MSDataWritingConsumer.h>

Inheritance diagram for MSDataWritingConsumer:
MzMLHandler IMSDataConsumer XMLHandler NoopMSDataWritingConsumer PlainMSDataWritingConsumer

Public Types

typedef PeakMap MapType
 
typedef MapType::SpectrumType SpectrumType
 
typedef MapType::ChromatogramType ChromatogramType
 
- Public Types inherited from XMLHandler
enum  ActionMode { LOAD, STORE }
 Action to set the current mode (for error messages) More...
 
- Public Types inherited from IMSDataConsumer
typedef MSSpectrum SpectrumType
 
typedef MSChromatogram ChromatogramType
 

Public Member Functions

 MSDataWritingConsumer (String filename)
 Constructor. More...
 
virtual ~MSDataWritingConsumer ()
 Destructor. More...
 
virtual void addDataProcessing (DataProcessing d)
 Optionally add a data processing method to each chromatogram and spectrum. More...
 
virtual Size getNrSpectraWritten ()
 Return the number of spectra written. More...
 
virtual Size getNrChromatogramsWritten ()
 Return the number of chromatograms written. More...
 
IMSDataConsumer interface
virtual void setExperimentalSettings (const ExperimentalSettings &exp)
 Set experimental settings for the whole file. More...
 
virtual void setExpectedSize (Size expectedSpectra, Size expectedChromatograms)
 Set expected size of spectra and chromatograms to be written. More...
 
virtual void consumeSpectrum (SpectrumType &s)
 Consume a spectrum. More...
 
virtual void consumeChromatogram (ChromatogramType &c)
 Consume a chromatogram. More...
 
- Public Member Functions inherited from MzMLHandler
void getCounts (Size &spectra_counts, Size &chromatogram_counts)
 Get the spectra and chromatogram counts of a file. More...
 
void setMSDataConsumer (Interfaces::IMSDataConsumer *consumer)
 Set the IMSDataConsumer consumer which will consume the read data. More...
 
 MzMLHandler (MapType &exp, const String &filename, const String &version, ProgressLogger &logger)
 Constructor for a read-only handler. More...
 
 MzMLHandler (const MapType &exp, const String &filename, const String &version, const ProgressLogger &logger)
 Constructor for a write-only handler. More...
 
virtual ~MzMLHandler ()
 Destructor. More...
 
virtual void endElement (const XMLCh *const, const XMLCh *const, const XMLCh *const qname)
 Parsing method for closing tags. More...
 
virtual void startElement (const XMLCh *const, const XMLCh *const, const XMLCh *const qname, const xercesc::Attributes &attributes)
 Parsing method for opening tags. More...
 
virtual void characters (const XMLCh *const chars, const XMLSize_t length)
 Parsing method for character data. More...
 
virtual void writeTo (std::ostream &os)
 Writes the contents to a stream. More...
 
void setOptions (const PeakFileOptions &opt)
 Set the peak file options. More...
 
PeakFileOptionsgetOptions ()
 Get the peak file options. More...
 
- Public Member Functions inherited from XMLHandler
 XMLHandler (const String &filename, const String &version)
 Default constructor. More...
 
virtual ~XMLHandler ()
 Destructor. More...
 
void reset ()
 Release internal memory used for parsing (call. More...
 
void fatalError (ActionMode mode, const String &msg, UInt line=0, UInt column=0) const
 Fatal error handler. Throws a ParseError exception. More...
 
void error (ActionMode mode, const String &msg, UInt line=0, UInt column=0) const
 Error handler for recoverable errors. More...
 
void warning (ActionMode mode, const String &msg, UInt line=0, UInt column=0) const
 Warning handler. More...
 
String errorString ()
 Returns the last error description. More...
 
void fatalError (const xercesc::SAXParseException &exception)
 
void error (const xercesc::SAXParseException &exception)
 
void warning (const xercesc::SAXParseException &exception)
 
- Public Member Functions inherited from IMSDataConsumer
virtual ~IMSDataConsumer ()
 

Protected Attributes

std::ofstream ofs_
 File stream (to write mzML) More...
 
bool started_writing_
 Stores whether we have already started writing any data. More...
 
bool writing_spectra_
 Stores whether we are currently writing spectra. More...
 
bool writing_chromatograms_
 Stores whether we are currently writing chromatograms. More...
 
Size spectra_written_
 Number of spectra written. More...
 
Size chromatograms_written_
 Number of chromatograms written. More...
 
Size spectra_expected_
 Number of spectra expected. More...
 
Size chromatograms_expected_
 Number of chromatograms expected. More...
 
bool add_dataprocessing_
 Whether to add dataprocessing term to the data before writing. More...
 
Internal::MzMLValidatorvalidator_
 Validator that knows about CV terms. More...
 
ExperimentalSettings settings_
 Experimental settings to use for the whole file. More...
 
std::vector< std::vector< ConstDataProcessingPtr > > dps_
 Vector of data processing objects -> will be filled by writeHeader_. More...
 
DataProcessingPtr additional_dataprocessing_
 The dataprocessing to be added to each spectrum/chromatogram. More...
 
- Protected Attributes inherited from MzMLHandler
MapTypeexp_
 map pointer for reading More...
 
const MapTypecexp_
 map pointer for writing More...
 
PeakFileOptions options_
 Options that can be set for loading/storing. More...
 
Base64 decoder_
 Decoder/Encoder for Base64-data in MzML. More...
 
const ProgressLoggerlogger_
 Progress logger. More...
 
Interfaces::IMSDataConsumerconsumer_
 Consumer class to work on spectra. More...
 
UInt scan_count
 Counting spectra and chromatograms. More...
 
UInt chromatogram_count
 
bool skip_chromatogram_
 Flag that indicates whether this spectrum should be skipped (due to options) More...
 
bool skip_spectrum_
 
bool rt_set_
 
ControlledVocabulary cv_
 Controlled vocabulary (psi-ms from OpenMS/share/OpenMS/CV/psi-ms.obo) More...
 
CVMappings mapping_
 
UInt selected_ion_count_
 Count of selected ions. More...
 
SpectrumType spec_
 The current spectrum. More...
 
ChromatogramType chromatogram_
 The current chromatogram. More...
 
std::vector< BinaryDatadata_
 The spectrum data (or chromatogram data) More...
 
Size default_array_length_
 The default number of peaks in the current spectrum. More...
 
bool in_spectrum_list_
 Flag that indicates that we're inside a spectrum (in contrast to a chromatogram) More...
 
String current_id_
 Id of the current list. Used for referencing param group, source file, sample, software, ... More...
 
Map< String, std::vector< SemanticValidator::CVTerm > > ref_param_
 The referencing param groups: id => array (accession, value) More...
 
Map< String, SourceFilesource_files_
 The source files: id => SourceFile. More...
 
Map< String, Samplesamples_
 The sample list: id => Sample. More...
 
Map< String, Softwaresoftware_
 The software list: id => Software. More...
 
Map< String, Instrumentinstruments_
 The data processing list: id => Instrument. More...
 
Map< String, std::vector< DataProcessingPtr > > processing_
 The data processing list: id => Instrument. More...
 
String default_processing_
 id of the default data processing (used when no processing is defined) More...
 
std::vector< SpectrumDataspectrum_data_
 Vector of spectrum data stored for later parallel processing. More...
 
std::vector< ChromatogramDatachromatogram_data_
 Vector of chromatogram data stored for later parallel processing. More...
 
std::vector< std::pair< std::string, long > > spectra_offsets
 
std::vector< std::pair< std::string, long > > chromatograms_offsets
 
- Protected Attributes inherited from XMLHandler
String error_message_
 Error message of the last error. More...
 
String file_
 File name. More...
 
String version_
 Schema version. More...
 
StringManager sm_
 Helper class for string conversion. More...
 
std::vector< Stringopen_tags_
 Stack of open XML tags. More...
 
std::vector< std::vector< String > > cv_terms_
 Array of CV term lists (one sublist denotes one term and it's children) More...
 

Private Member Functions

virtual void doCleanup_ ()
 Cleanup function called by the destructor. More...
 
Data Processing using the template method pattern
virtual void processSpectrum_ (SpectrumType &s)=0
 Process a spectrum before storing to disk. More...
 
virtual void processChromatogram_ (ChromatogramType &c)=0
 Process a chromatogram before storing to disk. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from XMLHandler
static String writeXMLEscape (const String &to_escape)
 Escapes a string and returns the escaped string. More...
 
- Protected Types inherited from MzMLHandler
typedef MapType::PeakType PeakType
 Peak type. More...
 
typedef MapType::ChromatogramPeakType ChromatogramPeakType
 Chromatogram peak type. More...
 
typedef MSSpectrum SpectrumType
 Spectrum type. More...
 
typedef MSChromatogram ChromatogramType
 Spectrum type. More...
 
typedef MzMLHandlerHelper::BinaryData BinaryData
 
- Protected Member Functions inherited from MzMLHandler
void writeSpectrum_ (std::ostream &os, const SpectrumType &spec, Size s, Internal::MzMLValidator &validator, bool renew_native_ids, std::vector< std::vector< ConstDataProcessingPtr > > &dps)
 
void writeChromatogram_ (std::ostream &os, const ChromatogramType &chromatogram, Size c, Internal::MzMLValidator &validator)
 
template<typename ContainerT >
void writeContainerData (std::ostream &os, const PeakFileOptions &pf_options_, const ContainerT &container, String array_type)
 
void populateSpectraWithData ()
 Populate all spectra on the stack with data from input. More...
 
void populateChromatogramsWithData ()
 Populate all chromatograms on the stack with data from input. More...
 
void addSpectrumMetaData_ (const std::vector< MzMLHandlerHelper::BinaryData > &input_data, const Size n, SpectrumType &spectrum) const
 
void populateSpectraWithData_ (std::vector< MzMLHandlerHelper::BinaryData > &input_data, Size &default_arr_length, const PeakFileOptions &peak_file_options, SpectrumType &spectrum)
 Fill a single spectrum with data from input. More...
 
void populateChromatogramsWithData_ (std::vector< MzMLHandlerHelper::BinaryData > &input_data, Size &default_arr_length, const PeakFileOptions &peak_file_options, ChromatogramType &inp_chromatogram)
 Fill a single chromatogram with data from input. More...
 
template<typename DataType >
void writeBinaryDataArray (std::ostream &os, const PeakFileOptions &pf_options_, std::vector< DataType > data_to_encode, bool is32bit, String array_type)
 
void writeHeader_ (std::ostream &os, const MapType &exp, std::vector< std::vector< ConstDataProcessingPtr > > &dps, Internal::MzMLValidator &validator)
 
void fillChromatogramData_ ()
 Fills the current chromatogram with data points and meta data. More...
 
void handleCVParam_ (const String &parent_parent_tag, const String &parent_tag, const String &accession, const String &name, const String &value, const String &unit_accession="")
 Handles CV terms. More...
 
void handleUserParam_ (const String &parent_parent_tag, const String &parent_tag, const String &name, const String &type, const String &value)
 Handles user terms. More...
 
void writeUserParam_ (std::ostream &os, const MetaInfoInterface &meta, UInt indent, String path, Internal::MzMLValidator &validator) const
 Writes user terms. More...
 
ControlledVocabulary::CVTerm getChildWithName_ (const String &parent_accession, const String &name) const
 Looks up a child CV term of parent_accession with the name name. If no such term is found, an empty term is returned. More...
 
void writeSoftware_ (std::ostream &os, const String &id, const Software &software, Internal::MzMLValidator &validator)
 Helper method that writes a software. More...
 
void writeSourceFile_ (std::ostream &os, const String &id, const SourceFile &software, Internal::MzMLValidator &validator)
 Helper method that writes a source file. More...
 
void writeDataProcessing_ (std::ostream &os, const String &id, const std::vector< ConstDataProcessingPtr > &dps, Internal::MzMLValidator &validator)
 Helper method that writes a data processing list. More...
 
void writePrecursor_ (std::ostream &os, const Precursor &precursor, Internal::MzMLValidator &validator)
 Helper method that write precursor information from spectra and chromatograms. More...
 
void writeProduct_ (std::ostream &os, const Product &product, Internal::MzMLValidator &validator)
 Helper method that write precursor information from spectra and chromatograms. More...
 
String writeCV_ (const ControlledVocabulary::CVTerm &c, const DataValue &metaValue) const
 Helper method to write an CV based on a meta value. More...
 
bool validateCV_ (const ControlledVocabulary::CVTerm &c, const String &path, const Internal::MzMLValidator &validator) const
 Helper method to validate if the given CV is allowed in the current location (path) More...
 
- Protected Member Functions inherited from XMLHandler
bool equal_ (const XMLCh *a, const XMLCh *b) const
 Returns if two Xerces strings are equal. More...
 
void writeUserParam_ (const String &tag_name, std::ostream &os, const MetaInfoInterface &meta, UInt indent) const
 Writes the content of MetaInfoInterface to the file. More...
 
Int asInt_ (const String &in)
 Conversion of a String to an integer value. More...
 
Int asInt_ (const XMLCh *in)
 Conversion of a Xerces string to an integer value. More...
 
UInt asUInt_ (const String &in)
 Conversion of a String to an unsigned integer value. More...
 
double asDouble_ (const String &in)
 Conversion of a String to a double value. More...
 
float asFloat_ (const String &in)
 Conversion of a String to a float value. More...
 
bool asBool_ (const String &in)
 Conversion of a string to a boolean value. More...
 
DateTime asDateTime_ (String date_string)
 Conversion of a xs:datetime string to a DateTime value. More...
 
char * attributeAsString_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to a String. More...
 
Int attributeAsInt_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to a Int. More...
 
double attributeAsDouble_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to a double. More...
 
DoubleList attributeAsDoubleList_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to a DoubleList. More...
 
IntList attributeAsIntList_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to an IntList. More...
 
StringList attributeAsStringList_ (const xercesc::Attributes &a, const char *name) const
 Converts an attribute to an StringList. More...
 
bool optionalAttributeAsString_ (String &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the String value if the attribute is present. More...
 
bool optionalAttributeAsInt_ (Int &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the Int value if the attribute is present. More...
 
bool optionalAttributeAsUInt_ (UInt &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the UInt value if the attribute is present. More...
 
bool optionalAttributeAsDouble_ (double &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the double value if the attribute is present. More...
 
bool optionalAttributeAsDoubleList_ (DoubleList &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the DoubleList value if the attribute is present. More...
 
bool optionalAttributeAsStringList_ (StringList &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the StringList value if the attribute is present. More...
 
bool optionalAttributeAsIntList_ (IntList &value, const xercesc::Attributes &a, const char *name) const
 Assigns the attribute content to the IntList value if the attribute is present. More...
 
char * attributeAsString_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a String. More...
 
Int attributeAsInt_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a Int. More...
 
double attributeAsDouble_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a double. More...
 
DoubleList attributeAsDoubleList_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a DoubleList. More...
 
IntList attributeAsIntList_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a IntList. More...
 
StringList attributeAsStringList_ (const xercesc::Attributes &a, const XMLCh *name) const
 Converts an attribute to a StringList. More...
 
bool optionalAttributeAsString_ (String &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the String value if the attribute is present. More...
 
bool optionalAttributeAsInt_ (Int &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the Int value if the attribute is present. More...
 
bool optionalAttributeAsUInt_ (UInt &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the UInt value if the attribute is present. More...
 
bool optionalAttributeAsDouble_ (double &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the double value if the attribute is present. More...
 
bool optionalAttributeAsDoubleList_ (DoubleList &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the DoubleList value if the attribute is present. More...
 
bool optionalAttributeAsIntList_ (IntList &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the IntList value if the attribute is present. More...
 
bool optionalAttributeAsStringList_ (StringList &value, const xercesc::Attributes &a, const XMLCh *name) const
 Assigns the attribute content to the StringList value if the attribute is present. More...
 
SignedSize cvStringToEnum_ (const Size section, const String &term, const char *message, const SignedSize result_on_error=0)
 

Detailed Description

Consumer class that writes MS data to disk using the mzML format.

The MSDataWritingConsumer is able to write spectra and chromatograms to disk on the fly (as soon as they are consumed). This class is abstract and allows the derived class to define how spectra and chromatograms are processed before being written to disk.

If you are looking for class that simply takes spectra and chromatograms and writes them to disk, please use the PlainMSDataWritingConsumer.

Example usage:

MSDataWritingConsumer * consumer = new MSDataWritingConsumer(outfile); // some implementation
consumer->setExpectedSize(specsize, chromsize);
consumer->setExperimentalSettings(exp_settings);
consumer->addDataProcessing(dp); // optional, will be added to all spectra and chromatograms
[...]
// multiple times ...
consumer->consumeSpectrum(spec);
consumer->consumeChromatogram(chrom);
[...]
delete consumer;
Note
The first usage of consumeChromatogram or consumeSpectrum will start writing of the mzML header to disk (and the first element).
Currently it is not possible to add spectra after having already added chromatograms since this could lead to a situation with multiple spectrumList tags appear in an mzML file.
The expected size will not be enforced but it will lead to an inconsistent mzML if the count attribute of spectrumList or chromatogramList is incorrect.

Member Typedef Documentation

◆ ChromatogramType

◆ MapType

typedef PeakMap MapType

◆ SpectrumType

Constructor & Destructor Documentation

◆ MSDataWritingConsumer()

MSDataWritingConsumer ( String  filename)
explicit

Constructor.

Parameters
filenameFilename for the output mzML

◆ ~MSDataWritingConsumer()

virtual ~MSDataWritingConsumer ( )
virtual

Destructor.

Member Function Documentation

◆ addDataProcessing()

virtual void addDataProcessing ( DataProcessing  d)
virtual

Optionally add a data processing method to each chromatogram and spectrum.

The provided DataProcessing object will be added to each chromatogram and spectrum written to to the mzML file.

Parameters
dThe DataProcessing object to be added

Referenced by extractCachedMetaFilename(), and SortPairDoubleByFirst().

◆ consumeChromatogram()

virtual void consumeChromatogram ( ChromatogramType c)
virtual

Consume a chromatogram.

The chromatogram will be processed using the processChromatogram_ method of the current implementation and then written to the mzML file.

Parameters
cThe chromatogram to be written to mzML

Implements IMSDataConsumer.

Reimplemented in NoopMSDataWritingConsumer.

Referenced by IndexedMzMLFileLoader::store().

◆ consumeSpectrum()

virtual void consumeSpectrum ( SpectrumType s)
virtual

Consume a spectrum.

The spectrum will be processed using the processSpectrum_ method of the current implementation and then written to the mzML file.

Parameters
sThe spectrum to be written to mzML

Implements IMSDataConsumer.

Reimplemented in NoopMSDataWritingConsumer.

Referenced by IndexedMzMLFileLoader::store().

◆ doCleanup_()

virtual void doCleanup_ ( )
privatevirtual

Cleanup function called by the destructor.

Will write the last tags to the file and close the file stream.

Reimplemented in NoopMSDataWritingConsumer.

◆ getNrChromatogramsWritten()

virtual Size getNrChromatogramsWritten ( )
virtual

Return the number of chromatograms written.

◆ getNrSpectraWritten()

virtual Size getNrSpectraWritten ( )
virtual

Return the number of spectra written.

◆ processChromatogram_()

virtual void processChromatogram_ ( ChromatogramType c)
privatepure virtual

Process a chromatogram before storing to disk.

Redefine this function to determine chromatogram processing before writing to disk.

Implemented in NoopMSDataWritingConsumer, and PlainMSDataWritingConsumer.

◆ processSpectrum_()

virtual void processSpectrum_ ( SpectrumType s)
privatepure virtual

Process a spectrum before storing to disk.

Redefine this function to determine spectra processing before writing to disk.

Implemented in NoopMSDataWritingConsumer, and PlainMSDataWritingConsumer.

◆ setExpectedSize()

virtual void setExpectedSize ( Size  expectedSpectra,
Size  expectedChromatograms 
)
virtual

Set expected size of spectra and chromatograms to be written.

These numbers will be written in the spectrumList and chromatogramList tag in the mzML file. Therefore, these will contain wrong numbers if the expected size is not set correctly.

Parameters
expectedSpectraNumber of spectra expected
expectedChromatogramsNumber of chromatograms expected

Implements IMSDataConsumer.

Referenced by SortPairDoubleByFirst(), and IndexedMzMLFileLoader::store().

◆ setExperimentalSettings()

virtual void setExperimentalSettings ( const ExperimentalSettings exp)
virtual

Set experimental settings for the whole file.

Parameters
expExperimental settings to be used for this file (from this and the first spectrum/chromatogram, the class will deduce most of the header of the mzML file)

Implements IMSDataConsumer.

Reimplemented in NoopMSDataWritingConsumer.

Referenced by SortPairDoubleByFirst(), and IndexedMzMLFileLoader::store().

Member Data Documentation

◆ add_dataprocessing_

bool add_dataprocessing_
protected

Whether to add dataprocessing term to the data before writing.

◆ additional_dataprocessing_

DataProcessingPtr additional_dataprocessing_
protected

The dataprocessing to be added to each spectrum/chromatogram.

◆ chromatograms_expected_

Size chromatograms_expected_
protected

Number of chromatograms expected.

◆ chromatograms_written_

Size chromatograms_written_
protected

Number of chromatograms written.

◆ dps_

std::vector<std::vector< ConstDataProcessingPtr > > dps_
protected

Vector of data processing objects -> will be filled by writeHeader_.

◆ ofs_

std::ofstream ofs_
protected

File stream (to write mzML)

◆ settings_

ExperimentalSettings settings_
protected

Experimental settings to use for the whole file.

◆ spectra_expected_

Size spectra_expected_
protected

Number of spectra expected.

◆ spectra_written_

Size spectra_written_
protected

Number of spectra written.

◆ started_writing_

bool started_writing_
protected

Stores whether we have already started writing any data.

◆ validator_

Internal::MzMLValidator* validator_
protected

Validator that knows about CV terms.

◆ writing_chromatograms_

bool writing_chromatograms_
protected

Stores whether we are currently writing chromatograms.

◆ writing_spectra_

bool writing_spectra_
protected

Stores whether we are currently writing spectra.


OpenMS / TOPP release 2.3.0 Documentation generated on Tue Jan 9 2018 18:22:10 using doxygen 1.8.13