Protein Binder Design (workflow)
Run a de novo binder design campaign by composing atomic NIM skills. This skill
owns orchestration, handoff contracts, filtering, validation, and the run
manifest. It does NOT duplicate per-NIM API details — defer those to each
atomic skill's SKILL.md.
Composed skills
| Step | Skill | Owns |
|---|---|---|
| Backbones | rfdiffusion-nim |
binder backbone PDBs (contigs + hotspots) |
| Sequences | proteinmpnn-nim |
sequences for each backbone |
| Co-fold / score | boltz2-nim or openfold3-nim |
binder–target complex + confidence / ipTM |
| MSA (optional) | msa-search-nim |
target A3M for higher-quality folding |
The atomic NIM skills are recommended companions (one per NIM, from the BioNeMo
NIM skill set). They are not required: references/pipeline.md carries the
concrete request shape for every NIM call, so an agent with NIM access can follow
this skill standalone. For endpoints/auth see Configuration below.
Pipeline
- Target prep — get the target PDB + epitope; map epitope/hotspot author
residue numbers to RFdiffusion
hotspot_resstrings; optionally build a target MSA withmsa-search-nim. - Backbones (
rfdiffusion-nim) — binder contig +hotspot_res; N backbones. - Sequences (
proteinmpnn-nim) — k sequences per backbone; drop the native/WT row frommfasta. - Co-fold + score (
boltz2-nim/openfold3-nim) — co-fold binder+target; collect interface confidence (ipTM) and binder pLDDT. - Self-consistency — CA-RMSD between the RFdiffusion backbone and the
predicted binder (
scripts/metrics.py). - Filter + rank — apply thresholds; rank survivors; write manifest + CSV.
Full handoff contracts, branching, and the cost funnel: references/pipeline.md.
Handoff contracts (the fragile glue)
- RFdiffusion
output_pdb→ ProteinMPNNinput_pdb(inline PDB text). - ProteinMPNN
mfasta→ Boltz2 binder polymersequence(exclude the native/WT row; pair scores only with designed rows). - Epitope author residue numbers → 1-based sequence indices: remap with
scripts/pdb_utils.py:remap_to_seq_index. RFdiffusionhotspot_resuses chain+author strings like"A50"; Boltz2 pocket/contacts use 1-based indices. - Boltz2 complex
.cif→ binder chain → self-consistency RMSD vs the backbone.
Run manifest (reproducibility backbone)
Every campaign writes manifest.json (+ candidates.csv) under a run dir via
scripts/manifest.py. It records lineage, params, scores, artifacts, filter
status, and controls — enabling ranking, resumability, validation, and the
final report. Schema and usage: references/manifest.md.
Filters (defaults)
- ipTM ≥ 0.8, binder pLDDT ≥ 80, self-consistency RMSD ≤ 2.0 Å.
- Override per campaign and record overrides in the manifest
filters.
Validation
Always run controls and report a success rate, not just top scores.
Negative controls via scripts/controls.py (scrambled sequences); positive
controls = published binders re-scored through the same pipeline. Benchmark
targets live in assets/targets.json (scripts/registry.py). Methodology and
metric definitions: references/validation.md.
Human-in-the-loop + cost
- Confirm target, epitope/hotspots, binder length range, and hosted-vs-local with the user before generating backbones (AskUserQuestion).
- Co-folding is the expensive stage: co-fold a capped shortlist, review, then expand. State hosted vs local once and reuse it across all NIM calls.
Responsible use
De novo binder design is dual-use. Decline requests aimed at enhancing pathogen fitness, toxin potency, or bioweapon function; keep designs to legitimate research and therapeutic intent.
Configuration (NIM access)
Each composed NIM is reached over HTTP; choose hosted or local once and reuse it for every call:
- Hosted (managed): base URL
https://health.api.nvidia.com/v1/...per NIM at build.nvidia.com; setNVIDIA_API_KEY(sent asAuthorization: Bearer). Read keys from the env — never hardcode them. - Local (self-hosted NGC containers): point each NIM at its local URL
(e.g.
http://localhost:8000/...); local NIMs need no auth header. To launch the NIMs yourself (docker run per NIM, persistent caches, health checks, and the GPU profile‑selection gotcha — some NIMs (e.g. Boltz2) needNIM_MODEL_PROFILEpinned on GPUs that have no bundled profile, while others (RFdiffusion/ProteinMPNN) auto‑select by compute capability): seereferences/local-nim-setup.md.
Per-NIM paths, request/response schemas, and worked curl/Python examples live in
references/pipeline.md.
Scripts
scripts/manifest.py— campaign manifest (create / load / score / filter / rank / CSV).scripts/pdb_utils.py— PDB parse, chain extract, sequence, residue remap, CA coords.scripts/metrics.py— Kabsch CA-RMSD for self-consistency.scripts/controls.py— scrambled negative controls.scripts/registry.py+assets/targets.json— example benchmark target registry (illustrative epitopes — verify against the cited structure before a real campaign). Replace with your own targets.