OpenMS
MzXMLHandler.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: Timo Sachsenberg $
32 // $Authors: Marc Sturm, Chris Bielow $
33 // --------------------------------------------------------------------------
34 
35 #pragma once
36 
43 
44 namespace OpenMS
45 {
46  class MetaInfoInterface;
47  namespace Interfaces
48  {
49  class IMSDataConsumer;
50  }
51 
52  namespace Internal
53  {
54 
55 
63  typedef PeakMap MapType;
64  typedef MSSpectrum SpectrumType;
65 
66  class OPENMS_DLLAPI MzXMLHandler :
67  public XMLHandler
68  {
69 public:
73  MzXMLHandler(MapType& exp, const String& filename, const String& version, ProgressLogger& logger);
74 
76  MzXMLHandler(const MapType& exp, const String& filename, const String& version, const ProgressLogger& logger);
77 
79  ~MzXMLHandler() override {}
81 
83  LOADDETAIL getLoadDetail() const override;
84 
86  void setLoadDetail(const LOADDETAIL d) override;
87 
88  // Docu in base class
89  void endElement(const XMLCh* const uri, const XMLCh* const local_name, const XMLCh* const qname) override;
90 
91  // Docu in base class
92  void startElement(const XMLCh* const uri, const XMLCh* const local_name, const XMLCh* const qname, const xercesc::Attributes& attributes) override;
93 
94  // Docu in base class
95  void characters(const XMLCh* const chars, const XMLSize_t length) override;
96 
98  void writeTo(std::ostream& os) override;
99 
101  void setOptions(const PeakFileOptions& options)
102  {
103  options_ = options;
104  }
105 
108  {
109  return scan_count_;
110  }
111 
114  {
115  consumer_ = consumer;
116  }
117 
118 protected:
119 
124 
128  const MapType* cexp_;
129 
132 
136 
145  {
151  bool skip_data;
152  };
153 
155  std::vector< SpectrumData > spectrum_data_;
157 
160 
163 
166 
169 
172 
173 
176  inline bool writeAttributeIfExists_(std::ostream& os, const MetaInfoInterface& meta, const String& metakey, const String& attname);
177 
179  inline void writeUserParam_(std::ostream& os, const MetaInfoInterface& meta, int indent = 4, const String& tag = "nameValue");
180 
188 
196 
198  std::vector< boost::shared_ptr< DataProcessing> > data_processing_;
199 
200 
201 private:
204 
206  void init_();
207  };
208 
209  } // namespace Internal
210 
211 } // namespace OpenMS
212 
The interface of a consumer of spectra and chromatograms.
Definition: IMSDataConsumer.h:70
Definition: MzXMLHandler.h:68
void init_()
initialize members (call from C'tor)
void doPopulateSpectraWithData_(SpectrumData &spectrum_data)
Fill a single spectrum with data from input.
UInt getScanCount() const
Gets the scan count.
Definition: MzXMLHandler.h:107
String precision_
Definition: MzXMLHandler.h:147
UInt peak_count_
Definition: MzXMLHandler.h:146
UInt spec_write_counter_
spectrum counter (spectra without peaks are not written)
Definition: MzXMLHandler.h:162
MapType * exp_
map pointer for reading
Definition: MzXMLHandler.h:126
LOADDETAIL getLoadDetail() const override
handler which support partial loading, implement this method
void endElement(const XMLCh *const uri, const XMLCh *const local_name, const XMLCh *const qname) override
~MzXMLHandler() override
Destructor.
Definition: MzXMLHandler.h:79
MzXMLHandler()
Not implemented.
void setOptions(const PeakFileOptions &options)
Sets the options.
Definition: MzXMLHandler.h:101
void writeUserParam_(std::ostream &os, const MetaInfoInterface &meta, int indent=4, const String &tag="nameValue")
write metaInfo to xml (usually in nameValue-tag)
void writeTo(std::ostream &os) override
Write the contents to a stream.
Interfaces::IMSDataConsumer * consumer_
Consumer class to work on spectra.
Definition: MzXMLHandler.h:165
MzXMLHandler(const MapType &exp, const String &filename, const String &version, const ProgressLogger &logger)
Constructor for a write-only handler.
const ProgressLogger & logger_
Progress logging class.
Definition: MzXMLHandler.h:171
std::vector< SpectrumData > spectrum_data_
Vector of spectrum data stored for later parallel processing.
Definition: MzXMLHandler.h:155
std::vector< boost::shared_ptr< DataProcessing > > data_processing_
data processing auxiliary variable
Definition: MzXMLHandler.h:198
void setLoadDetail(const LOADDETAIL d) override
handler which support partial loading, implement this method
MSSpectrum SpectrumType
Spectrum type.
Definition: MzXMLHandler.h:123
void setMSDataConsumer(Interfaces::IMSDataConsumer *consumer)
Set the IMSDataConsumer consumer which will consume the read data.
Definition: MzXMLHandler.h:113
PeakFileOptions options_
Options for loading and storing.
Definition: MzXMLHandler.h:131
MapType::PeakType PeakType
Peak type.
Definition: MzXMLHandler.h:121
UInt scan_count_
Consumer class to work on spectra.
Definition: MzXMLHandler.h:168
void populateSpectraWithData_()
Populate all spectra on the stack with data from input.
bool skip_data
Definition: MzXMLHandler.h:151
bool skip_spectrum_
Flag that indicates whether this spectrum should be skipped (due to options)
Definition: MzXMLHandler.h:159
MzXMLHandler(MapType &exp, const String &filename, const String &version, ProgressLogger &logger)
Constructor for a read-only handler.
bool writeAttributeIfExists_(std::ostream &os, const MetaInfoInterface &meta, const String &metakey, const String &attname)
Int nesting_level_
Definition: MzXMLHandler.h:135
void characters(const XMLCh *const chars, const XMLSize_t length) override
const MapType * cexp_
map pointer for writing
Definition: MzXMLHandler.h:128
String char_rest_
Definition: MzXMLHandler.h:149
void startElement(const XMLCh *const uri, const XMLCh *const local_name, const XMLCh *const qname, const xercesc::Attributes &attributes) override
String compressionType_
Definition: MzXMLHandler.h:148
SpectrumType spectrum
Definition: MzXMLHandler.h:150
Data necessary to generate a single spectrum.
Definition: MzXMLHandler.h:145
Base class for XML handlers.
Definition: XMLHandler.h:326
LOADDETAIL
Definition: XMLHandler.h:349
In-Memory representation of a mass spectrometry run.
Definition: MSExperiment.h:72
The representation of a 1D spectrum.
Definition: MSSpectrum.h:70
Interface for classes that can store arbitrary meta information (Type-Name-Value tuples).
Definition: MetaInfoInterface.h:61
A 1-dimensional raw data point or peak.
Definition: Peak1D.h:54
Options for loading files containing peak data.
Definition: PeakFileOptions.h:48
Base class for all classes that want to report their progress.
Definition: ProgressLogger.h:53
A more convenient string class.
Definition: String.h:60
int Int
Signed integer type.
Definition: Types.h:102
unsigned int UInt
Unsigned integer type.
Definition: Types.h:94
MSExperiment PeakMap
Two-dimensional map of raw data points or peaks.
Definition: StandardTypes.h:61
IMSDataConsumer IMSDataConsumer
Definition: IMSDataConsumer.h:127
MSSpectrum SpectrumType
Definition: MzDataHandler.h:60
PeakMap MapType
XML handler for MzDataFile.
Definition: MzDataHandler.h:59
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:48