OpenMS  2.4.0
MzMLHandlerHelper.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-2018.
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 
40 
41 #include <vector>
42 
43 namespace OpenMS
44 {
45  namespace Internal
46  {
47 
48  class OPENMS_DLLAPI MzMLHandlerHelper
49  {
50 
52  static void warning(int mode, const String & msg, UInt line = 0, UInt column = 0);
53 
54  public:
55 
57  struct BinaryData
58  {
59  // ordered by size (alignment) and cache hotness in 'decode'
60  enum {PRE_NONE, PRE_32, PRE_64} precision;
61  enum { DT_NONE, DT_FLOAT, DT_INT, DT_STRING } data_type;
63  bool compression; // zlib compression
67  std::vector<float> floats_32;
68  std::vector<double> floats_64;
69  std::vector<Int32> ints_32;
70  std::vector<Int64> ints_64;
71  std::vector<String> decoded_char;
73 
76  precision(PRE_NONE),
77  data_type(DT_NONE),
78  np_compression(),
79  compression(false),
80  unit_multiplier(1.0),
81  base64(),
82  size(0),
83  floats_32(),
84  floats_64(),
85  ints_32(),
86  ints_64(),
87  decoded_char(),
88  meta()
89  {
90  }
91 
92  };
93 
97  static String getCompressionTerm_(const PeakFileOptions& opt, MSNumpressCoder::NumpressConfig np_compression, String indent = "", bool use_numpress = false);
98 
102  static void writeFooter_(std::ostream& os, const PeakFileOptions& options_,
103  std::vector< std::pair<std::string, long> > & spectra_offsets,
104  std::vector< std::pair<std::string, long> > & chromatograms_offsets
105  );
106 
113  static void decodeBase64Arrays(std::vector<BinaryData> & data_, const bool skipXMLCheck = false);
114 
115  static void computeDataProperties_(const std::vector<BinaryData>& data_, bool& precision_64, SignedSize& index, const String& index_name);
116 
117  static bool handleBinaryDataArrayCVParam(std::vector<BinaryData>& data_,
118  const String& accession, const String& value, const String& name, const String& unit_accession);
119  };
120 
121 
122  } // namespace Internal
123 } // namespace OpenMS
124 
125 
A more convenient string class.
Definition: String.h:57
std::vector< float > floats_32
Definition: MzMLHandlerHelper.h:67
unsigned int UInt
Unsigned integer type.
Definition: Types.h:94
std::vector< Int32 > ints_32
Definition: MzMLHandlerHelper.h:69
ptrdiff_t SignedSize
Signed Size type e.g. used as pointer difference.
Definition: Types.h:134
Binary data representation.
Definition: MzMLHandlerHelper.h:57
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:46
Description of the meta data arrays of MSSpectrum.
Definition: MetaInfoDescription.h:48
Configuration class for MSNumpress.
Definition: MSNumpressCoder.h:70
NumpressCompression
Definition: MSNumpressCoder.h:61
Size size
Definition: MzMLHandlerHelper.h:66
std::vector< double > floats_64
Definition: MzMLHandlerHelper.h:68
double unit_multiplier
Definition: MzMLHandlerHelper.h:64
BinaryData()
Constructor.
Definition: MzMLHandlerHelper.h:75
MetaInfoDescription meta
Definition: MzMLHandlerHelper.h:72
std::vector< String > decoded_char
Definition: MzMLHandlerHelper.h:71
MSNumpressCoder::NumpressCompression np_compression
Definition: MzMLHandlerHelper.h:62
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:127
bool compression
Definition: MzMLHandlerHelper.h:63
std::vector< Int64 > ints_64
Definition: MzMLHandlerHelper.h:70
Options for loading files containing peak data.
Definition: PeakFileOptions.h:47
String base64
Definition: MzMLHandlerHelper.h:65
Definition: MzMLHandlerHelper.h:48