Repository navigation
v0.16.0 — first public 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-eval2Requires 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
fullprofile (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 acell-eval-0.7.6preset that reproduces upstreamcell-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.compatfor 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.
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.