What is diffdock?
Predict small-molecule binding poses with DiffDock-L (Corso et al. 2023/2024, github.
xuzhougeng/wisp-science
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.
npx skills add https://github.com/xuzhougeng/wisp-science --skill "skills/diffdock"Quick start
Install it or open the source, trigger it with a clear task, then follow the source workflow.
npx skills add https://github.com/xuzhougeng/wisp-science --skill "skills/diffdock"Use diffdock to help me with: [describe your task]. Before you begin, tell me what input you need, the steps you will follow, and the expected output.
No structured workflow was detected; follow the original SKILL.md below.
Continue to the workflowDirect answers
Predict small-molecule binding poses with DiffDock-L (Corso et al. 2023/2024, github.
It is relevant to workflows involving Documentation.
SkillSignal detected this source-specific command: npx skills add https://github.com/xuzhougeng/wisp-science --skill "skills/diffdock". Inspect the repository and command before running it.
The upstream source does not declare a dedicated Agent platform.
Static analysis detected exec-script signals. Review the cited source lines before installing; these signals are not a security audit.
This page combines upstream documentation with deterministic repository, quality, and static-risk signals. It is not described as a manual test or security review.
SkillSignal brief
Predict small-molecule binding poses with DiffDock-L (Corso et al. 2023/2024, github.
Useful in these contexts
Core capabilities
Quality breakdown
Based on traceable docs and repository signals; stars are not treated as quality.
Compare before choosing
These links are selected from shared tasks, functions, stacks, platforms, and same-name variants. Compare the source owner, documentation, permissions, and maintenance signals.
DiffDock and DiffDock-L molecular docking. Use for protein-small-molecule pose prediction from PDB or sequence plus SMILES/SDF/MOL2, batch docking, virtual screening, and pose-confidence interpretation. Not for binding affinity prediction.
Query and download public cancer imaging data from NCI Imaging Data Commons using idc-index. Use for accessing large-scale radiology (CT, MR, PET) and pathology datasets for AI training or research. No authentication required. Query by metadata, visualize in browser, check licenses.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Use when working directly with the `esm` Python SDK, ESM3 or ESMC model IDs, Forge/Biohub inference clients, or ESMFold2 folding workflows.
ONLY when user asks for single-pass tech-stack detection or `agents/evidence/analysis/` write-up. Deep multi-pass audit → `universal-project-analysis`. Raw primitives → `project-analysis-core`.
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).
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.
inference.py loads --config default_inference_args.yaml after argparse
and replaces every key it finds, so passing --samples_per_complex 40 or
--model_dir ... on the command line is silently ignored if the same key sits
in the YAML. To change sampling depth or any other key the YAML defines, copy
the YAML, edit the copy, and point --config at it.
Before the first complex, DiffDock precomputes SO(3) and torus lookup tables. That step is silent on stderr, takes ~11 minutes, and may exhaust a small machine. Use a probed SSH context with at least 64 GiB RAM and precompute the tables while building the environment; do not assume a quiet Run has crashed.
--ligand works on the CLI by accident — use --ligand_descriptionThe upstream README shows --ligand, which only works because argparse
prefix-matches it to the real flag --ligand_description. That shortcut is
CLI-only: as a CSV column header or YAML key, ligand matches nothing and the
row is silently treated as having no ligand. Spell the flag and the column
header out in full.
Use python only for bounded interactive checks. For a long or GPU-backed
workload, require a selected and probed ssh:<alias> context and load
remote-compute-ssh. Put the documented invocation in a self-contained project
script, activate the remote environment explicitly, stage only small files with
input_paths, and make the command write to a known absolute remote result
path. Submit it with run_in_context and register that exact ssh:// path in
output_specs. Call monitor_run once when waiting is needed, get_run once
for a snapshot, or cancel_run to stop. Do not send a scheduler submission
through the SSH-direct runner.
| You see | It means / do this |
|---|---|
ValueError: not allowed to raise maximum limit at startup | setrlimit(NOFILE, 64000) exceeds the sandbox hard limit — sed the constant in inference.py to min(64000, rlimit[1]). |
| Silent SIGKILL a few minutes into the SO(3) precompute | Host RAM exhausted — see the gotcha above. |
python3: not found | You are on the upstream rbgcsail/diffdock image — that one runs from /home/appuser/DiffDock under micromamba. |
Next: rescore the rank1.sdf poses before ranking ligands against each
other — boltz's affinity head is the in-tree option — since the DiffDock
confidence head alone is not an affinity predictor.