| name | bio-ml-docking-rescoring |
| description | Performs ML-based protein-ligand pose prediction and scoring using DiffDock-L (diffusion-based), Boltz-1 / Boltz-2 (foundation model with affinity), Chai-1, AlphaFold3 ligand, EquiBind, TANKBind, NeuralPLexer, and hybrid workflows (DiffDock pose + GNINA rescore + PoseBusters QC). Explicit handling of when ML beats classical docking, when classical beats ML, the PB-invalid pose problem, and rescoring as the standard production hybrid. Use when modern docking is needed: foundation-model ligand-pose prediction, AI rescoring of classical poses, or scaffold-hopping in cross-docking scenarios. |
Version Compatibility
Reference examples tested with: DiffDock-L (Corso 2024), Boltz-1 1.0+, Boltz-2 (Wohlwend 2025), Chai-1 0.4+, AlphaFold3 (DeepMind), EquiBind, TANKBind, GNINA 1.1+, PoseBusters 0.6+.
Before using code patterns, verify installed versions match. If versions differ:
- Python:
pip show <package> then help(module.function) to check signatures
- CLI:
diffdock --version; boltz --version
If code throws ImportError, AttributeError, or TypeError, introspect the installed
package and adapt the example to match the actual API rather than retrying.
ML Docking and Rescoring
Use machine learning models for protein-ligand pose prediction and affinity scoring. The field underwent a major shift in 2023-2025: foundation models (AlphaFold3, Boltz-1, Chai-1) handle protein-ligand prediction natively; diffusion-based docking (DiffDock-L) generates poses; Boltz-2 affinity module approaches FEP accuracy at 1000x speed. Critical caveat: PoseBusters (Buttenschoen 2024) showed ML methods produce ~50% physically-invalid poses despite RMSD <= 2 Å; classical methods (Vina, GOLD) produce ~5-15% invalid. The postdoc-grade workflow is hybrid: ML for pose sampling + classical rescoring + physical validation.
For classical docking, see chemoinformatics/virtual-screening. For pose validation (PoseBusters), see chemoinformatics/pose-validation. For free-energy calculations (post-docking), see chemoinformatics/free-energy-calculations. For PROTAC ternary complex prediction, see chemoinformatics/protac-degraders.
ML Docking Method Taxonomy
| Tool | Approach | Speed | Strength | Fails when |
|---|
| DiffDock-L (Corso 2024) | Equivariant diffusion | 5s/lig GPU | Pose sampling for cross-dock | ~50% PB-invalid; OOD |
| Boltz-1 (Wohlwend 2024) | AlphaFold-style foundation | 10s GPU | Full complex prediction | DNA / RNA may be off |
| Boltz-2 (Wohlwend 2025) | Boltz-1 + affinity head | 10s GPU | Pose + affinity (Pearson 0.66 on 4-target FEP+ benchmark subset; RMSE ~1.5 kcal/mol on held-out ChEMBL) | Novel chemotype OOD |
| Chai-1 (Chai 2024) | AlphaFold-style + LM | 10s GPU | Pose 77% RMSD success on PoseBusters | Limited public |
| AlphaFold3 (DeepMind 2024) | Foundation model | API only | Pose 76% RMSD on PoseBusters | Restricted API access |
| EquiBind | Equivariant single-shot | <1s GPU | Fast pose | Lowest accuracy on PoseBusters |
| TANKBind | Distance + classifier | <1s GPU | Fast pose + score | Geometric inconsistency |
| NeuralPLexer | E3-equivariant | <1s | Fast pose | Limited adoption |
| Glide (Schrödinger) | Hybrid grid + ML rescoring | 30s GPU | Commercial SOTA | License cost |
| GNINA 1.1 CNN | Classical sampling + CNN scoring | 30s GPU | Best classical-hybrid | Limited to PDBbind chemotypes |
Decision: For pose prediction with structure prediction needed, Boltz-1 (or Boltz-2 if affinity also needed) is the modern open-source SOTA. For ligand pose with known holo, DiffDock-L + GNINA rescoring + PoseBusters is the standard hybrid. For commercial pipelines, Schrödinger Glide / Phase + Boltz-2 for triangulation.
Decision Tree by Scenario
| Scenario | Recommended workflow |
|---|
| Known holo, need fast pose | GNINA classical |
| Apo or AF-predicted protein, need pose | Boltz-1 or Chai-1 |
| Cross-docking + scaffold hopping | DiffDock-L + GNINA rescore + PoseBusters |
| Affinity prediction (replace FEP first-pass) | Boltz-2 affinity module |
| Ultralarge library (1M+) | Vina pre-filter → GNINA on top 1% → Boltz-2 on top 0.1% |
| Novel target family | Boltz-1 / Chai-1 (uses MSA flexibility) |
| Cofactor / metal binding | AlphaFold3 (best cofactor handling); validate with classical |
| PROTAC / bivalent | Boltz-1 / Chai-1 with multimer + constraints |
| Production with auditable poses | GNINA classical + Boltz-2 score |
PoseBusters Problem (Critical)
PoseBusters benchmark (Buttenschoen 2024) showed:
| Tool | RMSD <= 2 Å | PB-valid | RMSD <= 2 Å AND PB-valid |
|---|
| Vina (default) | 65% | 90% | 60% |
| GOLD | 70% | 88% | 65% |
| GNINA CNN | 73% | 85% | 65% |
| DiffDock-L | 55% | 40% | 25% |
| EquiBind | 30% | 25% | 10% |
| TANKBind | 45% | 35% | 20% |
| AlphaFold3 ligand | 76% | 65% | 55% |
| Chai-1 | 77% | 70% | 58% |
| Boltz-1 | 74% | 68% | 55% |
| Boltz-2 (with affinity) | 76% | 70% | 58% |
Conclusion: Modern foundation models match classical RMSD but with worse physical plausibility. Always require PB-valid + RMSD <= 2 Å.
DiffDock-L + GNINA Hybrid Workflow (Production Standard)
Goal: Use DiffDock-L for fast diverse pose sampling; GNINA CNN to rescore; PoseBusters to filter.
python -m inference \
--protein_path receptor.pdb \
--ligand_description smiles.smi \
--out_dir diffdock_out/ \
--samples_per_complex 40 \
--inference_steps 20
gnina -r receptor.pdb -l diffdock_out/poses.sdf \
--cnn_scoring rescore \
-o rescored.sdf.gz \
--score_only
posebusters bust \
--mol_pred rescored.sdf.gz \
--mol_cond receptor.pdb \
--config dock \
--output pb_results.csv
import pandas as pd
pb_df = pd.read_csv('pb_results.csv')
pb_df['pb_valid'] = pb_df.iloc[:, 4:].all(axis=1)
valid_top = pb_df[pb_df['pb_valid']].nlargest(5, 'gnina_score')
Boltz-2 for Affinity (Modern Alternative to FEP First-Pass)
Boltz-2 affinity validation:
- On 4 FEP+ benchmark targets: Pearson correlation 0.66
- 1000x faster than FEP+
- Best for hit triage; FEP for production
When to use Boltz-2: Triage 10k-1M ligands; identify top 100 for FEP follow-up.
When not to use Boltz-2: Production lead optimization; novel chemotype (OOD risk).
AlphaFold3 Ligand Prediction
AlphaFold3 (Abramson 2024, DeepMind) supports ligand-aware structure prediction with the publicly-available API (alphafold.ebi.ac.uk).
AlphaFold3 strengths:
- Best cofactor handling (ions, metals, prosthetic groups)
- Single pose per complex
- Public API access
AlphaFold3 limitations:
- Cannot dock without protein sequence (no template-based)
- Limited to single ligand per run via API
- Throughput restricted by API rate limits
Chai-1 (Open Alternative to AlphaFold3)
Chai-1 (Chai Discovery 2024) is an open-commercial alternative to AlphaFold3 with comparable performance.
Chai-1 advantages:
- 77% PoseBusters RMSD success (vs AlphaFold3 76%)
- Open commercial license (no API rate limits)
- Single-sequence mode (no MSA required, faster)
ML Docking Failure Modes by Tool
DiffDock-L -- PB-invalid poses
Trigger: Default DiffDock-L on any input.
Mechanism: Diffusion generates poses without physical-validity loss.
Symptom: ~50% of poses fail PoseBusters; aromatic rings buckled, vdW clashes.
Fix: Filter all output through PoseBusters; rerun with smaller diffusion temperature; use as pose sampler not final ranker.
EquiBind -- bond length distortion
Trigger: EquiBind single-shot prediction.
Mechanism: Equivariant NN doesn't preserve bond lengths.
Symptom: Poses have stretched/compressed bonds.
Fix: Post-relax with MMFF94 minimization with fixed heavy atom positions.
TANKBind -- vdW overlap with protein
Trigger: TANKBind on tight pocket.
Mechanism: Distance prediction not constrained to vdW exclusion.
Symptom: Ligand overlaps protein.
Fix: Constrained energy minimization with frozen protein.
Boltz-2 affinity -- novel chemotype error
Trigger: PROTAC, macrocycle, peptide.
Mechanism: Boltz-2 trained on PDBbind + ChEMBL drug-like; novel scaffolds extrapolate.
Symptom: Predicted affinity disagrees with FEP / experiment.
Fix: Use as triage; validate top 1% with FEP. Check applicability domain (Tanimoto to training).
AlphaFold3 / Boltz-1 -- novel target
Trigger: Target protein with limited MSA evidence.
Mechanism: Foundation models depend on MSA / homologs for confidence.
Symptom: Low pLDDT (<70); pose unreliable.
Fix: Use single-sequence mode (Chai-1); validate experimentally before downstream.
Hybrid workflow -- pose / score mismatch
Trigger: DiffDock pose + Boltz-2 affinity disagree.
Mechanism: Pose-prediction model and affinity-prediction model trained differently.
Symptom: Top pose by DiffDock has low Boltz-2 affinity.
Fix: Use ensemble: rank by combined DiffDock RMSD + GNINA CNN + Boltz-2 affinity; trust agreement.
Reconciliation: ML vs Classical
| Scenario | ML | Classical | Decision |
|---|
| Self-dock (holo available) | Match | Match | Classical (faster, simpler) |
| Cross-dock (apo, related target) | Better | Worse | ML (DiffDock + GNINA rescore) |
| Novel chemotype | Worse | Better | Classical |
| Novel target family | Better | Worse | ML (Boltz-1 with MSA) |
| Ultra-fast screening (1M+) | Slower per-ligand | Faster | Classical with ML rescore |
| Production validation | Hybrid required | Hybrid required | ML pose + classical rescore + PB |
Common Errors
| Symptom | Cause | Fix |
|---|
| DiffDock-L generates invalid poses | Default behavior | Filter via PoseBusters; expected |
| Boltz-1 prediction takes hours | CPU instead of GPU | Use NVIDIA GPU; check --device cuda |
| AlphaFold3 API quota exceeded | Free tier limit | Use Chai-1 open alternative |
| Chai-1 setup complex | Multi-dependency | Use Tamarind Bio web service |
| PoseBusters PB-invalid for known active | Edge case | Sometimes valid; manual review |
| GNINA rescore changes ranking | Different scoring | Expected; trust hybrid ranking |
| OOM on small molecule | Wrong batch size | Reduce batch_size=1 |
| Boltz-2 affinity all 0 | Input format wrong | Check SMILES validity; standardize first |
References
- Corso et al., ICLR (2023) -- DiffDock-L original.
- Buttenschoen et al., Chem. Sci. 15:3130 (2024) -- PoseBusters benchmark.
- Wohlwend et al., bioRxiv (2024) -- Boltz-1.
- Wohlwend et al., bioRxiv (2025) -- Boltz-2 with affinity module.
- Chai Discovery (2024) -- Chai-1 foundation model.
- Abramson et al., Nature 630:493 (2024) -- AlphaFold3 paper.
- McNutt et al., J. Cheminformatics 13:43 (2021) -- GNINA 1.0.
- Stärk H, Ganea OE, Pattanaik L, Barzilay R, Jaakkola T 2022 ICML -- EquiBind.
- Lu W et al 2022 NeurIPS -- TANKBind.
- (DL hybrid virtual-screening benchmark: consult current literature; the earlier "Yang 2024 J Chem Inf Model" citation could not be verified and has been removed.)
Related Skills
- chemoinformatics/virtual-screening - Classical docking foundation
- chemoinformatics/pose-validation - PoseBusters QC (mandatory after ML docking)
- chemoinformatics/free-energy-calculations - Boltz-2 as FEP first-pass
- chemoinformatics/molecular-io - Format conversion for tool inputs
- chemoinformatics/conformer-generation - Pre-conformer for some ML tools
- chemoinformatics/admet-prediction - ADMET on ML-docked hits
- structural-biology/modern-structure-prediction - Protein structure prediction
- structural-biology/structure-io - PDB / mmCIF handling