---
name: xuzhougeng/borzoi
source: https://app.decimal.ai/s/xuzhougeng-borzoi@1/SKILL.md
source_sha256: c8a8def4f56a
---

# Borzoi — DNA → Functional Track Prediction

## Prerequisites

| Requirement | Minimum | Recommended |
| ----------- | ------- | ----------- |
| Python      | 3.10+   | 3.11        |
| CUDA        | 12.1+   | 12.4+       |
| GPU VRAM    | 16 GB   | 24 GB+      |

## How to run

```python
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`. 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`:

```json
{
  "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.


## 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.