LinkD: An Agentic Platform for Drug Repurposing Unified across Molecular, Phenotypic, and Clinical Scales
LinkD unifies molecular, phenotypic, and clinical evidence for cancer drug discovery — binding affinity and selectivity, CRISPR drug-response, and EHR associations — behind an AI agent (LinkD-Agent) that plans and executes multi-step analyses from natural language.
License: MIT
Code: https://github.com/Huang-lab/LinkD
Submission release: v1.0-submission
Interactive: https://linkd-agent.net/
Data: Zenodo concept DOI 10.5281/zenodo.19241151
Manuscript figure reproduction (reviewers):
For_Reviewer/— see docs/FOR_REVIEWER.md. All panel inputs download as one checksum-verified Zenodo archive.
| Module | Description | Key data |
|---|---|---|
| LinkD-Bind | Drug–target binding affinity explorer | 1,068 targets with pKd, 20K+ binding pairs |
| LinkD-Select | Drug selectivity profiling (UMAP) | 14,981 drugs, selectivity scores |
| LinkD-Pheno | Phenotype–drug associations from EHR | Mount Sinai + UK Biobank cancer associations |
| LinkD-Agent | Multi-step NL analysis agent | OpenAI, Google Gemini, or Anthropic APIs |
# 1. Environment
conda create -n ttdrug python=3.12
conda activate ttdrug
conda install nodejs
# 2. Dependencies
pip install -r requirements.txt
cd interactive_web_server/frontend && npm install && npm run build && cd ../..
# 3. Optional LLM keys for LinkD-Agent
cp .env.example .env
# Edit .env — GEMINI_FREE_KEY and/or OPENAI_API_KEY / ANTHROPIC_API_KEY / GOOGLE_API_KEY
# 4. Launch
cd interactive_web_server && ./start.sh
# http://localhost:8000Development mode: ./start.sh dev (FastAPI and Vite with hot reload).
# Auto-download (also used on Render)
python scripts/download_data.py
python scripts/download_data.py --verify-only
# Or extract Zenodo archives into the project root:
# Database/, DrugTargetMetrics/, EHR_Results/, DrugResponse/, Target_Disease_Association/| Directory | Highlights |
|---|---|
Database/ |
Oncogene annotations |
Target_Disease_Association/ |
ChEMBL drug–target–disease; Open Targets causal links |
DrugTargetMetrics/ |
Selectivity scores; per-target pKd parquet |
EHR_Results/ |
Mount Sinai + UK Biobank aggregate associations |
DrugResponse/ |
CRISPR drug-response correlations (PRISM + GDSC) |
Versions: ChEMBL 34 · Mount Sinai / UKB EHR 2024-11 · PRISM/GDSC 2024-Q4 · Open Targets 24.09.
LinkD-Agent decomposes biomedical questions into tool-using plans over the LinkD database
(binding, selectivity, CRISPR, EHR, clinical-phase evidence) and returns structured
multi-evidence summaries. Use it in the web UI (/agent) or via the Python package under
agent/.
Weighted multi-evidence scoring lives in agent/evidence_scoring.py
(weights in config/evidence_weights.yaml).
A JSON CLI over the same layers is available at
.claude/skills/linkd/scripts/linkd:
.claude/skills/linkd/scripts/linkd target-info EGFR
.claude/skills/linkd/scripts/linkd evidence CHEMBL553 EGFR --disease "lung cancer" --icd C34 --drug-name Erlotinib| Audience | Path |
|---|---|
| Reviewers regenerating figures | For_Reviewer/ |
| Supplementary agent-eval harness (T1–T7; not a submitted Figure 6c panel) | benchmark/ |
Frontend dist/ is committed; Render installs Python deps and serves the prebuilt bundle.
- Connect the GitHub repo as a web service
- Build:
pip install -r requirements.txt - Start:
python scripts/download_data.py && cd interactive_web_server/backend && python -m uvicorn main:app --host 0.0.0.0 --port $PORT - Env:
DATABASE_DIR=/opt/render/project/src/data/Database,GEMINI_FREE_KEY, optional other LLM keys - Persistent disk (40 GB, allowing atomic dataset upgrades) at
/opt/render/project/src/data
After frontend source changes, rebuild and commit interactive_web_server/frontend/dist/.
Data deposit staging: bash scripts/prepare_zenodo.sh and
bash scripts/prepare_for_reviewer_zenodo.sh → upload a new version under
concept DOI 10.5281/zenodo.19241151. Staging folder
zenodo_upload/ is gitignored and never read by the web server.
React frontend → FastAPI (/api/*) → agent/ (DB query + LLM planner)
→ CSV/Parquet (Zenodo-hosted)
LinkD/
├── agent/ # Query module, evidence scoring, LLM planner
├── interactive_web_server/ # FastAPI + React (LinkD-Bind/Select/Pheno/Agent)
├── For_Reviewer/ # Manuscript figure reproduction package
├── benchmark/ # Supplementary LinkD-Agent evaluation
├── scripts/download_data.py # Zenodo download
├── config/ # Evidence weights, etc.
├── requirements.txt
└── render.yaml
| Endpoint | Description |
|---|---|
GET /api/health |
Health + loaded datasets |
GET /api/overview |
Database statistics |
POST /api/binding/search |
Binding landscape |
POST /api/selectivity/search |
Selectivity detail |
GET /api/ehr/preload |
EHR associations |
POST /api/agent/plan |
Stateless plan request: provider, model, optional transient key, query |
POST /api/agent/execute |
Stateless execution request: provider configuration + validated plan |
Swagger UI: http://localhost:8000/docs
| Variable | Description |
|---|---|
PORT |
Server port (default 8000) |
DATABASE_DIR |
Path to Database/ (default ./Database) |
GEMINI_FREE_KEY |
Free-tier Gemini for LinkD-Agent |
OPENAI_API_KEY / GOOGLE_API_KEY / ANTHROPIC_API_KEY |
Optional LLM providers |
LINKD_ALLOWED_ORIGINS |
Comma-separated development CORS origins |
Repository software is licensed under the MIT License. The figure-reproduction bundle is CC BY 4.0. Upstream application datasets retain their respective source terms; downloading them does not relicense them.
Research use only. LinkD associations are observational, predictions require independent validation, and LLM-generated plans or summaries may be incomplete or incorrect. LinkD does not provide clinical advice.
- Institution: Icahn School of Medicine at Mount Sinai
- Email: chengwangosu@gmail.com
- GitHub: github.com/Huang-lab/LinkD