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 navigateEvery molecule carries its own barcode, so a billion of them can be screened in one tube.
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.
Almost every major pharmaceutical company now runs DEL. It has already produced clinical candidates.
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.
A read count is not an affinity. Six different things can raise it.
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.
The idea came from a Nobel laureate. The machine learning came from Google.

Google set the benchmark in 2020, and has been refining the loss function ever since.
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).
Almost every molecule was seen exactly once.
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.
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.
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.
Six stages. No human ever labels a molecule.
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.
Counts in, ranking out.
Two populations, one histogramThe 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)
It finds the signal.
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.
Both of our entries placed in the top tenth of the field.
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.
The two models barely agree. That is the asset, not the problem.
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.
This is not one answer. It is a procedure that runs on any DEL screen.
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.
We know exactly where this model is weak, because we went looking.
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.
Three pieces of work, in priority order.
[ the ask — amount, use of funds, milestone ]