Protein Structure Prediction

Lesson 11 of 14 · 11 min

Assessing model quality: Ramachandran, clashes and MolProbity

A model's own confidence score tells you how sure the predictor is, not whether the structure obeys physical stereochemistry. Independent validation of geometry catches errors that confidence metrics are blind to. This lesson covers MolProbity's stereochemical checks plus accuracy metrics you can compute when an experimental reference exists.

Confidence versus geometry

The pLDDT score AlphaFold reports is a per-residue predicted lDDT-Ca, a learned estimate of backbone accuracy rather than a physics-based check. A residue can be predicted with pLDDT above 90 and still sit in a disallowed rotamer, clash with a neighbor in a tightly packed core, or fall outside the Ramachandran allowed region. Confidence also says nothing about clashes with other chains, ligands, or symmetry mates, so geometry must be validated separately.

Run MolProbity

bash
# phenix.molprobity handles hydrogen addition (Reduce) internally
phenix.molprobity model.pdb

# Per-metric tools if you only need one number
phenix.ramalyze   model.pdb   # Ramachandran favored / allowed / outlier
phenix.clashscore model.pdb   # all-atom clashes per 1000 atoms (needs H)
phenix.rotalyze   model.pdb   # sidechain rotamer outliers
  Ramachandran outliers =   0.00 %
                favored =  98.42 %
  Rotamer outliers      =   0.86 %
  C-beta deviations     =   0
  Clashscore            =   2.71
  RMS(bonds)            =   0.0052
  RMS(angles)           =   0.83
  MolProbity score      =   1.06

Aim for Ramachandran favored above 98% with outliers near zero, rotamer outliers below 0.3%, and the lowest clashscore you can achieve. Clashscore counts all-atom steric overlaps of at least 0.4 A per 1000 atoms, so it needs hydrogens, and phenix.molprobity adds them with Reduce before running Probe. The MolProbity score rolls clashscore, rotamer, and Ramachandran outliers into one resolution-calibrated number where lower is better, and the Ramachandran plot shows exactly which phi/psi pairs fall outside the allowed contours.

Accuracy against a reference

bash
# Global fold similarity: TM-score and RMSD over the aligned core
USalign model.pdb reference.pdb

# Superposition-free local accuracy in [0, 1]
lddt model.pdb reference.pdb
Aligned length= 148, RMSD=   1.42, Seq_ID=n_identical/n_aligned= 1.000
TM-score= 0.83147 (normalized by length of Structure_1: L=150, d0=4.56)
TM-score= 0.83147 (normalized by length of Structure_2: L=150, d0=4.56)

Global LDDT score: 0.8621

RMSD requires a global superposition and is dominated by the worst-fitting regions and by chain length, so a few bad loops inflate it. TM-score normalizes by length with the d0 scale to land in [0, 1], is robust to local errors, and above 0.5 indicates the same fold; report the value normalized by the reference (Structure_2) length. lDDT is superposition-free and scores how well local interatomic distances are preserved across the 0.5, 1, 2, and 4 A thresholds, which is the same score pLDDT is trained to estimate, with one caveat: pLDDT predicts the Ca-only lDDT, whereas the lddt call above reports the all-atom score unless you add -c to restrict it to Ca.

Try it yourself: Take an AlphaFold model such as AF-P00520-F1, or fold a sequence yourself, then upload the PDB to the MolProbity web server at molprobity.biochem.duke.edu or run phenix.molprobity locally. Read off the clashscore and Ramachandran outlier percentage, open the Ramachandran plot, and note which residues fall outside the allowed contours. Cross-check those residues against their pLDDT values stored in the B-factor column, and you will often find a confidently predicted residue that is still a stereochemical outlier.