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.
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
| Metric | A | B | C | D | F |
|---|---|---|---|---|---|
| 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) | pass | fail | |||
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
| Tool | What it does here | Licence | Links |
|---|---|---|---|
| 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
| Tool | What it does here | Licence | Links |
|---|---|---|---|
| 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
| Tool | What it does here | Licence | Links |
|---|---|---|---|
| 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
| Tool | What it does here | Licence | Links |
|---|---|---|---|
| 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
| Tool | What it does here | Licence | Links |
|---|---|---|---|
| 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.