PharmCast · Downloads · Try the model · Archive

Model weights

Released checkpoints, with the checksum and the training snapshot each one was built from.

Verify what you download

Every file below is listed in SHA256SUMS, which is append-only. A published checkpoint is never replaced in place.

curl -O https://pharmcast.ai/models/pharmcast_scp_v10.pt
curl -O https://pharmcast.ai/models/SHA256SUMS
shasum -a 256 pharmcast_scp_v10.pt                 # macOS / Linux
certutil -hashfile pharmcast_scp_v10.pt SHA256     # Windows

SCP v10 is the current model. Superseded releases move to the model archive: still downloadable, still checksummed, but not what new work should use.

PharmCast SCP v10 current

Screening collection + ChEMBL + peptides, trained 1 September 2026

Download
pharmcast_scp_v10.pt   32,887,857 bytes (31.4 MB)
SHA-256
b25ad356fb9b4bc2a05f6a7c06e87efc81a0832195ad73068d90448dd36284cf
Training set
5,887,229 molecules for gradient updates, drawn from a sealed snapshot of 5,946,696: 4,609,488 screening collection, 1,214,214 activity-backed ChEMBL from 142 to 1000 Da, 122,994 loop peptides. 1% (59,467) was reserved as a molecular-weight-stratified stopping set.
Fingerprint width
10,549, one output per pharmacophore
Parameters
8,045,877. Inputs 2,059, binary2048 features, hidden 1024 and 512, batch 256, learning rate 0.001.
Training
100 epochs, the epoch-68 weights restored as the best stopping loss.
Accuracy
Measured on molecules the model cannot have seen.
PopulationnMedian errorWithin 0.05Pearson rRanking
Loop peptides, reserved test set13,5000.01688%0.9840.952
ChEMBL, activity backed139,7000.02775%0.9360.889
Catalog chemistry155,6480.00889%0.9800.936
Reference against itself0.0060.995ceiling
The peptide row is the reserved test set of 13,500 loops held back from the corpus and never trained on. It is the largest and most stable of the three and the one to read first. Per fingerprint rather than per pair, its median MCC is 0.914, with a 10th percentile of 0.846 and a 90th of 0.958.

The catalog row is 155,648 real, purchasable June 2026 catalog compounds that the ingest filter excluded, so no version has trained on them and none can. They span 42 to 977 Da.

License
Apache-2.0, same as the code. Keep the NOTICE file.

Using it

The loader is the PharmCast Python package. It is pure Python over NumPy, PyTorch and RDKit, and runs on Apple Silicon, Intel macOS, Windows and Linux alike. Inference runs on the CPU: an 8-million-parameter network needs no accelerator to fingerprint a molecule. Training is a different matter, and version 10 was trained on the GPU.

pip install git+https://github.com/smuskal/pharmcast.git

from pharmcast import PharmCast, pharmtan
pc = PharmCast.load("pharmcast_scp_v10.pt")
a, b = pc.words_batch(["CC(=O)Oc1ccccc1C(=O)O", "OC(=O)c1ccccc1O"])
pharmtan(a, b)        # 0.379