Repository navigation
v0.7.1 — layers_per_row on all eight oracles
[0.7.1] — 2026-08-10
Bookkeeping release. No CDF changed — the matrices are byte-identical to 0.7.0 — so no
percentile moves. Append-in-place, no rebuild, no GPU.
Background artefacts. Pinned to dataset revision backgrounds-2026-08-10-layers. Identical CDFs to backgrounds-2026-08-06-schema4; the only difference is the per-row layer array and build_config.layers_present. The 0.7.0 revision is left intact, so 0.7.0 stays reproducible.
Fixed
-
layers_per_rowshipped on three oracles of eight, and ChromBPNet was one of the five without it. AlphaGenome (6 distinct layers), Borzoi (5) and Enformer (4) carried the array because their builders constructtrack_infowith a'layer'key; Cherimoya, ChromBPNet, EPInformer-seq, LegNet and Sei never had that concept in their builders, so the array was absent andbuild_config.layers_presentwasnull. For four of the five that costs nothing — they are single-layer, so the array carries no information. ChromBPNet is not: its 753 rows span ATAC (4), DNASE (5) and CHIP (744), accessibility and TF binding, and code keying on the array had to fall back to re-deriving each row's layer from the track-id string.Now stamped on all eight. Every value is produced by the same
classify_track_layerthe query path calls — on a shim carrying the assay_type that oracle emits — and then asserted equal to it, because a stored array that disagreed with the query path would be worse than no array. What had to be supplied per oracle is only the assay_type, since the ids do not all carry one: from the id prefix for ChromBPNet, Cherimoya and EPInformer-seq, and as a constant for Sei (sequence-class) and LegNet (whose ids are bare, e.g.K562). Result: ChromBPNet 9 + 744, Cherimoya 1,518 accessibility, EPInformer-seq 33 enhancer activity, LegNet 3 promoter activity, Sei 40 regulatory classification.Verified against values recorded before the stamp: all three CDFs bit-match for Cherimoya
DNASE:ENCSR149XILand ChromBPNetDNASE:HepG2.It stayed invisible because
tests/test_canonical_layer_vocabulary.pyvalidates the array when present and never required presence — a shape of test worth naming, since it reads like coverage and is not.tests/test_every_background_carries_its_layers.pynow requires presence, per-row length, canonical values, no'other', agreement withbuild_config.layers_present, and equality with whatclassify_track_layercomputes.One defect introduced and fixed on the way, recorded because the tag moved: the first stamp wrote
build_configas a 0-d array where every artefact stores shape(1,), which raisesIndexErrorin any reader doingbuild_config[0]— it broketest_the_shipped_null_records_that_it_was_built_from_the_ensembleon five artefacts at once. The stamper's own reader tolerated both shapes, which is exactly why it did not notice. Repaired, andtest_build_config_storage_shape_is_uniformnow asserts the shape rather than tolerating it. Thebackgrounds-2026-08-10-layersdataset tag was deleted and recreated at the corrected head; nothing referenced it yet, andbackgrounds-2026-08-06-schema4was untouched throughout, so 0.7.0 stays reproducible.
Changed
- Five GitHub Releases told users to run a command that has never worked. v0.5.2 through v0.5.6 ended with
pip install --upgrade chorus-genomics. Chorus is not on PyPI:chorus-genomicsis unregistered and thechorusname belongs to an unrelated chemistry package. All five release bodies now give the source install, with a note saying what was corrected and why. Found by verifying the fix rather than trusting the first three I had read — the check turned up two more.