Skip to main content

flow_fcs_compress/
lib.rs

1//! `flow-fcs-compress` — compression codecs tuned for flow cytometry data.
2//!
3//! Three loss modes (see [`codec::CodecId`]):
4//! - **Mode A — Lossless f32**: bit-exact round-trip via byte-stream-split + zstd.
5//!   Recommended for unmixed / compensated data that carries full f32 entropy.
6//! - **Mode B — ADC-bit lossless**: quantize to instrument bit depth (`$PnB`/`$PnR`),
7//!   then bitpack. Recommended for raw spectral data from finite-resolution ADCs.
8//! - **Mode C — Log-domain lossy**: biexp transform + fixed-point quantize, with a
9//!   user-bounded relative-error tolerance.
10//!
11//! 0.1 scope: f32 only, offline encode/decode. f64 (`$DATATYPE D`) inputs are expected
12//! to be downcast at ingest by the caller.
13
14pub mod chunk;
15pub mod codec;
16pub mod container;
17pub mod error;
18pub mod transform;
19
20pub use chunk::{ChunkHeader, ChunkStats, CHUNK_HEADER_BYTES, DEFAULT_CHUNK_EVENTS};
21pub use codec::{ChannelParams, CodecId, ColumnCodec};
22pub use error::{Error, Result};