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.

PyTorchESM-2GNNFastAPIRDKitDocker

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

BindingDBDAVISKIBA

02 · REPRESENTATION

ESM-2 protein embeddingsGIN molecular graph

03 · TRAINING

CI / MSE objectivesSeed-pinnedMixed-dtype normalization

04 · SERVING

FastAPILRU cacheDocker container

SYSTEM FLOW

01ESM-2 protein embeddings
02GIN molecular graph
03Joint representation
04CI / MSE benchmarks
05Dockerized API

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.

FETCHING README FROM THE REPO…