Protein Structure Prediction

Lesson 14 of 14 · 11 min

Wrap-up: a prediction workflow and where to go next

The end-to-end workflow

Every task in this course collapses into one decision path: check whether a usable template exists, and either way hand the sequence to a modern predictor that folds it from its multiple sequence alignment. In practice you run ColabFold, rank the models, triage them with pLDDT and PAE, confirm the geometry is physically sane, and only then use the coordinates for anything downstream. A template close in sequence still helps convergence and speed, but AlphaFold2 no longer needs one to reach atomic accuracy.

bash
colabfold_batch \
  --num-recycle 3 \
  --num-models 5 \
  --rank plddt \
  --templates \
  --amber --use-gpu-relax \
  target.fasta results/
2026-07-13 03:14:02 Running colabfold 1.5.5 (5209b3e)
2026-07-13 03:14:05 Query 1/1: target (length 214)
2026-07-13 03:14:41 Sequence 1 found 3182 sequences in the MSA
2026-07-13 03:16:22 alphafold2_ptm_model_1_seed_000 recycle=3 pLDDT=90.8 pTM=0.85
2026-07-13 03:17:10 alphafold2_ptm_model_3_seed_000 recycle=3 pLDDT=92.4 pTM=0.87
2026-07-13 03:18:39 reranking models by 'plddt'
2026-07-13 03:18:39 rank_001 -> alphafold2_ptm_model_3_seed_000 pLDDT=92.4 pTM=0.87
2026-07-13 03:19:55 Done

Triage with pLDDT and PAE

python
import json, numpy as np

path = "results/target_scores_rank_001_alphafold2_ptm_model_3_seed_000.json"
with open(path) as fh:
    s = json.load(fh)

plddt = np.asarray(s["plddt"])
pae = np.asarray(s["pae"])

print(f"mean pLDDT     : {plddt.mean():.1f}")
print(f"residues <70   : {int((plddt < 70).sum())}")
print(f"global max PAE : {pae.max():.1f} A")
print(f"pTM            : {s['ptm']:.2f}")
mean pLDDT     : 92.4
residues <70   : 17
global max PAE : 24.8 A
pTM            : 0.87

Warning: pLDDT is a per-residue local confidence, written into the B-factor column of the output PDB, so a high mean can still hide a mis-docked domain, which is exactly what PAE exposes as high off-diagonal blocks. For complexes, rank by ipTM instead of pLDDT and read the inter-chain PAE block to judge whether the predicted interface is real.

bash
phenix.molprobity \
  results/target_relaxed_rank_001_alphafold2_ptm_model_3_seed_000.pdb
  Ramachandran outliers =   0.47 %
             favored    =  97.65 %
  Rotamer outliers      =   1.21 %
  C-beta deviations     =   0
  Clashscore            =   3.42
  RMS(bonds)            =   0.0069
  RMS(angles)           =   0.91
  MolProbity score      =   1.38

Once a model survives confidence triage and geometry checks, treat it like an experimental structure that carries error bars. Well-folded high-pLDDT regions are ready for pocket detection with fpocket, ligand docking with AutoDock Vina, or as a starting frame for MD refinement in GROMACS or OpenMM. Keep low-pLDDT loops and flexible termini out of quantitative analysis, and do not over-interpret side-chain rotamers wherever pLDDT is low.

Where to go next: AlphaFold3 and RoseTTAFold All-Atom extend prediction to full biological assemblies with nucleic acids, ligands, ions, and covalent modifications, while RFdiffusion paired with ProteinMPNN and an AlphaFold2 filter inverts the problem into de novo backbone and binder design. To keep practising, mine the AlphaFold Protein Structure Database, track the ColabFold repository for new presets, search structures with Foldseek, and read the latest CASP assessments for an unbiased view of where the methods still fail.