GPCR Foundation Model

Methods

Build of 11 September 2026. Every figure on this page is transcribed from the build artifacts, not from notes.

Data

Measurements come from ChEMBL together with additional curated data sources. The training endpoints are IC50, Ki, Kd, EC50 and Kb, so "more potent" spans binding affinity and functional potency together.

Activity is derived from the reported value and unit rather than read from a precomputed field, because in this data the precomputed column has been observed present only on erroneous rows. Duplicate readings collapse by median per receptor, structure and endpoint, never by the most potent value, because taking the best value reliably selects unit errors rather than the best measurement.

The funnel

StageRows
Measurements read from all sources1,129,336
After scope, endpoint, assay class and unit filters, then duplicate collapse353,120
Fitting split333,727
Held-out split19,393

This build applies no assay-quality threshold. An earlier build required an assay to carry at least ten compounds and a pActivity standard deviation of at least 0.5, which discarded about a third of the rows; removing that threshold is most of the growth in the table above. The split is temporal, on the publication year of the assay's source document: measurements published before 2023 fit the model and 2023 onward test it.

Endpoint mix

EndpointFittingHeld out
Ki152,6487,650
IC50101,5115,847
EC5072,2205,432
Kd4,425282
Kb2,923182

Comparisons are matched by endpoint, so a functional reading is never ranked directly against a binding one.

Receptors covered

This is the part of the method that most affects whether a result means anything. The bundle recognises 796 receptor names, but a name being recognised is not the same as the model having been fitted on it.

ModelReceptors fittedWith a held-out scoreNames recognisedLigands in fitting
Potency251182796185,102
Selectivity25517079661,742

The ranking pages group fitted receptors separately from merely recognised ones, and show each fitted receptor's own held-out accuracy beside its name. The full list, with per-receptor measurement counts and accuracies, is on the receptors page.

Accuracy varies widely between receptors

ModelReceptors scoredMedianWith 50+ comparisonsMedian of thoseOf those, below 0.60
Potency1820.6381370.61957
Selectivity1700.688750.67521

A headline accuracy is a comparison-weighted average, so receptors carrying many held-out comparisons dominate it. Both headline figures reconcile exactly with the per-receptor table above.

Featurisation

A comparison is one row of three concatenated blocks. Nothing is scored on its own and subtracted.

BlockDimensionsContents
Ligand1,038Morgan count fingerprint, radius 2, 1,024 bits, then 14 descriptors: molecular weight, heavy atom count, bond count, rotatable bonds, ring count, and per-element atom counts for C, N, O, S, F, Cl, Br, I and P
Sequence480ESM2 esm2_t12_35M_UR50D, mean pooled over residues with the start and end tokens excluded, full-length UniProt canonical sequence rather than a domain slice

Potency rows are ligand, sequence, ligand, so 2×1,038 + 480 = 2,556 columns. Selectivity rows are sequence, ligand, sequence, so 2×480 + 1,038 = 1,998. The width is checked when a model loads and a mismatch raises rather than scoring silently.

The models

Random forests, 300 trees, square-root feature sampling. Minimum leaf size 20 for potency and 8 for selectivity, reflecting the very different comparison counts.

Every comparison is entered twice, once as given and once with the two outer blocks exchanged and the label inverted, so no answer can depend on which side a ligand happened to be written on. At prediction time the same symmetry is applied as an average over both argument orders, which is why comparing A with B and comparing B with A return probabilities that sum to exactly 1.

ModelComparisons fittedRows after the swapHeld-out comparisonsAccuracy
Potency2,146,4984,292,996413,1810.640
Selectivity188,273376,54615,8020.694