Where values sit across a histogram, and its bins: linear, or log on
ln(shift + x), the shift chosen from the data so zeros have a place
and values mostly below 1 (means, fractions) spread out. The printed
histograms, the views’ and the figures’ all read values on it.
Whether a row or column with nnz non-zeros falls below cutoff and is
squeezed out. Every preview of a cutoff counts with this rule, so what it
reports matches what squeeze_by_nnz removes.
print_nnz_summary on stderr: for a histogram that is a diagnostic
beside a command’s result (qc --qc-histogram, senna’s and pinto’s QC),
not the result itself, so stdout carries only the result.
Format a statistic value compactly: whole numbers (nnz, integer counts)
print without a decimal point; fractional values (mean, sd) get
decimals places.
Print summary statistics + an ASCII log-binned histogram of a per-row or
per-column statistic vector (metric names it, e.g. “nnz”, “sum”, “mean”).
A non-zero cutoff marks the cutoff bin and reports how much it removes;
an optional suggested value reports the trough suggestion.
Suggest an nnz cutoff at the deepest trough of the nnz distribution,
the gap between the ambient (empty barcode) peak and the cell peak.
Columns with nnz >= cutoff are kept.