Marc C. Deller, D.Phil.
GOBSMACKED
marc@marcdeller.com

What GOBSMACKED does

GOBSMACKED folds, docks, relaxes and annotates a protein-ligand complex, then checks the result against the experimental structure. The heavy compute happens on your own GPU, in a bundle this server writes; the annotation and the verification happen here.

Prepare · droplet, CPU only Fetch UniProt, RCSB, AlphaFold DB, ESM Atlas Annotate InterPro, KLIFS, GPCRdb Pocket Mol*, gemmi Reference RCSB search, RDKit Tanimoto run_bundle.tar.gz Run · your machine, GPU, pixi Fold ESMFold, or Boltz-2 co-fold Prep PDBFixer, RDKit Dock PandaDock search Rank Vinardo re-scores the poses MD OpenMM, OpenFF Affinity Boltz-2, optional Summarise MDTraj results.tar.gz Analyze · droplet, CPU only Superpose biotite, tmtools Interactions PLIP, PandaMap Scorecard thresholds, gate Mode KLIFS, GPCRdb Dynamics MDTraj summary

Why the superposition is on pocket Ca atoms

A predicted model can be excellent at the binding site and several angstroms out at a disordered terminus. Superposing whole chains spreads that error into the pocket and inflates the ligand RMSD, which is the one number this app exists to report honestly. Everything geometric here is measured after fitting the residues within 8 A of the reference ligand, and the whole-chain TM-score is reported separately as context.

What the grades mean

MetricABCDF
Ligand RMSD, best of pose 1 and MD-final≤ 1.0 A≤ 2.0≤ 3.0≤ 4.0> 4.0
Pocket Ca RMSD, MD-final≤ 0.8≤ 1.2≤ 1.8≤ 2.5> 2.5
chi1 agreement, MD-final≥ 0.85≥ 0.70≥ 0.55≥ 0.40< 0.40
PLIP Jaccard, best of pose 1 and MD-final≥ 0.75≥ 0.55≥ 0.40≥ 0.25< 0.25
MD stability: ligand drift, last 200 ps minus first 200 ps≤ 0.5 A≤ 1.0≤ 1.5≤ 2.5> 2.5
Pose validity (clashes, bond lengths, chirality, box)passfail

The composite GOBSMACK score is the weighted mean of those grades (ligand RMSD 34, PLIP overlap 22, pocket Ca 17, chi1 11, stability 11, validity 5). A metric that could not be measured drops out and the remaining weights are renormalised, which is stated on the card. A validity failure caps the composite at 40. A run with no reference structure gets no composite at all: there is nothing to verify it against.

Co-folding the receptor

Panel 1 offers to co-fold the receptor with your ligand before docking: Boltz-2 folds the protein and the ligand together, the predicted ligand pose is then discarded, and the ligand is docked again into the pocket that was built around it.

It is offered because it was measured. Five runs of one campaign differing only in the structure docking started from — a crystal, that crystal cross-docked, an AlphaFold model, an ESMFold model and a co-folded model — produced top-ranked poses of 8.77, 4.29, 7.73, 8.09 and 1.40 Å. The co-folded one was the only run whose first-ranked pose was the right one, and the only one to grade B.

The ligand is thrown away deliberately, and this is the part worth understanding. In the same experiment the co-folded pocket was the closest to the crystal of any starting structure, while Boltz-2's own ligand placement was 4.5 to 4.8 Å out. Its protein is better than its pose, so the protein is kept and the pose is re-derived. The discarded prediction is written into the archive as cofold/cofold_ligand.sdf, so it can be looked at rather than taken on trust.

It costs about fifteen minutes and needs the GPU machine, and it shares its sequence alignment with the affinity stage so the alignment server is asked once per target rather than twice. If it fails for any reason — no SMILES, no structure returned, no protein chain in the output — the run falls back to ESMFold and says so, because an hour spent with nothing to dock is the worse outcome.

Why the predicted affinity is not in the score

The affinity stage reports a predicted pIC50 for the docked pose and the relaxed one. It is shown beside the GOBSMACK score and takes no part in it, and that is now a measured decision rather than a principle.

Every other graded metric has a crystal structure to be right or wrong about. A predicted affinity has none, so it was tested the only way available: against pose quality. Across five runs whose top-ranked poses spanned 1.40 to 8.77 Å it returned pIC50 6.44 to 6.66, and the run with the worst pose scored the highest affinity. Within a single run it does no better: scored on all ten poses of the self-docking control, spanning 1.51 to 8.77 Å, it ranked the 8.30 Å pose first and gave the correct 1.51 Å pose the same value to three decimal places as the 8.77 Å one. Spearman ρ against RMSD was +0.26 (p 0.48), where a useful re-ranker needs a negative one.

It is a good answer to a different question. It is not a pose-quality signal, it is not used to re-rank anything, and folding it into a score whose entire argument is verification would break that argument.

A second opinion on the pose ranking

The dock stage re-scores its own ten poses with Vinardo, a second scoring function, and reports where the two disagree. It re-ranks coordinates that already exist: nothing is sampled, nothing is moved, and pose 1 still goes to MD and is still what the scorecard grades.

It is there because the search turned out to be better than the ranking. Docking a ligand back into the crystal it was taken from — the cleanest control there is — ranked the 1.51 Å pose eighth of ten, behind an 8.77 Å decoy. Re-scoring those same ten coordinates put it first. Across five receptors a near-native pose was in the list every single time.

The second opinion is deliberately not acted on. On those five receptors Vinardo beat the shipped ranking on four and lost on the one that actually worked, so promoting its choice would have improved the failures and spoiled the success. Both columns are shown instead, and the judgement stays with the reader.

A metric that was removed

MD rescue — pocket Ca RMSD to the crystal before MD minus after — was graded here at weight 10, on the induced-fit claim that relaxation should recover the holo pocket shape a predicted apo-like model is missing. It was removed after being measured on seven runs whose starting pockets spanned 0.00 to 1.77 Å from the crystal.

MD moved the pocket away from the crystal in all seven (binomial p 0.0078). The harm shrinks as the starting structure gets further away, from +0.93 Å when docking a ligand back into its own crystal to +0.04 Å from a 1.57 Å start, but it never reverses: the three starts beyond 1.5 Å show no trend at all (slope +0.21, p 0.55) and sit on a floor of +0.09 Å. Worse, the score correlated with the starting structure's quality at Spearman +0.90, so it was grading the input rather than the relaxation, and docking a ligand back into its own crystal — the best possible starting point — scored worst of all seven on it.

No realistic starting structure escapes this for a kinase: the furthest any real ERBB kinase pocket sits from 1M17 is 1.77 Å, and that run still scored −0.12. A gauge nothing can pass is not measuring anything, so the number is now reported on each card as an observation about the run and takes no part in the score.

Software and references

Prepare

ToolWhat it does hereLicenceLinks
UniProt Canonical sequence, features, protein naming CC BY 4.0 repository · The UniProt Consortium 2023, Nucleic Acids Research
InterPro / Pfam Domain assignment, and the family router that follows from it CC0 repository · Paysan-Lafosse et al. 2023, Nucleic Acids Research
KLIFS 85-residue kinase pocket numbering, DFG and alphaC states open, attribution repository · Kanev et al. 2021, Nucleic Acids Research
GPCRdb Ballesteros-Weinstein generic numbering, segments, microswitches Apache-2.0 repository · Pandy-Szekeres et al. 2023, Nucleic Acids Research
RCSB PDB Reference structure search, entry metadata, coordinates CC0 repository · Burley et al. 2023, Nucleic Acids Research
AlphaFold DB Predicted starting structures and their pLDDT CC BY 4.0 repository · Varadi et al. 2024, Nucleic Acids Research
ESM Metagenomic Atlas Folding short sequences without a GPU MIT repository · Lin et al. 2023, Science
RDKit SMILES validation, depiction, fingerprints, symmetry-aware RMSD BSD-3-Clause repository · rdkit.org

Run

ToolWhat it does hereLicenceLinks
ESMFold (esm) Folding the sequence when no model exists MIT repository · Lin et al. 2023, Science
OpenFold ESMFold's structure module Apache-2.0 repository · Ahdritz et al. 2024, Nature Methods
PDBFixer Missing atoms, protonation, cleaning before MD MIT repository · The OpenMM project
PandaDock Pose search and SE(3) GNN rescoring MIT repository · Panda 2026, bioRxiv
OpenMM Minimisation, equilibration and production MD MIT repository · Eastman et al. 2024, Journal of Physical Chemistry B (OpenMM 8)
openmmforcefields / OpenFF Ligand parameters (OpenFF 2.1.0) alongside Amber14 MIT repository · Boothroyd et al. 2023, Journal of Chemical Theory and Computation
Boltz-2 Affinity head scored on the relaxed complex, its diffusion module bypassed MIT repository · Passaro et al. 2025, bioRxiv
Boltzina The pattern followed, not a dependency: an external pose scored by Boltz-2's affinity head with the structure module omitted MIT repository · Furui and Ohue 2025, arXiv
MDTraj Trajectory analysis, in the bundle and on the server LGPL-2.1 repository · McGibbon et al. 2015, Biophysical Journal

Analyze

ToolWhat it does hereLicenceLinks
PLIP Interaction fingerprints, run as a subprocess only GPL-2.0 repository · Adasme et al. 2021, Nucleic Acids Research
PandaMap 2D interaction maps and an empirical binding-energy estimate MIT repository · Panda 2025, PandaMap
biotite Sequence alignment behind every residue-number mapping BSD-3-Clause repository · Kunzmann and Hamacher 2018, BMC Bioinformatics
tmtools / TM-align Whole-chain TM-score, reported as context for the pocket fit MIT repository · Zhang and Skolnick 2005, Nucleic Acids Research
PoseBusters (criteria) The pose-validity checks, reimplemented on this app's own geometry BSD-3-Clause repository · Buttenschoen et al. 2024, Chemical Science
gemmi Structure input and output, mmCIF and PDB MPL-2.0 repository

Browser

ToolWhat it does hereLicenceLinks
Mol* Every 3D view, including the three-way overlay MIT repository · Sehnal et al. 2021, Nucleic Acids Research
Plotly.js Trajectory panels MIT repository · plotly.com

Hosting

ToolWhat it does hereLicenceLinks
Flask, gunicorn, nginx, SQLite The web application and its store BSD / MIT / public domain repository
pixi and uv The bundle's environment, and the server's BSD-3-Clause / Apache-2.0 repository

Credits and licence

GOBSMACKED 1.0.0 was written by Marc C. Deller, D.Phil. (marc@marcdeller.com, marcdeller.com). Source and issues: github.com/bellcheddar/GOBSMACKED.

The application is MIT licensed. To cite it, name the repository and the version.

PLIP is GPL-2.0. GOBSMACKED runs it as a subprocess and never imports it, so no GPL code is linked into this application, and PLIP is deliberately absent from the run bundle. Every other component's licence is in the table above.