Home  · Classes  · Annotated Classes  · Modules  · Members  · Namespaces  · Related Pages
Classes | Public Types | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
MSNumpressCoder Class Reference

Class to encode and decode data encoded with MSNumpress. More...

#include <OpenMS/FORMAT/MSNumpressCoder.h>

Classes

struct  NumpressConfig
 Configuration class for MSNumpress. More...
 

Public Types

enum  NumpressCompression {
  NONE, LINEAR, PIC, SLOF,
  SIZE_OF_NUMPRESSCOMPRESSION
}
 

Public Member Functions

 MSNumpressCoder ()
 default constructor More...
 
virtual ~MSNumpressCoder ()
 Destructor. More...
 
void encodeNP (const std::vector< double > &in, String &result, bool zlib_compression, const NumpressConfig &config)
 Encodes a vector of floating point numbers into a Base64 string using numpress. More...
 
void encodeNP (const std::vector< float > &in, String &result, bool zlib_compression, const NumpressConfig &config)
 encodeNP from a float (convert first to double) More...
 
void decodeNP (const String &in, std::vector< double > &out, bool zlib_compression, const NumpressConfig &config)
 Decodes a Base64 string to a vector of floating point numbers using numpress. More...
 
void encodeNPRaw (const std::vector< double > &in, String &result, const NumpressConfig &config)
 Encode the vector in to the result string using numpress (unsafe) More...
 
void decodeNPRaw (const std::string &in, std::vector< double > &out, const NumpressConfig &config)
 Decode the (not necessary null terminated) string in to the result vector out (unsafe) More...
 

Static Public Attributes

static const std::string NamesOfNumpressCompression [SIZE_OF_NUMPRESSCOMPRESSION]
 Names of compression schemes. More...
 

Private Member Functions

void decodeNPInternal_ (const unsigned char *in, size_t in_size, std::vector< double > &out, const NumpressConfig &config)
 

Private Attributes

Base64 base64coder_
 

Detailed Description

Class to encode and decode data encoded with MSNumpress.

MSNumpress supports three encoding schemata:

Member Enumeration Documentation

◆ NumpressCompression

Enumerator
NONE 
LINEAR 
PIC 
SLOF 
SIZE_OF_NUMPRESSCOMPRESSION 

Constructor & Destructor Documentation

◆ MSNumpressCoder()

MSNumpressCoder ( )
inline

default constructor

◆ ~MSNumpressCoder()

virtual ~MSNumpressCoder ( )
inlinevirtual

Destructor.

Member Function Documentation

◆ decodeNP()

void decodeNP ( const String in,
std::vector< double > &  out,
bool  zlib_compression,
const NumpressConfig config 
)

Decodes a Base64 string to a vector of floating point numbers using numpress.

This code is obtained from the proteowizard implementation ./pwiz/pwiz/data/msdata/BinaryDataEncoder.cpp (adapted by Hannes Roest).

This function will first decode the input base64 string (with optional zlib decompression after decoding) and then apply numpress decoding to the data.

Parameters
inThe base64 encoded string
outThe resulting vector of doubles
zlib_compressionWhether to apply zlib de-compression before numpress de-compression
configThe numpress configuration defining the compression strategy
Exceptions
throwsException::ConversionError if the string cannot be converted

◆ decodeNPInternal_()

void decodeNPInternal_ ( const unsigned char *  in,
size_t  in_size,
std::vector< double > &  out,
const NumpressConfig config 
)
private

◆ decodeNPRaw()

void decodeNPRaw ( const std::string &  in,
std::vector< double > &  out,
const NumpressConfig config 
)

Decode the (not necessary null terminated) string in to the result vector out (unsafe)

Note
that the string in should *only* contain the data and _no_ extra null terminating byte (unless of course the last data byte is null)

This performs the raw numpress decoding on a raw byte array (not Base64 encoded). Therefore the input string is likely *unsafe* to handle and is basically a byte container.

Please use the safe versions above unless you only have the raw byte arrays.

Parameters
inThe base64 encoded string
outThe resulting vector of doubles
configThe numpress configuration defining the compression strategy
Exceptions
throwsException::ConversionError if the string cannot be converted

◆ encodeNP() [1/2]

void encodeNP ( const std::vector< double > &  in,
String result,
bool  zlib_compression,
const NumpressConfig config 
)

Encodes a vector of floating point numbers into a Base64 string using numpress.

This code is obtained from the proteowizard implementation ./pwiz/pwiz/data/msdata/BinaryDataEncoder.cpp (adapted by Hannes Roest).

This function will first apply the numpress encoding to the data, then encode the result in base64 (with optional zlib compression before base64 encoding).

Note
In case of error, result string is empty
Parameters
inThe vector of floating point numbers to be encoded
resultThe resulting string
zlib_compressionWhether to apply zlib compression after numpress compression
configThe numpress configuration defining the compression strategy

◆ encodeNP() [2/2]

void encodeNP ( const std::vector< float > &  in,
String result,
bool  zlib_compression,
const NumpressConfig config 
)

encodeNP from a float (convert first to double)

◆ encodeNPRaw()

void encodeNPRaw ( const std::vector< double > &  in,
String result,
const NumpressConfig config 
)

Encode the vector in to the result string using numpress (unsafe)

Note
In case of error, result is given back unmodified

This performs the raw numpress encoding on a set of data and does no Base64 encoding on the result. Therefore the result string is likely *unsafe* to handle and is basically a byte container.

Please use the safe versions above unless you need access to the raw byte arrays.

Parameters
inThe vector of floating point numbers to be encoded
resultThe resulting string
configThe numpress configuration defining the compression strategy

Member Data Documentation

◆ base64coder_

Base64 base64coder_
private

◆ NamesOfNumpressCompression

const std::string NamesOfNumpressCompression[SIZE_OF_NUMPRESSCOMPRESSION]
static

Names of compression schemes.


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