Skip to main content

BinaryCompressionType

Enum BinaryCompressionType 

Source
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

Source

pub const COMPRESSION_METHODS: &[Self]

All compression methods in an array

Source

pub fn unsupported_msg(&self, context: Option<&str>) -> String

Generate a user-understandable message about why a compression conversion operation failed

Source

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

Source

pub const fn accession(&self) -> Option<u32>

Get the accession number in the ControlledVocabulary::MS vocabulary.

Source

pub fn from_accession(accession: CURIE) -> Option<Self>

Convert a CURIE into a compression method, if one exists.

Source

pub const fn as_param(&self) -> Option<ParamCow<'static>>

Convert the compression type to a ParamCow.

Most compression methods have a controlled vocabulary term.

Trait Implementations§

Source§

impl Clone for BinaryCompressionType

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for BinaryCompressionType

Source§

impl Debug for BinaryCompressionType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for BinaryCompressionType

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Display for BinaryCompressionType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for BinaryCompressionType

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for BinaryCompressionType

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for BinaryCompressionType

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsOut<T> for T
where T: Copy,

Source§

fn as_out(&mut self) -> Out<'_, T>

Returns an out reference to self.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.