pub enum BinaryCompressionType {
Show 18 variants
NoCompression,
Zlib,
NumpressLinear,
NumpressSLOF,
NumpressPIC,
NumpressLinearZlib,
NumpressSLOFZlib,
NumpressPICZlib,
LinearPrediction,
DeltaPrediction,
Decoded,
Zstd,
ShuffleZstd,
DeltaShuffleZstd,
ZstdDict,
NumpressLinearZstd,
NumpressSLOFZstd,
NumpressPICZstd,
}Expand description
The range of compression and encoding states that a raw byte buffer
might be in during different stages of decoding. Other than Decoded,
these states may or may not include intermediate base64 encoding.
Variants§
NoCompression
The data are not compressed, but are base64 encoded and not ready for native use.
Zlib
A well known, widely available general-purpose compressor codec with many implementations. Always available, but several backends with differing speed and size tradeoffs are available under different features.
NumpressLinear
Warning: Lossy A combination simple linear model fit and byte packing codec that stores the model
coefficients as float64 and the residuals as unsigned 16 or 32-bit integers. With an optimal fixed point, this will produce a median loss of accuracy below
of about 2e-8 absolute units, but may vary widely from dataset to dataset. This codec MUST be used with sorted data only, and is only suitable for
float64 data. It may be combined with zlib BinaryCompressionType::NumpressLinearZlib or zstd BinaryCompressionType::NumpressLinearZstd for even
greater space savings. See details at https://doi.org/10.1074/mcp.O114.037879
Requires feature numpress
NumpressSLOF
Warning: Lossy A lossy numerical approximation that log transforms and scales values to make them very
close to 16-bit integers. This codec is lossier the larger the value is, and is only appropriate for count data like intensities. It can also combine with
zlib BinaryCompressionType::NumpressSLOFZlib and zstd BinaryCompressionType::NumpressSLOFZstd. See details at https://doi.org/10.1074/mcp.O114.037879
Requires feature numpress
NumpressPIC
Warning: Lossy This simply rounds a floating point value and then packs it
into a truncated integer. May be suitable for intensity values, but not consistently better than BinaryCompressionType::NumpressSLOF.
See details at https://doi.org/10.1074/mcp.O114.037879
Requires feature numpress
NumpressLinearZlib
Warning: Lossy Combines Self::Zlib with Self::NumpressLinear
NumpressSLOFZlib
Warning: Lossy Combines Self::Zlib with Self::NumpressSLOF
NumpressPICZlib
Warning: Lossy Combines Self::Zlib with Self::NumpressPIC
LinearPrediction
Warning: Lossy The same concept as BinaryCompressionType::NumpressLinear without the truncation
All of the same concerns apply though it loses less precision. This does not perform any form of compression. It was uses as part of mzMLb which applies
container-level compression. Only suitable for float64 data.
DeltaPrediction
Warning: Lossy This computes first order difference of a sorted array of values and stores the difference
and the starting point. It is sometimes more accurate than BinaryCompressionType::LinearPrediction. Like BinaryCompressionType::LinearPrediction,
it does not do any actual compression. It was meant for use with mzMLb, which compresses the entire container. Only suitable for float64 data.
Decoded
The data are completely decoded in native byte order
Zstd
A newer general-purpose codec that is not widely used in mzML but very popular in other applications.
Much faster and often better compression compared to zlib.
Unlike Self::Zlib, Self::Zstd’s default compression level is controlled by [zstd::DEFAULT_COMPRESSION_LEVEL],
but the MZDATA_ZSTD_LEVEL environment variable can be used to raise or lower it as desired.
Requires feature zstd
ShuffleZstd
This first applies a byte shuffle transform to the data to compress
the nth byte of each value contiguously, and then apply Self::Zstd. This makes sorted data compress more effectively.
Requires feature zstd
DeltaShuffleZstd
Warning: Lossy This computes first order difference of a sorted array of values and stores the difference
and the starting point. It then byte shuffles the differences and Self::Zstd compresses them.
Only suitable for sorted float64 data.
Requires feature zstd
ZstdDict
Another elaboration of byte-shuffled zstd where the values are first dictionary-encoded
so that repeated values are denoted by indices rather than the full size value itself. The dictionary is sorted and then both the dictionary and the
indices are byte shuffle encoded and then Self::Zstd compressed. This is even more effective than previous codecs for data with repeated, semi-sorted values
like m/z and ion mobility.
Requires feature zstd
NumpressLinearZstd
Warning: Lossy Combines Self::Zstd with Self::NumpressLinear
NumpressSLOFZstd
Warning: Lossy Combines Self::Zstd with Self::NumpressSLOF
NumpressPICZstd
Warning: Lossy Combines Self::Zstd with Self::NumpressPIC
Implementations§
Source§impl BinaryCompressionType
impl BinaryCompressionType
Sourcepub const COMPRESSION_METHODS: &[Self]
pub const COMPRESSION_METHODS: &[Self]
All compression methods in an array
Sourcepub fn unsupported_msg(&self, context: Option<&str>) -> String
pub fn unsupported_msg(&self, context: Option<&str>) -> String
Generate a user-understandable message about why a compression conversion operation failed
Sourcepub const fn is_endian_aware(&self) -> bool
pub const fn is_endian_aware(&self) -> bool
Check if the compressor handles endianess during decoding. Otherwise the data needs to be byteswapped to little endianess on big endian systems before use
Sourcepub const fn accession(&self) -> Option<u32>
pub const fn accession(&self) -> Option<u32>
Get the accession number in the ControlledVocabulary::MS vocabulary.
Sourcepub fn from_accession(accession: CURIE) -> Option<Self>
pub fn from_accession(accession: CURIE) -> Option<Self>
Convert a CURIE into a compression method, if one exists.