diffdock
Helps your agent predict how small molecules bind to proteins. It's useful for drug discovery by showing where molecules might fit.
What it does
DiffDock helps predict how small molecules (like drugs) fit into proteins. It generates possible positions and ranks them.
When to use it
- ✓To see how a potential drug might bind to a protein.
- ✓To test many molecules against a protein at once.
- ✓To analyze different shapes of the same protein.
Example of what to ask your AI
“Predict the binding pose of the molecule 'CC(=O)Oc1ccccc1C(=O)O' to the protein 'protein.pdb'.”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
You provide the protein structure and the molecule's description. The program calculates possible ways they fit together and shows you the most likely results.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add K-Dense-AI/scientific-agent-skills --skill diffdockOr download just the file:
curl -L https://raw.githubusercontent.com/K-Dense-AI/scientific-agent-skills/main/skills/diffdock/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
DiffDock: protein-small-molecule docking
DiffDock-L generates candidate ligand poses and ranks them by model confidence. Confidence is neither a measured probability of correctness nor binding affinity. Use this skill for one pair, batches, or separate receptor conformations; treat library-wide confidence sorting as pose triage, not hit identification.
Verified scope
Targets the current v1.1.3 release.
Released source and current main's identical inference.py were checked on
2026-09-30. Bundled helpers were tested on tiny synthetic inputs; pretrained docking,
ESMFold, CUDA, Docker, GNINA, and hosted-demo execution were not run in this
review. Commands requiring those components are source-verified recipes, not
successful end-to-end demonstrations.
Set up the upstream environment
git clone --branch v1.1.3 --depth 1 https://github.com/gcorso/DiffDock.git
cd DiffDock
conda env create --file environment.yml
conda activate diffdock
The upstream environment pins Python 3.9.18, CUDA 11.7 Torch/PyG wheels and old
scientific dependencies. Do not substitute current torch or the unrelated PyPI
esm package for fair-esm. The published CUDA environment is not a macOS-native
installation recipe. Follow upstream Docker instructions if suitable:
docker pull rbgcsail/diffdock
docker run -it --gpus all --entrypoint /bin/bash rbgcsail/diffdock
micromamba activate diffdock
Record the image digest: its unversioned tag need not equal the checked source.
PDB-based inference has a CPU path; sequence folding calls .cuda() unconditionally.
ESM2 embeddings are needed even for PDB inputs. First use can download docking,
ESM2 and (for sequence inputs) ESMFold weights and build SO(2)/SO(3) tables. Budget
storage and memory for all components; do not assume a single small checkpoint.
Run this skill's checker from the DiffDock checkout using its absolute path:
python /path/to/diffdock-skill/scripts/setup_check.py
It checks imports/files, not successful model loading, scientific validity, or full version compatibility. An existing but incomplete score-model directory suppresses upstream's automatic download; inspect checkpoint files when restoring a partial run.
Prepare traceable inputs
- Select the biological assembly/chains and a defensible protonation/tautomer state. Record receptor and ligand identifiers, file hashes, preparation choices, source coordinates, software versions, and intended stereochemistry. Missing atoms, waters, cofactors, metal coordination, and induced fit need explicit judgment.
- Use PDB for the receptor or a complete amino-acid sequence. No ellipses. Upstream ESM2 truncates each chain at 1022 residues; longer chains can cause graph/embedding mismatches. Do not silently trim a biological target to make a run pass.
- Use a SMILES or ligand file. Source readers support
.sdf,.mol2,.pdb,.pdbqt; SDF input uses its first record. Existing ligand coordinates are discarded and a conformer regenerated. Inputting a pose does not restrain docking. - Use a fresh output directory for each run. Reusing one can leave old rank files from failed or differently sampled jobs. Preserve the expected input-ID manifest.
Single pair
Run from the upstream repository root, with real prepared inputs:
python -m inference \
--config default_inference_args.yaml \
--protein_path protein.pdb \
--ligand_description "CC(=O)Oc1ccccc1C(=O)O" \
--out_dir results/run_001/ \
--loglevel INFO
For sequence input, replace --protein_path with --protein_sequence and a full
sequence; this adds ESMFold/CUDA requirements and structural uncertainty.
Use the registered name --ligand_description, not argparse's implicit abbreviation
--ligand from the README.
Typical output (scores shown here are illustrative):
results/run_001/complex_0/
rank1.sdf
rank1_confidence0.87.sdf
rank2_confidence0.42.sdf
...
rank10_confidence-1.23.sdf
rank1.sdf duplicates the top pose. Filename confidence is rounded to two decimals;
upstream rank reflects the original model score. --save_visualisation additionally
writes rank<N>_reverseprocess.pdb, not the SDFs themselves.
Batch and ensemble runs
CSV columns are complex_name,protein_path,ligand_description,protein_sequence.
Use unique explicit names; paths resolve relative to the **inference working
…
FAQ
What is a 'pose'?
A pose is the three-dimensional position and orientation of a molecule in space.
Is the result a guarantee that the molecule will bind?
No, the result shows possible positions and a 'confidence' score from the model, which is not a guarantee of actual binding or affinity.
Can I use amino acid sequences instead of protein files?
Yes, the program can use amino acid sequences to predict the protein structure and then calculate the binding.
Details
Original description by the author
Predicts protein-small-molecule binding poses with DiffDock and DiffDock-L from PDB or sequence plus SMILES/SDF/MOL2. Covers batch docking, pose triage, confidence interpretation, and validation. Use for molecular docking and virtual-screening pose generation, not binding-affinity prediction.
Popularity
- GitHub stars
- 51k
- Ranking position
- #1861
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
13c-metabolic-flux
Estimates metabolic fluxes using carbon-13 isotope tracing data. It is useful for analyzing cellular metabolism and biochemical pathways.
K-Dense-AI/scientific-agent-skills
adaptyv
Designs protein characterization experiments using the Adaptyv API. It helps estimate costs, submit sequences, and monitor lab results.
K-Dense-AI/scientific-agent-skills
aeon
Performs machine learning tasks on time series data. It is useful for classifying, forecasting, detecting anomalies, and finding patterns in sequential data.
K-Dense-AI/scientific-agent-skills
alphagenome
Looks up precomputed genomic effects for genetic variants. It provides scores and explanations to understand the impact of variants on the genome.
K-Dense-AI/scientific-agent-skills
Similar skills
agent-architecture-audit
Makes your agent check if everything is working correctly. It finds and fixes problems in AI systems, ensuring they perform as expected.
affaan-m/ECC
agent-eval
Helps your agent compare different AI coding tools. It measures which one is faster, cheaper, and more reliable for specific tasks.
affaan-m/ECC
agent-harness-construction
Makes your agent better understand how to perform tasks. It optimizes the tools and instructions the agent uses to increase its chances of success.
affaan-m/ECC