Which existing drugs still fit a tumor's mutated target — triaged before anyone spends months at the bench.
🔬 Live app: https://mutationrx.onrender.com · Built with Claude for the Anthropic × Gladstone Claude: Life Sciences hackathon.
When a targeted cancer drug stops working, it is usually because the tumor mutated and the protein changed shape so the drug no longer binds. MutationRx docks a panel of approved drugs against the wild-type and mutant structure, quantifies each wild-type→mutant binding shift with a 95% credible interval, and sorts every drug into weakened (resistance), robust (safe bet), improved, or non-binder. Then Claude reviews each hit for mechanistic plausibility, separating believable leads from coincidental docking scores.
The docking finds candidates. Claude decides which to believe.
- Reproduces known biology on unseen real data. Run on a real, de-identified TCGA lung tumor carrying EGFR L858R+T790M, it recovers the clinic from docking alone: erlotinib and gefitinib fail, osimertinib holds.
- Statistics alone aren't enough, and it shows why. Screening 300 approved drugs against the
resistant mutant, docking + bootstrap flagged 10 as significantly improved binders (tight credible
intervals, high confidence) — and every one is a mechanistic artifact (antidepressants,
antipsychotics, antibiotics). Only mechanism separates them, which is exactly the judgment Claude
adds. Reproduce it:
python analysis/library_screen_triage.py. - The reviewer's judgment is grounded, not asserted. Every drug carries two orthogonal evidence
axes the docking never sees: pathway grounding (is the drug's real target in the driver's
pathway / enzyme class?) and DepMap dependency (is that target a gene lung adenocarcinoma
actually needs, from CRISPR essentiality?). On-target inhibitors corroborate on both; the statin /
antidepressant artifacts fail both; imatinib lands in between — in-class but not a lung dependency,
so its lead rests on the structural fit. Reproduce it:
python analysis/evidence_axes.py. - Honest by construction. Docking affinity is a proxy, repurposing hits are hypotheses, and covalent mechanisms (KRAS G12C, osimertinib on C797S) are flagged as blind spots, not hidden.
python3 -m venv .venv && source .venv/bin/activate # Python 3.10+
pip install -r requirements.txt
python src/triage.py "EGFR L858R+T790M" # deterministic triage, no API key neededAdd Claude's plain-English review, talk to it from Claude Code / Desktop over MCP, or point it at a real TCGA tumor — all in docs/usage.md. Or just open the live app, where every result has a grounded chat: ask why a drug is a lead or whether a hit is worth the bench, and Claude answers over the same numbers.
| Doc | What's in it |
|---|---|
| docs/usage.md | Every way to run it: hosted app, CLI, interpretation agent, MCP, real TCGA tumors, the dashboard |
| docs/bring_your_own_tumor.md | Triage a genotype the tool has never seen and dock it on your own GPU |
| docs/scope.md | Locked targets, structures, and the structural-rigor decisions behind them |
| docs/submission.md | The full thesis, methodology, and the imatinib cross-kinase lead |
| docs/docking_score_notes.md | How to read DiffDock / gnina scores and the WT-vs-mutant delta caveats |
| cluster/README.md | The GPU docking pipeline (DiffDock + gnina) |
app/— the hosted web app: FastAPI backend, single-page workspace inapp/static/, and the grounded per-result chat (chat.py, reusing the interpretation agent).src/— triage engine (triage.py), evidence axes (evidence.py), interpretation agent (interpret.py), MCP server (mcp_server.py), real-tumor loader (tcga.py), cancer-type selector (selector.py), dashboard builder, drug-panel builder, registry validator, structure prep.config/—mutations.json, the editable tumor registry (add your own genotype here).data/— the drug panel, prepared receptors, docking/stats result tables, the cached TCGA slice, and the cached Claude reads.analysis/— known-answer validation, the Bayesian-bootstrap credible intervals, and the pooled imatinib + library-screen analyses.cluster/— the GPU docking pipeline (DiffDock + gnina), run separately.dashboard/— the self-contained visual report (generated).docs/— usage, scope, bring-your-own-tumor, submission notes, and score-interpretation notes.
- License: MIT.
- Data sources: TCGA Lung Adenocarcinoma via the open-access cBioPortal API (PanCancer Atlas 2018), de-identified somatic calls only — never controlled-access data. Structures: RCSB PDB. Drug chemistry: PubChem / ChEMBL + RDKit.