AI for drug discovery · structural-confidence signals
Protein structure metrics, made tangible
The scores that decide which designed proteins get made — TM-score, pTM, ipTM, PAE, pLDDT, RMSD, GDT — defined with their formulas and then made interactive. Grab a predicted structure, rotate, translate, and deform it, and watch every metric respond in real time.
RMSD, TM-score, GDT-TS. They quantify how close a prediction is to a reference and a residue correspondence between the two. The reference can be an experimental structure, another conformation, or a design target — "ground truth" only when it is experimental. Each is defined to first find the best rigid alignment, so its value is invariant to how you rotate or translate the prediction. What moves it is real geometric error.
In the lab: rotate/translate → the as-placed value swings, the best-fit value holds. Deform → both move.
Confidence metrics
Intrinsic to a single prediction
pLDDT, pTM, ipTM, PAE. A folding model (AlphaFold, etc.) emits these from its own predicted error distribution — no experimental structure is consulted at inference. They estimate "how sure am I?", not "am I right?". They do not change when you move the molecule in space, because they are not about space at all.
In the lab: move the prediction all you like — pTM, ipTM, pLDDT, mean inter-chain PAE stay fixed. Confidence ≠ correctness.
Primer
The structural-biology basics behind these numbers
— what a residue is, why Cα, and how a "score" comes out of two shapes
Every metric on this page is, underneath, a way of turning two clouds of atoms into a single number. To read the formulas it helps to know what those atoms are, which ones we actually compare, and the three moves — match, superpose, score — that comparison metrics share.
AA protein is a chain of residues, and each residue has one Cα
A protein is a linear chain of amino-acid residues. Every residue contributes the same three main-chain atoms — N, the α-carbon (Cα) and the carbonyl C — and these link head-to-tail down the whole protein: … → N → Cα → C → N → Cα → C → …. Two more atoms hang off that path rather than extending it: the carbonyl oxygen O, double-bonded to the C (it points to the side — it is not a link to the next residue), and the variable side chain (R) on the Cα that makes each of the 20 amino acids distinct. Because the main chain always passes through the Cα of every residue, the string of Cα positions is a faithful fingerprint of the fold — one representative point per residue. That is why almost every structural metric here compares Cα atoms only: it judges the shape of the backbone and ignores side-chain detail.
The main chain threads N → Cα → C → N → … (green highlight), always passing through each residue's Cα. The carbonyl O (double-bonded to C) and the side chain R branch off — they don't link to the next residue. Metrics track just the Cα: one point per residue.Match residue i in each structure, rigidly rotate + translate the prediction onto the reference (Kabsch, which minimizes RMSD), then read the residual distances dᵢ.Each dᵢ becomes 1 / (1 + (dᵢ/d₀)²): tiny distances score ≈ 1, large ones are pushed toward 0. The scale d₀ grows with chain length L, so the same error counts for less in a bigger protein.
BComparison metrics do three things: match → superpose → score
1 · Match. First establish a residue correspondence — residue i in the prediction is paired with residue i in the reference, usually by aligning their amino-acid sequences. Without a correspondence there are no distances to measure.
2 · Superpose. Absolute coordinates are meaningless — a structure means the same thing wherever it sits in space — so the prediction is rigidly rotated and translated to maximize its overlap with the reference. RMSD, TM-score and GDT all do this by construction, which is exactly why moving the molecule in the lab doesn't change their best-fit values. (The Kabsch/Horn algorithm finds the overlap that minimizes RMSD; the true TM/GDT objective instead maximizes the score itself — the small difference this lab glosses over.)
3 · Score. What's left is a set of Cα–Cα distances dᵢ. RMSD averages their squares directly (in Å); TM-score instead passes each through the kernel 1/(1 + (dᵢ/d₀)²), which heavily penalizes large distances yet stays bounded in [0, 1] and scales for protein length through d₀(L); GDT-TS just counts how many dᵢ fall under 1, 2, 4, 8 Å. Same distances, three ways of summarizing them.
CConfidence metrics need no reference at all
pLDDT, pTM, ipTM and PAE come from a different place: the folding model's own predicted error distribution, emitted at inference with no experimental structure in hand. They estimate "how sure is the model?", not "is it right?", and — because they never look at where the molecule sits — they are untouched by rotating or translating it. (Physically deforming the shape is different: that changes the geometry itself, so a faithful confidence would change too — the lab shows an illustrative version of this on the deform slider.) That single split, comparison vs confidence, is the distinction the rest of this page is built around.
One unit to carry with you: distances are in ångström (1 Å = 0.1 nm = 10⁻¹⁰ m). Neighbouring Cα atoms sit ≈ 3.8 Å apart, so a backbone accurate to within 1–2 Å is essentially spot-on.
The signal dictionary
Each metric with the quantity it computes, its formula, and the one sentence you need on how it behaves when the structure moves. Open "In plain words" on any card for the intuition — the memorable version, no math required.
Legend
What every symbol in the formulas means
— read the equations below without decoding them first
Every formula on this page is built from the same small alphabet. The same symbol means the same thing in every card, so this legend covers all seven at once. Operators are standard: Σ sums, max keeps the best, mean / 𝔼 average.
Indices & sets
i, j
positions of residues along the chain — one Cα each. Sums and means run over these.
b
an error bin. The model predicts error as a histogram over distance bins, indexed by b.
A
the set of residues actually being scored — a chosen region, or all Cα.
|A|, L
how many residues are in that set / the chain length. Plain counts, used to normalize.
chain(i)
which chain residue i is on. chain(j) ≠ chain(i) marks an inter-chain pair (the ones ipTM averages over).
Coordinates & alignment
xi
coordinates of residue i in the prediction — the structure you move in the lab.
yi
coordinates of the matching residue in the reference (grey ground truth).
R, t
a rotation and a translation: the rigid move applied to the prediction. maxR,t = try every placement, keep the best overlap.
R∗, t∗
the specific rotation + translation that wins — the Kabsch superposition.
‖·‖
ordinary straight-line (Euclidean) distance between two points, in Å.
Distances & length scale
di, dij
a leftover Cα–Cα distance after superposition: how far apart matched residues ended up (Å).
d̂ij
the model's predicted distance between i and j — lDDT checks it against the true dij.
d0(L)
a length-dependent yardstick. Bigger proteins get a bigger d0, so the same error counts for less — this is what makes TM-score comparable across sizes.
Kernel & thresholds
K(e)
the bell-shaped map 1/(1+(e/d0)²) from distance to a [0,1] score: tiny → ≈1, large → ≈0. TM, pTM and ipTM all pass values through it.
τ
a tolerance / cutoff in Å. GDT counts residues under τ ∈ {1,2,4,8}; lDDT tests distances under τ ∈ {0.5,1,2,4}.
𝟙(·)
the indicator: 1 if the condition inside is true, 0 otherwise. This is how a formula "counts" residues that pass a threshold.
Predicted-error distribution confidence metrics
eij
the model's aligned error. "Anchored on i's local frame" means: superpose the prediction onto the true structure using only residue i — pin i's backbone position and orientation exactly in place — then ask how many ångströms residue j lands away from where it should be. Each residue i defines its own little coordinate system (from its N–Cα–C atoms), so the same pair can read differently depending on which end you anchor — which is why the L×L PAE map need not be symmetric. Small eij = "once I've fixed i, I'm confident exactly where j sits relative to it."
𝔼[·]
expected value — a probability-weighted average taken over the model's predicted error distribution.
qijb
the model's predicted probability that the error eij lands in bin b.
cb
the distance at the center of bin b. So PAE = Σb qijb cb is just the average error under that predicted distribution.
comparison
TM-score
higher ↑
Template-modeling score between two known structures after the best rigid alignment. Length-normalized, so it rewards getting the global fold right and is forgiving of a few bad residues.
In plain words
A 0-to-1 answer to "are these two 3D shapes basically the same shape?" — 1 means identical. It's judged only after sliding and rotating one structure onto the other as well as possible, because a shape doesn't change by being turned around.
Because it's length-normalized, a handful of bad residues can't tank an otherwise-correct fold — unlike RMSD. Keep this one in mind: the confidence signals pTM and ipTM are just the model's guess at this number when no true structure is available to compare against.
>0.5 usually means the same fold (rule of thumb for the standard, best-fit TM-score). Invariant to rigid motion (the max over R,t). The lab shows the as-placed sum and a Kabsch-superposed value — a close approximation of the true maximizer.
Typical range · 0 → 1
< 0.17score of two random, unrelated structures
0.17 – 0.5related but not the same fold
0.5 – 0.8same fold / topology
> 0.8near-identical backbone, strong model
confidence
ipTM
higher ↑
Interface predicted TM-score. AlphaFold turns each predicted alignment-error distribution into a TM-like value and averages it over inter-chain residue pairs only — its confidence in how chains are placed relative to each other.
In plain words
"How sure is the model that these two proteins are touching like this?" It ignores whether each protein individually looks right and asks only about the handshake between them — how the chains sit relative to one another.
That makes it the headline number for complexes and antibodies, since binding is the handshake. But confidence in a predicted interface is not the same as a verified one: a model can be confidently wrong. A high ipTM is encouraging, not proof.
The headline docking-quality number for complexes and antibodies. Defined only when there is more than one chain (single-chain shows n/a). The lab reports a PAE-derived proxy — the kernel of the mean PAE, K(𝔼[e]), not AlphaFold's 𝔼[K(e)] — but it does not depend on where you drag the structure.
Predicted TM-score: the same expected-TM kernel as ipTM, but averaged over all residue pairs. A global "how good is the whole fold likely to be" estimate.
In plain words
The same idea as ipTM, one level up: "how sure is the model about the whole structure?" rather than just the contact region.
It's the model's prediction of the TM-score it would earn if the true structure were revealed — a global sanity check on the fold, not a statement about any one interface.
A prediction of the TM-score you'd get if the true structure were revealed. Intrinsic to the prediction. The lab shows a PAE-derived proxy K(𝔼[e]); because the kernel is nonlinear, K(𝔼[e]) ≠ 𝔼[K(e)], so this is not the exact model-reported pTM.
Typical range · 0 → 1
< 0.5overall fold uncertain
0.5 – 0.7roughly correct fold likely
0.7 – 0.9confident global fold
> 0.9very high global confidence
confidence
PAE
lower ↓
Predicted aligned error: expected position error at residue j when the structure is aligned on residue i's local frame. Directional, so the L×L map need not be symmetric; the inter-chain block reports confidence in relative chain placement, not necessarily in physical interface contacts.
In plain words
The model's own error bar, in ångströms: "if I anchor myself on this part of the structure, how far off do I expect that part to be?"
Small numbers mean two parts are confidently locked in place relative to each other; large numbers mean the model has no idea how they sit together. Low is good — the opposite direction from ipTM. The inter-chain block is exactly where you look to see whether a docking pose is pinned down or floating.
PAE and pTM/ipTM are different summaries of the same predicted aligned-error distribution — not one derived from the other. The lab draws the live PAE heatmap with chain boundaries marked.
Typical range · 0 → ~31 Å
< 5 Årelative position confidently pinned
5 – 10 Åreasonably well placed
10 – 15 Åloosely constrained
> 15 Åposition essentially unknown
AlphaFold caps the map at ≈31.75 Å (its "maximally uncertain" value).
confidence
pLDDT
higher ↑
Predicted local distance difference test: per-residue local confidence (0–100), the model's expected lDDT-Cα over neighbors within 15 Å. High in well-modeled cores; low can mean disorder, flexibility, thin information, or model failure — it is a confidence signal, not direct proof of flexibility.
In plain words
Confidence in the fine local detail: is this stretch of chain neatly resolved, or modeled as floppy? It's scored per residue, which is why it can color the structure in the viewer.
Crucially it says nothing about whether two chains are correctly positioned against each other — a locally crisp chain can still be docked in the wrong place. That's why pLDDT pairs with ipTM/PAE rather than replacing them.
Colors the prediction in the viewer (blue = confident → orange = unsure). A locally confident chain can still be docked in the wrong place — where a low ipTM warns of that uncertainty (a high ipTM is not proof the pose is right).
Typical range · 0 → 100 (AlphaFold bands)
< 50likely disordered / unreliable
50 – 70low confidence, treat with care
70 – 90confident backbone
> 90very high — side chains often reliable
comparison
RMSD / scRMSD
lower ↓
Root-mean-square Cα deviation after Kabsch superposition. In design pipelines "self-consistency RMSD" compares a refolded candidate to its reference; unlike TM-score it is not length-normalized, so one bad loop dominates.
In plain words
Straight-up "how many ångströms apart are the two backbones, on average, after the best alignment?" Smaller is closer.
In design pipelines it becomes a round-trip test (self-consistency): you designed a sequence meant to fold into a certain shape, so you refold it with independent software and measure how far the result drifts from that shape. Small means the design is coherent — it really does fold the way you asked. Because it isn't length-normalized, one bad loop can dominate the whole number.
The lab reports both as-placed RMSD and best-fit RMSD so you can see the alignment do its work.
Typical range · Cα, best fit
< 1 Åessentially identical structures
1 – 2 Åvery close match (design "success" ≈ <2 Å)
2 – 4 Åmoderate divergence
> 4 Ådifferent conformation or wrong fold
Not length-normalized, so values grow with size and one bad loop can dominate.
comparison
GDT-TS
higher ↑
Global distance test: fraction of residues within 1, 2, 4, 8 Å of the reference after best fit, averaged over the four cutoffs. A robust, outlier-tolerant companion to RMSD.
In plain words
Instead of averaging error like RMSD, it counts: after the best alignment, what fraction of residues landed within 1, 2, 4, and 8 Å of where they should be? Average those four fractions.
Because it's counting hits at four levels of strictness, one wildly misplaced region can't blow up the score the way it can with RMSD — a more forgiving read on "how much of the fold is basically right."
Changes in threshold-sized steps as residues cross the 1/2/4/8 Å cutoffs; less sensitive than RMSD when one region is badly off. Standard GDT (LGA) optimizes each cutoff separately — the lab shares one Kabsch fit across all four.
Typical range · 0 → 1
< 0.3wrong fold
0.3 – 0.5partial topology recovered
0.5 – 0.8correct fold
> 0.8high-accuracy model
CASP reports GDT-TS ×100, so these read as 30 / 50 / 80.
The live lab
Pick a system and a competing prediction, then manipulate it. Drag the viewer to orbit the camera. Use the sliders to rotate, translate and deform the prediction relative to the grey ground-truth reference. Every metric recomputes on each move.
System
Prediction
➕ Add your own real model + prediction
Load an experimental structure (the ground truth) and a predicted model — e.g. an AlphaFold model, whose per-residue pLDDT sits in the B-factor column. The two are aligned by sequence, the prediction is superposed onto the truth, and every metric is scored live. Everything runs in your browser; nothing is uploaded.
Bundled examples (one click):
The bundled examples load offline (they're embedded). The raw source files also live in the repo's data/ folder if you want to try the file picker — e.g. 1EMA.pdb + AF-P42212.pdb (GFP) or 1J9O.pdb + AF-P47992.pdb (lymphotactin). PDB format only (not mmCIF).
ground truth
Color by
Representation
Coarse-grained (Cα-level): surface & spacefilling styles are fused-sphere approximations, since only Cα atoms are stored.
Rotate prediction (°)
Translate prediction (Å)
Deform prediction
Bends a loop/region — this is real geometric error, so it moves best-fit comparison metrics and the (illustrative) confidence metrics.
Comparison metrics
vs. ground truth · L=–, d₀=–
RMSD as placed
–
RMSD best fit
–
TM-score as placed
–
TM-score best fit
–
GDT-TS best fit
–
As-placed vs best-fit TM gap: 0
Confidence metrics
intrinsic · unchanged by rigid moves
mean pLDDT
–
pTM PAE proxy
–
ipTM PAE proxy
–
mean inter-chain PAE custom
–
Predicted aligned error (PAE) map
0 Å confident31 Å uncertain
Things to try
Rotate or hit "Random tumble".As-placed RMSD and TM-score collapse; best-fit values and every confidence metric don't budge. That's the alignment invariance built into these definitions.
Then "Snap to best fit". The prediction jumps onto the reference and as-placed catches up to best-fit — showing they were always measuring the same underlying error.
Drag the deform slider. Now best-fit RMSD, TM-score and GDT all degrade, because you've introduced error alignment can't undo. The confidence metrics move too — an illustrative re-estimate from the induced local-geometry change (flagged in the panel), since the bent shape is less self-consistent than the model's original prediction.
Antibody → "Chains folded, antigen mis-docked". pLDDT stays high (each chain is locally fine) but ipTM is low and the mean inter-chain PAE lights up red — the classic "confident but wrongly docked" trap.
Antibody → "Overconfident but wrong" isn't here, but on the mini-protein it is. High pTM/pLDDT next to a stubbornly high best-fit RMSD: confidence is not correctness.
Notes & honesty
The Lysozyme and Calmodulin systems use real data: the ground truth is an RCSB crystal structure (1LYZ, 1CLL) and the prediction is that protein's AlphaFold DB model. Their pLDDT is the model's real per-residue confidence (the PDB B-factor column) and their PAE is the real AlphaFold DB predicted_aligned_error matrix — sliced to the residues matched to the crystal by sequence alignment, with the model superposed onto the crystal frame. TM/RMSD/GDT are computed live between the two real coordinate sets.
The mini-protein, peptide and antibody systems are synthetic — and not only their geometry. They are procedural Cα traces built to isolate specific lessons (e.g. "overconfident but wrong", "confident chains, mis-docked antigen") that are cleaner to show with designed cases, and their names echo real targets for flavor only. Crucially, no folding model was ever run on them, so the confidence values riding on those traces are fabricated too: pLDDT comes from a formula (a hand-set per-variant quality knob, tapered toward the chain termini), and PAE from another (hand-set intra-chain and interface confidences, growing with sequence separation). They are tuned so the intended lesson is visible, not predicted by anything. In particular the PAE here is written down directly as a mean error in ångströms — there is no underlying predicted distribution qijb over bins, which is one more reason the pTM/ipTM below can only ever be the K(𝔼[e]) proxy. Only the Lysozyme and Calmodulin systems above — and any files you load yourself — carry confidence a model actually emitted.
TM-score's true definition maximizes the score itself over rigid transforms, and GDT (LGA) optimizes a separate superposition for each distance cutoff. The lab instead uses a single Kabsch/Horn least-squares superposition (which minimizes RMSD) for both — a close, widely used approximation, but not the exact maximizer. Reported TM/GDT can sit slightly below what US-align/LGA would return.
pTM/ipTM here are a PAE-derived proxy: the TM kernel applied to the mean PAE, K(𝔼[e]). AlphaFold takes the expectation of the kernel over the full predicted-error distribution, 𝔼[K(e)], and the kernel is nonlinear, so K(𝔼[e]) ≠ 𝔼[K(e)] — the exact model-reported scores can't be reconstructed from a mean-PAE matrix alone. If a data file ships model-reported pTM/ipTM, prefer those. pLDDT, by contrast, is never computed here at all — it is stored per prediction and only read back: for the real systems it is the AlphaFold model's own output (the B-factor column), for the synthetic ones it is generated by the formula described above.
"mean inter-chain PAE" is a custom convenience summary — the average of all directed PAE entries spanning two chains — not a standard AlphaFold output. Those pairs are not necessarily interface contacts, so read it as relative-placement uncertainty.
The "deform" slider is a teaching manipulation, not a re-fold: it perturbs geometry so you can watch the metrics respond. The comparison metrics recompute exactly. The confidence metrics update too, but as an illustrative estimate, not a real model re-run: the stored pLDDT/PAE were predicted for the original model, so the lab re-derives them from the geometry change the bend introduces — for pLDDT, an lDDT of the bent structure against the original (local neighbour distances that drift push a residue's confidence down); for PAE, the induced change in each residue pair's relative position, added in quadrature to the stored value and capped at 31.75 Å. Truly recalibrated confidence would require re-folding the bent sequence; the panel flags the estimate while the slider is nonzero. A rigid rotation or translation, by contrast, only changes the coordinate frame and must not change any aligned or confidence value.