Diffdock
Skills for life science foundation models — structured knowledge bundles that let AI coding agents work with ESM, AlphaFold, RFdiffusion, DiffDock, scGPT, and more out of the box.
npx -y skills add naity/FM4Life --skill diffdockAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Skill for protein-ligand docking with DiffDock, a diffusion model that generates 3D binding poses from protein structure and ligand SMILES. Use this skill when a user wants to dock a small molecule to a protein, predict binding poses, run blind docking (no pocket specification required), or process batches of protein-ligand complexes. Also trigger when the user mentions DiffDock, molecular docking, binding pose prediction, or protein-ligand complex prediction.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
6.2 KB, as published. Nobody here has run it
DiffDock: Diffusion-Based Molecular Docking
Overview
DiffDock predicts 3D protein-ligand binding poses using a diffusion model. Given a protein structure and a ligand SMILES string, it generates multiple candidate poses ranked by a confidence score.
Key properties:
- Blind docking — no binding site specification required; searches entire protein surface
- Diffusion model — generates diverse poses via iterative denoising (score-based diffusion)
- SE(3)-equivariant — architecture respects 3D symmetry (rotations, translations)
- Confidence model — separate network ranks poses by predicted accuracy (not binding affinity)
- Current default: DiffDock-L (ICLR 2024) — improved generalization over original (ICLR 2023)
Important distinction: The confidence score predicts pose quality (RMSD to true binding pose), not binding affinity. High confidence ≠ strong binder.
Installation
DiffDock requires a conda environment — no pip-only install available:
git clone https://github.com/gcorso/DiffDock.git
cd DiffDock
conda env create --file environment.yml
conda activate diffdock
Or with Docker (includes GPU support):
docker pull rbgcsail/diffdock
docker run -it --gpus all --entrypoint /bin/bash rbgcsail/diffdock
micromamba activate diffdock
Key dependencies: PyTorch 1.13 + CUDA 11.7, torch-geometric 2.2, e3nn 0.5.1, RDKit, fair-esm (ESM-2 for protein embeddings), pytorch-lightning.
First run: precomputes SO(2)/SO(3) distribution caches (~2 min). Not repeated.
Core Usage
Single complex
cd DiffDock
python -m inference \
--config default_inference_args.yaml \
--protein_path protein.pdb \
--ligand_description "COc(cc1)ccc1C#N" \
--out_dir results/my_docking
From protein sequence (ESMFold folds it automatically)
python -m inference \
--config default_inference_args.yaml \
--protein_sequence "MVHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPPVQAAYQKVVAGVANALAHKYH" \
--ligand_description "CC(=O)Nc1ccc(O)cc1" \
--out_dir results/my_docking
Batch processing (CSV input)
python -m inference \
--config default_inference_args.yaml \
--protein_ligand_csv complexes.csv \
--out_dir results/batch
CSV format (complexes.csv):
complex_name,protein_path,ligand_description,protein_sequence
complex_A,proteins/target_A.pdb,CC(=O)Nc1ccc(O)cc1,
complex_B,proteins/target_B.pdb,data/ligand_B.sdf,
complex_C,,COc1ccc(C#N)cc1,MVHLTPEEKSAVTALWG...
Ligand from SDF file
python -m inference \
--config default_inference_args.yaml \
--protein_path protein.pdb \
--ligand_description ligand.sdf \
--out_dir results/my_docking
Key Parameters
| Parameter | Default | Description |
|---|---|---|
--samples_per_complex | 10 | Poses to generate per complex |
--inference_steps | 20 | Denoising steps (fewer = faster, less refined) |
--batch_size | 10 | Parallel complexes (reduce if OOM) |
--no_final_step_noise | True | No noise in final step (better quality) |
--save_visualisation | False | Save reverse-diffusion trajectory PDB |
Speed vs quality:
| Mode | --inference_steps | --samples_per_complex | --batch_size |
|---|---|---|---|
| Fast screening | 5 | 5 | 20 |
| Default | 20 | 10 | 10 |
| High quality | 40 | 20 | 5 |
GPU: ~2–5 sec/pose. CPU: ~30–60 sec/pose.
Output Format
results/my_docking/
└── complex_0/
├── rank1_confidence0.43.sdf ← best pose, high confidence
├── rank2_confidence-0.12.sdf ← 2nd best, moderate
├── rank3_confidence-1.23.sdf ← 3rd, low confidence
└── ... ← up to samples_per_complex
- Files are SDF format — open directly in PyMOL, ChimeraX, or RDKit
- Ranked by confidence score (rank1 = highest)
- Confidence score is in the filename:
rank{N}_confidence{score}.sdf
Confidence Score Interpretation
| Score | Confidence | Meaning |
|---|---|---|
> 0 | High | Model is confident the pose is accurate |
-1.5 to 0 | Moderate | Plausible but uncertain |
< -1.5 | Low | Unreliable; treat with caution |
Caveats:
- Score predicts RMSD accuracy, not binding affinity
- Thresholds shift downward for large ligands, apo proteins, or unusual binding sites
- Always inspect top poses visually — confidence is a heuristic, not ground truth
- For affinity estimation, follow up with MM-PBSA, GNINA, or FEP
Practical Notes
- No pocket required — DiffDock docks to the entire protein surface
- One ligand at a time — run separately for each ligand; does not support co-docking
- Rigid protein — assumes fixed backbone; for flexibility, relax the pose with MD
- Clean PDB — remove other ligands and waters from the binding site before docking
- OOM — reduce
--batch_sizeto 1 or 5 for large proteins (>1000 residues) - Validate setup — first run on a known PDB complex with its co-crystal ligand; check RMSD
Scripts
scripts/dock.py— wrapper that runs DiffDock and parses results; seescripts/dock.py --help
Resources
- GitHub: https://github.com/gcorso/DiffDock
- DiffDock (original): Corso et al., ICLR 2023 — https://arxiv.org/abs/2210.01776
- DiffDock-L: Corso et al., ICLR 2024 — https://arxiv.org/abs/2402.18396
References
references/cli-reference.md— full CLI parameter reference, output format details, confidence model, batch CSV format, DiffDock-L vs original