Family Foundation Model

Methods

Compound preference built 13 September 2026, target preference 21 September 2026. Two models, one shared data pipeline, and a separate holdout for each.

The data, the pairing rules they have in common and the pinned environment are described once. Everything that differs is under the preference model and the target-preference model.

Data

Measurements come from ChEMBL 37. The endpoints are Ki, IC50, Kd, EC50 and Kb.

Activity is derived from the reported value and unit rather than read from a precomputed column. Duplicate readings collapse by median, never by the most potent value, because the best value selects unit errors. Only exact readings are used; censored readings are dropped.

High-throughput screening is excluded. On the sibling GPCR model, comparisons drawn from withheld screening endpoints scored 0.54 where neither compound had been seen, against 0.77 on held-out medicinal chemistry.

Compound preference: ranking compounds at one target

One target held fixed and two compounds. Row layout is ligand, sequence, ligand, the LSL layout, 2,556 columns. Run it →

Multi-family, from the roster

Each compound comparison is anchored at one target, and the family span lives in the roster the estimator serves: one forest ranks compounds at any of 2,079 targets across 32 families, kinases, GPCRs, proteases, transferases, oxidoreductases, hydrolases, nuclear receptors, transporters, ion channels, and the epigenetic readers, writers and erasers. The two comparators reach the same breadth from opposite directions: the target comparison crosses a boundary inside one comparison, the compound comparison carries the whole roster inside one model.

A preference comparison. Two compounds,
molibresib and inobrodib, are put to one target, the histone acetyltransferase
p300. Each compound becomes a 1,024-bit Morgan count fingerprint plus 14
descriptors and the target sequence becomes 480 numbers through ESM2. All three
blocks enter a random forest as a single row, which returns which of the two
compounds the target prefers.
The worked case, and it is a real held-out one. Histone acetyltransferase p300, Q09472, against Molibresib and Inobrodib. Both are clinical-stage bromodomain compounds, so this is a hard discrimination inside one mechanistic class. p300 carries two family labels, reader and writer: its acetyltransferase domain writes acetyl marks onto lysines and its bromodomain reads marks already there, so one protein does both jobs. Both readings are Kd, so the comparison is endpoint matched: pKd 4.15 against 8.77. The model prefers Inobrodib at strength 0.79, which is the measured order, and neither compound appeared anywhere in training.

How a preference comparison is formed

  1. Endpoint matched. Both readings share one endpoint, so a Ki is never ranked against an IC50 and there is no endpoint argument at inference.
  2. Both readings come from the same target. A single comparison never crosses a family boundary; the model is multi-family because its roster is.
  3. Every reading is converted to pActivity, minus the log of a concentration, so a larger value means a lower concentration for all five endpoints and there is no direction to flip between an inhibition endpoint and an agonist one.
  4. Ties are dropped, and which compound is A is randomized, with every comparison entered twice and the answer inverted.

The preference split

Compound-disjoint on both compounds by InChIKey, with comparisons that straddle the two sides discarded rather than assigned. A held-out comparison therefore involves two compounds the model never saw.

QuantityValue
Comparisons fitted on1,827,578
Straddling comparisons discarded626,130
Compounds fitted on474,708
Held-out comparisons65,725
Compounds across those comparisons43,961
Targets servable2,079
Held-out accuracy0.71

A near-tie is a near-tie

Accuracy depends on how far apart the two measured values really are.

True separationComparisonsAccuracy
Under half a log20,2000.57
Half a log to one log15,5590.67
One to two logs18,2930.78
Beyond two logs11,6730.90

Accuracy by prediction strength, compound preference

Cumulative over the held-out set: every comparison at or above each strength.

Strength at or aboveComparisons keptShare keptAccuracy
0.50, answer everything65,725100%0.71
0.6028,09743%0.84
0.7011,43517%0.92
0.803,9956.1%0.96
0.907941.2%0.98

What raising the strength cutoff buys, for the preference model

The same two curves as the target-preference model, and the trade is much sharper: this model concentrates its confidence, so a gate costs more coverage and buys more accuracy.

Accuracy rises from
  0.71 answering everything to
  0.98 at a strength cutoff of 0.90, while
  the share of comparisons still answered falls from 100 percent to
  1.2%.
Held-out comparisons, cumulative, from 65,725 down to 794. Per-family accuracy for this model, with confidence intervals, is in the table below rather than on this curve.

Every family, at the gate you choose

This is what evidences the multi-family claim, and it is also where the gate earns its keep: move the control and watch each family trade coverage for accuracy at its own rate.

no gate

Across every family: 0.71 on 65,725 comparisons, 100.0% of the held-out set.

FamilyHeld outKept at this gateCoverageAccuracy, 95% CI
Kinase9,5859,585100.0%0.69 [0.68, 0.70]
Family A G protein-coupled receptor7,2667,266100.0%0.72 [0.71, 0.73]
Protease3,1603,160100.0%0.71 [0.70, 0.73]
Transferase2,5172,517100.0%0.71 [0.69, 0.73]
Electrochemical transporter2,3062,306100.0%0.67 [0.65, 0.69]
Hydrolase2,0692,069100.0%0.70 [0.68, 0.72]
Fatty acid binding protein family2,0192,019100.0%0.69 [0.67, 0.71]
Reader2,0122,012100.0%0.72 [0.70, 0.74]
Other ion channel1,9931,993100.0%0.75 [0.73, 0.77]
Ligand-gated ion channel1,9771,977100.0%0.69 [0.67, 0.71]
Eraser1,9741,974100.0%0.72 [0.70, 0.74]
Ligase1,9521,952100.0%0.73 [0.71, 0.75]
Phosphatase1,9441,944100.0%0.75 [0.73, 0.77]
Writer1,9311,931100.0%0.80 [0.78, 0.81]
Oxidoreductase1,9181,918100.0%0.72 [0.70, 0.74]
Isomerase1,9141,914100.0%0.73 [0.71, 0.75]
Lyase1,8931,893100.0%0.73 [0.71, 0.75]
Toll-like and Il-1 receptors1,8801,880100.0%0.69 [0.67, 0.72]
Nuclear receptor1,8711,871100.0%0.72 [0.70, 0.74]
Phosphodiesterase1,8291,829100.0%0.72 [0.70, 0.74]
Cytochrome P4501,7851,785100.0%0.70 [0.67, 0.72]
Primary active transporter1,7811,781100.0%0.69 [0.66, 0.71]
Voltage-gated ion channel1,7731,773100.0%0.71 [0.69, 0.73]
Family C G protein-coupled receptor1,7511,751100.0%0.70 [0.68, 0.72]
Family B G protein-coupled receptor1,7271,727100.0%0.74 [0.72, 0.76]
Aminoacyltransferase960960100.0%0.66 [0.63, 0.69]
Frizzled family G protein-coupled receptor515515100.0%0.74 [0.70, 0.78]
Taste family G protein-coupled receptor474474100.0%0.59 [0.55, 0.64]
Calcium channel auxiliary subunit alpha2delta family434434100.0%0.62 [0.58, 0.67]
Transmembrane 1-electron transfer carriers367367100.0%0.73 [0.68, 0.77]
Group translocator148148100.0%0.72 [0.65, 0.79]

Families are ordered by how much of the held-out set they carry. The holdout fraction is set per family so that each one has enough held-out comparisons to quote an accuracy for at all; families differ in pool size by a factor of 600, so an equal share of each pool would have left the smallest with too few. Every accuracy is printed with its n.

Preference accuracy by endpoint

EndpointComparisonsNo gateAt 0.80
IC5034,4810.710.96
Ki12,9000.720.97
EC509,3750.710.95
Kd8,4310.690.96
Kb5380.730.90

Real EC50 and Kb volume is what lets this model reach agonist and functional readings as well as binding ones.

Target preference: ranking targets for one compound

One compound held fixed and two targets. Row layout is sequence, ligand, sequence, 1,998 columns. Run it →

Two questions, fitted together and measured apart

A comparison puts one compound to two targets, and those targets either come from different families or from one family. Both kinds are formed by the same rules and fitted in one forest, and their results are reported separately everywhere. That is not a formality. The held-out set is 79.0% same-family, so a pooled number would be dominated by one arm and could rise while the other fell. There is no single accuracy for this model on this site.

The questionHeld-out comparisonsCompoundsAccuracy
Two targets from different families8,6892,1950.75
Two different targets from one family32,73813,3430.78

No compound in either holdout appeared anywhere in fitting.

A target-preference comparison. Olanzapine is put to two targets from different protein families, the histamine H1 receptor and hERG. Each target sequence becomes 480 numbers through ESM2 and the ligand becomes a 1,024-bit Morgan count fingerprint plus 14 descriptors, and all three blocks enter a random forest as one row.
Target preference. Olanzapine put to the histamine H1 receptor and to hERG: pKi 8.50 against 4.44. The model prefers H1 at strength 0.88, which is the measured order. Those two targets sit in different families; the same model answers when both sit in one.

What the accuracy is worth

Two weaker answers on the same held-out comparisons: the family labels alone, and the same model with the ligand blinded so only the two sequences remain.

Answering withAcross familiesWithin one family
A family prior, the family labels alone0.660.50
The same model with the ligand blinded0.710.67
The model0.750.78

Inside one family the family labels are identical, so a family prior is chance by construction and every point above 0.50 is earned by the comparison. The model beats its own sequence-only twin by 11.2 points within a family against 4.4 across them: the compound carries more of the call inside a family than across one.

How a target-preference comparison is formed

Four rules, and they are the substance of the method.

  1. Endpoint matched. An IC50 is only ever compared with another IC50, so the comparison is between two readings of the same kind.
  2. The two targets are different proteins, and the comparison is filed by whether they share a family label. Sharing none makes it an across-family comparison; sharing one makes it a within-family comparison, filed under that family. Each kind is capped per compound on its own, so neither crowds out the other.
  3. Ties are dropped. Two equal readings order nothing, and entering them teaches the forest that whichever side is written first wins.
  4. Which target is A is randomized, and every comparison is entered twice with the two sequence blocks exchanged and the answer inverted.

The target-preference split

The holdout is compound-disjoint: a ligand's InChIKey decides which side it lands on, so zero ligands appear on both sides. A held-out comparison therefore involves chemistry the model was never fitted on. It is not a temporal split.

The target-preference forest

A random forest. Every comparison is entered twice, once as given and once with the two sequence blocks exchanged and the label inverted, so no answer depends on which side a target was written on.

QuantityValue
Comparisons fitted on382,354
Rows after the swap764,708
Label balance0.5
Compounds fitted on135,852
Held-out comparisons, across families8,689
Held-out accuracy, across families0.75
Held-out comparisons, within one family32,738
Held-out accuracy, within one family0.78

A near-tie is a near-tie

Accuracy depends on how far apart the two measured values really are.

True separationAcross familiesWithin one family
Under half a log0.59 on 2,2640.64 on 11,228
Half a log to one log0.69 on 1,7830.80 on 7,546
One to two logs0.79 on 2,3540.88 on 8,710
Beyond two logs0.91 on 2,2880.92 on 5,254

Accuracy by prediction strength, target preference

Cumulative over each held-out set: every comparison at or above each strength.

Strength at or aboveAcross familiesWithin one family
Share keptAccuracyShare keptAccuracy
0.50, answer everything100.0%0.75100.0%0.78
0.6070.6%0.8276.1%0.85
0.7049.5%0.8956.0%0.91
0.8034.3%0.9438.3%0.95
0.9020.5%0.9720.8%0.98

What raising the strength cutoff buys, for target preference

Two curves and two axes, because the trade is the point. Accuracy climbs as the cutoff rises, and the number of comparisons you still get an answer for falls. Either curve on its own tells half the story. One figure per kind of comparison, never combined: first two targets from different families, then two different targets from one family. They are measured on separate held-out sets, so the two curves are not two views of one result. Both carry vertical bars, each over its own unit: the across-family curve over family pairings, because such a comparison belongs to two families at once but to exactly one pairing, and the within-family curve over families. Each figure says which inside the plot.

Across families, accuracy rises from
  0.75 answering everything to
  0.97 at a strength cutoff of 0.90, while the share of
  comparisons still answered falls from 100 percent to
  20.5%.
Two targets from different families. Held-out comparisons, cumulative, from 8,689 down to 1,784. The vertical bars give the range across the 17 family pairings carrying 100 or more held-out comparisons, 0.58 to 0.94 with no gate. Fewer pairings keep 20 or more comparisons as the gate rises, so the upper bars rest on fewer of them: 9 at strength 0.90.
Within one family, accuracy rises from
  0.78 answering everything to
  0.98 at a strength cutoff of 0.90, while the share of
  comparisons still answered falls from 100 percent to
  20.8%.
Two different targets from one family. Held-out comparisons, cumulative, from 32,738 down to 6,821. The vertical bars give the range across the 17 families carrying 200 or more held-out comparisons, from 0.69 to 0.94 with no gate and 0.93 to 1.00 at strength 0.90, so the curve is a position within a spread rather than any one family's result. All 17 hold at every gate, so these bars rest on the same families throughout.

Endpoint mix of the held-out sets

EndpointAcross familiesWithin one family
IC500.78 on 6,5770.80 on 18,533
Ki0.70 on 1,4400.78 on 8,825
Kd0.57 on 5580.67 on 2,492
EC500.66 on 1140.81 on 2,815
Kbno comparisons0.78 on 73

Kd is the weakest endpoint in both and should not be leaned on. Kb appears only within a family: two agonist readings of one compound at two targets are rarely published across families.

Within one family, family by family

A comparison is filed under the family its two targets share. Targets behind it is how many distinct proteins appear on either side of that family's held-out comparisons, and it is the column to read beside the accuracy: a family can carry thousands of comparisons over a handful of proteins, and then the figure describes those proteins rather than the family.

FamilyHeld-out comparisonsAccuracyTargets behind it
Family A G protein-coupled receptor5,4120.76160
Kinase4,9790.73360
Protease3,8890.81134
Lyase2,7920.7715
Eraser2,3150.7936
Transferase1,9930.8590
Cytochrome P4501,7550.7628
Nuclear receptor1,6010.8133
Electrochemical transporter1,2070.7945
Oxidoreductase1,1370.7986
Phosphodiesterase9380.8022
Reader9240.8353
Toll-like and Il-1 receptors9220.946
Voltage-gated ion channel8110.8148
Hydrolase6000.7770
Phosphatase5750.7440
Ligand-gated ion channel2500.6931

Kinase carries the most of this work and reads lowest, and that is the question being hard rather than the model falling short. Kinases resemble one another more than members of most families do, so telling two of them apart for one compound is the harder question, and it is asked here on more held-out comparisons and more proteins than any other family.

For two kinases there is a deeper instrument. The Kinase Foundation Model answers this same question within the kinome, built on data assembled for kinases alone rather than on one public release, so it sees far more of the family than a roster-wide model can. Its headline is measured on its own holdout, under a different split and a different test-set composition, so the two figures are not a like-for-like comparison and neither should be read as beating the other. Use it when both targets are kinases, and this model when the comparison leaves the family. The same holds for G protein-coupled receptors and the GPCR Foundation Model.

These 13 families carry within-family data but too little held out to score, so they are marked rather than scored: Primary active transporter (170), Writer (143), Other ion channel (112), Family C G protein-coupled receptor (85), Fatty acid binding protein family (62), Family B G protein-coupled receptor (50), Isomerase (39), Aminoacyltransferase (15), Transmembrane 1-electron transfer carriers (8), Calcium channel auxiliary subunit alpha2delta family (3), Taste family G protein-coupled receptor (3), Ligase (1), Frizzled family G protein-coupled receptor (1). The remaining 4 families on the roster carry no within-family comparisons.

The funnel

StageCount
Measurements after scoping to human single-protein targets carrying a family1,263,626
Targets in that pool2,705
Ligands in that pool794,638
Comparisons formed423,781
of those, two targets from different families89,888
of those, two different targets from one family333,893
Comparisons fitted on382,354
Comparisons held out41,427
of those, across families and within one family8,689 and 32,738
Ligands across those comparisons150,571
Targets servable2,279

Featurization

A comparison is one row of three concatenated blocks, in a fixed order. Nothing is scored on its own and subtracted.

BlockDimensionsContents
Sequence A480ESM2 esm2_t12_35M_UR50D, mean pooled over residues, full-length UniProt canonical sequence
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
Sequence B480as sequence A

Rows are sequence, ligand, sequence, so 2×480 + 1,038 = 1,998 columns. At prediction time the same symmetry is applied as an average over both argument orders, so comparing A with B and comparing B with A return probabilities summing to exactly 1. The strength printed on every page is the larger of the two, max(p, 1 − p), which is why it runs from 0.5 to 1.0 and is the only number a reader needs.

Environment

The serving image pins every version the forest was fitted under. RDKit computes 1,024 of every ligand block's 1,038 dimensions, so a different RDKit produces different features, scores worse, and nothing in the model detects it. The image refuses to build unless the joblib matches its manifest checksum, the 30 shipped reference predictions replay to 1e-6, and the both-orders average still returns exactly 0.5 for a target against itself.

PackagePinned
numpy2.2.6
python3.10.15
sklearn1.7.2

Family deep dives, beside this one

These two models are the broad instrument: two separately fitted models over one roster of 34 protein families, so one preference model ranks compounds at a kinase, a protease or an ion channel without being told which, and one target-preference model ranks two targets for a compound whether they sit in different families or in the same one.

Two sibling sites do the opposite, and deliberately. Each takes one family and goes deep, on data assembled for that family rather than on a single public release.

ModelRosterPrimary data
Family Foundation Model
this site
34 families in two models ChEMBL 37 alone, which is what lets the weights be downloaded freely
GPCR Foundation Model G protein-coupled receptors ChEMBL plus Eidogen-curated GPCR data
Kinase Foundation Model protein kinases the Eidogen-Sertanty Kinase Knowledgebase, with ChEMBL used to cross-validate rather than to train

Both siblings run the same two layouts this site runs, one that ranks compounds at a fixed target and one that ranks targets for a fixed compound, so the shapes of the questions match and the answers read the same way. What differs is the trade. A deep dive has more measurements per target and a roster narrow enough to model on its own terms, so within its family it is the sharper instrument. These models give up that depth and buy reach: one roster, one pair of forests, and a question you can ask across families rather than inside one.

They answer different questions and neither replaces the other. A deep dive is the sharper instrument when every target you care about sits inside its family. These reach wider: one roster, one pair of forests, and a panel that can mix families freely, which is what off-target triage and repurposing usually require.

The GPCR deep dive → The kinase deep dive →