OpenMS
Loading...
Searching...
No Matches
MzMLHandlerHelper.h
Go to the documentation of this file.
1// Copyright (c) 2002-present, OpenMS Inc. -- EKU Tuebingen, ETH Zurich, and FU Berlin
2// SPDX-License-Identifier: BSD-3-Clause
3//
4// --------------------------------------------------------------------------
5// $Maintainer: Hannes Roest $
6// $Authors: Hannes Roest $
7// --------------------------------------------------------------------------
8
9#pragma once
10
15
16#include <vector>
17
18namespace OpenMS
19{
20 namespace Internal
21 {
22
30 class OPENMS_DLLAPI MzMLHandlerHelper
31 {
32
34 static void warning(int mode, const std::string & msg, UInt line = 0, UInt column = 0);
35
36 public:
37
45 {
46 // ordered by size (alignment) and cache hotness in 'decode'
47
51 PRE_64
52 } precision;
53
58 DT_STRING
59 } data_type;
60
62
67
68 std::string base64;
70 std::vector<float> floats_32;
71 std::vector<double> floats_64;
72 std::vector<Int32> ints_32;
73 std::vector<Int64> ints_64;
74 std::vector<std::string> decoded_char;
75
77
80 precision(PRE_NONE),
81 data_type(DT_NONE),
82 np_compression(),
83 compression(false),
84 zstd_compression(false),
85 zstd_transform(ZstdCompression::ByteTransform::NONE),
86 unit_multiplier(1.0),
87 base64(),
88 size(0),
89 floats_32(),
90 floats_64(),
91 ints_32(),
92 ints_64(),
93 decoded_char(),
94 meta()
95 {
96 }
97
98 BinaryData(const BinaryData&) = default; // Copy constructor
99 BinaryData(BinaryData&&) = default; // Move constructor
100 BinaryData& operator=(const BinaryData&) & = default; // Copy assignment operator
101 BinaryData& operator=(BinaryData&&) & = default; // Move assignment operator
102 ~BinaryData() = default; // Destructor
103
104 };
105
115 static std::string getCompressionTerm_(const PeakFileOptions& opt,
116 MSNumpressCoder::NumpressConfig np_compression,
117 const std::string& indent = "",
118 bool use_numpress = false,
119 bool zstd_byte_shuffle = true);
120
132 static void encodeNumericArray(std::vector<float>& in, const PeakFileOptions& opt, std::string& out);
134 static void encodeNumericArray(std::vector<double>& in, const PeakFileOptions& opt, std::string& out);
136 static void encodeNumericArray(std::vector<Int32>& in, const PeakFileOptions& opt, std::string& out);
138 static void encodeNumericArray(std::vector<Int64>& in, const PeakFileOptions& opt, std::string& out);
139
150 static void encodeStringArray(const std::vector<std::string>& in, const PeakFileOptions& opt, std::string& out);
151
163 static void encodeNumpressArray(const std::vector<double>& in, const PeakFileOptions& opt, const MSNumpressCoder::NumpressConfig& config, std::string& out);
165 static void encodeNumpressArray(const std::vector<float>& in, const PeakFileOptions& opt, const MSNumpressCoder::NumpressConfig& config, std::string& out);
166
176 static void writeFooter_(std::ostream& os,
177 const PeakFileOptions& options,
178 const std::vector< std::pair<std::string, Int64> > & spectra_offsets,
179 const std::vector< std::pair<std::string, Int64> > & chromatograms_offsets);
180
187 static void decodeBase64Arrays(std::vector<BinaryData> & data_, const bool skipXMLCheck = false);
188
199 static void computeDataProperties_(const std::vector<BinaryData>& data_, bool& precision_64, SignedSize& index, const std::string& index_name);
200
214 static bool handleBinaryDataArrayCVParam(std::vector<BinaryData>& data_,
215 const std::string& accession,
216 const std::string& value,
217 const std::string& name,
218 const std::string& unit_accession);
219 };
220
221
222 } // namespace Internal
223} // namespace OpenMS
224
225
Helper for mzML file format.
Definition MzMLHandlerHelper.h:31
static bool handleBinaryDataArrayCVParam(std::vector< BinaryData > &data_, const std::string &accession, const std::string &value, const std::string &name, const std::string &unit_accession)
Handle a given CV parameter found in a binaryDataArray tag.
static void encodeNumericArray(std::vector< double > &in, const PeakFileOptions &opt, std::string &out)
Encode a numeric array as Base64 string, applying the compression selected in opt.
static void warning(int mode, const std::string &msg, UInt line=0, UInt column=0)
Also display some warning message when appropriate (see XMLHandler)
static void encodeStringArray(const std::vector< std::string > &in, const PeakFileOptions &opt, std::string &out)
Encode a string array (null-terminated strings) as Base64 string, applying the compression selected i...
static void encodeNumericArray(std::vector< Int32 > &in, const PeakFileOptions &opt, std::string &out)
Encode a numeric array as Base64 string, applying the compression selected in opt.
static void writeFooter_(std::ostream &os, const PeakFileOptions &options, const std::vector< std::pair< std::string, Int64 > > &spectra_offsets, const std::vector< std::pair< std::string, Int64 > > &chromatograms_offsets)
Write the indexed mzML footer the appropriate compression term given the PeakFileOptions and the Nump...
static void encodeNumpressArray(const std::vector< double > &in, const PeakFileOptions &opt, const MSNumpressCoder::NumpressConfig &config, std::string &out)
Numpress-encode an array and encode the result as Base64 string, applying the compression selected in...
static void encodeNumericArray(std::vector< float > &in, const PeakFileOptions &opt, std::string &out)
Encode a numeric array as Base64 string, applying the compression selected in opt.
static void encodeNumpressArray(const std::vector< float > &in, const PeakFileOptions &opt, const MSNumpressCoder::NumpressConfig &config, std::string &out)
Numpress-encode an array and encode the result as Base64 string, applying the compression selected in...
static void computeDataProperties_(const std::vector< BinaryData > &data_, bool &precision_64, SignedSize &index, const std::string &index_name)
Identify a data array from a list.
static void decodeBase64Arrays(std::vector< BinaryData > &data_, const bool skipXMLCheck=false)
Decode Base64 arrays and write into data_ array.
static void encodeNumericArray(std::vector< Int64 > &in, const PeakFileOptions &opt, std::string &out)
Encode a numeric array as Base64 string, applying the compression selected in opt.
static std::string getCompressionTerm_(const PeakFileOptions &opt, MSNumpressCoder::NumpressConfig np_compression, const std::string &indent="", bool use_numpress=false, bool zstd_byte_shuffle=true)
Returns the appropriate compression term given the PeakFileOptions and the NumpressConfig.
NumpressCompression
Names of compression schemes.
Definition MSNumpressCoder.h:48
Description of the meta data arrays of MSSpectrum.
Definition MetaInfoDescription.h:25
Options for loading files containing peak data.
Definition PeakFileOptions.h:22
Compresses and uncompresses byte buffers using Zstandard (zstd), optionally combined with the byte-sh...
Definition ZstdCompression.h:56
ByteTransform
Transform applied to the (little-endian) array bytes prior to zstd compression.
Definition ZstdCompression.h:61
unsigned int UInt
Unsigned integer type.
Definition Types.h:64
ptrdiff_t SignedSize
Signed Size type e.g. used as pointer difference.
Definition Types.h:104
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition Types.h:97
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19
Representation for binary data in mzML.
Definition MzMLHandlerHelper.h:45
double unit_multiplier
multiplier for unit (e.g. 60 for minutes)
Definition MzMLHandlerHelper.h:66
bool zstd_compression
zstd compression (mutually exclusive with zlib compression)
Definition MzMLHandlerHelper.h:64
PRECISION
Definition MzMLHandlerHelper.h:48
@ PRE_32
32bit precision
Definition MzMLHandlerHelper.h:50
@ PRE_NONE
unknown precision
Definition MzMLHandlerHelper.h:49
std::vector< Int32 > ints_32
Definition MzMLHandlerHelper.h:72
std::string base64
Raw data in base64 encoding.
Definition MzMLHandlerHelper.h:68
ZstdCompression::ByteTransform zstd_transform
transform applied before zstd compression (only used if zstd_compression is set)
Definition MzMLHandlerHelper.h:65
std::vector< float > floats_32
Definition MzMLHandlerHelper.h:70
std::vector< std::string > decoded_char
Definition MzMLHandlerHelper.h:74
bool compression
zlib compression
Definition MzMLHandlerHelper.h:63
Size size
Raw data length.
Definition MzMLHandlerHelper.h:69
BinaryData & operator=(const BinaryData &) &=default
BinaryData()
Constructor.
Definition MzMLHandlerHelper.h:79
MetaInfoDescription meta
Meta data description.
Definition MzMLHandlerHelper.h:76
std::vector< Int64 > ints_64
Definition MzMLHandlerHelper.h:73
DATA_TYPE
Definition MzMLHandlerHelper.h:54
@ DT_NONE
unknown data type
Definition MzMLHandlerHelper.h:55
@ DT_FLOAT
float data type
Definition MzMLHandlerHelper.h:56
@ DT_INT
integer data type
Definition MzMLHandlerHelper.h:57
std::vector< double > floats_64
Definition MzMLHandlerHelper.h:71
BinaryData & operator=(BinaryData &&) &=default
MSNumpressCoder::NumpressCompression np_compression
numpress options
Definition MzMLHandlerHelper.h:61
Configuration class for MSNumpress.
Definition MSNumpressCoder.h:63