Ligand-aware protein sequence design using LigandMPNN...
| Requirement | Minimum | Recommended |
|---|---|---|
| Python | 3.8+ | 3.10 |
| CUDA | 11.0+ | 11.7+ |
| GPU VRAM | 8GB | 16GB (T4) |
| RAM | 8GB | 16GB |
First time? See Getting started to set up Modal and biomodals.
cd biomodals
# modal_ligandmpnn.py takes --input-pdb; LigandMPNN run.py args go in --params-str
modal run modal_ligandmpnn.py \
--input-pdb protein_ligand.pdb \
--params-str "--model_type ligand_mpnn --number_of_batches 16 --temperature 0.1"
GPU: A10G default | Timeout: 900s default
git clone https://github.com/dauparas/LigandMPNN.git
cd LigandMPNN
python run.py \
--model_type ligand_mpnn \
--pdb_path protein_ligand.pdb \
--out_folder output/ \
--number_of_batches 16 \
--temperature 0.1
| Parameter | Default | Description |
|---|---|---|
--pdb_path |
required | PDB with ligand |
--model_type |
protein_mpnn |
ligand_mpnn, soluble_mpnn, etc. |
--temperature |
0.1 | Sampling temperature |
--number_of_batches |
1 | Batches (sequences = batch_size x batches) |
--batch_size |
1 | Sequences per batch |
--ligand_mpnn_use_side_chain_context |
0 | Use ligand side-chain context |
Ligand must be present as HETATM records:
ATOM ...protein atoms...
HETATM 1 C1 LIG A 999 x.xxx y.yyy z.zzz 1.00 0.00 C
output/
āāā seqs/
ā āāā protein.fa # FASTA sequences
āāā protein_pdb/
āāā protein_0001.pdb # PDBs with designed sequence
$ python run.py --pdb_path enzyme_substrate.pdb --out_folder output/ --num_seq_per_target 8
Loading LigandMPNN model weights...
Processing enzyme_substrate.pdb
Found ligand: LIG (12 atoms)
Generated 8 sequences in 3.1 seconds
output/seqs/enzyme_substrate.fa:
>enzyme_substrate_0001, score=1.45, global_score=1.38
MKTAYIAKQRQISFVKSHFSRQLE...
>enzyme_substrate_0002, score=1.52, global_score=1.41
MKTAYIAKQRQISFVKSQFSRQLD...
What good output looks like:
Should I use LigandMPNN?
ā
āā What's in your binding site?
ā āā Small molecule / ligand ā LigandMPNN ā
ā āā Metal ion (Zn, Fe, etc.) ā LigandMPNN ā
ā āā Cofactor (NAD, FAD, ATP) ā LigandMPNN ā
ā āā DNA/RNA ā LigandMPNN ā
ā āā Nothing / protein only ā Use ProteinMPNN
ā
āā What type of design?
ā āā Enzyme active site ā LigandMPNN ā
ā āā Metal binding site ā LigandMPNN ā
ā āā Protein-protein binder ā Use ProteinMPNN
ā āā De novo scaffold ā Use ProteinMPNN
ā
āā Priority?
āā Solubility/expression ā Consider SolubleMPNN
āā Ligand context accuracy ā LigandMPNN ā
| Campaign Size | Time (T4) | Cost (Modal) | Notes |
|---|---|---|---|
| 100 backbones Ć 8 seq | 15-20 min | ~$2 | Standard |
| 500 backbones Ć 8 seq | 1-1.5h | ~$8 | Large campaign |
Throughput: ~50-100 sequences/minute on T4 GPU.
grep -c "^>" output/seqs/*.fa # Should match backbone_count Ć num_seq_per_target
Ligand not recognized: Check HETATM format, verify ligand residue name Poor binding residues: Increase sampling around active site Missing contacts: Verify ligand coordinates in PDB
| Error | Cause | Fix |
|---|---|---|
RuntimeError: CUDA out of memory |
Long protein or large batch | Reduce batch_size |
KeyError: 'LIG' |
Ligand not found in PDB | Check HETATM records |
ValueError: no ligand atoms |
Empty ligand | Verify ligand has atoms in PDB |
Next: Structure prediction for validation ā protein-qc for filtering.