MCP_Res / mcp /drugbank.py
mgbam's picture
Create drugbank.py
c5b2751 verified
raw
history blame contribute delete
802 Bytes
# mcp/drugbank.py
"""
Lightweight DrugBank Open-Data helper.
Download the TSV once and keep in /data or load at runtime.
"""
import csv
from pathlib import Path
from typing import Dict, Optional
_DATA = Path(__file__).parent / "data" / "drugbank_open_structured_drug_links.tsv"
def _load_index() -> Dict[str, Dict]:
index = {}
if not _DATA.exists():
raise FileNotFoundError("DrugBank TSV not found – download open data first.")
with _DATA.open() as f:
reader = csv.DictReader(f, delimiter="\t")
for row in reader:
name = row["Name"].lower()
index[name] = row
return index
_DRUG_INDEX = _load_index()
def lookup_drug(name: str) -> Optional[Dict]:
"""Return DrugBank row dict or None."""
return _DRUG_INDEX.get(name.lower())