
CASE 02 · 2025 · ML Researcher · Builder
UNIFIED-DTA
Drug-target affinity prediction fusing protein language models with graph networks.
STATUS
RESEARCH SYSTEM — REPRODUCIBLE
RESULT
A reproducible fusion of protein language + molecular graph models, benchmarked on the three splits the field trusts.
LIMITATIONS
Benchmark comparability depends on the shared split protocol; no wet-lab validation.
01
THE PROBLEM
Predicting how well a drug binds a target protein is a core bottleneck in discovery. Sequence-only models miss molecular structure; structure-only models miss protein context. The field needed both, jointly.
3 industry benchmarks: BindingDB · DAVIS · KIBA
02
THE HARD PART
Fusing two very different representations — protein language embeddings and molecular graphs — without one drowning the other, then keeping training stable across mixed dtypes.
03
WHAT SHIPPED
A Dockerized, LRU-cached inference API over three community-trusted benchmarks, plus a novel-compound generation module — reproducible end to end.
THE FULL STORY
The story
Drug-target affinity is the bottleneck in discovery: knowing how well a molecule binds
a protein decides what gets synthesised. Sequence-only models see the protein but miss
the molecule's shape; structure-only models see the shape but miss the protein's
context. Both halves of the signal exist — nobody had fused them properly.
The fusion is the contribution: ESM-2's language embeddings describe the protein, GIN
describes the molecular graph, and a joint head learns where they agree. Training it
meant fighting mixed dtypes and seed drift until numbers were reproducible — the same
split protocol as the benchmark leaders, so the CI/MSE are comparable, not decorative.
Reproducibility was the discipline. Dockerfile with pinned deps, fixed seeds, one
command to reproduce. The API is LRU-cached — warm hits in single-digit milliseconds.
If you're going to claim numbers in drug discovery, they have to survive a fresh
container.
IMPACT
- 3 industry benchmarks: BindingDB · DAVIS · KIBA
- ESM-2 + GIN joint representation learning
- Dockerized, LRU-cached inference API
- Novel-compound generation via DoubleSG
THE ARCHITECTURE
Layered, labelled, honest — the system as it actually stands.
01 · DATA LAYER
02 · REPRESENTATION
03 · TRAINING
04 · SERVING
SYSTEM FLOW
WHAT IF …
Ask the project a different question. The architecture has to defend itself.
What if we skipped ESM-2 and used sequence-only embeddings?
GIN alone on molecular graphs with one-hot protein encodings would lose the semantic protein context ESM-2 provides — CI on KIBA would drop measurably. The language model is the expensive but load-bearing part; the fusion layer is where the real engineering lives. I'd keep both.
What if we needed 10× throughput?
Today: LRU-cached FastAPI with batch inference. Scaling path: precompute ESM-2 embeddings once (they're the slow part — ~seconds per protein), cache them permanently, and serve only the GIN forward pass (milliseconds). That's a ~100× effective speedup for repeated targets — which is exactly how drug repos behave.
DIVE DEEPER
Built it — now the descent. Each question opens the next layer: why, why this architecture, what broke, what I'd change.
01Why ESM-2 + GIN together?
ESM-2 gives protein language context; GIN gives molecular structure. Either alone loses half the signal — the fusion is the actual contribution.
02Why those benchmarks?
BindingDB, DAVIS and KIBA are the three the community actually trusts. CI/MSE there is the only claim reviewers accept.
03What went wrong?
First training runs diverged — mixed dtypes between ESM-2 embeddings and graph features. I normalized both streams and pinned seeds before trusting a single number.
04What would I do now?
Add uncertainty estimates and a LoRA head instead of full fine-tuning — cheaper and more honest for drug discovery.
THE REPO, INSIDE
Not a screenshot — a live iframe pulling this repo's README straight from the CDN.