NeoRx
Under revisionDrug-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.
- Python
- PyTorch
- PyTorch Geometric
- DoWhy
- RDKit
- FastAPI
- Postgres
- Redis
- Docker
- Stable-Baselines3
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
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.
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.
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
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
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.