Family Foundation Model

Download the model

Model release 13 September 2026. Trained on ChEMBL 37 alone.

The whole model runs on your own machine. Nothing is sent anywhere, and the bundle carries everything it needs to score.

QuantityValue
Forest on disk0.09 GB
Resident once loadedabout 1.0 GB
Load timeunder 4 s
Targets it can score1,879
Held-out accuracy0.750

A laptop with 8 GB runs this comfortably. No GPU is used at any point.

Get the code

The command line tools, the inference API and everything needed to rebuild the training set are on GitHub: github.com/smuskal/ffm.

git clone https://github.com/smuskal/ffm.git
cd ffm && ./install.sh

That installs the environment with the versions pinned below and fetches the model bundle, then proves it works by replaying the 30 reference predictions that ship with it. If they do not reproduce to 1e-6 it fails rather than reporting success.

Run it

ffm rank --smiles "CC(=O)Oc1ccccc1C(=O)O" --targets P00533 P08684 P28223

Targets are named by UniProt accession. Gene symbols are many-to-many against accessions and the failure is silent, so the accession is what the model is given. The full roster is on the targets page.

What is in the bundle

FileWhat it is
familyfm_selectivity.joblibthe forest
predict.pythe inference API; load it by file path, nothing to install
sequence_vectors.npzESM2 vectors for every servable target, precomputed
sequence_index.jsonsequence key to row
target_index.jsonaccession to sequence key, and the family per target
MANIFEST.jsonprovenance, hyperparameters, measured performance
reference_predictions.json30 fixed inputs and the outputs this bundle produced
heldout_scored.csvevery held-out comparison with its probability, so the headline can be recomputed

Because heldout_scored.csv ships with the bundle, every number on this site can be recomputed from the download without rerunning the model.

Pin these versions

A joblib forest is a pickled object graph, and a different scikit-learn either refuses to load it or loads it and scores differently. RDKit computes 1,024 of every ligand block's 1,038 dimensions, so a different RDKit changes the fingerprint and moves every score with nothing to detect it.

PackagePinned
numpy2.2.6
python3.10.15
sklearn1.7.2

Licensing

The code is Apache 2.0. The model weights are CC BY-SA 4.0, which is the share-alike term ChEMBL itself carries: this model is trained on ChEMBL 37 and nothing else, so the weights inherit its attribution and share-alike conditions. Cite ChEMBL alongside this model in anything you publish.

The sibling Kinase Foundation Model ships its weights under research-and-evaluation terms instead, because it is trained on a commercial database. This one is not, which is why it can be downloaded freely.

Model release {F["build"]}. The forest, the reference predictions and the held-out scores in the bundle all come from that build, and the checksum in MANIFEST.json is what the installer verifies.