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 the probability that one side wins. That probability carries a direction and a confidence, and accuracy rises both with that confidence and with how far apart the two really are, whether that is two compounds on one kinase or two kinases on one compound.
Version 2, the current release → Rank compounds How we got there
Why comparison
Compound prioritisation 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 prioritisation 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 the probability that ligand A is the more potent of the two against that sequence. 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 the probability that protein A binds it more tightly. 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 version 2 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.
Nothing in the method is specific to kinases. The featuriser, 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 run that end to end once, as a proof of concept, porting both layouts to GPCRs against a ChEMBL pull of 1.09 million activity rows over 405 receptors. Every part of the modelling core ran unmodified. Those results are being re-measured and no accuracy is quoted for them here; what the exercise established is that the method carries across a family, not how well it performed on this one.
The original model is a pointwise scorer: one kinase and one ligand per row, returning a number on the pIC50 scale. Comparisons were made afterwards, by a wrapper that subtracted two independent scores. It is the work version 2 grew out of, and it remains published in full, but it is a different architecture answering a different question, and its numbers are not comparable to version 2's line by line.
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.