Stream a column selection (and an optional ascending row selection) of a
sparse backend into a fresh backend without materialising the survivors.
Shared by the split / subsample CLI handlers and by downstream crates
(faba’s qc) that filter a matrix by cells and features.
Figures (feature figure): each one drawn once as SVG, written as a
vector PDF and a PNG by save, returned as PNG bytes by png for an
agent, and shown as an image inside the full-screen views where the
terminal has an image protocol (term, feature tui). What is saved
is what was on screen.
Cell-axis quality control (library-only): robust (MAD) outlier detection
plus the near-empty floor. Built on the streaming stat collectors in the
sibling qc module and consumed by senna / pinto — NOT by the data-beans
CLI — so it lives in its own module that the binary never compiles (keeps
qc fully bin-used and avoids dead-code in the bin target).
Cell QC as rules one can move: the settings of crate::qc_lib seen
rule by rule, each with the edge it holds a metric to, how many cells it
fails on its own, and how many it alone removes.