Two models, one question each, both conditioned on the kinase’s amino-acid sequence. Neither estimates a potency first: the whole comparison goes into a single input row, in a fixed order, and the model returns which side wins, with a prediction strength. That strength is its own confidence, and accuracy rises both with it and with how far apart the two really are, whether that is two compounds on one kinase or two kinases on one compound.
Why comparison
Compound prioritization in a screening campaign proceeds through repeated comparison operations: which of these two compounds to source or make next, which of these two kinases to counter-screen first. We therefore built models that behave as comparison operators, not only because prioritization ultimately relies on comparison, but because doing so massively expands the number of training examples an already large corpus of experimental data can provide.
The arithmetic is the point. A target measured against n ligands supports n(n−1)/2 comparisons, and because position in the row carries the question, each one is presented in both orders, which cancels the halving. The training set is every ordered pair: n(n−1) rows from n measurements.
No new experiments. The same measurements, posed as the question the screening cascade was always asking.
A protein sequence is encoded by ESM2 into 480 numbers. A compound becomes a 1,024-bit Morgan count fingerprint plus 14 descriptors covering size, topology and composition. Neither half requires a structure, a docked pose or a binding-site definition. What varies between the models is what occupies which position in the row, and the position is the question.
Two compounds and one kinase. The model returns which ligand is the more potent of the two against that sequence, with the strength of that call. This is the ordering a medicinal chemist works from when triaging a series against a single target.
Two kinases and one compound. The model returns at which kinase the compound is more potent, with the strength of that call. This is the selectivity question, and it is the one a per-target scorer structurally cannot answer.
Everything is trained on the Kinase Knowledgebase, a curated corpus of kinase structure-activity measurements, and tested on ChEMBL comparisons the models never saw. The models rank; they do not estimate a potency. There is no predicted IC50 here to put in a table.
Two models, each trained directly on ordered comparisons. They answer different questions and were tested on different sets, so their numbers are not interchangeable, including their confidence scales.
The ranking tools above run in the browser against our service. The same models also run locally, offline, with nothing sent anywhere, which is the practical requirement when the compounds are unpublished. The command line package is on GitHub, and one command installs the code and both models.
git clone https://github.com/smuskal/KFM.git && cd KFM && ./install.sh
The installer verifies itself by scoring a known case, so a bad install fails loudly rather than returning wrong numbers quietly. Two add-ons let you extend a released model with your own measurements, or fit a new model on your data alone using the same recipe; both run locally and transmit nothing. The code is open; the model weights are separately licensed for research and evaluation.
Both models are trained on the Kinase Knowledgebase, Q2-2026 release, and on nothing else. No ChEMBL, no BindingDB, no public aggregation. ChEMBL is held back entirely and used only to test, so every accuracy on this site is measured on measurements neither model has seen. Targets are keyed by sequence, so a mutant counts as a target in its own right. Every figure below is transcribed from the two research reports.
| Quantity | Potency | Selectivity |
|---|---|---|
| Source measurements pulled from the Knowledgebase | 841,187 | 841,187 |
| Measurements retained after featurization | 840,692 | 841,094 |
| Distinct ligands | 302,999 | 99,739 |
| Distinct target sequences | 733 | 728 |
| Comparisons the forest was fitted on | 15,256,017 | 4,340,117 |
| Rows after the label-reversal swap | 40,056,452 | 8,680,234 |
The comparison counts are larger than the measurement count because a comparison is built from a pair of measurements. One kinase measured against 1,000 compounds yields 499,500 ordered pairs from 1,000 experiments, which is what asking the question this way buys. The potency model draws its pairs on an even quota per target, so heavily screened kinases do not crowd out the rest.
| Quantity | Potency | Selectivity |
|---|---|---|
| ChEMBL measurements mapping to our panel | 379,587 | 869,296 |
| Comparisons removed because the triple was trained on | 163,900 | 1,407,001 |
| Held-out comparisons scored | 1,836,100 | 3,137,588 |
| Targets covered by the test | 477 | 482 |
Any comparison whose exact target and ligand pair appears in training is removed before scoring, which is why the removed rows are counted here rather than folded away. Full construction, per-target breakdowns and every caveat are in the potency report and the selectivity report.
Nothing in the method is specific to kinases. The featurizer, the pairwise
formulation, the label-reversal swap, the censored-value logic and the forest work
on any protein family for which you have sequences and activity data. Give
kfm buildnew one measurement per row, a compound with a sequence and
a potency, and it builds the comparisons for you, for either model, from the same
file.
We have now done that end to end and put it in public, twice, and the two go about it in opposite ways. familyfoundationmodel.com drops the family boundary altogether: one pair of models covers 34 protein families at once, kinases, GPCRs, proteases, transporters, ion channels and the epigenetic readers, writers and erasers, in two separately fitted models. The compound-preference model takes one target and two compounds and says which compound that target prefers; the target-preference model takes one compound and two targets and says which target the compound prefers, whether those two sit in different families, the off-target and repurposing question, or in one family, the selectivity question, with each kind measured on its own held-out comparisons. It is trained on ChEMBL 37 alone, which is what lets its weights be downloaded freely. The compound-preference model scores 0.71 on 65,725 held-out comparisons over 2,079 targets, and the target-preference model, over 2,279 targets, 0.75 on 8,689 comparisons between two families and 0.78 on 32,738 within one family.
This site and gpcrfoundationmodel.com are the other approach: a deep dive into one family, where the data is deeper than any single public source and the roster is narrow enough that it pays to model the family on its own terms. The GPCR site is the same featurizer, the same pairwise formulation, the same swap and the same forest, over G protein-coupled receptors instead of kinases, with every part of the modeling core running unmodified.
The distinction that matters is the data behind each. The kinase models here take their primary measurements from the Eidogen-Sertanty Kinase Knowledgebase, with ChEMBL used to cross-validate rather than to train. The GPCR models are built on ChEMBL plus Eidogen-curated GPCR data. The cross-family models are ChEMBL 37 only. So the two family sites buy depth in one family from data assembled for it, and the cross-family site buys breadth across 34 families from one reproducible public release. They answer different questions and neither replaces the other.
On its held-out set, built 12 September 2026, the GPCR potency model scores 0.77 over 762,493 comparisons across 235 targets and the selectivity model 0.80 over 24,741 comparisons across 211. As here, accuracy rises with prediction strength, and as here, every figure covers comparisons between targets the model was fitted on. Its limitations page is the more instructive half.
The models above predict from sequence and ligand alone. Three companion pages put the deposited structures beside the same Kinase Knowledgebase measurements: one draws what each kinase ligand is doing in its pocket, one shows how far potency ranges among ligands that all crystallized in one site, and one turns the whole co-crystal record into a searchable index that answers the reverse question, which proteins a molecule might interact with.
Reports are regenerated as the models change; these links always point at the current version.