skills/chai/SKILL.md
Structure prediction using Chai-1, a foundation model for molecular structure. Use this skill when: (1) Predicting protein-protein complex structures, (2) Validating designed binders, (3) Predicting protein-ligand complexes, (4) Using the Chai API for high-throughput prediction, (5) Need an alternative to AlphaFold2. For QC thresholds, use protein-qc. For AlphaFold2 prediction, use alphafold. For ESM-based analysis, use esm.
npx skillsauth add adaptyvbio/protein-design-skills chaiInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Requirement | Minimum | Recommended | |-------------|---------|-------------| | Python | 3.10+ | 3.11 | | CUDA | 12.0+ | 12.1+ | | GPU VRAM | 24GB | 40GB (A100) | | RAM | 32GB | 64GB |
First time? See Installation Guide to set up Modal and biomodals.
cd biomodals
modal run modal_chai1.py \
--input-faa complex.fasta \
--out-dir predictions/
GPU: A100 (40GB) | Timeout: 30min default
pip install chai_lab
python -c "
import chai_lab
from chai_lab.chai1 import run_inference
# Run prediction
run_inference(
fasta_file='complex.fasta',
output_dir='predictions/',
num_trunk_recycles=3
)
"
git clone https://github.com/chaidiscovery/chai-lab.git
cd chai-lab
pip install -e .
chai-lab predict \
--fasta complex.fasta \
--output predictions/
>binder
MKTAYIAKQRQISFVKSHFSRQLE...
>target
MVLSPADKTNVKAAWGKVGAHAGE...
>protein
MKTAYIAKQRQISFVKSHFSRQLE...
>ligand|smiles
CCO
>protein
MKTAYIAKQRQISFVKSHFSRQLE...
>dna
ATCGATCGATCG
| Parameter | Default | Range | Description |
|-----------|---------|-------|-------------|
| num_trunk_recycles | 3 | 1-10 | Recycles (more = better) |
| num_diffn_timesteps | 200 | 50-500 | Diffusion steps |
| seed | 0 | int | Random seed |
predictions/
├── pred.model_idx_0.cif # Best model (CIF format)
├── pred.model_idx_1.cif # Second model
├── scores.json # Confidence scores
├── pae.npy # PAE matrix
└── plddt.npy # pLDDT values
Note: Chai-1 outputs CIF format. Convert to PDB if needed:
from Bio.PDB import MMCIFParser, PDBIO
parser = MMCIFParser()
structure = parser.get_structure("pred", "pred.model_idx_0.cif")
io = PDBIO()
io.set_structure(structure)
io.save("pred.model_idx_0.pdb")
import numpy as np
import json
# Load scores
with open('predictions/scores.json') as f:
scores = json.load(f)
plddt = np.load('predictions/plddt.npy')
pae = np.load('predictions/pae.npy')
print(f"pLDDT: {plddt.mean():.3f}")
print(f"pTM: {scores['ptm']:.3f}")
print(f"ipTM: {scores.get('iptm', 'N/A')}")
# Predict complex with Chai
chai-lab predict --fasta binder_target.fasta --output val/
# Check ipTM > 0.5
scores = json.load(open('val/scores.json'))
if scores['iptm'] > 0.5:
print("Design passes validation")
# FASTA with SMILES
fasta = """
>protein
MKTA...
>ligand|smiles
CCO
"""
# Chai handles both protein and small molecules
# Multiple sequences
for fasta in sequences/*.fasta; do
chai-lab predict \
--fasta "$fasta" \
--output "predictions/$(basename $fasta .fasta)"
done
| Aspect | Chai-1 | AlphaFold2 | |--------|--------|------------| | MSA required | No | Yes | | Small molecules | Yes | No | | DNA/RNA | Yes | Limited | | Speed | Faster | Slower | | Accuracy | Comparable | Reference |
$ chai-lab predict --fasta complex.fasta --output predictions/
[INFO] Loading Chai-1 model...
[INFO] Running inference...
[INFO] Saved 5 models to predictions/
predictions/scores.json:
{
"ptm": 0.82,
"iptm": 0.71,
"ranking_score": 0.76
}
What good output looks like:
Should I use Chai?
│
├─ What are you predicting?
│ ├─ Protein-protein complex → Chai ✓ or ColabFold
│ ├─ Protein + small molecule → Chai ✓
│ ├─ Protein + DNA/RNA → Chai ✓
│ └─ Single protein only → Use ESMFold (faster)
│
├─ Need MSA?
│ ├─ No / want speed → Chai ✓
│ └─ Yes / want accuracy → ColabFold
│
└─ Priority?
├─ Highest accuracy → ColabFold with MSA
├─ Speed / no MSA → Chai ✓
└─ Ligand binding → Chai ✓
| Campaign Size | Time (A100) | Cost (Modal) | Notes | |---------------|-------------|--------------|-------| | 100 complexes | 30-60 min | ~$10 | Standard validation | | 500 complexes | 2-4h | ~$45 | Large campaign | | 1000 complexes | 5-8h | ~$90 | Comprehensive |
Per-complex: ~20-40s for typical binder-target complex.
find predictions -name "*.cif" | wc -l # Should match input count
Low pLDDT: Increase num_trunk_recycles Low ipTM: Check chain order, interface region OOM errors: Use A100-80GB or reduce batch Slow prediction: Reduce num_diffn_timesteps
| Error | Cause | Fix |
|-------|-------|-----|
| RuntimeError: CUDA out of memory | Complex too large | Use A100-80GB or split prediction |
| KeyError: 'iptm' | Single chain predicted | Ensure FASTA has multiple chains |
| ValueError: invalid SMILES | Malformed ligand | Validate SMILES with RDKit |
| torch.cuda.OutOfMemoryError | GPU exhausted | Reduce num_diffn_timesteps to 100 |
Next: protein-qc for filtering and ranking.
testing
Access UniProt for protein sequence and annotation retrieval. Use this skill when: (1) Looking up protein sequences by accession, (2) Finding functional annotations, (3) Getting domain boundaries, (4) Finding homologs and variants, (5) Cross-referencing to PDB structures. For structure retrieval, use pdb. For sequence design, use proteinmpnn.
development
Solubility-optimized protein sequence design using SolubleMPNN. Use this skill when: (1) Designing for E. coli expression, (2) Optimizing solubility of designed proteins, (3) Reducing aggregation propensity, (4) Need high-yield expression, (5) Avoiding inclusion body formation. For standard design, use proteinmpnn. For ligand-aware design, use ligandmpnn.
tools
First-time setup for protein design tools. Use this skill when: (1) User is new and hasn't run any tools yet, (2) Commands fail with "file not found" or "modal: command not found", (3) Modal authentication errors occur, (4) User asks how to get started or set up the environment, (5) biomodals directory is missing or tools aren't working.
development
Generate protein backbones using RFdiffusion, a diffusion-based generative model for de novo protein structure generation. Use this skill when: (1) Designing binder scaffolds for a target protein, (2) Generating novel protein backbones from scratch, (3) Scaffolding functional motifs into new proteins, (4) Specifying hotspot residues for interface design, (5) Creating symmetric oligomers. For sequence design after backbone generation, use proteinmpnn. For structure validation, use alphafold or chai. For QC thresholds, use protein-qc.