alterlab-boltz
Co-fold biomolecular complexes with Boltz-2, an open AlphaFold3-style model — predict protein + ligand (SMILES/CCD), protein + nucleic-acid, and multi-chain structures in one pass, with binding-affinity prediction. Use when folding a protein together with a small-molecule ligand,
Install
npx skills add https://github.com/AlterLab-IEU/AlterLab-Academic-Skills/tree/main/skills/bioinformatics/alterlab-boltz
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install alterlab-ieu-alterlab-academic-skills@llmmart
git clone https://github.com/AlterLab-IEU/AlterLab-Academic-Skills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole alterlab-ieu/alterlab-academic-skills collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Boltz-2 (open AlphaFold3-style co-folding)
Overview
Boltz-2 (Passaro, Wohlwend et al. 2025; jwohlwend/boltz) is an open, commercially usable
biomolecular structure model in the AlphaFold3 family: it co-folds proteins together with
small-molecule ligands, nucleic acids, and multiple chains in a single prediction, and can
predict binding affinity — capabilities AlphaFold2/ColabFold does not have. Use it when the
biology is a complex with a ligand or other molecule types, not a bare protein.
When to Use This Skill
Use this skill when the user wants to:
- Co-fold a protein with a small-molecule ligand (SMILES or CCD code) into a holo complex.
- Predict a binding affinity alongside a co-folded pose.
- Fold protein–nucleic-acid or multi-entity assemblies in one pass.
- Get an open AlphaFold3-style prediction without proprietary access.
Does NOT Trigger
| Scenario | Use instead |
|---|---|
| Protein-only or protein–protein folding, no ligand | alterlab-alphafold |
| Antibody–antigen / general one-FASTA multi-entity complex | alterlab-chai |
| Dock a ligand into an existing, fixed receptor structure | alterlab-diffdock |
| Retrieve an experimentally determined structure | alterlab-pdb |
| Design a binding-pocket sequence around a ligand | alterlab-ligandmpnn |
Core Capabilities
1. Protein + ligand co-folding
Describe the complex in a YAML spec (chains + ligand by SMILES or CCD), then predict:
# complex.yaml
version: 1
sequences:
- protein: { id: A, sequence: "MKT...GGG" } # msa: path.a3m, or omit with --use_msa_server
- ligand: { id: L, smiles: "CC(=O)Oc1ccccc1C(=O)O" } # or: ccd: SAH
boltz predict complex.yaml --out_dir out/ --use_msa_server --use_potentials
Outputs the co-folded structure (mmCIF by default, --output_format pdb for PDB) plus a
confidence_*.json per sample. --use_msa_server fetches the protein MSA from the hosted
MMseqs2 server (it sends your sequence out — disclose that for unpublished work); supply
msa: my.a3m per chain to stay offline, or msa: empty to force single-sequence mode.
--use_potentials applies inference-time potentials that improve the physical plausibility
of poses. Useful knobs: --diffusion_samples N, --recycling_steps N, --override.
2. Binding-affinity prediction
Ask for affinity in the YAML, naming the ligand chain to score:
properties:
- affinity:
binder: L
affinity_[input].json then carries two distinct numbers, trained on different data and
meant for different jobs:
affinity_probability_binary(0–1) — probability the ligand is a binder at all. Use it for hit discovery / binder-vs-decoy triage.affinity_pred_value— predictedlog10(IC50)with IC50 in µM, so -3 ≈ 1 nM (strong), 0 ≈ 1 µM, 2 ≈ 100 µM. It is calibrated for comparing active molecules during hit-to-lead optimisation, not for separating actives from inactives. Convert to pIC50-style kcal/mol with(6 - y) * 1.364.
Limits worth knowing before you queue a screen: one small-molecule binder per prediction,
at most 128 heavy+kept hydrogens (the training limit was ~56 atoms), and protein targets
only — an RNA/DNA "target" runs without error but the number is unreliable. Treat every
predicted affinity as a ranking signal and confirm against measured data
(alterlab-bindingdb) or experiment.
3. Confidence and validation
Each sample gets a confidence_*.json with confidence_score (the ranking score,
0.8·complex_plddt + 0.2·iptm), ptm, iptm, ligand_iptm (interface confidence at
protein–ligand interfaces specifically), protein_iptm, complex_plddt, complex_iplddt,
chains_ptm and pair_chains_iptm. For a ligand pose, ligand_iptm plus the pLDDT around
the pocket is the pair to read — a high overall score with a weak ligand interface means the
protein folded well and the ligand did not dock convincingly. Cross-check with
alterlab-diffdock when the receptor structure is already known and fixed.
4. Running on a GPU
Boltz-2 wants a CUDA GPU and downloads weights once into ~/.boltz. Point boltz predict at
a directory of YAML files to batch a ligand series against one target in a single run, and
dispatch it via alterlab-remote-compute: submit → poll → harvest out/predictions/.
Resources
references/boltz_usage.md— install/pinning, YAML/FASTA input schema, MSA options, affinity output, and multi-entity examples. Loaded on demand.
Part of the AlterLab Academic Skills suite.
Files (alterlab-academic-skills)
-
evals
-
evals.json 3.1 KB
{ "skill": "alterlab-boltz", "evals": [ { "id": "protein-ligand-cofold", "prompt": "I have a protein sequence and a ligand SMILES. Co-fold them together to predict the ligand-bound complex structure.", "expected_output": "Invokes alterlab-boltz: builds a YAML/FASTA spec with the protein chain and the ligand (SMILES), runs `boltz predict` on a GPU, and returns the co-folded holo complex with per-model confidence. Notes weights/GPU needs and dispatch via alterlab-remote-compute.", "assertions": [ { "type": "should_trigger", "value": true }, { "type": "output_contains", "value": "SMILES" }, { "type": "behavior", "value": "Co-folds protein and ligand together (not docking into a fixed receptor)." } ] }, { "id": "binding-affinity", "prompt": "Can you predict both the bound pose and an approximate binding affinity for this protein–ligand pair so I can rank a small set of candidates?", "expected_output": "Invokes alterlab-boltz: co-folds each protein–ligand pair and outputs its predicted binding affinity, framing affinity as a ranking signal to confirm against measured data (alterlab-bindingdb), not a measured constant.", "assertions": [ { "type": "should_trigger", "value": true }, { "type": "output_contains", "value": "affinity" } ] }, { "id": "protein-nucleic-complex", "prompt": "Predict the structure of my transcription factor bound to its double-stranded DNA motif — I have the protein sequence and the DNA sequence.", "expected_output": "Invokes alterlab-boltz to co-fold the protein with the nucleic-acid chains in one pass (an AlphaFold3-style multi-entity capability), returning the assembly with confidence.", "assertions": [ { "type": "should_trigger", "value": true }, { "type": "behavior", "value": "Handles a protein + nucleic-acid multi-entity complex in a single prediction." } ] }, { "id": "near-miss-alphafold", "prompt": "I just want the 3D structure of a single protein from its sequence — no ligands, no other molecules.", "expected_output": "Should NOT trigger this skill; defers to alterlab-alphafold. Boltz is for complexes with ligands/nucleic acids; a bare protein (or protein–protein) fold is best served by AlphaFold2/ColabFold via alterlab-alphafold.", "assertions": [ { "type": "should_not_trigger", "value": true }, { "type": "output_contains", "value": "alterlab-alphafold" } ] }, { "id": "near-miss-diffdock", "prompt": "I already have the crystal structure of my receptor. I just need to dock this ligand into its known binding pocket.", "expected_output": "Should NOT trigger this skill; defers to alterlab-diffdock. When the receptor structure is fixed and known, the task is molecular docking (pose placement), not co-folding the protein — that is alterlab-diffdock's job.", "assertions": [ { "type": "should_not_trigger", "value": true }, { "type": "output_contains", "value": "alterlab-diffdock" } ] } ] }
-
-
references
-
boltz_usage.md 4.9 KB
# Boltz-2 — Usage Reference Deeper detail for `alterlab-boltz`, verified against **boltz 2.2.1** (current PyPI release as of 2026-09) and the upstream `jwohlwend/boltz` prediction docs. Boltz moves fast — re-check `boltz predict --help` if a flag is rejected. ## Install ```bash uv pip install 'boltz[cuda]' -U # drop [cuda] for CPU-only (much slower) ``` Python 3.10–3.12. Weights download on first run and cache in `~/.boltz` (`BOLTZ_CACHE` overrides the location). Code and weights are MIT-licensed, so commercial use is allowed — one of the main reasons to pick Boltz over AlphaFold 3's weights terms. ## Input: a YAML spec FASTA input still parses but is deprecated and cannot express modifications, covalent bonds, pocket constraints, or affinity. The YAML shape: ```yaml version: 1 sequences: - protein: id: [A, B] # a list when several chains share a sequence sequence: MVTPEG... msa: ./msa/seq1.a3m # omit when using --use_msa_server; 'empty' = single sequence modifications: - position: 12 # 1-based ccd: SEP cyclic: false - ligand: id: C smiles: 'N[C@@H](Cc1ccc(O)cc1)C(=O)O' # or: ccd: SAH (never both) - dna: # also: rna id: D sequence: ATCG... constraints: - pocket: binder: C contacts: [[A, 42], [A, 46]] # [chain, residue index] (or atom name for ligands) max_distance: 6 # 4–20 Å, default 6 force: false # true adds a potential enforcing it - contact: token1: [A, 42] token2: [C, C1] max_distance: 6 - bond: atom1: [A, 12, SG] atom2: [C, 1, C7] templates: - cif: ./template.cif chain_id: [A] properties: - affinity: binder: C ``` Multi-chain custom MSAs use a two-column CSV (`sequence`, `key`) instead of `.a3m`, where rows sharing a key are treated as paired across chains. ## Run ```bash boltz predict complex.yaml --out_dir out/ --use_msa_server --use_potentials boltz predict yaml_dir/ --out_dir out/ --use_msa_server # batch a directory ``` Flags that matter: | Flag | Default | Why you'd change it | |------|---------|---------------------| | `--use_msa_server` | off | auto-generate MSAs via the ColabFold MMseqs2 server (sends the sequence out) | | `--msa_server_url` | `https://api.colabfold.com` | point at your own server (basic-auth or API-key flags exist) | | `--use_potentials` | off | inference-time potentials; better physical plausibility of poses | | `--diffusion_samples` | 1 | more poses to rank (AF3-like settings: 25 samples, 10 recycles) | | `--recycling_steps` | 3 | harder targets | | `--sampling_steps` | 200 | diffusion steps | | `--output_format` | `mmcif` | `pdb` when downstream tools need it | | `--override` | off | ignore cached preprocessing/predictions in `--out_dir` | | `--devices` / `--accelerator` | 1 / gpu | multi-GPU or CPU runs | | `--diffusion_samples_affinity` | 5 | affinity-head sampling | | `--affinity_mw_correction` | off | molecular-weight correction on the affinity value | ## Output ``` out/predictions/<input_name>/ <input_name>_model_0.cif # ranked by confidence_score confidence_<input_name>_model_0.json affinity_<input_name>.json # only when properties.affinity was requested pae_/pde_/plddt_<...>.npz ``` `confidence_*.json` keys: `confidence_score` (0.8·complex_plddt + 0.2·iptm — the ranking number), `ptm`, `iptm`, `ligand_iptm`, `protein_iptm`, `complex_plddt`, `complex_iplddt`, `complex_pde`, `complex_ipde`, `chains_ptm`, `pair_chains_iptm`. Scores are 0–1 and higher is better, except the PDE values which are in Å and lower is better. ## Binding affinity `affinity_*.json` has two ensemble outputs plus their per-model counterparts: - `affinity_probability_binary` — 0–1 probability that the ligand binds. Use for binder-vs-decoy triage in hit discovery. - `affinity_pred_value` — `log10(IC50)` with IC50 in µM (−3 ≈ 1 nM, 0 ≈ 1 µM, 2 ≈ 100 µM). Meant for comparing *active* analogues during hit-to-lead/lead optimisation, not for separating actives from inactives. `(6 − y) * 1.364` converts to kcal/mol. Constraints: exactly one ligand chain as `binder`, protein targets only, ≤128 heavy atoms (training stayed near 56). Validate top ranks against measured data (`alterlab-bindingdb`). ## Choosing between the folding skills - **alterlab-boltz** — complex WITH a ligand / nucleic acid, or affinity. MIT-licensed AF3-class. - **alterlab-alphafold** — protein or protein–protein only (AF2/ColabFold), rich confidence. - **alterlab-chai** — antibody–antigen and general one-FASTA multi-entity complexes (Chai-1). - **alterlab-diffdock** — the receptor structure is already known/fixed and you only need to place a ligand (docking), not co-fold the protein. ## GPU dispatch Batch a ligand series against one target as one directory of YAML files via `alterlab-remote-compute` (submit → poll → harvest).
-
-
SKILL.md 5.9 KB
--- name: alterlab-boltz description: Co-fold biomolecular complexes with Boltz-2, an open AlphaFold3-style model — predict protein + ligand (SMILES/CCD), protein + nucleic-acid, and multi-chain structures in one pass, with binding-affinity prediction. Use when folding a protein together with a small-molecule ligand, predicting a holo (ligand-bound) complex or its binding affinity, or co-folding protein–DNA/RNA assemblies. For protein-only or protein–protein folding without ligands prefer alterlab-alphafold; for antibody–antigen complexes prefer alterlab-chai; to dock a ligand into a FIXED receptor structure prefer alterlab-diffdock; to look up an existing structure prefer alterlab-pdb. Part of the AlterLab Academic Skills suite. license: MIT allowed-tools: Read Write Edit Bash(python:*) Bash(uv:*) compatibility: "Runs the Boltz-2 model (`jwohlwend/boltz`; `uv pip install 'boltz[cuda]'`, 2.2.1 as of 2026-09, Python 3.10–3.12) under `uv run python`. A CUDA GPU is strongly recommended — CPU works but is far slower; model weights download once and cache under `~/.boltz` (override with `BOLTZ_CACHE`). Inputs are a YAML spec listing chains + ligands (SMILES/CCD); FASTA input is deprecated. Code and weights are MIT-licensed. Dispatch heavy runs via alterlab-remote-compute." metadata: skill-author: AlterLab version: "1.1.0" last_updated: "2026-09-23" --- # Boltz-2 (open AlphaFold3-style co-folding) ## Overview **Boltz-2** (Passaro, Wohlwend et al. 2025; `jwohlwend/boltz`) is an open, commercially usable biomolecular structure model in the AlphaFold3 family: it **co-folds** proteins together with small-molecule **ligands**, nucleic acids, and multiple chains in a single prediction, and can predict **binding affinity** — capabilities AlphaFold2/ColabFold does not have. Use it when the biology is a *complex with a ligand or other molecule types*, not a bare protein. ## When to Use This Skill Use this skill when the user wants to: - Co-fold a protein **with a small-molecule ligand** (SMILES or CCD code) into a holo complex. - Predict a **binding affinity** alongside a co-folded pose. - Fold **protein–nucleic-acid** or multi-entity assemblies in one pass. - Get an open AlphaFold3-style prediction without proprietary access. ### Does NOT Trigger | Scenario | Use instead | |----------|-------------| | Protein-only or protein–protein folding, no ligand | `alterlab-alphafold` | | Antibody–antigen / general one-FASTA multi-entity complex | `alterlab-chai` | | Dock a ligand into an **existing, fixed** receptor structure | `alterlab-diffdock` | | Retrieve an experimentally determined structure | `alterlab-pdb` | | Design a binding-pocket sequence around a ligand | `alterlab-ligandmpnn` | ## Core Capabilities ### 1. Protein + ligand co-folding Describe the complex in a YAML spec (chains + ligand by SMILES or CCD), then predict: ```yaml # complex.yaml version: 1 sequences: - protein: { id: A, sequence: "MKT...GGG" } # msa: path.a3m, or omit with --use_msa_server - ligand: { id: L, smiles: "CC(=O)Oc1ccccc1C(=O)O" } # or: ccd: SAH ``` ```bash boltz predict complex.yaml --out_dir out/ --use_msa_server --use_potentials ``` Outputs the co-folded structure (mmCIF by default, `--output_format pdb` for PDB) plus a `confidence_*.json` per sample. `--use_msa_server` fetches the protein MSA from the hosted MMseqs2 server (it sends your sequence out — disclose that for unpublished work); supply `msa: my.a3m` per chain to stay offline, or `msa: empty` to force single-sequence mode. `--use_potentials` applies inference-time potentials that improve the physical plausibility of poses. Useful knobs: `--diffusion_samples N`, `--recycling_steps N`, `--override`. ### 2. Binding-affinity prediction Ask for affinity in the YAML, naming the ligand chain to score: ```yaml properties: - affinity: binder: L ``` `affinity_[input].json` then carries two distinct numbers, trained on different data and meant for different jobs: - **`affinity_probability_binary`** (0–1) — probability the ligand is a binder at all. Use it for hit discovery / binder-vs-decoy triage. - **`affinity_pred_value`** — predicted `log10(IC50)` with IC50 in µM, so -3 ≈ 1 nM (strong), 0 ≈ 1 µM, 2 ≈ 100 µM. It is calibrated for comparing *active* molecules during hit-to-lead optimisation, not for separating actives from inactives. Convert to pIC50-style kcal/mol with `(6 - y) * 1.364`. Limits worth knowing before you queue a screen: one small-molecule binder per prediction, at most 128 heavy+kept hydrogens (the training limit was ~56 atoms), and protein targets only — an RNA/DNA "target" runs without error but the number is unreliable. Treat every predicted affinity as a ranking signal and confirm against measured data (`alterlab-bindingdb`) or experiment. ### 3. Confidence and validation Each sample gets a `confidence_*.json` with `confidence_score` (the ranking score, 0.8·complex_plddt + 0.2·iptm), `ptm`, `iptm`, **`ligand_iptm`** (interface confidence at protein–ligand interfaces specifically), `protein_iptm`, `complex_plddt`, `complex_iplddt`, `chains_ptm` and `pair_chains_iptm`. For a ligand pose, `ligand_iptm` plus the pLDDT around the pocket is the pair to read — a high overall score with a weak ligand interface means the protein folded well and the ligand did not dock convincingly. Cross-check with `alterlab-diffdock` when the receptor structure is already known and fixed. ### 4. Running on a GPU Boltz-2 wants a CUDA GPU and downloads weights once into `~/.boltz`. Point `boltz predict` at a *directory* of YAML files to batch a ligand series against one target in a single run, and dispatch it via `alterlab-remote-compute`: submit → poll → harvest `out/predictions/`. ## Resources - `references/boltz_usage.md` — install/pinning, YAML/FASTA input schema, MSA options, affinity output, and multi-entity examples. Loaded on demand. Part of the AlterLab Academic Skills suite.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.