Skip to content

v0.1.7

@Starlitnightly Starlitnightly tagged this 31 May 03:34
Wheels: linux x86_64 / macOS x86_64 / macOS aarch64 + sdist via maturin
trusted-publish. Triggered by the v0.1.7 tag push.

Notes:
- CenteredSparseArray (#6): in-memory implicit-centered scaled matrix
  wrapper. Storage = `(X/σ : sparse, μ/σ : vector)`; per-gene access
  bit-equal to dense reference at float32 ulp; matmul uses the
  identity `(X-μ)/σ · W = (X/σ)·W − (μ/σ)·W` to stay sparse end-to-end.
  Unblocks `ov.pp.scale(use_implicit_centering=True)` so million-cell
  in-memory pipelines fit under the typical 256 GB per-process RSS cap
  (TS-Immune 592k cells: dense path OOM-killed → wrapper completes in
  30 min at 77 GB peak; empirically confirmed on omicverse#804).

- chunked_normalize_total + chunked_pearson HVG fusion (#7):
  normalize_total now computes per-gene totals + E[count²] as a side
  product of its existing per-cell-sum pass and stashes them in
  `adata.uns['_pearson_precompute']`. chunked_pearson_residual_variance
  + chunked_highly_variable_genes_pearson auto-consume the dict
  (default `precomputed='auto'`), skipping their own Pass-1. Numerical
  equivalence pinned to atol=1e-10 vs the legacy two-pass path.
  Eliminates one full chunked scan over X — on TS-1M (1M cells × 60k
  genes) this removes the dominant duplicated cost inside preprocess.
Assets 2
Loading