All work
ML/AI · Mar 2026 – Present

NeoRx

Under revision

Drug-target identification over integrated biomedical knowledge graphs — a SMILES VAE molecular generator, hierarchical RL and a docking stage. Audited and corrected; see the notice below.

Role
Solo author
  • Python
  • PyTorch
  • PyTorch Geometric
  • DoWhy
  • RDKit
  • FastAPI
  • Postgres
  • Redis
  • Docker
  • Stable-Baselines3
What is checkable

181 commits since March 2026. 108 unit tests. CI on Ubuntu and macOS. The identification step now runs on CausalPhylo.

Licence — LicenseRef-NeoRx-NonCommercial, source-available, not open source

Problem

What was broken.

Drug discovery is correlative — most ML pipelines learn associations, not causes, leading to expensive false positives downstream. We need pipelines that reason causally and generate molecules conditionally.

Architecture

How it is wired.

A knowledge graph is assembled from several public biomedical sources. Identifiability is tested with the backdoor criterion, now delegated to CausalPhylo. A SMILES-based BiGRU VAE (4.1M params) generates candidate molecules conditioned on QED, logP and molecular weight. A hierarchical planner selects targets with UCB1 and searches the latent space with CEM. A docking stage runs AutoDock Vina in parallel, with results fed back through Redis.

Build

What I shipped.

  • Target-identification pipeline over integrated biomedical knowledge graphs, using the backdoor criterion for identifiability (via CausalPhylo)
  • SMILES-based VAE — BiGRU encoder/decoder, 4.1M params
  • Hierarchical RL planner implementing UCB1 target selection and CEM latent search
  • Molecular docking stage (PDB → PDBQT → Vina) with parallel multiprocessing
  • Disease-type-aware target classifier with blocklists over nine gene families, a Human Protein Atlas tissue filter and a known-target validator
  • FastAPI services with GitHub Actions CI on Ubuntu and macOS
Outcomes

What changed.

0.667
Lung cancer F₁ (grade B), against a 0.519 correlation-only baseline — six true positives, among them EGFR, KRAS, BRAF and TP53
0.4245
Mean F₁ across all four diseases, beating a correlation-only baseline on three of the four
0.381
Breast cancer F₁ — below its 0.385 baseline, the one of the four that does not beat it
0.364
Alzheimer's F₁, against 0.240 — reproducible, but scored against a target list under revision: its two true positives are APP and PSEN1, and PSEN1 inhibition harmed patients in trials
0.286
Type 2 diabetes F₁, against 0.231 — its identification stage adjusted nothing, so the score describes graph coverage rather than biology
Tradeoffs

Why these choices.

Picked SMILES over graph generation for speed of training and library maturity. UCB1 + CEM beats vanilla PPO for sparse-reward molecular search. Self-contained HTML reports were a deliberate choice over a UI — reproducibility for collaborators.