# Diffdock

Predict small-molecule binding poses with DiffDock-L (Corso et al.

- Repository: https://github.com/aipoch/open-science (5414 stars)
- Category: Git and review
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add aipoch/open-science --skill diffdock -g -a claude-code -y`
Codex: `npx skills add aipoch/open-science --skill diffdock -g -a codex -y`
Cursor: `npx skills add aipoch/open-science --skill diffdock -g -a cursor -y`
Gemini CLI: `npx skills add aipoch/open-science --skill diffdock -g -a gemini-cli -y`

## Description

Predict small-molecule binding poses with DiffDock-L (Corso et al. 2023/2024, github.com/gcorso/DiffDock), blind diffusion docking that places a ligand into a protein pocket without a predefined search box and ranks the samples with a learned confidence model. Reach for this skill to dock a SMILES or SDF against a PDB, to generate ranked 3D poses for a small fragment library, or to get a starting pose for downstream rescoring. DiffDock predicts geometry, not affinity.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# DiffDock-L

DiffDock-L is a blind pose predictor: given a protein structure and a ligand,
it samples ligand placements over the whole surface with a diffusion model and
ranks them with a separately trained confidence head. The confidence score
correlates with pose correctness, not with binding free energy, DiffDock does
not predict whether or how tightly the ligand binds, so for hit triage you
still pair it with a scorer (GNINA, MM-GBSA) or with `boltz`'s affinity head.
For protein, protein and nucleic-acid co-folding, route to `boltz` or `chai1`.
Code and weights are MIT (github.com/gcorso/DiffDock).

## Running it

```bash
cd $DIFFDOCK_REPO   # a clone of github.com/gcorso/DiffDock
python3 -m inference \
  --config default_inference_args.yaml \
  --protein_path target.pdb \
  --ligand_description "COc1ccc(C#N)cc1" \
  --out_dir out
```

For more than one complex, give `--protein_ligand_csv batch.csv` instead of the
two single-complex flags; the CSV has four columns, `complex_name`,
`protein_path`, `ligand_description` (SMILES or an `.sdf`/`.mol2` path), and
`protein_sequence`. Leave `protein_path` empty and fill `protein_sequence` to
have DiffDock fold the receptor with ESMFold first; that path and a
larger-library screening recipe are in `references/workflows.md`.

Under `--out_dir/<complex_name>/` each sample is written as
`rank{N}_confidence{score}.sdf`, plus a copy of `rank1.sdf` for convenience.
The confidence value in the filename is a logit, so it is unbounded and can be
negative; among samples for the _same_ complex higher is better, but values are
not comparable across different complexes or ligands.

## The YAML config overwrites your CLI flags

The rest: https://github.com/aipoch/open-science/blob/HEAD/resources/skills/diffdock/SKILL.md
