Eidogen-Sertanty

PharmCast

What a molecule can present, not what it looks like, predicted straight from the 2D structure, with no conformers at all.

A pharmacophore fingerprint records the three-dimensional arrangement of binding features a molecule can present, so two compounds from completely different scaffolds can be compared on the thing a protein actually reads. That encoding is the 10,549-pharmacophore three-point PharmPrint, and comparing two of them is PharmSim.

Its cost has never been the fingerprint. Almost all of it is generating the conformer ensemble; the bit calculation itself is a small fraction. PharmCast is a model that predicts the complete fingerprint directly from a SMILES string, removing the conformational stage rather than accelerating it. That is why the speed-up is of a different order to what optimization normally buys.

The two routes to a pharmacophore fingerprint, worked through on saquinavir and indinavir. The conventional route generates a conformer ensemble and runs the reference calculation over it; PharmCast predicts the same ensemble record straight from the two-dimensional structure. The reference calculation puts the pair at 0.84 and PharmCast version 10 predicts 0.84, against a two-dimensional Morgan Tanimoto of 0.30.
The two routes to a fingerprint, worked through on saquinavir and indinavir, two HIV-1 protease inhibitors of unrelated scaffold. The conventional route generates a conformer ensemble and runs the reference calculation over it. PharmCast predicts the same ensemble record straight from the structure. The reference calculation puts the pair at 0.841 and PharmCast version 10 predicts 0.843, where a two-dimensional Morgan Tanimoto puts them at 0.30. That gap is the whole point of the descriptor. Run a pair yourself.
0.980Correlation with the real calculation on catalog chemistry
0.914Median per-molecule agreement (MCC) on the 13,500 molecule reserved peptide test set
5.9 MMolecules in the training set, every one fingerprinted with the real calculation

The fingerprint

A fixed geometric vocabulary, not a substructural one

Every pharmacophore in the scheme is a triangle of three typed features at three measured distances. Enumerate every combination of feature types and distance ranges and you get a fixed vocabulary of possible triangles. Each one is a bit. A molecule sets the bit for every triangle it can actually form.

A three point pharmacophore: three typed features p1, p2, p3 joined by three measured distances, beside the seven feature types and six distance bins that enumerate 10,549 pharmacophores.
What one bit is. A three point pharmacophore is three typed features and the three binned distances between them. Enumerating every triangle that satisfies the triangle inequality on the bin bounds gives 10,549 distinct pharmacophores.

Because the vocabulary is geometric rather than substructural, two molecules with nothing in common on paper can score highly against each other if they present their features in the same places. That is exactly the comparison a scaffold hop needs, and it is not what a two-dimensional fingerprint measures.

Two different molecules, each shown in three dimensions with the same acceptor, donor and ring features picked out and the three inter-feature distances measured between them.
The same pharmacophore on two unrelated scaffolds. Estradiol (above) and diethylstilbestrol (below) each present an acceptor (p1), a donor (p2) and an aromatic ring (p3). The distances differ, 2.7, 7.8 and 10.4 Å against 2.7, 9.2 and 11.9, but all three fall in the same bins, so both set the same bit. That is what scaffold hopping looks like from inside the descriptor.

What PharmCast predicts

PharmCast reads a canonical SMILES and predicts all 10,549 pharmacophores, one output each. It was trained on ensemble fingerprints, the bitwise OR of 100 conformers per molecule, so what it reproduces is the ensemble fingerprint and the similarity between two of them. The output is the standard native format: the same 330 unsigned 32-bit words the real calculation emits, in the same bit convention, so existing PharmSim tooling consumes it unchanged.

Input

Structure
Canonical SMILES
Features
2,048-bit Morgan radius 2, plus 11 descriptors

Output

Fingerprint
10,549 pharmacophores, stored as 330 × uint32
Format
Native .pfp, byte-identical convention

Accuracy

Measured on molecules the model has never seen

Three scatter panels of PharmCast similarity against the reference pharmacophore similarity: screening collection, loop peptides and large ChEMBL compounds. The first two hug the diagonal tightly; the last is wider.
PharmCast version 10 similarity against the reference calculation on three distinct chemistries. The first two panels sit on the diagonal. The third, real ChEMBL compounds, plainly does not, and the reason is in the next section.
RegimeMedian errorCorrelation rPairwise ranking
Catalog chemistry0.0080.98094%
Loop peptides, reserved test set0.0160.98495%
Large compounds, above 600 Da0.0400.93883%
The real calculation against itself0.0060.995ceiling

That last row is the one that sets the scale. Rebuilding the same molecules with a different embedding seed reproduces pair similarity to 0.006 at r 0.995, so the reference calculation agrees with itself an order of magnitude more tightly than PharmCast agrees with it. The ground truth is not the problem, and 0.006 is the floor no surrogate can beat.

Scatter of predicted pharmacophore similarity against reference pharmacophore similarity for 25,165 unique pairs, each point colored by the two dimensional Morgan similarity of that pair, green for the most dissimilar through red for the least, with the Pearson correlation reported inside each of five two dimensional bands.
The same pairs colored by two dimensional Morgan similarity, on PharmCast version 10. Agreement does not depend on two dimensional similarity: Pearson within the five two dimensional bands is 0.966, 0.981, 0.973, 0.959 and 0.942, from the most two dimensionally dissimilar pairs to the least, so the model is predicting three dimensional feature geometry rather than restating its own input.

Where it holds, and where it does not

Applicability domain

PharmCast is calibrated for catalog-like chemistry up to about 600 Da, activity-backed ChEMBL chemistry from 142 to 1000 Da, and peptides above that. Outside those ranges it is extrapolating, and the error profile above shows what that costs.

The reason is in the training set. The screening collection is filtered at 600 Da on ingest, so it contributes nothing above that line by construction. What the model sees above it comes from the activity-backed ChEMBL set, which spans 142 to 1000 Da, and from the peptide set. That is why ChEMBL is the population where error is highest, and why error rises with mass: coverage above 600 Da is thinner than below it.

Source setMolecules fingerprinted at the version 10 snapshot
Screening collection4,609,488
ChEMBL1,214,214
Loop peptides136,494
All three5,960,196
Stacked bars of training molecules per model version from SP v2 to version 10, split into screening collection, ChEMBL and loop peptides, rising from 1,724,833 to 5,887,229.
What went into each model. Training molecules per release, by source. PharmCast version 10 trains on 5,887,229. Each release draws on the same three sources.
Agreement with the reference fingerprint against training set size, one point per release from SP v2 to version 10, every point measured on the same held-out set of 155,648 test cases.
What that buys. Agreement with the real fingerprint against training set size, one point per release. Returns from growth in the training set are real but diminishing.

What it is trained on

Every molecule fingerprinted with the real calculation, not a shortcut

The screening collection

The source is the June 2026 release of the Enamine screening collection, which currently states 4,774,670 compounds. These are real, orderable material: compounds synthesized and held in stock, quality controlled to at least 90% purity, not a virtual enumeration. Enamine's much larger combinatorial spaces are not included.

Property filters on ingest keep compounds up to 600 Da, at most 10 rotatable bonds and no more than one Lipinski violation; 4,612,044 survive. That filtered set is the index PharmCast draws from, and it is being fingerprinted continuously with the real 100-conformer calculation. PharmCast draws on the 4,609,488 fingerprinted at the time of the frozen snapshot. The 600 Da filter is applied here, on ingest, which is precisely why the collection contributes no catalog chemistry above that line; what the model sees above it comes from the ChEMBL and peptide sets.

Property5th pctMedian95th pct
Molecular weight255344465
cLogP0.72.74.7
Fraction sp3 carbon0.090.350.71

This is a lead-like library rather than a fragment or biologics-adjacent one. The median compound weighs 344, carries three rings of which two are aromatic, five rotatable bonds, and sits at cLogP 2.7. Only 8% carry defined stereochemistry, so the collection is predominantly flat, achiral scaffolding decorated with substituents.

Wide in frameworks, deep in analogs

Two measurements of the same collection pull in opposite directions, and both are true. Reduced to Bemis-Murcko scaffolds it is broad: 679 distinct frameworks per thousand molecules, 88% of them appearing exactly once, and the ten commonest together account for only 4.0%. But compared whole-molecule against whole-molecule (exhaustively, all 4,612,044 against each other with no sampling), it is dense.

0.714Median 2D similarity to the nearest other compound in the collection
54.9%Have a neighbor at 0.70 or closer
64,473Have a 2D-identical twin

The resolution is that the collection is wide in frameworks and deep in analogs around them: many scaffolds, each decorated many times over with closely related substituents. That has a direct consequence for how any model on this data must be evaluated: a random split places near-identical analogs on both sides and reports an optimistic number.

One caveat on that measurement

All of it is 2D structural similarity. Two compounds that look alike on paper can present different three-dimensional pharmacophores, and two that look unrelated can present similar ones. It describes the catalog, not what the molecules do, which is the entire reason the 3D fingerprint exists.

The peptide set, and why it is not just more molecules

An RCSB query at 2.5 Å resolution or better with R-free at or below 0.22 returned 71,018 entries, of which 69,450 yielded usable fragments: 1,524,535 loop instances across 135,408 chains, collapsing to 117,741 distinct sequences and 133,136 distinct capped molecules. Loops are runs of two to six residues lying between annotated secondary structure, read from the helix and strand records in the mmCIF itself rather than re-derived.

Each fragment is capped with its real flanking atoms (an acetyl built from the preceding residue, an N-methylamide from the following one), so it never presents a free amine and acid the protein does not have. Backbone continuity is enforced by requiring the carbon-to-nitrogen distance between consecutive residues to fall between 1.0 and 2.0 Å rather than trusting residue numbering, which rejected 54,520 candidates that numbering alone would have accepted.

Ensemble enhancement is the novel step. Each distinct peptide gets one fingerprint that ORs together every rigid crystallographic conformation actually observed for it in the PDB with 100 computed conformers, generated exactly as for the screening collection. The conformer count therefore runs above 100, and the fingerprint carries both what nature was caught doing and what the molecule can do.

Repeats are kept rather than deduplicated, and the reason is measurable. Across 1,500 sequences seen in three or more entries, the median agreement between observations of the same sequence is 0.878, but 18% fall below 0.70, carrying genuinely different pharmacophores from one crystal structure to the next, and only 19% are near copies. Collapsing them to one representative would throw that away.

Seven deposited conformations of the loop sequence LGGK overlaid, beside a histogram of pharmacophoric similarity between pairs of those observed conformations, spread from 0.28 to 0.97 with a median of 0.56.
One loop sequence, seven deposited conformations, and the pharmacophoric similarity between them. A single sequence is not a single shape, which is the whole argument for the ensemble.

The same fingerprints read a drug back to a peptide. We PharmCasted the co-complexed ligands of the RCSB against the peptide loops extracted from the RCSB for PharmCast training, every ligand with a measured potency against all 3,368,420 capped peptides of one to five residues, with PharmCast on both sides. This identified overlaps between small molecule ligands and peptides, which is our reverse peptide mimetic project. 25 of the 38 closest peptides occur as complete loops in real protein structures. The clearest is nirmatrelvir, the Paxlovid active ingredient and a designed peptidomimetic: its closest peptide, AMVP, reaches a pharmacophore Tanimoto of 0.913 against a Morgan similarity of 0.167, and the loop AMVPN, taken from its own crystal structure exactly as deposited, is shown here superposed on the drug.

Nirmatrelvir, heavy dark sticks, and the real loop AMVPN, light sticks, with their shared pharmacophore features. Drag to rotate. The full study, seven such cases with citations and the forty closest ligand and peptide pairs, is at Eidogen-Sertanty: Loops that mimic drugs and Reverse peptide mimetics.

Model card

Release
PharmCast version 10, trained 1 September 2026
Architecture
Feedforward network, 2,059 inputs to one sigmoid output per pharmacophore; 8,045,877 parameters
Training
5,887,229 molecules for gradient updates, from a frozen snapshot of 5,946,696: 4,609,488 screening collection, 1,214,214 activity-backed ChEMBL, 122,994 loop peptides; the released weights are the epoch-68 ones restored
Holdout
59,467 molecules, 1% stratified by molecular weight, used for early stopping only
Median per-molecule MCC
0.914 on the reserved peptide test set
Naming
Screening collection, ChEMBL, Peptides. The letters name the source sets, not the version.

Measured on molecules the model never trained on. The peptide row is the reserved test set of 13,500 loops held out by construction; the other two are every molecule fingerprinted after the training set was frozen:

PopulationMedian errorPearson rWithin 0.05
Loop peptides, reserved test set0.0160.98488%
ChEMBL, activity backed0.0270.93675%
Catalog chemistry0.0080.98089%
The real calculation against itself0.0060.995ceiling

Get the model

Weights and code, both Apache-2.0

Weights are available

Download PharmCast version 10, 32,887,857 bytes, Apache-2.0, published with its SHA-256.

You do not need the weights to use the model: fingerprint a molecule or compare two here, and it runs on this site.

The code is available now. It is pure Python over NumPy, PyTorch and RDKit, and runs on Apple Silicon, Intel macOS, Windows and Linux alike. CPU only, an 8-million-parameter network gains nothing from a GPU. words_batch is the API that matters: the model earns its speed in a batch, and a single call is dominated by featurization overhead.

from pharmcast import PharmCast, pharmtan, pharmsim

pc = PharmCast.load("pharmcast_scp_v10.pt")
a, b = pc.words_batch(["CC(=O)Oc1ccccc1C(=O)O", "OC(=O)c1ccccc1O"])

pharmtan(a, b)          # 0.358,  the PharmSim coefficient
pharmsim(a, b)          # ...with the shared and exclusive bit sets shown

Citation

Muskal, S. M. and McGregor, M. J. PharmCast: rapid generation of three-dimensional pharmacophore fingerprints from two-dimensional structure without conformer generation. bioRxiv, 2026. doi: 10.64898/2026.09.02.748999

Steven M. Muskal1, Malcolm J. McGregor2
1Eidogen-Sertanty, Inc.   2SRI International, 333 Ravenswood Avenue, Menlo Park, CA 94025, USA
Correspondence: smuskal@eidogen-sertanty.com

The method it builds on:

McGregor, M. J. and Muskal, S. M. Pharmacophore fingerprinting. 1. Application to QSAR and focused library design. J. Chem. Inf. Comput. Sci. 1999.
McGregor, M. J. and Muskal, S. M. Pharmacophore fingerprinting. 2. Application to primary library design. J. Chem. Inf. Comput. Sci. 2000.

Talk to us

Applications, licensing, early access to the weights