Pose validation: redocking & cross-docking
Load crystal ligands and docked poses, get symmetry-corrected RMSD, top-1, top-N and sampling success, and a cross-docking matrix.
Runs locally, nothing is uploaded · checked against spyrmsd and RDKit CalcRMS · v1.0, updated ·Docking pose validation
Before a docking protocol is trusted on new compounds, it should put known ligands back where the crystal structure has them. Load crystal ligands and docked poses, and this reports, per run and across runs, how often the top-ranked pose, any of the first few, or any pose at all lands within an RMSD cutoff of the crystal pose.
RMSD is corrected for symmetry and computed in place. A flipped phenyl ring or a swapped carboxylate oxygen is not an error, so every atom mapping that preserves the molecular graph is tried and the lowest RMSD is kept. Nothing is superposed: the receptor fixes the frame.
Load an example, or add crystal ligands and docked poses in the sidebar. Results update as you change the settings.
What is computed
For each docked pose, the heavy atoms of pose and crystal ligand are matched by element and connectivity only, so bond orders, charges, aromaticity and protonation written differently by different programs do not matter. The RMSD is minimised over every such matching (every graph isomorphism) without moving either structure. This is the definition used by spyrmsd1. A 2 Å cutoff is the usual success criterion, as in the CASF-2016 docking power test2 and PoseBusters3; both the cutoff and whether it is strict can be changed.
A run is one docked file, one ligand in one receptor. Top-1 success asks whether the pose the program ranked first is within the cutoff; top-N whether any of the first N is; sampling success whether any pose is. Sampling success without top-1 success points at the scoring function, not the search. Rates come with Wilson score 95 % intervals4, which stay inside 0–100 % and are honest for the small sets typical of protocol validation.
Cross-docking places each ligand in receptor structures it was not crystallised with. All structures must share one frame (superpose the receptors on the binding site first); if a receptor is loaded, the tool checks that each crystal ligand actually sits in it. The matrix separates cognate cells, the ligand in its own structure, from the rest.
Why symmetry correction matters
Without it, RMSD depends on the order in which atoms are written. In this page's test set, the benzamidine of 3PTB with its phenyl ring flipped and its amidine nitrogens swapped (the same pose, atoms relabelled) is 0 Å from the crystal pose by symmetry-corrected RMSD, 1.93 Å when atoms are paired in file order, and 1.07 Å by RDKit's CalcRMS with symmetrizeConjugatedTerminalGroups=False, which treats the C=N and C–N of an amidine, or the two oxygens of a carboxylate, as different atoms. Across the 239 test cases that setting gives a higher value than spyrmsd in 30, by up to 1.07 Å. Docking programs and file converters reorder atoms freely, so file-order RMSD (shown in the pose table as a diagnostic) is not a valid criterion.
Checks before the numbers
- Pose and reference must be the same molecule: different formulas, or the same formula with different connectivity, are reported instead of an RMSD.
- A 2D reference, a reference outside the receptor, or poses that only match after superposition (a frame mismatch) are flagged.
- Changed stereocentres, unrecognised score tags, files not sorted by their score and duplicate runs are reported.
- Score tags are read from Glide, GOLD, smina, Gnina and Vina output (SDF tags, Meeko export,
REMARK VINA RESULTin PDBQT); anything else numeric can be picked by hand.
Accuracy
On the 239 poses of the test set (every example pose, the Vina PDBQT output, and crystal ligands with permuted atom order, swapped symmetric groups, noise and a 15 Å shift), both engines agree with spyrmsd 0.9.0 and with RDKit 2026.09.1 CalcRMS(symmetrizeConjugatedTerminalGroups=True) to 3.6 × 10−15 Å. The built-in engine is an exact branch-and-bound search and needs no download; the RDKit.js engine (2026.9.1, BSD-3-Clause, a 2.5 MB download shared with BBBScope and fetched only when selected) enumerates matches with uniquify off and falls back to the exact search if maxMatches is reached, and says so.
Example data
Protein and ligand coordinates are from the RCSB Protein Data Bank (CC0 1.0): 3PTB, 1STP, 4DFR, 1HSG, 1OYT, 3ERT, 1IEP and 1HXB for redocking, and oestrogen receptor α structures 1GWR, 1ERR, 3ERT and 2IOG, superposed on 1GWR chain A by Cα, for cross-docking. Each ligand was re-embedded from its graph with RDKit (ETKDGv3, MMFF) so that no crystal coordinates reached the docking program, then docked with smina 2020.12.10 (autobox on the crystal ligand + 6 Å, exhaustiveness 16, 9 modes, seed 42). The two PDBQT files are AutoDock Vina runs on Meeko-prepared ligands. Receptor files are trimmed to residues within 8 Å of the ligands. Scripts and settings are in the site repository under scripts/posevalidation-data/.
References
- Meli R, Biggin PC. spyrmsd: symmetry-corrected RMSD calculations in Python. J Cheminform. 2020;12:49. doi:10.1186/s13321-020-00455-2
- Su M, Yang Q, Du Y, Feng G, Liu Z, Li Y, Wang R. Comparative assessment of scoring functions: the CASF-2016 update. J Chem Inf Model. 2019;59(2):895–913. doi:10.1021/acs.jcim.8b00545
- Buttenschoen M, Morris GM, Deane CM. PoseBusters: AI-based docking methods fail to generate physically valid poses or generalise to novel sequences. Chem Sci. 2024;15(9):3130–3139. doi:10.1039/D3SC04185A
- Wilson EB. Probable inference, the law of succession, and statistical inference. J Am Stat Assoc. 1927;22(158):209–212. doi:10.1080/01621459.1927.10502953
Results are for research and education and are not a substitute for checking against the primary literature. See the disclaimer. Found a bug? Report it.
The Run Log
One email when a pinned version changes, a tutorial is re-run, or a new tool ships.