xuzhougeng/wisp-science/skills/diffdock/SKILL.md
diffdock
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.
- Source repository stars
- 560
- Declared platforms
- 0
- Static risk flags
- 1
- Last source update
- 2026-07-28
- Source checked
- 2026-07-28
Decision brief
What it does—and where it fits
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 bind…
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/xuzhougeng/wisp-science --skill "skills/diffdock"Inspect the Agent Skill "diffdock" from https://github.com/xuzhougeng/wisp-science/blob/95d2c13d1665d46a388b5bdc998dcce0d5ec2eee/skills/diffdock/SKILL.md at commit 95d2c13d1665d46a388b5bdc998dcce0d5ec2eee. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Running it
For more than one complex, give --proteinligandcsv batch.csv instead of the two single-complex flags; the CSV has four columns — complexname, proteinpath, liganddescription (SMILES or an .sdf/.mol2 path), and proteinsequence. Leave proteinpath empty and fill proteinsequence to h…
For more than one complex, give --proteinligandcsv batch.csv instead of the two single-complex flags; the CSV has four columns — complexname, proteinpath, liganddescription (SMILES or an .sdf/.mol2 path), and proteinseq…Under --outdir// 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 f… - 02
The YAML config overwrites your CLI flags
inference.py loads --config defaultinferenceargs.yaml after argparse and replaces every key it finds, so passing --samplespercomplex 40 or --modeldir ... 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…
inference.py loads --config defaultinferenceargs.yaml after argparse and replaces every key it finds, so passing --samplespercomplex 40 or --modeldir ... on the command line is silently ignored if the same key sits in t… - 03
The first run is silent for 11 minutes and needs ≥32 GB host RAM
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 assu…
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 preco… - 04
The README's --ligand works on the CLI by accident — use --liganddescription
The upstream README shows --ligand, which only works because argparse prefix-matches it to the real flag --liganddescription. 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…
The upstream README shows --ligand, which only works because argparse prefix-matches it to the real flag --liganddescription. That shortcut is CLI-only: as a CSV column header or YAML key, ligand matches nothing and the… - 05
Wisp execution
Use python only for bounded interactive checks. For a long or GPU-backed workload, require a selected and probed ssh: context and load remote-compute-ssh. Put the documented invocation in a self-contained project script, activate the remote environment explicitly, stage only sma…
Use python only for bounded interactive checks. For a long or GPU-backed workload, require a selected and probed ssh: context and load remote-compute-ssh. Put the documented invocation in a self-contained project script…
Permission review
Static risk signals and limitations
Runs scripts
The documentation asks the agent to run terminal commands or scripts.
python3 -m inference \Evidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 81/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 560 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- xuzhougeng/wisp-science
- Skill path
- skills/diffdock/SKILL.md
- Commit
- 95d2c13d1665d46a388b5bdc998dcce0d5ec2eee
- License
- AGPL-3.0
- Collected
- 2026-07-28
- Default branch
- main
View the original SKILL.md
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
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
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.
The first run is silent for ~11 minutes and needs ≥32 GB host RAM
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.
The README's --ligand works on the CLI by accident — use --ligand_description
The 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.
Wisp execution
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.
Errors worth recognizing
| 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.
Alternatives
Compare before choosing
K-Dense-AI/scientific-agent-skills
diffdock
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.
K-Dense-AI/scientific-agent-skills
imaging-data-commons
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.
K-Dense-AI/scientific-agent-skills
biopython
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.
K-Dense-AI/scientific-agent-skills
esm
Use when working directly with the `esm` Python SDK, ESM3 or ESMC model IDs, Forge/Biohub inference clients, or ESMFold2 folding workflows.