A kit for AI-generated TCR–pMHC structures#

AlphaFold / TCRmodel2 will seat any TCR–peptide–MHC candidate in a plausible low-energy pose — a static “forced” pose that is not a Gibbs sample. The generator’s own confidence (ipTM) reads largely as pose canonicality / template coverage. TCRen adds an intrinsic, generator-orthogonal read of the same structure: is the interface natural, and does it engage like a binder? The two are complementary, and combining them is synergistic. This page is the decision procedure.

One command produces every score:

tcren recognize --full --scores -s models/ -o kit.tsv

giving, per structure: the 65 interface descriptors (Interface feature reference), the binder score p_bind, the forced-pose flag p_forced, and the wrong-TCR flag p_real / p_real_bn. Join your AlphaFold iptm (it is not a structural quantity, so tcren does not compute it) to the table on the structure-file stem.

The three questions the kit answers#

1. Is this AF model trustworthy, or “too good to be true”?

p_forced (tcren.recognition.forced_pose_score()) is a frozen strain classifier trained only on provenance (crystal-natural vs AF-forced, 5-fold AUC 0.762). High p_forced = the interface is stretched / thin / one-sided — residues placed to mimic a good contact energy rather than to bind. Among AF-confident poses (high ipTM), the high-strain ones are enriched for non-binders — the QC signal ipTM cannot give you.

2. Does this TCR bind this epitope?

p_bind (tcren.binder.binder_score()) is the AF-orthogonal binder score (TCRvdb raw-label macro AUC 0.796, pooled 0.810; AF ipTM 0.794 / 0.793). Use it to screen many TCRs against one epitope. Label denoising is a separate algorithm and is not benchmarked here.

3. Combined call — the synergy.

tcren.recognition.kit_score() = z(p_bind) + z(iptm) over the cohort — a fixed, no-fit combination. On TCRvdb raw labels it beats either score alone at precision:

score

macro-PR

P@10% recall

P@20% recall

AF ipTM

0.782

0.861

0.816

tcren p_bind

0.804

0.912

0.873

kit_score (p_bind + ipTM)

0.847

0.969

0.939

Δ macro-PR vs ipTM = +0.065 (95% CI [+0.022, +0.100], P(Δ>0)=1.00) for the no-fit z-sum shown above. A CV-honest leave-epitope-out logistic on the same two inputs confirms it more conservatively at +0.041 ([+0.005, +0.076], P=0.99) — that is a different estimator, not this row.

Note

ipTM is the weakest of AlphaFold’s three confidences on this task. Against global pLDDT (macro-PR 0.808) the margin is +0.039, not +0.065. Quote the baseline you measured against.

The combination also corrects AF’s errors: strain flags AF false-positives among confident poses (AUROC 0.633), and p_bind rescues AF false-negatives among under-confident poses (0.732 vs ipTM 0.697).

kit_score is cohort-relative (z standardizes over the set you pass) — score a whole batch of AF models together, not one at a time.

What the kit does not claim#

  • Not “beat AF” everywhere. On the harder VDJdb-AF real-vs-mock task, combining does not beat ipTM (macro 0.639 vs 0.656); there TCRen’s contribution is the interpretable forced-pose gradient (crystal < AF-real < AF-decoy), not a discrimination win.

  • Not affinity. TCRen ranks specificity, not Kd/ΔG/koff (see the note on the landing page).

  • kit_score needs the generator ipTM as input; the purely structural scores (p_bind, p_forced, p_real) do not, and also work on crystals with no generator at all.