Skip to content

v0.16.0 — first public release

Choose a tag to compare

@alexdobin alexdobin released this 20 Aug 08:15
· 3 commits to main since this release

First public release of cell-eval2 — a GPU-accelerated reimplementation of
cell-eval, Arc Institute's suite for evaluating
perturbation-prediction models at single-cell resolution.

Install

pip install cell-eval2

Requires Python 3.11+. The base install is CPU-only and pulls nothing private.

extra adds for
[gpu] cupy, nvidia-nvcomp-cu12 CUDA pseudobulk / distance / rank kernels
[gpudge] gpudge GPU differential expression
[scale] cellstream scoring archives out of core

What's here

  • 54 metrics in the full profile (48 of them scored), in four classes: expression error,
    perturbation discrimination, signed-effect geometry, and differential expression.
  • Profiles and presets rather than metric-by-metric selection — --profile de,
    --preset vcc2026, and a cell-eval-0.7.6 preset that reproduces upstream cell-eval.
  • GPU where it pays, with a CPU path for everything.
  • Out-of-core scoring for datasets that do not fit in memory.
  • v1 ↔ v2 naming with cell_eval2.compat for byte-for-byte parity against upstream
    cell-eval.
  • Every run stamps a config digest; the competition path additionally pins a rule digest that a
    submission is checked against exactly.

Start with the tutorial; the metrics reference has the math
for every metric.

The 2026 Virtual Cell Challenge

docs/vcc2026_metrics/ carries the specification entrants are scored under — the full document
and an abridged reference brief, both as Markdown and PDF. --preset vcc2026 reproduces the
scored configuration.

⚠️ If you hold validation bundles built at 0.15.0, they will refuse a run at 0.16.0.
cell_eval2_version is the first entry in the bundle's submission peers and is compared exactly,
fail-closed, with no waiver. Nothing about the scoring rule changed — rule_version stays 3 and
the rule digest is bit-identical — so bundles rebuilt at 0.16.0 reproduce every number and differ
only in the stamped version. Those rebuilt bundles follow shortly.

Why 0.16.0 is the first published version

Every earlier version was unpublishable regardless of repository visibility: the [scale] extra
carried a direct reference to a private git repository, and PyPI rejects any distribution whose
requires_dist contains one, extras included. That reference is now the public cellstream
package.

Credits

The Spearman–Brown data ceiling — the split-half reliability estimate that bounds what any
submission can score on a finite panel — was implemented by Leon Hafner, from an idea proposed
by Beatrice Bevilacqua (@beabevi).

Jeremy Sullivan (@sullivanj91) found, quantified and fixed
the perturbation-discrimination target-gene exclusion that silently did nothing on guide-level
labels — under that defect a submission predicting nothing but its own on-target knockdown
outscored real ones. Abhinav Adduri (@abhinadduri)
contributed the model-conditioned direction metric and the GPU pdex fork the cell-eval-0.7.6
preset pins. Chris Carpenter contributed --write-degenes.

AUTHORS lists these in full alongside everyone who reported, diagnosed or proposed a change —
several of which changed a scored number or a documented rule.

Note on issue numbers

Issue and pull-request numbers in CHANGELOG.md and AUTHORS refer to the internal development
repository this tree was copied from, not to this one.