| name | tooluniverse-network-pharmacology |
| description | Construct and analyze compound-target-disease networks for drug repurposing, polypharmacology discovery, and systems pharmacology. Builds multi-layer networks from ChEMBL, OpenTargets, STRING, DrugBank, Reactome, FAERS, and 60+ other ToolUniverse tools. Calculates Network Pharmacology Scores (0-100), identifies repurposing candidates, predicts mechanisms, and analyzes polypharmacology. Use when users ask about drug repurposing via network analysis, multi-target drug effects, compound-target-disease networks, systems pharmacology, or polypharmacology. |
Network Pharmacology Pipeline
Construct and analyze compound-target-disease (C-T-D) networks to identify drug repurposing opportunities, understand polypharmacology, and predict drug mechanisms using systems pharmacology approaches.
IMPORTANT: Always use English terms in tool calls (drug names, disease names, target names), even if the user writes in another language. Only try original-language terms as a fallback if English returns no results. Respond in the user's language.
When to Use This Skill
Apply when users:
- Ask "Can [drug] be repurposed for [disease] based on network analysis?"
- Want to understand multi-target (polypharmacology) effects of a compound
- Need compound-target-disease network construction and analysis
- Ask about network proximity between drug targets and disease genes
- Want systems pharmacology analysis of a drug or target
- Ask about drug repurposing candidates ranked by network metrics
- Need mechanism prediction for a drug in a new indication
- Want to identify hub genes in disease networks as therapeutic targets
- Ask about disease module coverage by a compound's targets
NOT for (use other skills instead):
- Simple drug repurposing without network analysis -> Use
tooluniverse-drug-repurposing
- Single target validation -> Use
tooluniverse-drug-target-validation
- Adverse event detection only -> Use
tooluniverse-adverse-event-detection
- General disease research -> Use
tooluniverse-disease-research
- GWAS interpretation -> Use
tooluniverse-gwas-snp-interpretation
Input Parameters
| Parameter | Required | Description | Example |
|---|
| entity | Yes | Compound name/ID, target gene symbol/ID, or disease name/ID | metformin, EGFR, Alzheimer disease |
| entity_type | No | Type hint: compound, target, or disease (auto-detected if omitted) | compound |
| analysis_mode | No | compound-to-disease, disease-to-compound, target-centric, bidirectional (default) | bidirectional |
| secondary_entity | No | Second entity for focused analysis (e.g., disease for compound input) | Alzheimer disease |
Network Pharmacology Score (0-100)
Score Components
Network Proximity (0-35 points):
- Strong proximity (Z < -2, p < 0.01): 35 points
- Moderate proximity (Z < -1, p < 0.05): 20 points
- Weak proximity (Z < -0.5): 10 points
- No proximity: 0 points
Clinical Evidence (0-25 points):
- Approved for related indication: 25 points
- Active clinical trials: 15 points
- Completed trials with positive results: 10 points
- Preclinical only: 5 points
Target-Disease Association (0-20 points):
- Strong genetic evidence (GWAS, rare variants): 20 points
- Moderate evidence (pathways, literature): 12 points
- Weak evidence (computational only): 5 points
Safety Profile (0-10 points):
- FDA-approved, favorable safety: 10 points
- Known manageable adverse events: 7 points
- Significant safety concerns: 3 points
- Black box warning relevant to indication: 0 points
Mechanism Plausibility (0-10 points):
- Clear pathway mechanism with functional evidence: 10 points
- Indirect mechanism via network neighbors: 6 points
- Purely computational prediction: 2 points
Priority Tiers
| Score | Tier | Recommendation |
|---|
| 80-100 | Tier 1 | High repurposing potential - proceed with experimental validation |
| 60-79 | Tier 2 | Good potential - needs mechanistic validation |
| 40-59 | Tier 3 | Moderate potential - high-risk/high-reward, needs extensive validation |
| 0-39 | Tier 4 | Low potential - consider alternative approaches |
Evidence Grading System
| Tier | Symbol | Criteria | Examples |
|---|
| T1 | [T1] | Human clinical proof, regulatory evidence | FDA-approved indication, Phase III trial, patient genomics |
| T2 | [T2] | Functional experimental evidence | Bioactivity data (IC50 < 1 uM), CRISPR screen, animal model |
| T3 | [T3] | Association/computational evidence | GWAS hit, network proximity, pathway enrichment, expression |
| T4 | [T4] | Prediction, annotation, text-mining | AlphaFold prediction, database annotation, literature co-mention |
KEY PRINCIPLES
- Report-first approach - Create report file FIRST, then populate progressively
- Entity disambiguation FIRST - Resolve all identifiers before analysis
- Bidirectional network - Construct C-T-D network comprehensively from both directions
- Network metrics - Calculate proximity, centrality, module overlap quantitatively
- Rank candidates - Prioritize by composite Network Pharmacology Score
- Mechanism prediction - Explain HOW drug could work for disease via network paths
- Clinical feasibility - FDA-approved drugs ranked higher than preclinical
- Safety context - Flag known adverse events and off-target liabilities
- Evidence grading - Grade all evidence T1-T4
- Negative results documented - "No data" is data; empty sections are failures
- Source references - Every finding must cite the source tool/database
- Completeness checklist - Mandatory section at end showing analysis coverage
Complete Workflow
Phase 0: Entity Disambiguation and Report Setup
Step 0.1: Create the report file immediately.
report_path = "[entity]_network_pharmacology_report.md"
Step 0.2: Resolve the input entity to all required identifiers.
from tooluniverse import ToolUniverse
tu = ToolUniverse(use_cache=True)
tu.load_tools()
drug_info = tu.tools.OpenTargets_get_drug_chembId_by_generic_name(
drugName="metformin"
)
chembl_id = drug_info['data']['search']['hits'][0]['id']
drug_desc = tu.tools.OpenTargets_get_drug_id_description_by_name(
drugName="metformin"
)
drugbank_info = tu.tools.drugbank_get_drug_basic_info_by_drug_name_or_id(
query="metformin", case_sensitive=False, exact_match=True, limit=1
)
pubchem_cid = tu.tools.PubChem_get_CID_by_compound_name(
name="metformin"
)
cid = pubchem_cid['IdentifierList']['CID'][0]
pubchem_props = tu.tools.PubChem_get_compound_properties_by_CID(
cid=cid
)
target_info = tu.tools.OpenTargets_get_target_id_description_by_name(
targetName="PSEN1"
)
ensembl_id = target_info['data']['search']['hits'][0][]
gene_details = tu.tools.ensembl_lookup_gene(
gene_id=ensembl_id, species=
)
mygene = tu.tools.MyGene_query_genes(query=)
disease_info = tu.tools.OpenTargets_get_disease_id_description_by_name(
diseaseName=
)
disease_id = disease_info[][][][][]
disease_desc = tu.tools.OpenTargets_get_disease_description_by_efoId(
efoId=disease_id
)
disease_ids = tu.tools.OpenTargets_get_disease_ids_by_efoId(efoId=disease_id)
Phase 1: Network Node Identification
Step 1.1: Identify compound nodes.
drug_moa = tu.tools.OpenTargets_get_drug_mechanisms_of_action_by_chemblId(
chemblId=chembl_id
)
drug_targets_ot = tu.tools.OpenTargets_get_associated_targets_by_drug_chemblId(
chemblId=chembl_id, size=50
)
drug_targets_db = tu.tools.drugbank_get_targets_by_drug_name_or_drugbank_id(
query="metformin", case_sensitive=False, exact_match=True, limit=1
)
dgidb_interactions = tu.tools.DGIdb_get_drug_gene_interactions(
genes=["PSEN1", "APP", "BACE1"]
)
ctd_genes = tu.tools.CTD_get_chemical_gene_interactions(
input_terms="Metformin"
)
stitch_id = tu.tools.STITCH_resolve_identifier(
identifier="metformin", species=9606
)
stitch_interactions = tu.tools.STITCH_get_chemical_protein_interactions(
identifiers=["CIDm000004091"], species=9606
)
drug_indications = tu.tools.OpenTargets_get_drug_indications_by_chemblId(
chemblId=chembl_id, size=50
)
fda_approval = tu.tools.OpenTargets_get_drug_approval_status_by_chemblId(
chemblId=chembl_id
)
drug_diseases = tu.tools.OpenTargets_get_associated_diseases_by_drug_chemblId(
chemblId=chembl_id, size=
)
Step 1.2: Identify target nodes (disease-associated targets).
disease_targets = tu.tools.OpenTargets_get_associated_targets_by_disease_efoId(
efoId=disease_id, limit=50
)
for target in disease_targets['data']['disease']['associatedTargets']['rows'][:10]:
evidence = tu.tools.OpenTargets_target_disease_evidence(
efoId=disease_id,
ensemblId=target['target']['id']
)
gwas_studies = tu.tools.OpenTargets_search_gwas_studies_by_disease(
diseaseIds=[disease_id], size=20
)
ctd_diseases = tu.tools.CTD_get_gene_diseases(
input_terms="PSEN1"
)
for gene in ["PSEN1", "APP", "BACE1"]:
pharos = tu.tools.Pharos_get_target(target_name=gene)
Step 1.3: Identify disease nodes and related conditions.
related_diseases = tu.tools.OpenTargets_get_similar_entities_by_disease_efoId(
efoId=disease_id, size=10, threshold=0.5
)
disease_children = tu.tools.OpenTargets_get_disease_descendants_children_by_efoId(
efoId=disease_id
)
disease_parents = tu.tools.OpenTargets_get_disease_ancestors_parents_by_efoId(
efoId=disease_id
)
disease_phenotypes = tu.tools.OpenTargets_get_associated_phenotypes_by_disease_efoId(
efoId=disease_id, size=20
)
disease_areas = tu.tools.OpenTargets_get_disease_therapeutic_areas_by_efoId(
efoId=disease_id
)
Phase 2: Network Edge Construction
Step 2.1: Compound-target edges (bioactivity data).
chembl_activities = tu.tools.ChEMBL_get_target_activities(
target_chembl_id__exact="CHEMBL2111455",
limit=50
)
all_mechanisms = tu.tools.ChEMBL_search_mechanisms(
query="metformin", limit=50
)
db_targets = tu.tools.drugbank_get_targets_by_drug_name_or_drugbank_id(
query="metformin", case_sensitive=False, exact_match=True, limit=1
)
db_pharmacology = tu.tools.drugbank_get_pharmacology_by_drug_name_or_drugbank_id(
query="metformin", case_sensitive=False, exact_match=True, limit=1
)
Step 2.2: Target-disease edges (genetic and functional associations).
for target in top_disease_targets[:10]:
td_evidence = tu.tools.OpenTargets_target_disease_evidence(
efoId=disease_id,
ensemblId=target['target']['id']
)
for gene_symbol in ["PSEN1", "APP", "APOE"]:
gwas_assoc = tu.tools.GWAS_search_associations_by_gene(gene_name=gene_symbol)
ctd_gene_diseases = tu.tools.CTD_get_gene_diseases(
input_terms="PSEN1"
)
pharmgkb_gene = tu.tools.PharmGKB_get_gene_details(gene_symbol="PSEN1")
Step 2.3: Compound-disease edges (clinical evidence).
trials = tu.tools.search_clinical_trials(
query_term="metformin",
condition="Alzheimer",
pageSize=20
)
trials2 = tu.tools.clinical_trials_search(
query="metformin Alzheimer disease",
limit=20
)
ctd_chem_diseases = tu.tools.CTD_get_chemical_diseases(
input_terms="Metformin"
)
pubmed_results = tu.tools.PubMed_search_articles(
query="metformin Alzheimer disease",
max_results=50
)
europepmc_results = tu.tools.EuropePMC_search_articles(
query="metformin Alzheimer disease",
limit=50
)
Step 2.4: Target-target edges (PPI network).
string_ppi = tu.tools.STRING_get_interaction_partners(
protein_ids=["PSEN1", "APP", "APOE", "BACE1", "MAPT"],
species=9606,
limit=20
)
string_network = tu.tools.STRING_get_network(
protein_ids=["PSEN1", "APP", "APOE", "BACE1", "MAPT"],
species=9606
)
intact_results = tu.tools.intact_search_interactions(
query="PSEN1", max=20
)
ot_interactions = tu.tools.OpenTargets_get_target_interactions_by_ensemblID(
ensemblId="ENSG00000080815",
size=20
)
humanbase_ppi = tu.tools.humanbase_ppi_analysis(
gene_list=["PSEN1", "APP", "APOE", "BACE1", "MAPT"],
tissue="brain",
max_node=50,
interaction="sn",
string_mode="physical"
)
Phase 3: Network Analysis
Step 3.1: Network topology analysis (computed from collected data).
Compute from Phase 2 data:
1. Node Degree:
- Count connections per node from STRING + IntAct + OpenTargets interactions
- Drug targets: connections from bioactivity data
- Disease genes: connections from PPI data
2. Hub Identification:
- Nodes with degree > mean + 2*SD are hubs
- Hub genes in disease module = priority therapeutic targets
3. Betweenness Centrality:
- Nodes on shortest paths between drug targets and disease genes
- High betweenness = potential mediating/bridging targets
4. Network Modules:
- Disease module: cluster of disease-associated genes in PPI
- Drug module: cluster of drug target genes in PPI
- Module overlap = direct network relevance
5. Shortest Paths:
- Paths from each drug target to each disease gene via PPI
- Shortest path length < 2 = direct interaction
- Path length 2-3 = close proximity
- Path length > 4 = distant, weaker association
Step 3.2: Network proximity calculation.
Network Proximity Z-score (computed from data):
1. Collect drug target set T_d from Phase 1
2. Collect disease gene set G_d from Phase 1
3. For each drug target t in T_d and disease gene g in G_d:
- Find shortest path d(t,g) in PPI network from Phase 2
4. Compute closest proximity: d_c = mean of min distances
5. Compare against random expectation:
- Sample N random gene sets of same size as T_d
- Compute proximity for each random set
- Z = (d_c - mean_random) / sd_random
6. Z < -2: strong proximity (35 points)
Z < -1: moderate proximity (20 points)
Z < -0.5: weak proximity (10 points)
Z >= -0.5: no proximity (0 points)
Practical computation from STRING/OpenTargets PPI data:
- Count direct interactions between drug targets and disease genes
- Count shared PPI partners (second-degree connections)
- Calculate overlap coefficient = shared_partners / min(degree_t, degree_d)
- Use number of shared pathways as additional proximity metric
Step 3.3: Functional enrichment analysis.
disease_gene_symbols = [t['target']['approvedSymbol']
for t in disease_targets['data']['disease']['associatedTargets']['rows'][:20]]
string_enrichment = tu.tools.STRING_functional_enrichment(
protein_ids=disease_gene_symbols,
species=9606
)
string_ppi_enrich = tu.tools.STRING_ppi_enrichment(
protein_ids=disease_gene_symbols,
species=9606
)
enrichr_results = tu.tools.enrichr_gene_enrichment_analysis(
gene_list=disease_gene_symbols,
libs=["KEGG_2021_Human", "Reactome_2022", "GO_Biological_Process_2023"]
)
reactome_enrichment = tu.tools.ReactomeAnalysis_pathway_enrichment(
identifiers=" ".join(disease_gene_symbols)
)
Phase 4: Drug Repurposing Predictions
Step 4.1: Identify and rank repurposing candidates.
repurposing_candidates = []
for target in disease_targets['data']['disease']['associatedTargets']['rows'][:20]:
gene_symbol = target['target']['approvedSymbol']
ensembl_id = target['target']['id']
target_score = target['score']
target_drugs = tu.tools.OpenTargets_get_associated_drugs_by_target_ensemblID(
ensemblId=ensembl_id, size=20
)
dgidb_drugs = tu.tools.DGIdb_get_drug_gene_interactions(genes=[gene_symbol])
drugbank_drugs = tu.tools.drugbank_get_drug_name_and_description_by_target_name(
query=gene_symbol, case_sensitive=False, exact_match=False, limit=20
)
for target in drug_targets:
target_diseases = tu.tools.OpenTargets_get_diseases_phenotypes_by_target_ensembl(
ensemblId=target['id'], size=20
)
Step 4.2: Mechanism prediction for repurposing candidates.
drug_moa = tu.tools.OpenTargets_get_drug_mechanisms_of_action_by_chemblId(
chemblId=candidate_chembl_id
)
drug_target_genes = [t['approvedSymbol'] for t in drug_moa_targets]
combined_genes = list(set(drug_target_genes + disease_gene_symbols[:10]))
combined_pathways = tu.tools.ReactomeAnalysis_pathway_enrichment(
identifiers=" ".join(combined_genes)
)
drug_pathways = tu.tools.drugbank_get_pathways_reactions_by_drug_or_id(
query=drug_name, case_sensitive=False, exact_match=True, limit=1
)
Phase 5: Polypharmacology Analysis
Step 5.1: Multi-target profiling.
all_drug_targets = tu.tools.OpenTargets_get_associated_targets_by_drug_chemblId(
chemblId=chembl_id, size=100
)
db_full_targets = tu.tools.drugbank_get_targets_by_drug_name_or_drugbank_id(
query=drug_name, case_sensitive=False, exact_match=True, limit=1
)
ctd_interactions = tu.tools.CTD_get_chemical_gene_interactions(
input_terms=drug_name
)
drug_target_set = set(drug_target_genes)
disease_gene_set = set(disease_gene_symbols[:50])
overlap = drug_target_set & disease_gene_set
coverage = len(overlap) / len(disease_gene_set) if disease_gene_set else 0
for gene in drug_target_genes[:10]:
target_class = tu.tools.OpenTargets_get_target_classes_by_ensemblID(
ensemblId=gene_ensembl_id
)
Step 5.2: Selectivity analysis.
for gene in drug_target_genes[:10]:
druggability = tu.tools.DGIdb_get_gene_druggability(genes=[gene])
pharos_info = tu.tools.Pharos_get_target(target_name=gene)
tractability = tu.tools.OpenTargets_get_target_tractability_by_ensemblID(
ensemblId=gene_ensembl_id
)
Phase 6: Safety and Toxicity Context
Step 6.1: Adverse event profiling.
faers_ae = tu.tools.FAERS_search_reports_by_drug_and_reaction(
drug_name=drug_name, limit=100
)
faers_serious = tu.tools.FAERS_filter_serious_events(
operation="filter_serious_events",
drug_name=drug_name,
seriousness_type="all"
)
faers_death = tu.tools.FAERS_count_death_related_by_drug(
medicinalproduct=drug_name
)
faers_signal = tu.tools.FAERS_calculate_disproportionality(
operation="calculate_disproportionality",
drug_name=drug_name,
adverse_event="lactic acidosis"
)
fda_warnings = tu.tools.FDA_get_warnings_and_cautions_by_drug_name(
drug_name=drug_name
)
bbox_warning = tu.tools.OpenTargets_get_drug_blackbox_status_by_chembl_ID(
chemblId=chembl_id
)
ot_ae = tu.tools.OpenTargets_get_drug_adverse_events_by_chemblId(
chemblId=chembl_id
)
drug_warnings = tu.tools.OpenTargets_get_drug_warnings_by_chemblId(
chemblId=chembl_id
)
Step 6.2: Target safety profiling.
for target_ensembl_id in drug_target_ensembl_ids[:10]:
safety = tu.tools.OpenTargets_get_target_safety_profile_by_ensemblID(
ensemblId=target_ensembl_id
)
constraints = tu.tools.gnomad_get_gene_constraints(gene_symbol=gene_symbol)
expression = tu.tools.HPA_get_rna_expression_by_source(
gene_name=gene_symbol,
source_type="tissue",
source_name="brain"
)
Phase 7: Validation Evidence
Step 7.1: Clinical precedent.
trials = tu.tools.search_clinical_trials(
query_term=drug_name,
condition=disease_name,
pageSize=20
)
for trial in trials.get('studies', [])[:5]:
nct_id = trial['NCT ID']
trial_details = tu.tools.clinical_trials_get_details(nct_id=nct_id)
trial_outcomes = tu.tools.extract_clinical_trial_outcomes(nct_id=nct_id)
trial_ae = tu.tools.extract_clinical_trial_adverse_events(nct_id=nct_id)
approved = tu.tools.OpenTargets_get_approved_indications_by_drug_chemblId(
chemblId=chembl_id
)
Step 7.2: Literature evidence.
pubmed_evidence = tu.tools.PubMed_search_articles(
query=f"{drug_name} {disease_name} repurposing OR repositioning OR network pharmacology",
max_results=50
)
europepmc_evidence = tu.tools.EuropePMC_search_articles(
query=f"{drug_name} {disease_name}",
limit=50
)
ot_drug_pubs = tu.tools.OpenTargets_get_publications_by_drug_chemblId(
chemblId=chembl_id, size=20
)
ot_disease_pubs = tu.tools.OpenTargets_get_publications_by_disease_efoId(
efoId=disease_id, size=20
)
guidelines = tu.tools.PubMed_Guidelines_Search(query=f"{drug_name} {disease_name}")
Step 7.3: Experimental evidence.
chembl_bioactivity = tu.tools.ChEMBL_search_drugs(
query=drug_name, limit=10
)
if smiles:
admet = tu.tools.ADMETAI_predict_toxicity(smiles=[smiles])
bbb = tu.tools.ADMETAI_predict_BBB_penetrance(smiles=[smiles])
bioavail = tu.tools.ADMETAI_predict_bioavailability(smiles=[smiles])
pharmgkb_drug = tu.tools.PharmGKB_get_drug_details(drug_name=drug_name)
pharmgkb_clin = tu.tools.PharmGKB_get_clinical_annotations(query=drug_name)
Phase 8: Report Generation
Step 8.1: Compute Network Pharmacology Score.
Score Calculation:
1. Network Proximity Score (0-35):
- Count direct drug target <-> disease gene interactions in PPI
- Count shared PPI partners
- Count shared pathways
- Map to Z-score equivalent based on overlap significance
2. Clinical Evidence Score (0-25):
- Search clinical trials for drug-disease pair
- Check approved indications for related diseases
- Check max clinical trial phase
3. Target-Disease Association Score (0-20):
- Average OpenTargets association score for drug targets in disease
- Weight by evidence type (genetic > functional > computational)
4. Safety Score (0-10):
- FDA approval status (+5)
- Black box warning (-3)
- Death reports proportion
- Off-target count penalty
5. Mechanism Plausibility Score (0-10):
- Known mechanism for related indication (+5)
- Pathway evidence (+3)
- Network path length to disease module (+2)
Total: sum of components (0-100)
Step 8.2: Generate comprehensive report.
# Network Pharmacology Analysis: [Entity]
## Executive Summary
[2-3 sentence summary of key findings]
## Network Pharmacology Score: [X]/100 - [Tier]
| Component | Score | Max | Evidence |
|-----------|-------|-----|----------|
| Network Proximity | X | 35 | [summary] |
| Clinical Evidence | X | 25 | [summary] |
| Target-Disease Association | X | 20 | [summary] |
| Safety Profile | X | 10 | [summary] |
| Mechanism Plausibility | X | 10 | [summary] |
| **TOTAL** | **X** | **100** | |
## 1. Entity Profile
### Compound: [Name]
- ChEMBL ID: [ID]
- DrugBank ID: [ID]
- SMILES: [SMILES]
- Mechanism: [MOA]
- Approval status: [status]
- Current indications: [list]
### Disease: [Name]
- MONDO/EFO ID: [ID]
- Description: [brief]
- Top associated targets: [list with scores]
- Related diseases: [list]
## 2. Network Topology Summary
- **Total nodes**: X (Y compounds, Z targets, W diseases)
- **Total edges**: X (Y C-T, Z T-D, W C-D, V T-T)
- **Network density**: X
- **Hub nodes**: [list of top hub genes]
- **Modules detected**: X
### Drug Target Module
[List drug targets with degree and betweenness]
### Disease Gene Module
[List disease genes with degree and betweenness]
### Module Overlap
[Shared genes, shared pathways, overlap coefficient]
## 3. Network Proximity
- **Proximity measure**: [metric used]
- **Z-score**: [value]
- : X drug target-disease gene pairs
: X genes
: X pathways
: [strong/moderate/weak proximity]
: [ID] | : [Approved/Clinical/Preclinical]
: [list]
: Drug -> [target1, target2] -> [PPI] -> [disease gene1, gene2]
: [how drug could work for disease]
: [trials, literature]
: [key concerns]
: [T1-T4]
[Repeat for top 10 candidates]
Total drug targets: X
Disease module targets hit: Y (Z%)
Primary targets: [list with actions]
Off-targets: [list with potential effects]
[Analysis of synergistic vs antagonistic target modulation]
[How well drug targets cover the disease network]
[Ranked list of pathways affected by drug]
[Ranked list of pathways associated with disease]
[Pathways shared between drug and disease - these explain the mechanism]
[Top AEs with PRR/ROR where available]
[Targets with known safety liabilities]
[Off-targets in critical tissues]
[Key DDI considerations]
[List of relevant trials with NCT IDs and status]
[Key publications supporting or refuting repurposing hypothesis]
N papers found for [drug] + [disease]
Key findings: [summary]
[Relevant PGx data]
| Finding | Source | Evidence Grade | Confidence |
|---------|--------|---------------|------------|
| [finding1] | [tool/database] | [T1-T4] | [High/Medium/Low] |
| ... | ... | ... | ... |
[Action 1 - e.g., review clinical trial NCT00620191]
[Action 2 - e.g., validate mechanism in cell model]
[Investigation 1]
[Investigation 2]
[Risk 1 and mitigation strategy]
| Phase | Status | Tools Used | Key Findings |
|-------|--------|------------|--------------|
| Entity Disambiguation | Done/Partial/Failed | [tools] | [summary] |
| Compound Node ID | Done/Partial/Failed | [tools] | [summary] |
| Target Node ID | Done/Partial/Failed | [tools] | [summary] |
| Disease Node ID | Done/Partial/Failed | [tools] | [summary] |
| C-T Edges | Done/Partial/Failed | [tools] | [summary] |
| T-D Edges | Done/Partial/Failed | [tools] | [summary] |
| C-D Edges | Done/Partial/Failed | [tools] | [summary] |
| T-T Edges (PPI) | Done/Partial/Failed | [tools] | [summary] |
| Network Topology | Done/Partial/Failed | [computed] | [summary] |
| Network Proximity | Done/Partial/Failed | [computed] | [summary] |
| Pathway Enrichment | Done/Partial/Failed | [tools] | [summary] |
| Repurposing Candidates | Done/Partial/Failed | [tools] | [summary] |
| Mechanism Prediction | Done/Partial/Failed | [analysis] | [summary] |
| Polypharmacology | Done/Partial/Failed | [tools] | [summary] |
| Safety/Toxicity | Done/Partial/Failed | [tools] | [summary] |
| Clinical Precedent | Done/Partial/Failed | [tools] | [summary] |
| Literature Evidence | Done/Partial/Failed | [tools] | [summary] |
| Report Generation | Done/Partial/Failed | - | [summary] |
Tool Parameter Reference (Verified)
Compound Identification
| Tool | Key Parameters | Response Structure |
|---|
OpenTargets_get_drug_chembId_by_generic_name | drugName: str | {data: {search: {hits: [{id, name, description}]}}} |
OpenTargets_get_drug_id_description_by_name | drugName: str | {data: {search: {hits: [{id, name, description}]}}} |
drugbank_get_drug_basic_info_by_drug_name_or_id | query: str, case_sensitive: bool, exact_match: bool, limit: int (ALL required) | {status, data: {drug_name, drugbank_id, ...}} |
PubChem_get_CID_by_compound_name | name: str | {IdentifierList: {CID: [int]}} |
PubChem_get_compound_properties_by_CID | cid: int | {CID, MolecularWeight, ConnectivitySMILES, IUPACName} |
ChEMBL_search_drugs | query: str, limit: int | {status, data: {drugs: [...]}} |
Target Identification
| Tool | Key Parameters | Response Structure |
|---|
OpenTargets_get_target_id_description_by_name | targetName: str | {data: {search: {hits: [{id, name, description}]}}} |
ensembl_lookup_gene | gene_id: str, species: str (REQUIRED, e.g., "homo_sapiens") | {status, data: {display_name, biotype, ...}} |
MyGene_query_genes | query: str | Gene info with cross-references |
Pharos_get_target | target_name: str | Target with development level |
Disease Identification
| Tool | Key Parameters | Response Structure |
|---|
OpenTargets_get_disease_id_description_by_name | diseaseName: str | {data: {search: {hits: [{id, name, description}]}}} |
OpenTargets_get_disease_description_by_efoId | efoId: str | {data: {disease: {id, name, description}}} |
OpenTargets_get_disease_ids_by_efoId | efoId: str | Disease cross-references |
Network Edges
| Tool | Key Parameters | Response Structure |
|---|
STRING_get_interaction_partners | protein_ids: list[str], species: int (9606), limit: int | {status, data: [{stringId_A, stringId_B, preferredName_A, preferredName_B, score}]} |
STRING_get_network | protein_ids: list[str], species: int | Network data |
STRING_functional_enrichment | protein_ids: list[str], species: int | Enrichment results |
STRING_ppi_enrichment | protein_ids: list[str], species: int | PPI enrichment statistics |
OpenTargets_get_target_interactions_by_ensemblID | ensemblId: str, size: int | {data: {target: {interactions: {count, rows: [{intA, targetA, intB, targetB, score}]}}}} |
intact_search_interactions | query: str, max: int | Interaction data |
humanbase_ppi_analysis | gene_list: list, tissue: str, max_node: int, interaction: str, string_mode: str (ALL required) | Tissue-specific PPI |
Drug-Target Edges
| Tool | Key Parameters | Response Structure |
|---|
OpenTargets_get_drug_mechanisms_of_action_by_chemblId | chemblId: str | {data: {drug: {mechanismsOfAction: {rows: [{mechanismOfAction, actionType, targets}]}}}} |
OpenTargets_get_associated_targets_by_drug_chemblId | chemblId: str, size: int | {data: {drug: {linkedTargets: {count, rows}}}} |
drugbank_get_targets_by_drug_name_or_drugbank_id | query, case_sensitive, exact_match, limit (ALL required) | {status, data: {targets: [{id, name, organism, actions}]}} |
DGIdb_get_drug_gene_interactions | genes: list[str] | {data: {genes: {nodes: [{name, interactions}]}}} |
CTD_get_chemical_gene_interactions | input_terms: str | {data: [{ChemicalName, GeneSymbol, InteractionActions}]} |
ChEMBL_get_target_activities | target_chembl_id__exact: str | Activity data with pchembl_value |
Target-Disease Edges
| Tool | Key Parameters | Response Structure |
|---|
OpenTargets_get_associated_targets_by_disease_efoId | efoId: str, limit: int | {data: {disease: {associatedTargets: {count, rows: [{target: {id, approvedSymbol}, score}]}}}} |
OpenTargets_target_disease_evidence | efoId: str, ensemblId: str (BOTH required) | Evidence data across datasources |
CTD_get_gene_diseases | input_terms: str | {data: [{GeneName, DiseaseName, DirectEvidence}]} |
GWAS_search_associations_by_gene | gene_name: str | GWAS association data |
Drug-Disease Edges
| Tool | Key Parameters | Response Structure |
|---|
OpenTargets_get_drug_indications_by_chemblId | chemblId: str, size: int | {data: {drug: {indications: {rows: [{disease, maxPhaseForIndication}]}}}} |
OpenTargets_get_associated_diseases_by_drug_chemblId | chemblId: str, size: int | {data: {drug: {linkedDiseases: {count, rows}}}} |
CTD_get_chemical_diseases | input_terms: str | {data: [{ChemicalName, DiseaseName, DirectEvidence}]} |
search_clinical_trials | query_term: str (REQUIRED), condition: str, pageSize: int | {studies: [{NCT ID, brief_title, ...}]} |
Pathway Analysis
| Tool | Key Parameters | Response Structure |
|---|
ReactomeAnalysis_pathway_enrichment | identifiers: str (space-separated, NOT array) | {data: {pathways: [{pathway_id, name, p_value, fdr, entities_found}]}} |
enrichr_gene_enrichment_analysis | gene_list: list[str], libs: list[str] (REQUIRED) | Enrichment per library |
drugbank_get_pathways_reactions_by_drug_or_id | query, case_sensitive, exact_match, limit | Pathway data |
Safety Tools
| Tool | Key Parameters | Response Structure |
|---|
FAERS_calculate_disproportionality | operation: str, drug_name: str, adverse_event: str | {metrics: {PRR, ROR, IC}, signal_detection} |
FAERS_filter_serious_events | operation: str, drug_name: str, seriousness_type: str | Serious event data |
FAERS_count_death_related_by_drug | medicinalproduct: str | [{term, count}] |
OpenTargets_get_drug_adverse_events_by_chemblId | chemblId: str | {data: {drug: {adverseEvents: {count, rows}}}} |
OpenTargets_get_drug_warnings_by_chemblId | chemblId: str | Drug warning data |
OpenTargets_get_target_safety_profile_by_ensemblID | ensemblId: str | Target safety data |
gnomad_get_gene_constraints | gene_symbol: str | Gene constraint (pLI, LOEUF) |
FDA_get_warnings_and_cautions_by_drug_name | drug_name: str | FDA warning text |
Literature Tools
| Tool | Key Parameters | Response Structure |
|---|
PubMed_search_articles | query: str, max_results: int | list of {pmid, title, authors, journal, pub_date} |
EuropePMC_search_articles | query: str, limit: int | Article list |
OpenTargets_get_publications_by_drug_chemblId | chemblId: str, size: int | Publication data |
Response Format Notes
DrugBank tools: ALL require query, case_sensitive, exact_match, limit (4 params, ALL required).
FAERS analytics tools (disproportionality, compare, filter, stratify, rollup, trends): ALL require operation parameter.
FAERS count tools (count_death, count_reactions, etc.): Use medicinalproduct NOT drug_name.
OpenTargets tools: Return nested {data: {entity: {field: ...}}} structure.
PubMed_search_articles: Returns plain list of dicts, NOT {articles: [...]}.
PubChem CID lookup: Returns {IdentifierList: {CID: [...]}} (NO data wrapper).
ReactomeAnalysis_pathway_enrichment: Takes space-separated identifiers string, NOT array.
ensembl_lookup_gene: REQUIRES species='homo_sapiens' parameter.
STRING tools: Return {status: "success", data: [...]}.
CTD tools: Return {data: [...]} with potentially large result sets.
Fallback Strategies
| Phase | Primary Tool | Fallback 1 | Fallback 2 |
|---|
| Compound ID | OpenTargets drug lookup | ChEMBL search | PubChem CID lookup |
| Target ID | OpenTargets target lookup | ensembl_lookup_gene | MyGene_query_genes |
| Disease ID | OpenTargets disease lookup | ols_search_efo_terms | CTD_get_chemical_diseases |
| Drug targets | OpenTargets drug mechanisms | DrugBank targets | DGIdb interactions |
| Disease targets | OpenTargets disease targets | CTD gene-diseases | GWAS associations |
| PPI network | STRING interactions | OpenTargets interactions | IntAct interactions |
| Pathways | ReactomeAnalysis enrichment | enrichr enrichment | STRING functional enrichment |
| Clinical trials | search_clinical_trials | clinical_trials_search | PubMed clinical |
| Safety | FAERS + FDA | OpenTargets AEs | DrugBank safety |
| Literature | PubMed search | EuropePMC search | OpenTargets publications |
Common Use Patterns
Pattern 1: Drug Repurposing via Network Proximity
Input: compound (metformin) + disease (Alzheimer disease)
Mode: compound-to-disease
Flow:
1. Resolve metformin -> CHEMBL1431, DB00331, CID:4091
2. Get metformin targets (OpenTargets, DrugBank, DGIdb)
3. Get Alzheimer disease genes (OpenTargets, GWAS)
4. Build PPI network (STRING, OpenTargets interactions)
5. Calculate proximity between drug targets and disease genes
6. Score and rank by Network Pharmacology Score
7. Predict mechanism via shared pathways
8. Validate with clinical trials and literature
Pattern 2: Disease-Driven Drug Discovery
Input: disease (lupus)
Mode: disease-to-compound
Flow:
1. Resolve lupus -> MONDO/EFO ID
2. Get disease-associated targets (top 50)
3. For each target, find approved drugs (OpenTargets, DGIdb, DrugBank)
4. Build C-T-D network from all drug-target-disease edges
5. Rank drugs by: number of disease targets hit, network proximity, safety
6. Identify polypharmacology advantages (drugs hitting multiple disease targets)
Pattern 3: Target-Centric Network
Input: target (EGFR)
Mode: target-centric
Flow:
1. Resolve EGFR -> ENSG00000146648
2. Get all compounds targeting EGFR (with bioactivity)
3. Get all diseases associated with EGFR
4. Build PPI network around EGFR
5. Identify which compounds could bridge to which diseases
6. Rank compound-disease pairs by network metrics
Pattern 4: Polypharmacology Profiling
Input: compound (aspirin)
Mode: bidirectional
Flow:
1. Resolve aspirin -> CHEMBL25
2. Get ALL targets (not just primary)
3. Map targets to disease modules
4. Identify multi-target coverage across diseases
5. Analyze synergistic vs antagonistic effects
6. Compare selectivity across target families
Pattern 5: Mechanism Elucidation
Input: compound (rapamycin) + disease (aging/longevity)
Mode: compound-to-disease
Flow:
1. Resolve rapamycin -> CHEMBL413 (sirolimus)
2. Get mechanism: mTOR inhibitor
3. Map mTOR pathway to aging-related genes
4. Trace network paths: rapamycin -> mTOR -> autophagy -> aging genes
5. Assess pathway overlap and functional enrichment
6. Provide mechanistic explanation
Edge Cases
Promiscuous Compounds (many targets)
- Limit initial target retrieval to top 50 by confidence
- Classify into primary (mechanism) vs secondary (off-target)
- Focus network analysis on primary targets first
- Note polypharmacology implications
Orphan Diseases (limited data)
- Expand to parent disease categories in ontology
- Use related diseases from OpenTargets similar entities
- Leverage pathway-level analysis over gene-level
- Note data limitations in report
Novel Targets (no known drugs)
- Focus on target biology and disease association
- Use DGIdb druggability assessment
- Search for chemical probes (OpenTargets chemical probes)
- Suggest target-based screening approaches
Large Networks (>100 nodes)
- Prioritize top-scored edges
- Use network modules rather than full network
- Focus on shortest paths between entities
- Summarize statistics rather than listing all nodes
Disconnected Networks
- Report disconnection explicitly
- Analyze drug module and disease module separately
- Look for pathway-level connections as bridge
- Note that disconnection suggests low repurposing potential
Troubleshooting
"Disease not found":
- Try disease synonyms (e.g., "Alzheimer's disease" vs "Alzheimer disease")
- Use EFO/MONDO ID directly if known
- Search with
OpenTargets_multi_entity_search_by_query_string(queryString=...) for broader matching
- Try parent disease category
"No drugs found for target":
- Target may be Tdark (no chemical tools) - check with Pharos
- Expand to target family or pathway
- Search DGIdb which aggregates multiple sources
- Check chemical probes as starting points
"No PPI data":
- Try different protein identifiers (gene symbol, UniProt, Ensembl protein)
- Use multiple PPI databases (STRING + IntAct + OpenTargets)
- Lower confidence threshold in STRING
- Use pathway co-membership as proxy for interaction
"Network proximity not significant":
- Drug targets may be functionally distant from disease module
- Try expanding disease gene set (increase limit)
- Consider indirect mechanisms via shared pathways
- Report honestly - not all drug-disease pairs have network support
"DrugBank parameter errors":
- ALL DrugBank tools require 4 params:
query, case_sensitive, exact_match, limit
- Use
case_sensitive=False, exact_match=True for exact drug name matching
- Use
exact_match=False for broader searches
"FAERS operation errors":
- Analytics tools (disproportionality, compare, filter, stratify) need
operation param
- Count tools use
medicinalproduct NOT drug_name
- Check FAERS tool name carefully to determine which pattern
Resources
For focused drug repurposing (without network analysis): tooluniverse-drug-repurposing
For target validation: tooluniverse-drug-target-validation
For adverse event detection: tooluniverse-adverse-event-detection
For systems biology: tooluniverse-systems-biology
For protein interactions: tooluniverse-protein-interactions