Borzoi — DNA → Functional Track Prediction
SkillAI & modelsPredict genome-wide functional tracks (RNA-seq, CAGE, DNase, ChIP) from DNA sequence with Borzoi. Use this skill when: (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.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Borzoi — DNA → Functional Track Prediction skill
What this skill tells your AI
The instructions your AI receives, as published by pku-yuangroup/openai4s in skills/borzoi/SKILL.md and read by ahel’s review.
Prerequisites
| Requirement | Minimum | Recommended |
|---|---|---|
| Python | 3.10+ | 3.11 |
| CUDA | 12.1+ | 12.4+ |
| GPU VRAM | 16 GB | 24 GB+ |
How to run
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.
Output format
(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.
Remote compute
Needs ≥24 GB VRAM and either pre-cached HF weights or egress to
huggingface.co. Read compute_details({provider, mode:'read'}) for an
environment with borzoi-pytorch, then:
c = host.compute.create(provider)
job = c.submit_job(
intent="Borzoi track prediction for 1 locus — 1×GPU, ~2 min",
inputs=[{"src": "borzoi_run.py", "dst_filename": "borzoi_run.py"}],
command="python3 borzoi_run.py", # env selection is host-specific — see compute_details for your provider
outputs=["tracks.npz"],
timeout_seconds=1800,
)
print(job.job_id) # cell ends here — kernel never blocks on compute
Then poll from a later cell. .result() is one non-blocking probe of the
remote and is what harvests the outputs once the job is terminal — nothing
runs in the background, so a job you never poll is never harvested. While the
job is still running it returns {"status": "running", …}; end the cell and
call it again later:
r = c.attach_job(job_id).result() # {status, exit_code, output_files,
# featured_files, remote_workdir, …}
if r["status"] == "succeeded":
for path in r["featured_files"]: # paths under hpc/<job_id>/
host.save_artifact(path)
c.close()
# `unknown` is not a finished job — poll again rather than closing over it.
See the remote-compute-ssh / remote-compute-nvidia skill for the
orchestration details.
If the provider exposes a weight-cache mount, point HF_HOME at it inside
borzoi_run.py (path is in compute_details).
Troubleshooting
| 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.
Signals
- GitHub stars
- 409
- Forks
- 48
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
borzoi-pku-yuangroup- Source
- github.com/pku-yuangroup/openai4s