xuzhougeng/borzoi
> Predict genome-wide functional tracks (RNA-seq, CAGE, DNase, ChIP) from DNA (1) Scoring the regulatory effect of a variant on expression/accessibility, (2) Generating predicted coverage tracks for a locus, (3) Prioritising non-coding variants by predicted track delta.
npx skills add https://github.com/xuzhougeng/wisp-science --skill borzoi
| Requirement | Minimum | Recommended |
| ----------- | ------- | ----------- |
| Python | 3.10+ | 3.11 |
| CUDA | 12.1+ | 12.4+ |
| GPU VRAM | 16 GB | 24 GB+ |
from borzoi_pytorch import Borzoi
model = Borzoi.from_pretrained("johahi/borzoi-replicate-0").cuda().eval()
# input: (batch, 4, 524288) one-hot DNA → output: (batch, tracks, 6144) bins
Borzoi consumes ~524 kb one-hot windows and emits binned predictions across
7,611 human tracks (the separate 2,608-track mouse head is off by default;
enable via enable_mouse_head=True and select with
forward(..., is_human=False)). For variant scoring, run ref/alt windows
centred on the variant and compare per-track output.
(B, T, L) tensor — T tracks × L 32-bp bins. Track metadata (assay,
biosample) is in borzoi_pytorch.pytorch_borzoi_model.TRACKS_DF (or model.tracks_df when using the AnnotatedBorzoi subclass) — the base Borzoi model has no targets attribute.
Needs ≥24 GB VRAM and either pre-cached HF weights or egress to
huggingface.co. Use a selected and probed ssh:<alias> context and load
remote-compute-ssh. Confirm borzoi-pytorch and the cache location, then
submit a self-contained runner with run_in_context:
{
"context_id": "ssh:gpu-box",
"title": "Borzoi prediction for one locus",
"command": "source ~/miniforge3/etc/profile.d/conda.sh && conda activate borzoi && HF_HOME=/srv/model-cache python borzoi_run.py --output /home/me/wisp-results/borzoi/tracks.npz",
"timeout_secs": 1800,
"input_paths": ["runs/borzoi_run.py"],
"output_specs": [
{
"glob": "ssh://gpu-box/home/me/wisp-results/borzoi/tracks.npz",
"kind": "npz",
"residency": "remote"
}
]
}
Replace context, environment, cache, and output paths with discovered values.
Call monitor_run once to wait, get_run once for a snapshot, or cancel_run
to stop.
| Symptom | Cause | Fix |
| ------------------------------ | ------------------------ | ------------------------------------ |
| module has no __version__ | Package exposes no attr | Use importlib.metadata.version("borzoi-pytorch") |
| Shape mismatch on input | Wrong window length | Pad/crop to 524288 bp (fixed; not exposed as a model attribute) |
Next: combine track deltas with evo2 likelihood deltas for a
two-axis variant prioritisation.
Take xuzhougeng/borzoi from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.