StableFold PGK2 · CACHE / Target 2035 · Nov 2026

DNA-encoded libraries

Reading the
unreadable.

Seven and a half million molecules carry a signal almost nobody can extract. We built the estimator that extracts it — without a single binding label.

← → to navigate
Investor briefing 01 / 17
01 — What a DEL is Split-and-pool synthesis

Every molecule carries its own barcode, so a billion of them can be screened in one tube.

CYCLE 1 n building blocks split CYCLE 2 × n building blocks pool CYCLE 3 × n building blocks ONE LIBRARY n3 distinct molecules from 3n operations each with a unique DNA tag

Three cycles of chemistry with a few hundred building blocks each produce hundreds of millions to billions of compounds. The DNA tag grows with the molecule, so after the whole pool is washed over an immobilised protein, sequencing the surviving barcodes says which molecules stuck. One experiment, a few days, tens of micrograms of protein.

Brenner & Lerner 1992 · PNAS 02 / 17
02 — Why it matters DEL in the clinic

Almost every major pharmaceutical company now runs DEL. It has already produced clinical candidates.

GSK2982772 RIP1 kinase inhibitor Phase II in psoriasis, rheumatoid arthritis and ulcerative colitis
GSK2256294 soluble epoxide hydrolase first DEL-enabled clinical candidate; Phase II completed
X-165 autotaxin inhibitor from a 225-million-member library; FDA-cleared for Phase I

The economics are the reason. Synthesising a conventional screening library can cost on the order of a billion dollars; a DEL of comparable or far greater size needs standard lab infrastructure and a sequencing run. More than 70 distinct DELs have been published since 2004, and over half of all DEL-derived ligands reported to date appeared in the last six years.

Sources: Chem Rev 2021 · Nat Commun 2024 review · J Med Chem 03 / 17
03 — What goes wrong Why the counts lie

A read count is not an affinity. Six different things can raise it.

Matrix binders The molecule sticks to the beads or the affinity tag, not the protein.
Promiscuous binders Compounds that enrich against every target ever screened.
Truncates A cycle failed; the barcode claims a molecule that was never made.
Tag and yield bias Unequal starting copies and DNA-tag effects shift counts independently of binding.
Sampling noise Below about ten copies, counts are Poisson. Most of the library sits there.
False negatives The DNA linker blocks real binders. A 2025 PARP study found several missed actives per hit.

The field's own remedy is blunt: Pfizer's replicate study found that simply discarding compounds with one to five reads cut the dataset more than a hundredfold without changing the conclusions. That is the standard practice our work is aimed at — throwing away almost everything is the state of the art.

X-Chem artefact guide · Zhu et al. 2021 · Montoya et al. 2025 04 / 17
04 — Who built this field Thirty years, three steps

The idea came from a Nobel laureate. The machine learning came from Google.

1992
Sydney Brenner
Sydney Brenner & Richard Lerner Scripps Research. Propose encoding each molecule in a combinatorial library with its own DNA tag. Brenner takes the 2002 Nobel in Physiology or Medicine for unrelated work on C. elegans.
2004–18
ETH Zürich
Dario Neri & Jörg Scheuermann ETH Zürich. Turn the concept into a working platform; more than seventy libraries published. In parallel X-Chem, GSK and Novartis industrialise it.
2020
Google
Patrick Riley & Steven Kearnes Google Accelerated Science, with Eric Sigel and Matthew Clark at X-Chem. Train graph neural networks on DEL counts and screen catalogues the library never contained.
PNAS 1992 · Chem Rev 2021 · J Med Chem 2020 · portrait: OIST, CC BY 2.0 05 / 17
05 — The state of the art What the leading groups did

Google set the benchmark in 2020, and has been refining the loss function ever since.

~30% hit rate at 30 µM McCloskey, Sigel, Kearnes, Riley et al., J Med Chem 2020 — ~2,000 compounds tested prospectively across sEH, ERα and c-KIT
IC50 < 10 nM for every target graph convolutional network beat a fingerprint random forest; ZebiAI and the Chemome initiative spun out of it
2 first ligands for WDR91 Xu, Feng & Kearnes — automated hit expansion on a target with no known inhibitors

The line of work after 2020 is all about the noise model: a multilabel architecture that stops a human choosing the classes (Xu, Han & Kearnes, NeurIPS 2021); an uncertainty-aware Poisson likelihood over target and control counts (Lim & Coley); negative-binomial regression (Ma et al.); partial-product models that account for incomplete synthesis (2022); sparse recovery in deldenoiser (Kómár & Kalinić); and docking-informed likelihoods in DEL-Dock (2022).

Google Research · MIT · ETH · Relay Therapeutics 06 / 17
06 — The blocker qDOS30 · 1,727,652 molecules

Almost every molecule was seen exactly once.

1 read 98.960%
2 0.640%
3 0.147%
4+ 0.236%

A single read is close to no information. Across all ten libraries the singleton share runs 97.4% to 99.9%. Every per-molecule number computed from this data is dominated by the prior you impose on it — which is why the counts normally get thrown away.

Source: distribution_fits.json · del_model_v2 07 / 17
07 — The idea Don't threshold. Infer.

A cutoff is a guess. We let each library tell us where its own signal starts.

Every library's count histogram is fitted as two overlapping populations — one that is pure sequencing noise, one that is real binding. Five candidate zero-truncated families per library, chosen by BIC. What falls out is not a threshold but a probability.

count 1 P = 0.002
2 P = 0.136
3 P = 0.931
4 P = 0.999

P(signal | count) for qDOS30. The decision boundary lands at 3 — but it was derived, not chosen, and it comes out at 4 in qDOS18_3. Ten libraries, ten separate fits.

m1_distribution.py · BIC-selected mixture 08 / 17
08 — The pipeline Counts → labels → ranking

Six stages. No human ever labels a molecule.

16,104 positives inferred from counts alone, across five libraries
99,752 quarantined count ≥ 2 the noise model explains — kept with a reason, never silently dropped
0 binding labels used the model never sees a known active

The fitted distribution assigns every molecule a label. A gradient-boosted tree then learns to predict that label from chemical structure alone — so it can score molecules that were never in the library at all. Counts teach the model; structure lets it travel.

m1 → m6 · labels_summary.csv 09 / 17
09 — How it works DEL-count model v2

Counts in, ranking out.

Two populations, one histogram
m1Fit the noisem2Derive labelsm3Featurisem4Bake offm5Trainm6Score
1101102103104105106123456789101112PGK2 read countk* = 3TWO POPULATIONSThe dashed curve is the fitted noise.It collapses between 2 and 3 — from9,749 expected down to 74.The solid curve is the signal component:a flat, heavy tail that noise cannot make.Where they cross is the threshold.Nobody chose 3. The fit did.
1101102103104105106123456789101112PGK2 read countTHREE CLASSES, NOT TWO■ count = 1 → soft negative6,685,698 molecules■ count ≥ 2 the noise explains99,752 quarantined, not deleted —written out with a reason each■ P(signal | count) ≥ 0.5 → positive16,104 molecules
STRUCTURE ONLYECFP4 — Morgan radius 2, 2,048 bits,binary, stereochemistry removed.Nothing library-specific.No building-block identity, no synthonindex, no library tag — so the modelcan score a molecule from a catalogueit has never seen.
ecfp4+syn0.9596ecfp40.9571ecfp4+phys0.9571ecfp6c0.9569fcfp40.9550phys only0.8313learner armlgbm 0.9605 · rf 0.9596 · extra-trees 0.9592FEATURE ARM, SAME FOLDS154 runs. These six are the feature arm;negatives and learner were tested thesame way.The top row won and was rejected.ecfp4+syn needs building-block identity,which does not exist for a moleculeoutside the library. We paid 0.0025to be able to travel.phys alone reaches 0.8313 — the floorthat is just size and lipophilicity.
qDOS18_30.9835weight 0.212qDOS300.9756weight 0.208qDOS42_20.9470weight 0.194qDOS110.9435weight 0.188qDOS230.9398weight 0.198FIVE FOLDS, GROUPEDFolds are grouped by disynthon pair(b1, b2) inside each library.No molecule is scored by a modelthat saw its own building-block pair.Five of ten libraries passed the gateof 100 positives. Weights areproportional to (AUC − 0.5).
qDOS18_3324×qDOS30236×qDOS42_2209×qDOS11159×qDOS2354×WHAT IT BUYSEnrichment in the top 0.1%: how muchdenser the positives are than chance.All 178,052 external molecules scoredwith the five frozen fold models.Re-scoring reproduces the storedvalues to max abs difference 0.0.
qDOS30 · distribution_fits.json · bakeoff.jsonl · full_population_performance.csv 10 / 17
10 — Why it is believable Leak-proof by construction

The easiest way to fake a good number on DEL data is to let the model mark its own homework.

Molecules built from the same two building blocks are near-identical. Split them at random across training and test and the model simply recognises what it has already seen — and every reported score is inflated.

So the folds are grouped by disynthon pair: a deterministic hash of the library and the (b1, b2) pair decides which fold a molecule belongs to. The guarantee is absolute — no molecule is ever scored by a model that saw its own building-block pair. All 7,465,100 labelled rows were scored this way.

common.py · fold_of(lib, b1, b2, K)

Cross-fitted, not cross-validated 11 / 17
11 — The result Full population, five libraries

It finds the signal.

0.940 – 0.984 cross-fitted AUC every molecule, no sampling
54× – 324× enrichment, top 0.1% qDOS23 lowest, qDOS18_3 highest
0.831 physicochemistry alone the honest floor — we measured how much is just library chemistry

Every design choice was settled by a 154-run bake-off on identical folds: how to treat single-read molecules, which fingerprint, which learner. The configuration that won programmatically was rejected — its features cannot be computed for a molecule outside the library. We measured the price of that constraint: 0.003 AUC.

full_population_performance.csv · bakeoff.jsonl 12 / 17
12 — Where we stand Active Learning phase

Both of our entries placed in the top tenth of the field.

5 / 110 12 series · 28 hits Er-test_v1 · ROC-AUC 0.911
12 / 110 10 series · 27 hits Team_StableFold_AL2 · ROC-AUC 0.847
59 teams in the field 110 scored submissions, active learning split

The challenge scores distinct series first, not raw hits — because a programme needs several independent chemical starting points, not fifty variations of one. Our scored entries came from the fingerprint selection model. The count model described here has never been scored, and nothing on the following slides claims otherwise.

Synapse queue 9619687 · active learning phase 13 / 17
13 — The headroom 178,052 molecules, two rankings

The two models barely agree. That is the asset, not the problem.

0.12 Spearman correlation 0.1155 – 0.1317 over 178,052 molecules
2 shared in the top 100 36× more than chance
1.2× agreement at top 50,000 barely above chance — they rank different things

A fingerprint model trained on 39 known binders and a count model trained on zero binders pick almost disjoint molecules — yet both concentrate their agreement exactly at the top. Two independent lines of evidence about the same chemistry. Combining them has never been tested end to end. That is the single largest piece of unspent headroom in the programme.

testrun/overlap_summary.csv 14 / 17
14 — The platform What transfers to the next target

This is not one answer. It is a procedure that runs on any DEL screen.

3¼ hrs counts to frozen model 7.5M molecules, one cloud VM
0.0 reproduction difference max absolute, re-scoring 178,052 molecules
4 pinned dependencies RDKit · LightGBM · scikit-learn · numpy

Nothing in the method is specific to PGK2. It needs read counts and structures — which every DEL screen already produces. The release is frozen, hash-manifested and bit-exact reproducible, and the discarded data is retained with a recorded reason for each exclusion. An auditor can rerun it and get the same numbers.

model_release_v2 · MANIFEST.json 15 / 17
15 — Where it breaks Measured, not hidden

We know exactly where this model is weak, because we went looking.

seen 0.959
unseen 0.827
worst 0.586

Held-out AUC when whole building blocks are hidden from training — the regime that applies when scoring molecules from outside the library. 0.959 drops to 0.827, and one library falls to 0.586. No published method solves off-library transfer; the literature does not demonstrate it either. We report the number that a competitor's deck would leave out, because it is the number that defines the next piece of work.

strict_generalisation.csv 16 / 17
16 — What comes next The next twelve months

Three pieces of work, in priority order.

01 Fuse the two signals Spearman 0.12 means unspent information. Combining count evidence with the labelled selector has never been run end to end — the cheapest available gain.
02 Close the transfer gap Lift 0.827 on unseen building blocks. Nobody in the field has demonstrated this; solving it is defensible IP, not catch-up.
03 Pre-register and price every rule Run the ablation that attaches a measured gain to each filter, declared before the data is seen.

[ the ask — amount, use of funds, milestone ]