Build of 12 September 2026. Every figure on this page is transcribed from the build artifacts, not from notes.
Measurements come from ChEMBL together with Eidogen-curated data. The training endpoints are IC50, Ki, Kd, EC50 and Kb, so "more potent" spans binding affinity and functional potency together.
The curated set is our own, assembled and checked in house, and it is folded into the training set on the same footing as the public data rather than held alongside it. It is the reason this build reads better than the one before it.
Activity is derived from the reported value and unit rather than read from a precomputed field, because in this data the precomputed column appears only on erroneous rows. Duplicate readings collapse by median per target, structure and endpoint, never by the most potent value, because the best value selects unit errors.
| Stage | Rows |
|---|---|
| Measurements read from all sources | 1,151,162 |
| After scope, endpoint, assay class and unit filters, then duplicate collapse | 389,013 |
| Distinct compounds in that set | 225,676 |
| Distinct targets in that set | 284 |
| Fitting side of the measuring split | 350,097 |
| Held-out side of the measuring split | 38,916 |
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. The split holds out 10 percent of compounds, stratified so each target contributes about a tenth of its own: per-target share ran 0.08 to 0.11, median 0.10, and no target with 20 or more compounds was left with nothing held out. A compound appears on one side only. The split is not temporal.
The two models the site serves are fitted on the whole 389,013 measurements with nothing held back. Every accuracy quoted here comes from a second pair of models built by the identical pipeline on the fitting side of the split and scored on the held-out side, so no number on this site comes from a model scored on data it was fitted on.
| Endpoint | Measurements |
|---|---|
| Ki | 161,771 |
| IC50 | 131,601 |
| EC50 | 87,493 |
| Kd | 4,760 |
| Kb | 3,388 |
Comparisons are matched by endpoint, so a functional reading is never ranked directly against a binding one.
The bundle carries 400 targets, each addressable by gene symbol or UniProt accession, but a target being listed is not the same as the model having been fitted on it. A target that was not fitted cannot be scored: the interface refuses it and so does the API.
| Model | Targets fitted | With a held-out score | Names recognized | Ligands in fitting |
|---|---|---|---|---|
| Potency | 259 | 235 | 400 | 215,838 |
| Selectivity | 271 | 211 | 400 | 66,662 |
The ranking pages group fitted targets separately from merely recognized ones, and show each fitted target's own held-out accuracy beside its name. The full list, with per-target measurement counts and accuracies, is on the targets page.
| Model | Targets scored | Median | With 50+ comparisons | Median of those | Of those, below 0.60 |
|---|---|---|---|---|---|
| Potency | 235 | 0.79 | 196 | 0.79 | 0 |
| Selectivity | 211 | 0.83 | 104 | 0.82 | 0 |
A headline accuracy is a comparison-weighted average, so targets carrying many held-out comparisons dominate it. Both headline figures reconcile exactly with the per-target table above.
A comparison is one row of three concatenated blocks. Nothing is scored on its own and subtracted.
| Block | Dimensions | Contents |
|---|---|---|
| Ligand | 1,038 | Morgan 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 | 480 | ESM2 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.
Random forests, 300 trees, square-root feature sampling. Minimum leaf size 20 for potency and 8 for selectivity, set by the 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 depends on which side a ligand was written on. 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 1.
| Model | Comparisons fitted | Rows after the swap | Held-out comparisons | Accuracy |
|---|---|---|---|---|
| Potency | 2,259,810 | 4,519,620 | 762,493 | 0.77 |
| Selectivity | 238,378 | 476,756 | 24,741 | 0.80 |