BindCraft Binder Design
Prerequisites
| Requirement | Minimum | Recommended | |-------------|---------|-------------| | Python | 3.9+ | 3.10 | | CUDA | 11.7+ | 12.0+ | | GPU VRAM | 32GB | 48GB (L40S) | | RAM | 32GB | 64GB |
How to run
First time? See Getting started to set up Modal and biomodals.
Option 1: Modal (recommended)
cd biomodals
modal run modal_bindcraft.py \
--input-pdb target.pdb \
--target-chains A \
--target-hotspot-residues "45,67,89" \
--lengths "70,100" \
--number-of-final-designs 50
GPU: L40S (48GB) | Timeout: 300 min default
Option 2: Local installation
git clone https://github.com/martinpacesa/BindCraft.git
cd BindCraft
# BindCraft is configured with JSON files, not flags
python -u ./bindcraft.py \
--settings ./settings_target/mytarget.json \
--filters ./settings_filters/default_filters.json \
--advanced ./settings_advanced/default_4stage_multimer.json
The target PDB, chains, hotspots, and binder length range are set inside the
--settings JSON. See the BindCraft repo for the settings schema.
Key parameters (Modal wrapper)
| Parameter | Default | Description |
|-----------|---------|-------------|
| --input-pdb | required | Target structure |
| --target-chains | A | Target chain(s) |
| --target-hotspot-residues | "" | Target hotspots (e.g. "45,67,89") |
| --lengths | 50,130 | Binder length range |
| --number-of-final-designs | 1 | Passing designs to return |
| --max-trajectories | none | Cap on trajectories |
Output format
output/
├── design_0/
│ ├── binder.pdb # Final design
│ ├── complex.pdb # Binder + target
│ ├── metrics.json # QC scores
│ └── trajectory/ # Optimization trajectory
├── design_1/
│ └── ...
└── summary.csv # All metrics
Metrics Output
{
"plddt": 0.89,
"ptm": 0.78,
"iptm": 0.62,
"pae": 8.5,
"rmsd": 1.2,
"sequence": "MKTAYIAK..."
}
Sample output
Successful run
$ modal run modal_bindcraft.py --input-pdb target.pdb --target-chains A --target-hotspot-residues "45,67,89" --number-of-final-designs 50
[INFO] Loading BindCraft model...
[INFO] Target: target.pdb (chain A)
[INFO] Hotspots: 45, 67, 89
[INFO] Generating designs...
Design 1/50:
Length: 78 AA
pLDDT: 0.89, ipTM: 0.62
Saved: output/design_0/
Design 50/50:
Length: 85 AA
pLDDT: 0.86, ipTM: 0.58
Saved: output/design_49/
[INFO] Campaign complete. Summary: output/summary.csv
Pass rate: 32/50 (64%) with ipTM > 0.5
What good output looks like:
- pLDDT: > 0.85 for most designs
- ipTM: > 0.5 for passing designs
- Pass rate: 30-70% depending on target
- Diverse sequences across designs
Decision tree
Should I use BindCraft?
│
├─ What type of design?
│ ├─ Production-quality binders → BindCraft ✓
│ ├─ High diversity exploration → RFdiffusion
│ └─ All-atom precision → BoltzGen
│
├─ What matters most?
│ ├─ Experimental success rate → BindCraft ✓
│ ├─ Speed / diversity → RFdiffusion + ProteinMPNN
│ ├─ AF2 gradient optimization → ColabDesign
│ └─ All-atom control → BoltzGen
│
└─ Compute resources?
├─ Have L40S/A100 → BindCraft ✓
└─ Only A10G → RFdiffusion + ProteinMPNN
Typical performance
| Campaign Size | Time (L40S) | Cost (Modal) | Notes | |---------------|-------------|--------------|-------| | 50 designs | 2-4h | ~$15 | Quick campaign | | 100 designs | 4-8h | ~$30 | Standard | | 200 designs | 8-16h | ~$60 | Large campaign |
Adaptyv's own tests of these models showed BindCraft costing about $2.90 per accepted design, averaged across 7 targets.
Experimental success rate (BindCraft paper): 10 to 100%, averaging 46.3% across 12 targets; strongly target-dependent.
Verify
find output -name "binder.pdb" | wc -l # Should match num_designs
Troubleshooting
Low ipTM scores: Check hotspot selection, increase designs Slow convergence: Use fast protocol for screening OOM errors: Reduce num_models, use L40S GPU Poor diversity: Lower sampling_temp, run multiple seeds
Error interpretation
| Error | Cause | Fix |
|-------|-------|-----|
| RuntimeError: CUDA out of memory | Large target or long binder | Use L40S/A100, reduce binder length |
| ValueError: no hotspots | Hotspots not found | Check residue numbering |
| TimeoutError | Design taking too long | Use fast protocol |
Next: Rank by ipsae → experimental validation.