diffdock · diff
v1.5 to v1.6
142 added, 406 removed. Audit A to A.
---
name: diffdock
- description: 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.
+ description: 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.
allowed-tools: Read Write Edit Bash Glob Grep
- compatibility: Requires the DiffDock repository, Python 3.9 environment from upstream environment.yml or the official Docker image, RDKit, PyTorch/PyG, and optional CUDA GPU acceleration. Current guidance targets DiffDock v1.1.3 / DiffDock-L.
+ compatibility: Requires the upstream DiffDock v1.1.3 repository/environment (Python 3.9.18, PyTorch 1.13.1, fair-esm 2.0.0, RDKit/PyG) or its Docker image. Network and disk space for model weights; CUDA required by upstream sequence-folding path. Bundled CSV helper needs pandas and RDKit.
license: MIT license
metadata:
- version: "1.5"
+ version: "1.6"
skill-author: K-Dense Inc.
+ last-reviewed: "2026-09-30"
---
- # DiffDock: Molecular Docking with Diffusion Models
-
- ## Overview
-
- DiffDock is a diffusion-based deep learning tool for molecular docking that predicts 3D binding poses of small molecule ligands to protein targets. It represents the state-of-the-art in computational docking, crucial for structure-based drug discovery and chemical biology.
-
- **Core Capabilities:**
- - Predict ligand binding poses with high accuracy using deep learning
- - Support protein structures (PDB files) or sequences (via ESMFold)
- - Process single complexes or batch virtual screening campaigns
- - Generate confidence scores to assess prediction reliability
- - Handle diverse ligand inputs (SMILES, SDF, MOL2)
-
- **Key Distinction:** DiffDock predicts **binding poses** (3D structure) and **confidence** (prediction certainty), NOT binding affinity (ΔG, Kd). Always combine with scoring functions (GNINA, MM/GBSA) for affinity assessment.
-
- ## When to Use This Skill
-
- This skill should be used when:
-
- - "Dock this ligand to a protein" or "predict binding pose"
- - "Run molecular docking" or "perform protein-ligand docking"
- - "Virtual screening" or "screen compound library"
- - "Where does this molecule bind?" or "predict binding site"
- - Structure-based drug design or lead optimization tasks
- - Tasks involving PDB files + SMILES strings or ligand structures
- - Batch docking of multiple protein-ligand pairs
-
- ## Installation and Environment Setup
-
- ### Check Environment Status
+ # DiffDock: protein-small-molecule docking
- Before proceeding with DiffDock tasks, verify the environment setup:
+ 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.
- ```bash
- # Use the provided setup checker
- python scripts/setup_check.py
- ```
+ ## Verified scope
- This script validates Python version, PyTorch with CUDA, PyTorch Geometric, RDKit, ESM, and other dependencies.
+ Targets the current [v1.1.3 release](https://github.com/gcorso/DiffDock/releases/tag/v1.1.3).
+ 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.
- ### Installation Options
+ ## Set up the upstream environment
- **Option 1: Conda (Recommended)**
```bash
- git clone https://github.com/gcorso/DiffDock.git
+ 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
```
- **Option 2: Docker**
+ 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:
+
```bash
docker pull rbgcsail/diffdock
docker run -it --gpus all --entrypoint /bin/bash rbgcsail/diffdock
micromamba activate diffdock
```
- **Important Notes:**
- - GPU strongly recommended (10-100x speedup vs CPU)
- - First run pre-computes SO(2)/SO(3) lookup tables (~2-5 minutes)
- - Model checkpoints (~500MB) download automatically if not present
- - Current upstream release is DiffDock v1.1.3; DiffDock-L is the default model line in `default_inference_args.yaml`
-
- ## Core Workflows
-
- ### Workflow 1: Single Protein-Ligand Docking
-
- **Use Case:** Dock one ligand to one protein target
-
- **Input Requirements:**
- - Protein: PDB file OR amino acid sequence
- - Ligand: SMILES string OR structure file (SDF/MOL2)
-
- **Command:**
- ```bash
- python -m inference \
- --config default_inference_args.yaml \
- --protein_path protein.pdb \
- --ligand_description "CC(=O)Oc1ccccc1C(=O)O" \
- --out_dir results/single_docking/
- ```
-
- **Alternative (protein sequence):**
- ```bash
- python -m inference \
- --config default_inference_args.yaml \
- --protein_sequence "MSKGEELFTGVVPILVELDGDVNGHKF..." \
- --ligand_description ligand.sdf \
- --out_dir results/sequence_docking/
- ```
-
- **Output Structure:**
- ```
- results/single_docking/
- └── complex_0/
- ├── rank1.sdf # Convenience copy of top-ranked pose
- ├── rank1_confidence0.87.sdf # Top-ranked pose with confidence in filename
- ├── rank2_confidence0.42.sdf # Second-ranked pose
- ├── ...
- └── rank10_confidence-1.23.sdf # 10th pose (default: 10 samples)
- ```
-
- Current `inference.py` registers `--ligand_description` for single-complex runs. Some upstream README text still says `--ligand`; use `--ligand_description` unless your local checkout explicitly supports a `--ligand` alias.
-
- ### Workflow 2: Batch Processing Multiple Complexes
-
- **Use Case:** Dock multiple ligands to proteins, virtual screening campaigns
-
- **Step 1: Prepare Batch CSV**
+ 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.
- Use the provided script to create or validate batch input:
+ Run this skill's checker from the **DiffDock checkout** using its absolute path:
```bash
- # Create template
- python scripts/prepare_batch_csv.py --create --output batch_input.csv
-
- # Validate existing CSV
- python scripts/prepare_batch_csv.py my_input.csv --validate
+ python /path/to/diffdock-skill/scripts/setup_check.py
```
- **CSV Format:**
- ```csv
- complex_name,protein_path,ligand_description,protein_sequence
- complex1,protein1.pdb,CC(=O)Oc1ccccc1C(=O)O,
- complex2,,COc1ccc(C#N)cc1,MSKGEELFT...
- complex3,protein3.pdb,ligand3.sdf,
- ```
+ 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.
- **Required Columns:**
- - `complex_name`: Unique identifier
- - `protein_path`: PDB file path (leave empty if using sequence)
- - `ligand_description`: SMILES string or ligand file path
- - `protein_sequence`: Amino acid sequence (leave empty if using PDB)
+ ## Prepare traceable inputs
- **Step 2: Run Batch Docking**
+ 1. 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.
+ 2. 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.
+ 3. 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.
+ 4. 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.
- ```bash
- python -m inference \
- --config default_inference_args.yaml \
- --protein_ligand_csv batch_input.csv \
- --out_dir results/batch/ \
- --batch_size 10
- ```
+ ## Single pair
- **For Large Virtual Screening (>100 compounds):**
+ Run from the upstream repository root, with real prepared inputs:
- Pre-compute protein embeddings for faster processing:
```bash
- # Pre-compute embeddings
- python datasets/esm_embedding_preparation.py \
- --protein_ligand_csv screening_input.csv \
- --out_file protein_embeddings.pt
-
- # Run with pre-computed embeddings
python -m inference \
--config default_inference_args.yaml \
- --protein_ligand_csv screening_input.csv \
- --esm_embeddings_path protein_embeddings.pt \
- --out_dir results/screening/
+ --protein_path protein.pdb \
+ --ligand_description "CC(=O)Oc1ccccc1C(=O)O" \
+ --out_dir results/run_001/ \
+ --loglevel INFO
```
- ### Workflow 3: Analyzing Results
-
- After docking completes, analyze confidence scores and rank predictions:
-
- ```bash
- # Analyze all results
- python scripts/analyze_results.py results/batch/
-
- # Show top 5 per complex
- python scripts/analyze_results.py results/batch/ --top 5
-
- # Filter by confidence threshold
- python scripts/analyze_results.py results/batch/ --threshold 0.0
+ 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.
- # Export to CSV
- python scripts/analyze_results.py results/batch/ --export summary.csv
+ Typical output (scores shown here are illustrative):
- # Show top 20 predictions across all complexes
- python scripts/analyze_results.py results/batch/ --best 20
+ ```text
+ results/run_001/complex_0/
+ rank1.sdf
+ rank1_confidence0.87.sdf
+ rank2_confidence0.42.sdf
+ ...
+ rank10_confidence-1.23.sdf
```
- The analysis script:
- - Parses confidence scores from all predictions
- - Classifies as High (>0), Moderate (-1.5 to 0), or Low (<-1.5)
- - Ranks predictions within and across complexes
- - Generates statistical summaries
- - Exports results to CSV for downstream analysis
-
- ## Confidence Score Interpretation
-
- **Understanding Scores:**
-
- | Score Range | Confidence Level | Interpretation |
- |------------|------------------|----------------|
- | **> 0** | High | Strong prediction, likely accurate |
- | **-1.5 to 0** | Moderate | Reasonable prediction, validate carefully |
- | **< -1.5** | Low | Uncertain prediction, requires validation |
-
- **Critical Notes:**
- 1. **Confidence ≠ Affinity**: High confidence means model certainty about structure, NOT strong binding
- 2. **Context Matters**: Adjust expectations for:
- - Large ligands (>500 Da): Lower confidence expected
- - Multiple protein chains: May decrease confidence
- - Novel protein families: May underperform
- 3. **Multiple Samples**: Review top 3-5 predictions, look for consensus; thresholds are rough and scores across ligands or receptor conformations are not a calibrated affinity ranking
-
- **For detailed guidance:** Read `references/confidence_and_limitations.md` using the Read tool
-
- ## Parameter Customization
+ `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.
- ### Using Custom Configuration
+ ## Batch and ensemble runs
- Create custom configuration for specific use cases:
+ CSV columns are `complex_name,protein_path,ligand_description,protein_sequence`.
+ Use unique explicit names; paths resolve relative to the **inference working
+ directory**, not the CSV's directory. Protein path takes precedence over sequence.
+ The helper deliberately rejects unsafe/duplicate/blank names, empty batches,
+ duplicate headers and malformed sequence strings before inference.
```bash
- # Copy template
- cp assets/custom_inference_config.yaml my_config.yaml
-
- # Edit parameters (see template for presets)
- # Then run with custom config
- python -m inference \
- --config my_config.yaml \
- --protein_ligand_csv input.csv \
- --out_dir results/
+ python /path/to/diffdock-skill/scripts/prepare_batch_csv.py --create --output batch.csv
+ # Replace all example rows with the real inputs; run validation from inference CWD.
+ python /path/to/diffdock-skill/scripts/prepare_batch_csv.py batch.csv --validate
+ python -m inference --config default_inference_args.yaml \
+ --protein_ligand_csv batch.csv --out_dir results/batch_001/ --batch_size 10
```
- ### Key Parameters to Adjust
-
- **Sampling Density:**
- - `samples_per_complex: 10` → Increase to 20-40 for difficult cases
- - More samples = better coverage but longer runtime
-
- **Inference Steps:**
- - `inference_steps: 20` → Increase to 25-30 for higher accuracy
- - More steps = potentially better quality but slower
-
- **Temperature Parameters (control diversity):**
- - `temp_sampling_tor: 7.04` → Increase for flexible ligands (8-10)
- - `temp_sampling_tor: 7.04` → Decrease for rigid ligands (5-6)
- - Higher temperature = more diverse poses
-
- **Presets Available in Template:**
- 1. High Accuracy: More samples + steps, lower temperature
- 2. Fast Screening: Fewer samples, faster
- 3. Flexible Ligands: Increased torsion temperature
- 4. Rigid Ligands: Decreased torsion temperature
-
- **For complete parameter reference:** Read `references/parameters_reference.md` using the Read tool
-
- ## Advanced Techniques
-
- ### Ensemble Docking (Protein Flexibility)
-
- For proteins with known flexibility, dock to multiple conformations:
-
- ```python
- # Create ensemble CSV
- import pandas as pd
-
- conformations = ["conf1.pdb", "conf2.pdb", "conf3.pdb"]
- ligand = "CC(=O)Oc1ccccc1C(=O)O"
-
- data = {
- "complex_name": [f"ensemble_{i}" for i in range(len(conformations))],
- "protein_path": conformations,
- "ligand_description": [ligand] * len(conformations),
- "protein_sequence": [""] * len(conformations)
- }
+ Validation checks paths and SMILES, not PDB/file chemistry or model suitability.
+ If validating elsewhere, `--base-dir` must equal the later inference working
+ directory; it does not rewrite the CSV. A SMILES slash or backslash encodes bond
+ stereochemistry and must not be treated as a path separator.
- pd.DataFrame(data).to_csv("ensemble_input.csv", index=False)
- ```
+ For an ensemble, provide one row per receptor conformation with distinct names.
+ Preserve each conformation's coordinates and identity. Confidence across structures
+ is not calibrated and cannot select a thermodynamically preferred state.
- Run docking with increased sampling:
- ```bash
- python -m inference \
- --config default_inference_args.yaml \
- --protein_ligand_csv ensemble_input.csv \
- --samples_per_complex 20 \
- --out_dir results/ensemble/
- ```
+ `batch_size` batches candidate poses within a complex; complexes are processed
+ sequentially. Arbitrary user-complex inference has **no** `--esm_embeddings_path`
+ or `--chain_cutoff` option. It creates ESM2 embeddings internally; benchmark dataset
+ preparation scripts are not a user-complex embedding cache. See the
+ [parameter contract](references/parameters_reference.md) before adapting examples.
- ### Integration with Scoring Functions
+ ## Change sampling safely
- DiffDock generates poses; combine with other tools for affinity:
+ **YAML overwrites matching CLI values.** Appending `--samples_per_complex 20` to the
+ default configuration command still uses 10. Copy the bundled configuration and edit
+ its existing values:
- **GNINA (Fast neural network scoring):**
```bash
- for pose in results/single_docking/complex_0/*confidence*.sdf; do
- gnina -r protein.pdb -l "$pose" --score_only
- done
+ cp /path/to/diffdock-skill/assets/custom_inference_config.yaml run_config.yaml
```
- **MM/GBSA (More accurate, slower):**
- Use AmberTools MMPBSA.py or gmx_MMPBSA after energy minimization
-
- **Free Energy Calculations (Most accurate):**
- Use OpenMM + OpenFE or GROMACS for FEP/TI calculations
-
- **Recommended Workflow:**
- 1. DiffDock → Generate poses with confidence scores
- 2. Visual inspection → Check structural plausibility
- 3. GNINA or MM/GBSA → Rescore and rank by affinity
- 4. Experimental validation → Biochemical assays
-
- ## Limitations and Scope
-
- **DiffDock IS Designed For:**
- - Small molecule ligands (typically 100-1000 Da)
- - Drug-like organic compounds
- - Small peptides require separate validation; no universal residue-count cutoff establishes reliability
- - Single or multi-chain proteins
-
- **DiffDock IS NOT Designed For:**
- - Large biomolecules (protein-protein docking) → Use DiffDock-PP or AlphaFold-Multimer
- - Large peptides (>20 residues) → Use alternative methods
- - Covalent docking → Use specialized covalent docking tools
- - Binding affinity prediction → Combine with scoring functions
- - Membrane proteins → Not specifically trained, use with caution
-
- **For complete limitations:** Read `references/confidence_and_limitations.md` using the Read tool
-
- ## Troubleshooting
-
- ### Common Issues
-
- **Issue: Low confidence scores across all predictions**
- - Cause: Large/unusual ligands, unclear binding site, protein flexibility
- - Solution: Increase `samples_per_complex` (20-40), try ensemble docking, validate protein structure
-
- **Issue: Out of memory errors**
- - Cause: GPU memory insufficient for batch size
- - Solution: Reduce `--batch_size 2` or process fewer complexes at once
-
- **Issue: Slow performance**
- - Cause: Running on CPU instead of GPU
- - Solution: Verify CUDA with `python -c "import torch; print(torch.cuda.is_available())"`, use GPU
-
- **Issue: Unrealistic binding poses**
- - Cause: Poor protein preparation, ligand too large, wrong binding site
- - Solution: Check protein for missing residues, remove far waters, consider specifying binding site
-
- **Issue: "Module not found" errors**
- - Cause: Missing dependencies or wrong environment
- - Solution: Run `python scripts/setup_check.py` to diagnose
-
- ### Performance Optimization
-
- **For Best Results:**
- 1. Use GPU (essential for practical use)
- 2. Pre-compute ESM embeddings for repeated protein use
- 3. Batch process multiple complexes together
- 4. Start with default parameters, then tune if needed
- 5. Validate protein structures (resolve missing residues)
- 6. Use canonical SMILES for ligands
-
- ## Graphical User Interface
+ For example, change `samples_per_complex: 10` to `samples_per_complex: 20` in that
+ file, then run with `--config run_config.yaml`. Keep the released schedule and
+ coupled temperatures unless testing a justified alternative. More steps or a higher
+ torsion temperature do not guarantee better accuracy. Historical keys present in
+ upstream YAML can be accepted but unused; the bundled template removes those keys.
- For interactive use, launch the web interface:
+ ## Inspect completion and poses
```bash
- python app/main.py
- # Navigate to http://localhost:7860
+ python /path/to/diffdock-skill/scripts/analyze_results.py results/batch_001/ --top 5
+ python /path/to/diffdock-skill/scripts/analyze_results.py results/batch_001/ --export poses.csv
```
- Or use the online demo without installation:
- - https://huggingface.co/spaces/reginabarzilaygroup/DiffDock-Web
-
- ## Resources
-
- ### Helper Scripts (`scripts/`)
-
- **`prepare_batch_csv.py`**: Create and validate batch input CSV files
- - Create templates with example entries
- - Validate file paths and SMILES strings
- - Check for required columns and format issues
-
- **`analyze_results.py`**: Analyze confidence scores and rank predictions
- - Parse results from single or batch runs
- - Generate statistical summaries
- - Export to CSV for downstream analysis
- - Identify top predictions across complexes
-
- **`setup_check.py`**: Verify DiffDock environment setup
- - Check Python version and dependencies
- - Verify PyTorch and CUDA availability
- - Test RDKit and PyTorch Geometric installation
- - Provide installation instructions if needed
-
- ### Reference Documentation (`references/`)
-
- **`parameters_reference.md`**: Complete parameter documentation
- - All command-line options and configuration parameters
- - Default values and acceptable ranges
- - Temperature parameters for controlling diversity
- - Model checkpoint locations and version flags
-
- Read this file when users need:
- - Detailed parameter explanations
- - Fine-tuning guidance for specific systems
- - Alternative sampling strategies
-
- **`confidence_and_limitations.md`**: Confidence score interpretation and tool limitations
- - Detailed confidence score interpretation
- - When to trust predictions
- - Scope and limitations of DiffDock
- - Integration with complementary tools
- - Troubleshooting prediction quality
-
- Read this file when users need:
- - Help interpreting confidence scores
- - Understanding when NOT to use DiffDock
- - Guidance on combining with other tools
- - Validation strategies
-
- **`workflows_examples.md`**: Comprehensive workflow examples
- - Detailed installation instructions
- - Step-by-step examples for all workflows
- - Advanced integration patterns
- - Troubleshooting common issues
- - Best practices and optimization tips
-
- Read this file when users need:
- - Complete workflow examples with code
- - Integration with GNINA, OpenMM, or other tools
- - Virtual screening workflows
- - Ensemble docking procedures
-
- ### Assets (`assets/`)
+ The helper deduplicates the `rank1.sdf` convenience copy and rejects multiple scored
+ files with one rank (possible stale-run contamination). It inventories filenames;
+ it does not validate SDF chemistry. `--top`/`--threshold` filter printed summaries;
+ CSV export contains every parsed pose. `--best` sorts cross-complex scores for triage
+ only. Match output IDs and pose counts to the input manifest and inspect upstream
+ failed/skipped counts: process exit alone does not prove every complex succeeded.
- **`batch_template.csv`**: Template for batch processing
- - Pre-formatted CSV with required columns
- - Example entries showing different input types
- - Ready to customize with actual data
+ Use upstream's rough confidence bands, with the helper's explicit boundary convention:
- **`custom_inference_config.yaml`**: Configuration template
- - Annotated YAML with all parameters
- - Four preset configurations for common use cases
- - Detailed comments explaining each parameter
- - Ready to customize and use
+ | Band | Helper range | Interpretation |
+ | --- | --- | --- |
+ | High | `c > 0` | Higher model confidence; independent validation still required |
+ | Moderate | `-1.5 < c <= 0` | Uncertain pose hypothesis |
+ | Low | `c <= -1.5` | Low confidence; not evidence of no binding |
- ## Best Practices
+ The README omits equality cases; these helper boundaries are conventions, not
+ validated cutoffs. Do not convert these values to probabilities or affinity scores.
- 1. **Always verify environment** with `setup_check.py` before starting large jobs
- 2. **Validate batch CSVs** with `prepare_batch_csv.py` to catch errors early
- 3. **Start with defaults** then tune parameters based on system-specific needs
- 4. **Generate multiple samples** (10-40) for robust predictions
- 5. **Validate pose chemistry and geometry** (atom identity, stereochemistry, bond geometry, clashes) alongside visual inspection; retain raw and refined poses
- 6. **Combine with scoring** functions for affinity assessment
- 7. **Use confidence scores** for initial ranking, not final decisions
- 8. **Pre-compute embeddings** for virtual screening campaigns
- 9. **Document parameters** used for reproducibility
- 10. **Validate results** experimentally when possible
+ For each selected pose, check molecular identity, stereochemistry, bond geometry,
+ planarity, internal strain and receptor clashes (for example with PoseBusters), then
+ inspect interactions and alternative pockets. Retain raw and refined coordinates.
+ Relaxation changes the artifact and requires another validation pass. External GNINA,
+ MM/GBSA, or free-energy workflows need their own preparation and uncertainty checks;
+ none automatically establishes binding affinity or experimental activity.
- ## Citations
+ ## Limits and troubleshooting
- When using DiffDock, cite the appropriate papers:
+ - Small-molecule docking is the validated scope. Large biomolecules, covalent bonds,
+ coordination chemistry and flexible receptor rearrangements require other treatment;
+ no universal mass/residue cutoff establishes applicability.
+ - CUDA OOM: reduce `batch_size`; this does not reduce the resident ESM model or receptor
+ graph size. Sequence folding has a separate memory requirement.
+ - Poor/low-confidence poses: inspect receptor preparation, ligand state and alternate
+ conformations before increasing samples. More sampling cannot repair wrong chemistry.
+ - Do not automatically delete cofactors/waters, fragment a ligand, or crop a target to
+ improve a score; those change the scientific problem.
- - **DiffDock-L (current default model):** Corso et al. (2024) "Deep Confident Steps to New Pockets: Strategies for Docking Generalization", ICLR 2024, arXiv:2402.18396
- - **Original DiffDock:** Corso et al. (2023) "DiffDock: Diffusion Steps, Twists, and Turns for Molecular Docking", ICLR 2023, arXiv:2210.01776
+ [Workflow recipes](references/workflows_examples.md) cover input generation and
+ separate GNINA scoring. [Confidence and limitations](references/confidence_and_limitations.md)
+ covers independent validation. The [upstream UI](https://github.com/gcorso/DiffDock/tree/v1.1.3/app)
+ runs with `python app/main.py`; its PDB/ligand upload interface is not a documented REST
+ API. A [public demo](https://huggingface.co/spaces/reginabarzilaygroup/DiffDock-Web) exists;
+ availability and hosted model identity must be checked before use.
- ## Additional Resources
+ ## Method citations
- - **GitHub Repository**: https://github.com/gcorso/DiffDock
- - **Online Demo**: https://huggingface.co/spaces/reginabarzilaygroup/DiffDock-Web
- - **DiffDock-L Paper**: https://arxiv.org/abs/2402.18396
- - **Original Paper**: https://arxiv.org/abs/2210.01776
+ - Corso et al., [DiffDock: Diffusion Steps, Twists, and Turns for Molecular Docking](https://arxiv.org/abs/2210.01776), ICLR 2023.
+ - Corso et al., [Deep Confident Steps to New Pockets: Strategies for Docking Generalization](https://arxiv.org/abs/2402.18396), ICLR 2024 (DiffDock-L).
## Citing Scientific Agent Skills
This skill is part of Scientific Agent Skills by K-Dense. If it materially contributed to a
manuscript, report, presentation, or code release, add the paper to the references or
software section and tell the user you did so:
> Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent
> Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065.
> https://doi.org/10.48550/arXiv.2609.00065
Always cite the current version. The DOI and https://arxiv.org/abs/2609.00065 resolve to the
latest arXiv version, so never append a version suffix such as `v1`. When network access is
available, fetch https://arxiv.org/abs/2609.00065 (or
http://export.arxiv.org/api/query?id_list=2609.00065) before writing the reference and take
the author list, year, and version from that record. If the record lists a journal reference
or publisher DOI, cite the published version instead.