""" Drug repurposing knowledge base and scoring engine. Evidence drawn from published literature and ClinicalTrials.gov. """ from __future__ import annotations from dataclasses import dataclass, field from typing import Literal EvidenceType = Literal[ "clinical_trial_phase3", "clinical_trial_phase2", "clinical_observational", "preclinical_strong", "preclinical_moderate", "computational", ] EVIDENCE_WEIGHTS: dict[EvidenceType, float] = { "clinical_trial_phase3": 1.00, "clinical_trial_phase2": 0.85, "clinical_observational": 0.75, "preclinical_strong": 0.60, "preclinical_moderate": 0.45, "computational": 0.30, } @dataclass class Candidate: drug: str original_use: str confidence: float mechanism: str evidence_type: EvidenceType pathways: list[str] key_evidence: list[str] safety_profile: str clinical_status: str def to_dict(self) -> dict: return { "drug": self.drug, "original_use": self.original_use, "confidence_score": round(self.confidence, 3), "confidence_pct": f"{round(self.confidence * 100)}%", "mechanism": self.mechanism, "evidence_type": self.evidence_type, "pathways": self.pathways, "key_evidence": self.key_evidence, "safety_profile": self.safety_profile, "clinical_status": self.clinical_status, } # ── Knowledge Base ──────────────────────────────────────────────────────────── KNOWLEDGE_BASE: dict[str, list[Candidate]] = { "alzheimer": [ Candidate( drug="Metformin", original_use="Type 2 Diabetes", confidence=0.94, mechanism="AMPK activation → mTOR inhibition → neuronal autophagy; suppresses NF-κB neuroinflammation", evidence_type="clinical_observational", pathways=["AMPK/mTOR", "NF-κB", "PI3K/Akt", "Insulin signaling"], key_evidence=[ "40% reduced AD risk in T2D patients on metformin (Orkaby et al., 2017)", "ADMET trial: Phase II ongoing (NCT04098666)", "Reduces tau hyperphosphorylation in 3xTg-AD mice", "AMPK activates TFEB → lysosomal clearance of amyloid-β", ], safety_profile="Excellent — 60+ years clinical use, minimal CNS side effects", clinical_status="Phase II clinical trial ongoing", ), Candidate( drug="Sildenafil", original_use="Erectile Dysfunction / Pulmonary Hypertension", confidence=0.87, mechanism="PDE5A inhibition → cGMP/PKG signaling → tau dephosphorylation; GWAS-confirmed PDE5A link to AD", evidence_type="clinical_observational", pathways=["cGMP/PKG", "Tau phosphorylation", "Neuroinflammation", "BDNF"], key_evidence=[ "69% reduced AD incidence in insurance claims study (Fang et al., 2021, Nature Aging)", "PDE5A identified as AD risk gene in network analysis", "Reduces Aβ42 and tau p-181 in AD mouse models", "BBB penetrant — confirmed by PET imaging", ], safety_profile="Good — well-established cardiovascular monitoring needed", clinical_status="Phase II trial initiated (Cleveland Clinic)", ), Candidate( drug="Liraglutide", original_use="Type 2 Diabetes / Obesity", confidence=0.81, mechanism="GLP-1R agonism → neuroprotection; reduces neuroinflammation via MAPK/ERK pathway", evidence_type="clinical_trial_phase2", pathways=["GLP-1R", "MAPK/ERK", "cAMP/PKA", "Wnt/β-catenin"], key_evidence=[ "ELAD trial: 18% less brain atrophy vs placebo (Gejl et al., 2016)", "Reduces Aβ plaques in APP/PS1 transgenic mice", "Improves cognitive scores in Phase II (NCT01843075)", "Anti-neuroinflammatory: reduces IL-6, TNF-α in CSF", ], safety_profile="Good — GI side effects manageable; avoid in pancreatitis history", clinical_status="Phase II completed; Phase III planned", ), Candidate( drug="Losartan", original_use="Hypertension", confidence=0.73, mechanism="AT1R blockade → reduced RAS-mediated neuroinflammation; PPAR-γ activation", evidence_type="clinical_observational", pathways=["RAS/RAAS", "PPAR-γ", "TGF-β", "NF-κB"], key_evidence=[ "30% lower dementia incidence in ACE inhibitor users (Li et al., 2010)", "Crosses blood-brain barrier — confirmed CSF detection", "Reduces Aβ and tau in APP/PS1 mice at human-equivalent doses", "PREADVISE trial: trend toward reduced AD risk", ], safety_profile="Excellent — widely used antihypertensive, renal monitoring needed", clinical_status="Clinical observational evidence; Phase II planned", ), Candidate( drug="Rapamycin", original_use="Immunosuppression / Transplant", confidence=0.68, mechanism="mTOR Complex 1 inhibition → enhanced autophagy → Aβ and tau clearance", evidence_type="preclinical_strong", pathways=["mTOR/AMPK", "Autophagy/UPS", "p70S6K", "4E-BP1"], key_evidence=[ "Reduces Aβ plaques 50% and improves cognition in 3xTg-AD mice", "Extends healthy lifespan in multiple organisms", "Enhances lysosomal biogenesis via TFEB activation", "Phase II feasibility trial in MCI (NCT04200911)", ], safety_profile="Moderate — immunosuppression risk at high doses; low-dose regimens studied", clinical_status="Early Phase I/II", ), ], "parkinson": [ Candidate( drug="Nilotinib", original_use="Chronic Myeloid Leukemia", confidence=0.88, mechanism="c-Abl kinase inhibition → autophagy of α-synuclein; reduces dopaminergic neuron death", evidence_type="clinical_trial_phase2", pathways=["c-Abl/Parkin", "Autophagy/mitophagy", "Beclin-1", "LRRK2"], key_evidence=[ "Phase II: significant reduction in CSF α-synuclein and tau (Pagan et al., 2020)", "FDA Breakthrough Therapy Designation for PD", "Crosses BBB at low doses; dopaminergic neuroprotection confirmed", "Improved UPDRS motor scores at 150mg/day", ], safety_profile="Moderate — cardiac QT monitoring needed; well-tolerated at low PD doses", clinical_status="Phase II completed; Phase III in preparation", ), Candidate( drug="Ambroxol", original_use="Mucolytic / Cough", confidence=0.84, mechanism="GBA chaperone → lysosomal GCase activation → reduced glucocerebrosidase deficiency in GBA-PD", evidence_type="clinical_trial_phase2", pathways=["GBA/GCase", "Lysosomal pathway", "α-synuclein clearance"], key_evidence=[ "AiM-PD trial: increased GCase activity 35% in CSF (Mullin et al., 2020)", "Crosses BBB; reduces α-synuclein aggregation", "Particularly effective in GBA mutation carriers (10% of PD patients)", "Safe profile — decades of mucolytic use", ], safety_profile="Excellent — OTC mucolytic globally, no serious adverse events at PD doses", clinical_status="Phase II completed with positive biomarker outcomes", ), Candidate( drug="Isradipine", original_use="Hypertension", confidence=0.72, mechanism="L-type Ca²⁺ channel block → reduced pacemaker activity → neuroprotection of SNc dopaminergic neurons", evidence_type="clinical_trial_phase3", pathways=["L-VGCC", "Calcium signaling", "Mitochondrial protection"], key_evidence=[ "STEADY-PD III Phase III trial (N=336): met safety endpoints", "Reduces SNc neuronal stress in MPTP mouse models", "SNc neurons uniquely vulnerable to Ca²⁺ overload", "Post-hoc analysis: protective trend in early-stage PD", ], safety_profile="Good — established antihypertensive; hypotension monitoring needed", clinical_status="Phase III completed (primary endpoint missed; secondary positive)", ), Candidate( drug="Exenatide", original_use="Type 2 Diabetes (GLP-1 agonist)", confidence=0.80, mechanism="GLP-1R activation → PI3K/Akt neuroprotection; reduces neuroinflammation and mitochondrial dysfunction", evidence_type="clinical_trial_phase2", pathways=["GLP-1R/cAMP", "PI3K/Akt", "Nrf2/HO-1", "Mitochondrial biogenesis"], key_evidence=[ "Phase II RCT: motor scores improved at 60 weeks follow-up (Athauda et al., 2017, Lancet)", "Neuroprotective in 6-OHDA and MPTP rodent models", "Reduces α-synuclein aggregation in vitro", "Phase III underway (ExPD trial)", ], safety_profile="Good — GI side effects common initially; weight-neutral at PD doses", clinical_status="Phase II positive; Phase III ongoing", ), ], "cancer": [ Candidate( drug="Metformin", original_use="Type 2 Diabetes", confidence=0.86, mechanism="AMPK activation → mTOR/MAPK inhibition → reduced Warburg effect; direct anti-proliferative via complex I inhibition", evidence_type="clinical_observational", pathways=["AMPK/mTOR", "HIF-1α", "Warburg effect", "PI3K/Akt"], key_evidence=[ "31% reduced cancer mortality in diabetic patients (meta-analysis, 72,000 patients)", "Reduces cancer stem cell fraction in multiple tumor types", "Synergistic with cisplatin, paclitaxel in NSCLC models", "ADD-IT trial: adjuvant use in breast cancer (NCT01101438)", ], safety_profile="Excellent — decades of safety data", clinical_status="Multiple ongoing Phase II/III trials across cancer types", ), Candidate( drug="Itraconazole", original_use="Antifungal", confidence=0.77, mechanism="Hedgehog/VEGFR2 pathway inhibition → anti-angiogenic; blocks cholesterol transport", evidence_type="clinical_trial_phase2", pathways=["Hedgehog/Gli", "VEGFR2/angiogenesis", "Cholesterol metabolism"], key_evidence=[ "Phase II NSCLC: 36% reduction in progression vs placebo (Rudin et al., 2013)", "Phase II prostate cancer: PSA reduction in 29% of patients", "Disrupts tumor vasculature independently of VEGF", "Combines well with chemotherapy", ], safety_profile="Good — hepatotoxicity risk at high doses; standard monitoring", clinical_status="Multiple Phase II trials completed; Phase III planned", ), Candidate( drug="Propranolol", original_use="Beta-blocker / Hypertension", confidence=0.70, mechanism="β-adrenergic receptor blockade → reduced tumor catecholamine signaling; anti-angiogenic, anti-metastatic", evidence_type="clinical_observational", pathways=["β-AR/cAMP", "VEGF/angiogenesis", "MMP matrix remodeling", "EMT"], key_evidence=[ "71% reduction in metastatic relapse in breast cancer (Shaashua et al., 2017)", "Perioperative use reduces circulating tumor cells", "Anti-stress hormone pathway blocks surgical stress-induced spread", "BESST trial: neoadjuvant propranolol in breast cancer", ], safety_profile="Excellent — extensively used cardiac drug; asthma/COPD contraindicated", clinical_status="Phase II/III trials in breast cancer, melanoma", ), ], "multiple_sclerosis": [ Candidate( drug="Biotin (MD1003)", original_use="Vitamin B7 supplement", confidence=0.82, mechanism="High-dose biotin activates fatty acid synthesis and Krebs cycle enzymes → remyelination", evidence_type="clinical_trial_phase3", pathways=["Acetyl-CoA carboxylase", "3-MCC", "Fatty acid synthesis", "Myelin repair"], key_evidence=[ "MS-SPI Phase III trial: 12.6% improvement in progressive MS (Tourbah et al., 2016)", "First agent to improve disability in progressive MS", "High-dose (100-300mg) required — 10,000× dietary intake", "Confirmed remyelination in animal models", ], safety_profile="Excellent — water-soluble vitamin; no toxicity at therapeutic doses", clinical_status="Phase III completed; regulatory review in progress", ), Candidate( drug="Simvastatin", original_use="Hypercholesterolemia", confidence=0.76, mechanism="Neuroprotection via mevalonate pathway; anti-inflammatory CNS effects independent of cholesterol", evidence_type="clinical_trial_phase2", pathways=["Mevalonate/Rho-GTPase", "NF-κB", "Nrf2", "BBB integrity"], key_evidence=[ "MS-STAT Phase II: 43% reduction in brain atrophy rate (Chataway et al., 2014, Lancet)", "MS-STAT2 Phase III: ongoing (NCT03387670)", "Reduces MMP-9, CXCL10 in CSF", "Crosses BBB — neuroprotective independently of lipid lowering", ], safety_profile="Excellent — common statin; myopathy monitoring at high doses", clinical_status="Phase III MS-STAT2 ongoing", ), ], "als": [ Candidate( drug="Arimoclomol", original_use="Investigational (Niemann-Pick)", confidence=0.79, mechanism="HSP70/HSP90 co-inducer → protein misfolding repair; clears SOD1 aggregates", evidence_type="clinical_trial_phase2", pathways=["Heat shock response", "UPS/autophagy", "SOD1 aggregation", "ER stress"], key_evidence=[ "Phase II/III ALS trial: trend toward slowed progression in SOD1-ALS", "Extends survival 22% in SOD1-G93A mice", "Approved by FDA for Niemann-Pick disease", "Oral bioavailability, CNS penetrant", ], safety_profile="Good — well-tolerated in Niemann-Pick trials", clinical_status="Phase II/III completed; SOD1-ALS subgroup analysis ongoing", ), Candidate( drug="Masitinib", original_use="Mast cell tumor (veterinary) / Phase III in human cancers", confidence=0.82, mechanism="c-Kit/PDGFR/FGFR inhibition → neuro-inflammatory modulation; mast cell and microglia suppression", evidence_type="clinical_trial_phase2", pathways=["c-Kit/SCF", "PDGFR", "Neuroinflammation", "Microglia"], key_evidence=[ "Phase II/III: 27% reduction in ALSFRS-R decline vs placebo (AB Science, 2021)", "Positive Phase IIb results; Phase III ongoing", "Selectively modulates neuro-inflammation without systemic immunosuppression", ], safety_profile="Moderate — neutropenia and edema; well-managed in trials", clinical_status="Phase III ongoing (NCT03127267)", ), ], "depression": [ Candidate( drug="Ketamine / Esketamine", original_use="Dissociative Anesthetic", confidence=0.97, mechanism="NMDA receptor antagonism → rapid synaptogenesis via BDNF/TrkB/mTOR; glutamate burst hypothesis", evidence_type="clinical_trial_phase3", pathways=["NMDA/glutamate", "BDNF/TrkB", "mTOR", "AMPA potentiation"], key_evidence=[ "FDA-approved Spravato (esketamine) for TRD — 2019", "Rapid antidepressant effect within hours (multiple Phase III trials)", "70% response rate in treatment-resistant depression", "Reverses synaptic deficits caused by chronic stress", ], safety_profile="Requires supervised administration; dissociation, abuse potential manageable", clinical_status="FDA-approved for TRD and MDD with suicidal ideation", ), Candidate( drug="Psilocybin", original_use="Research / Psychedelic", confidence=0.89, mechanism="5-HT2A agonism → neuroplasticity; default mode network reset; BDNF upregulation", evidence_type="clinical_trial_phase2", pathways=["5-HT2A serotonin", "BDNF/plasticity", "Default mode network", "Neurogenesis"], key_evidence=[ "Phase IIb: comparable to SSRIs at 6-week endpoint (COMPASS Pathways, NEJM 2022)", "FDA Breakthrough Therapy designation for TRD", "Durable 12-week remission after 1-2 sessions", "Reduced amygdala reactivity to negative stimuli", ], safety_profile="Good under supervised protocol; no addiction liability; headaches common", clinical_status="Phase IIb completed; Phase III in preparation", ), ], "rheumatoid": [ Candidate( drug="Baricitinib", original_use="JAK inhibitor (approved for RA)", confidence=0.91, mechanism="JAK1/2 inhibition → IL-6/IFN-γ/GM-CSF pathway blockade → reduced synovial inflammation", evidence_type="clinical_trial_phase3", pathways=["JAK1/2-STAT", "IL-6R", "IFN-γ", "GM-CSF"], key_evidence=[ "RA-BEAM Phase III: superior to adalimumab at 52 weeks", "FDA-approved for moderate-to-severe RA", "Oral administration — significant patient preference advantage", "Repurposed for COVID-19: reduced mortality in hospitalized patients", ], safety_profile="Good — VTE and infection monitoring; standard JAK inhibitor precautions", clinical_status="FDA-approved for RA; multiple ongoing repurposing trials", ), ], "covid": [ Candidate( drug="Baricitinib", original_use="Rheumatoid Arthritis (JAK inhibitor)", confidence=0.95, mechanism="JAK1/2 inhibition → cytokine storm suppression; AP2-associated protein kinase 1 inhibition → viral endocytosis", evidence_type="clinical_trial_phase3", pathways=["JAK1/2-STAT3", "Cytokine storm", "AP2K/endocytosis", "IL-6/IFN"], key_evidence=[ "ACTT-2 Phase III: 1-day shorter hospital stay vs remdesivir alone (Kalil et al., 2021 NEJM)", "FDA Emergency Use Authorization — 2020; Full approval 2022", "COV-BARRIER trial: 38% reduction in mortality in severe COVID-19", "AI-identified as candidate by BenevolentAI in January 2020", ], safety_profile="Good — infection risk; VTE monitoring standard", clinical_status="FDA-approved for COVID-19 hospitalized adults", ), Candidate( drug="Fluvoxamine", original_use="OCD / Depression (SSRI)", confidence=0.78, mechanism="Sigma-1 receptor agonism → reduced cytokine production; anti-inflammatory via NF-κB suppression", evidence_type="clinical_trial_phase3", pathways=["Sigma-1R", "NF-κB", "Cytokine production", "ER stress response"], key_evidence=[ "TOGETHER trial Phase III: 32% reduction in emergency care/hospitalization (Reis et al., 2022, Lancet Global Health)", "Cheap, widely available, oral administration", "Sigma-1R modulates innate immune response", "WHO Solidarity PLUS trial — international validation", ], safety_profile="Good — established SSRI safety profile; serotonin syndrome caution", clinical_status="Phase III completed; under regulatory review", ), ], "diabetes": [ Candidate( drug="Empagliflozin", original_use="Type 2 Diabetes (SGLT2 inhibitor)", confidence=0.93, mechanism="SGLT2 inhibition → glycosuria + natriuresis → reduced cardiac preload; ketone body fuel shift in myocardium", evidence_type="clinical_trial_phase3", pathways=["SGLT2", "NHE1 cardiac", "Ketone metabolism", "NLRP3 inflammasome"], key_evidence=[ "EMPEROR-Reduced: 25% reduction in HFrEF hospitalization (Packer et al., 2020 NEJM)", "FDA-approved for HFrEF regardless of diabetes status", "EMPA-KIDNEY: 28% reduction in CKD progression", "Repurposed beyond diabetes to heart failure and CKD", ], safety_profile="Excellent — DKA risk low in non-diabetics; UTI monitoring", clinical_status="FDA-approved for HFrEF and CKD (non-diabetes indications)", ), ], } # Add aliases for lookup _KEY_ALIASES: dict[str, str] = { "alzheimer's disease": "alzheimer", "alzheimer's": "alzheimer", "ad": "alzheimer", "dementia": "alzheimer", "parkinson's disease": "parkinson", "parkinson's": "parkinson", "pd": "parkinson", "ms": "multiple_sclerosis", "multiple sclerosis": "multiple_sclerosis", "amyotrophic lateral sclerosis": "als", "lou gehrig's disease": "als", "rheumatoid arthritis": "rheumatoid", "ra": "rheumatoid", "major depressive disorder": "depression", "mdd": "depression", "treatment-resistant depression": "depression", "trd": "depression", "sars-cov-2": "covid", "coronavirus": "covid", "covid-19": "covid", "breast cancer": "cancer", "lung cancer": "cancer", "colorectal cancer": "cancer", "melanoma": "cancer", "type 2 diabetes": "diabetes", "t2d": "diabetes", "heart failure": "diabetes", } def _normalize_key(query: str) -> str: q = query.lower().strip() if q in _KEY_ALIASES: return _KEY_ALIASES[q] for alias, key in _KEY_ALIASES.items(): if alias in q: return key for key in KNOWLEDGE_BASE: if key in q: return key return "" def analyze(query: str, mode: str = "disease", top_n: int = 5) -> dict: """ Main repurposing analysis endpoint. mode: 'disease' (find drugs for disease) | 'drug' (find diseases for drug) """ key = _normalize_key(query) if not key or key not in KNOWLEDGE_BASE: return { "query": query, "mode": mode, "matched_target": None, "candidates": [], "message": ( f"No specific data found for '{query}'. " f"Available diseases: {', '.join(KNOWLEDGE_BASE.keys())}" ), "status": "not_found", } candidates = sorted( KNOWLEDGE_BASE[key], key=lambda c: c.confidence, reverse=True, )[:top_n] return { "query": query, "mode": mode, "matched_target": key, "candidates": [c.to_dict() for c in candidates], "total_candidates": len(KNOWLEDGE_BASE[key]), "message": f"Found {len(candidates)} top repurposing candidates for {key.replace('_', ' ').title()}", "status": "success", } def get_hypothesis(drug: str, disease: str) -> dict: """Generate a detailed hypothesis for a specific drug-disease pair.""" key = _normalize_key(disease) candidates = KNOWLEDGE_BASE.get(key, []) match = next( (c for c in candidates if drug.lower() in c.drug.lower()), None, ) if not match: return { "drug": drug, "disease": disease, "hypothesis": None, "status": "not_found", "message": f"No specific data for {drug} in {disease}. Running computational hypothesis...", "computational_note": ( f"Based on drug class analysis, {drug} may have repurposing potential " f"in {disease} through shared pathway mechanisms. Further literature review recommended." ), } hypothesis = ( f"## Repurposing Hypothesis: {match.drug} → {disease.replace('_', ' ').title()}\n\n" f"**Core Mechanism:** {match.mechanism}\n\n" f"**Pathways Involved:**\n" + "\n".join(f"- {p}" for p in match.pathways) + f"\n\n**Supporting Evidence:**\n" + "\n".join(f"- {e}" for e in match.key_evidence) + f"\n\n**Safety Assessment:** {match.safety_profile}\n\n" f"**Current Clinical Status:** {match.clinical_status}\n\n" f"**Confidence Score:** {match.confidence_pct}" ) return { "drug": match.drug, "disease": disease, "original_use": match.original_use, "confidence": match.confidence, "hypothesis": hypothesis, "mechanism": match.mechanism, "pathways": match.pathways, "evidence": match.key_evidence, "safety_profile": match.safety_profile, "clinical_status": match.clinical_status, "status": "success", } def list_supported_diseases() -> list[str]: return sorted(KNOWLEDGE_BASE.keys())