Skip to content

docs(cherimoya): fill in missing README + attribution references - #166

Open
jmschrei wants to merge 2 commits into
pinellolab:mainfrom
jmschrei:fix/2026-08-05-cherimoya-doc-gaps
Open

docs(cherimoya): fill in missing README + attribution references#166
jmschrei wants to merge 2 commits into
pinellolab:mainfrom
jmschrei:fix/2026-08-05-cherimoya-doc-gaps

Conversation

@jmschrei

@jmschrei jmschrei commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

The README predates Cherimoya, and a later pass patched it in incompletely — so it was still missing from commands, tables, and attribution. This fills the remaining gaps.

Every item was verified against the code or by running the command, not pattern-matched.

README

Gap Fix
Both download_pertrack_backgrounds loops omitted cherimoya added; ran all 8 oracles, all return 1
"all seven oracles" / "does all 7" / "other 5 oracles" corrected to 8 / 7
chorus setup --oracle cherimoya absent entirely added; name is valid per EnvironmentManager.list_available_oracles()
Model-specific details had no Cherimoya section added; geometry matches mcp/server.py::ORACLE_SPECS and oracle.sequence_length (2,114 in / 1,000 bins / 1 bp); both documented load paths executed on GPU; 613,892 params measured
Pick an oracle: GPU recommended, <1 s (GPU) optional, with measured inference-only timings
macOS tables omitted Cherimoya added as CPU-only
Notebooks table said "All 6" names the 6; notes Cherimoya is also absent from that notebook
cherimoya_quickstart.ipynb ships but was never referenced added
"get the identifier field" Cherimoya returns track_id; Enformer and Borzoi return identifier, Cherimoya returns track_id; ChromBPNet/Sei/LegNet/EPInformer-seq return no track list at all (different response shape)
Backgrounds file-size table said ~154 MB → ~162 MB; #163 updated ChromBPNet there but missed Cherimoya

GPU is optional, and the timings

CPU was verified working with the GPUs hard-masked (CUDA_VISIBLE_DEVICES="", torch.cuda.is_available() False, 0 devices) across four paths: direct and env mode, each with explicit device='cpu' and with auto-detect. Auto-detect falls back to CPU and returns values bit-identical to explicit cpu.

Inference step only (model load, FASTA extraction and subprocess startup excluded), one H200 vs 8 CPU threads, median of 7–20 warmed runs:

Query Windows GPU CPU Ratio
1 kb 1 1.2 ms 10.5 ms 8.5×
10 kb 8 2.3 ms 103 ms 45×
100 kb 98 18.4 ms 2.75 s 150×

The ratio is batch-dependent — the GPU amortises windows (1.23 → 0.19 ms/window) while CPU per-window cost climbs (10.5 → 28 ms). So the runtime's flat "~50x slower" warning is only right in the middle of that range. A footnote records the scaling so "optional" doesn't mislead anyone planning a wide scan, plus the ~1e-2 relative CPU/Triton logit divergence (r = 0.99999) measured at the same locus.

Cherimoya is deliberately not added to the macOS Metal list: cherimoya.py resolves cuda-or-cpu only, and platform.py records that the model has no MPS path and that its triton pin has no macOS wheel.

Also

  • docs/THIRD_PARTY.md: Cherimoya row (MIT code, CC-BY-4.0 weights) + the "wraps six oracles" count. Satisfies AUDIT_CHECKLIST.md §18 for this oracle. EPInformer-seq attribution is still missing there and is intentionally left alone.
  • examples/notebooks/README.md: same "needs a CUDA GPU" overstatement as the main README — needed for speed, not to run.
  • No hand-written row was added to the <!-- GENERATED: background-table --> block — it already carries Cherimoya.

Not addressed (pre-existing, flagging only)

  • examples/notebooks/README.md says advanced_multi_oracle_analysis "needs all six oracle envs" — stale, and that notebook only uses three (Enformer, ChromBPNet/BPNet, LegNet).
  • Its link to README.md#setting-up-oracle-environments is broken; the heading slug is ...-one-by-one.
  • README says "22 MCP tools" in two places and "24-tool" in two others.
  • The display-rescale table row has an unescaped |effect| that breaks its columns on GitHub.

🤖 Generated with Claude Code

Jacob Schreiber added 2 commits August 5, 2026 15:27
The README predates Cherimoya and a later pass patched it in
incompletely, so it was still missing from commands, tables and
attribution. Each gap below was verified against the code or by running
the command, not just pattern-matched.

README:
- both `download_pertrack_backgrounds` loops (ran all 8 oracles; all
  return 1) and the "all seven oracles" count
- `chorus setup --oracle cherimoya`, absent entirely; name is valid per
  `EnvironmentManager.list_available_oracles()`
- new "Cherimoya / CATv1" model-details section -- that section had no
  Cherimoya entry at all. Geometry matches `mcp/server.py::ORACLE_SPECS`
  and `oracle.sequence_length` (2,114 in / 1,000 bins / 1 bp); both
  documented load paths executed; 613,892 params measured
- "Pick an oracle": GPU needed? recommended -> optional, with measured
  inference-only timings (H200 vs 8 CPU threads: 1.2/10.5 ms at 1 kb,
  2.3/103 ms at 10 kb, 18.4 ms/2.75 s at 100 kb). CPU verified working
  with GPUs masked across direct+env mode and explicit+auto device
- macOS: Cherimoya is CPU-only. Deliberately NOT added to the Metal
  list -- `cherimoya.py` resolves cuda-or-cpu and `platform.py` records
  no MPS path
- notebooks table said "All 6"; also excludes Cherimoya
- `cherimoya_quickstart.ipynb` ships but was never referenced
- `list_tracks` returns `track_id` for Cherimoya, not `identifier`
  (checked all 7 oracles; only Enformer and Borzoi use `identifier`)
- backgrounds file-size table said ~154 MB while the generated table
  says 162 MB; pinellolab#163 updated ChromBPNet there but missed Cherimoya
- stale counts: "does all 7", "other 5 oracles"

THIRD_PARTY: Cherimoya row (MIT code, CC-BY-4.0 weights) and the
"wraps six oracles" count. EPInformer-seq attribution is still absent
and is left to the session working on that oracle.

notebooks/README: same "needs a CUDA GPU" overstatement as the main
README -- needed for speed, not to run.

No hand-written row was added to the generated background-table block;
it already carries Cherimoya.
The Environments block says to always run per-oracle work through the
matching mamba env, then omitted the Cherimoya one -- so an agent
following it would fall back to base `chorus`, where `import cherimoya`
raises ModuleNotFoundError. Cherimoya appeared nowhere in the file.

Comment records CUDA-or-CPU because the CPU path works: verified with
GPUs masked across direct and env mode, explicit device='cpu' and
auto-detect.

chorus-epinformerseq is also missing from this list and is left to the
session working on that oracle.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant