Home  · Classes  · Annotated Classes  · Modules  · Members  · Namespaces  · Related Pages
MzDataHandler.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-2017.
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 $
33 // --------------------------------------------------------------------------
34 
35 #ifndef OPENMS_FORMAT_HANDLERS_MZDATAHANDLER_H
36 #define OPENMS_FORMAT_HANDLERS_MZDATAHANDLER_H
37 
43 #include <OpenMS/FORMAT/Base64.h>
45 
46 #include <sstream>
47 
48 namespace OpenMS
49 {
50  namespace Internal
51  {
61  typedef PeakMap MapType;
64 
65  class OPENMS_DLLAPI MzDataHandler :
66  public XMLHandler
67  {
68 public:
71  MzDataHandler(MapType & exp, const String & filename, const String & version, ProgressLogger & logger);
73 
75  MzDataHandler(const MapType & exp, const String & filename, const String & version, const ProgressLogger & logger);
76 
78  virtual ~MzDataHandler()
79  {
80  }
81 
83 
84 
85  // Docu in base class
86  virtual void endElement(const XMLCh * const /*uri*/, const XMLCh * const /*local_name*/, const XMLCh * const qname);
87 
88  // Docu in base class
89  virtual void startElement(const XMLCh * const /*uri*/, const XMLCh * const /*local_name*/, const XMLCh * const qname, const xercesc::Attributes & attributes);
90 
91  // Docu in base class
92  virtual void characters(const XMLCh * const chars, const XMLSize_t length);
93 
95  void writeTo(std::ostream & os);
96 
98  void setOptions(const PeakFileOptions & options)
99  {
100  options_ = options;
101  }
102 
103 private:
104  void init_();
105 
106 protected:
107 
112 
114  MapType * exp_;
116  const MapType * cexp_;
117 
120 
123  UInt peak_count_;
126  SpectrumType spec_;
128  std::vector<std::pair<String, MetaInfoDescription> > meta_id_descs_;
130  std::vector<String> data_to_decode_;
132  std::vector<float> data_to_encode_;
133  std::vector<std::vector<float> > decoded_list_;
134  std::vector<std::vector<double> > decoded_double_list_;
135  std::vector<String> precisions_;
136  std::vector<String> endians_;
138 
141 
144 
147 
149  void fillData_();
150 
152 
153 
164  inline void writeCVS_(std::ostream & os, double value, const String & acc, const String & name, UInt indent = 4) const;
165 
177  inline void writeCVS_(std::ostream & os, const String & value, const String & acc, const String & name, UInt indent = 4) const;
178 
192  inline void writeCVS_(std::ostream & os, UInt value, UInt map, const String & acc, const String & name, UInt indent = 4);
193 
195  inline void writeUserParam_(std::ostream & os, const MetaInfoInterface & meta, UInt indent = 4);
196 
204  void cvParam_(const String & name, const String & value);
206 
212  inline void writeBinary_(std::ostream & os, Size size, const String & tag, const String & name = "", SignedSize id = -1);
213 
214  //Data processing auxiliary variable
215  boost::shared_ptr< DataProcessing > data_processing_;
216 
217  };
218 
219  //--------------------------------------------------------------------------------
220  } // namespace Internal
221 
222 } // namespace OpenMS
223 
224 #endif
Definition: MzDataHandler.h:65
A more convenient string class.
Definition: String.h:57
Class to encode and decode Base64.
Definition: Base64.h:64
const ProgressLogger & logger_
Progress logger.
Definition: MzDataHandler.h:146
void setOptions(const PeakFileOptions &options)
Sets the options.
Definition: MzDataHandler.h:98
bool skip_spectrum_
Flag that indicates whether this spectrum should be skipped (due to options)
Definition: MzDataHandler.h:143
std::vector< std::pair< String, MetaInfoDescription > > meta_id_descs_
An array of pairs MetaInfodescriptions and their ids.
Definition: MzDataHandler.h:128
The representation of a chromatogram.
Definition: MSChromatogram.h:55
std::vector< String > data_to_decode_
encoded data which is read and has to be decoded
Definition: MzDataHandler.h:130
unsigned int UInt
Unsigned integer type.
Definition: Types.h:95
boost::shared_ptr< DataProcessing > data_processing_
Definition: MzDataHandler.h:215
Base class for XML handlers.
Definition: XMLHandler.h:110
Base64 decoder_
Decoder/Encoder for Base64-data in MzData.
Definition: MzDataHandler.h:140
ptrdiff_t SignedSize
Signed Size type e.g. used as pointer difference.
Definition: Types.h:135
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:47
MSChromatogram ChromatogramType
Definition: MzDataHandler.h:63
PeakFileOptions options_
Options that can be set for loading/storing.
Definition: MzDataHandler.h:119
std::vector< std::vector< double > > decoded_double_list_
Definition: MzDataHandler.h:134
The representation of a 1D spectrum.
Definition: MSSpectrum.h:67
std::vector< String > precisions_
Definition: MzDataHandler.h:135
MapType * exp_
map pointer for reading
Definition: MzDataHandler.h:114
A 1-dimensional raw data point or peak.
Definition: Peak1D.h:55
MapType::PeakType PeakType
Peak type.
Definition: MzDataHandler.h:109
const MapType * cexp_
map pointer for writing
Definition: MzDataHandler.h:116
virtual ~MzDataHandler()
Destructor.
Definition: MzDataHandler.h:78
Interface for classes that can store arbitrary meta information (Type-Name-Value tuples).
Definition: MetaInfoInterface.h:56
In-Memory representation of a mass spectrometry experiment.
Definition: MSExperiment.h:82
PeakMap MapType
XML handler for MzDataFile.
Definition: MzDataHandler.h:61
std::vector< String > endians_
Definition: MzDataHandler.h:136
SpectrumType spec_
The current spectrum.
Definition: MzDataHandler.h:126
std::vector< float > data_to_encode_
floating point numbers which have to be encoded and written
Definition: MzDataHandler.h:132
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:128
Base class for all classes that want to report their progress.
Definition: ProgressLogger.h:55
MSSpectrum SpectrumType
Spectrum type.
Definition: MzDataHandler.h:111
Options for loading files containing peak data.
Definition: PeakFileOptions.h:48
std::vector< std::vector< float > > decoded_list_
Definition: MzDataHandler.h:133
MSSpectrum SpectrumType
Definition: MzDataHandler.h:62

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