Chorus 0.2.0
First tagged release after the v22 → v29 audit chain. Three consecutive scorched-earth audits across macOS arm64 + Linux/CUDA returned 0 findings against chorus. Full change log + 0.1.x migration notes in CHANGELOG.md.
Highlights
- ChromBPNet/BPNet ENCODE catalogue: 24 → 786 tracks (42 ATAC/DNASE + 744 BPNet TF×cell). 786-track CDF NPZ live on
lucapinello/chorus-backgrounds, auto-downloaded bychorus setup --oracle chrombpnet. - Sharded GPU build pipeline —
--shard N --shard-of M+--part merge-shardsonbuild_backgrounds_chrombpnet.pyplus the 6-GPUscripts/run_bpnet_cdf_build.shorchestrator. Cuts a full BPNet rebuild from ~37 h to ~6 h. chorus backgroundsCLI —status/build/add-tracksfor managing per-track CDF backgrounds without leaving the shell.chorus setup --all-chrombpnetopt-in flag to pre-cache every published model up front (~30 GB extra, 3-4 h). Default behaviour stays on the K562+HepG2 fast path (~25 GB total install, ~1 h setup).docs/NORMALIZATION_GUIDE.md— ~700-line walkthrough including three end-to-end "bring your own model" recipes (ChromBPNet, LegNet, new oracle from scratch).- GitHub Actions CI runs the fast pytest suite (340 tests) on every push and PR.
- Test coverage: 340 fast tests + 12 mock-based error-recovery tests + 4 marker-gated integration tests (MCP E2E, CDF download, ChromBPNet fresh download, SEI/LegNet CDF).
Bug fixes (P0)
- Track-ID validator now accepts FANTOM CAGE identifiers (
CNhs11250etc.) — the shipped quickstart notebook was broken on the first multi-track cell for every new user. chorus-sei.ymlno longer triggers a 50-minute libsolv hang on fresh installs (droppedcudatoolkit=11.7+pytorch<2.0.0pins).- README now uses
python -m pip install -e .(waspip install -e .— picked up Python 2.7 pip on HPC PATHs). _setup_environmentno longer silently swallows errors — raisesEnvironmentNotReadyErroron next predict with an actionable message.
Migration notes from 0.1.x
chorus setup --oracle chrombpnet now pre-caches K562 + HepG2 DNase only by default (~1.4 GB). Other ChromBPNet cell types download lazily on first load_pretrained_model(...). To restore "everything up front" behaviour, pass --all-chrombpnet.
The default ChromBPNet CDF NPZ has 786 rows (was 24). Code that hard-coded indices into the old NPZ should switch to PerTrackNormalizer.track_index[<id>].
chorus-sei env yml was updated; if you have a manually pinned env, rebuild with chorus setup --oracle sei --force.
Audits
audits/2026-04-26_v29_scorched_earth/report.md— macOS arm64 / M3 Ultra Metalaudits/2026-04-27_v29_linux_cuda/report.md— Linux + 2× A100
🤖 Generated with Claude Code