Files
drug-discovery-prompts/upstream/mims-harvard-ToolUniverse/skills/tooluniverse-drug-repurposing/REFERENCE.md

671 lines
18 KiB
Markdown

---
title: "Drug Repurposing Reference"
task: ""
lineage_type: import
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/e2520a96/skills/tooluniverse-drug-repurposing/REFERENCE.md
upstream_sha: e2520a96
imported_at: 2026-06-26
prompt_class: prompt
upstream_changes: accepted
author: upstream
validated: false
---
# Drug Repurposing Reference
Detailed tool documentation and API reference for drug repurposing workflows.
## ToolUniverse Tools by Category
### Disease & Target Discovery Tools
#### OpenTargets_get_disease_id_description_by_name
```python
disease_info = tu.tools.OpenTargets_get_disease_id_description_by_name(
diseaseName="Alzheimer's disease"
)
# Returns: {'data': {'id': 'EFO_0000249', 'name': '...', 'description': '...'}}
```
**Use**: Initial disease lookup, get EFO ID for further queries
#### OpenTargets_get_associated_targets_by_disease_efoId
```python
targets = tu.tools.OpenTargets_get_associated_targets_by_disease_efoId(
efoId="EFO_0000249",
limit=20
)
# Returns: List of targets with association scores
```
**Use**: Find proteins/genes associated with disease (repurposing targets)
#### OpenTargets_get_diseases_by_target_ensemblId
```python
diseases = tu.tools.OpenTargets_get_diseases_by_target_ensemblId(
ensemblId="ENSG00000012048"
)
# Returns: Diseases associated with gene/protein
```
**Use**: Reverse lookup - find diseases for drug targets (compound-based repurposing)
---
### Drug Discovery Tools
#### drugbank_get_drug_name_and_description_by_target_name
```python
drugs = tu.tools.drugbank_get_drug_name_and_description_by_target_name(
target_name="BACE1"
)
# Returns: List of drugs targeting specified protein
```
**Use**: Primary tool for finding drugs by target (target-based repurposing)
#### drugbank_get_drug_name_and_description_by_indication
```python
drugs = tu.tools.drugbank_get_drug_name_and_description_by_indication(
indication="hypertension"
)
# Returns: Drugs approved for specified indication
```
**Use**: Find drugs for related indications (indication-based repurposing)
#### DGIdb_get_drug_gene_interactions
```python
interactions = tu.tools.DGIdb_get_drug_gene_interactions(
gene_name="APP"
)
# Returns: Drug-gene interactions with interaction types
```
**Use**: Alternative source for drug-target pairs, includes interaction types
#### DGIdb_get_gene_druggability
```python
druggability = tu.tools.DGIdb_get_gene_druggability(
gene_name="APOE"
)
# Returns: Druggability assessment and tier
```
**Use**: Assess if target is druggable before extensive search
#### ChEMBL_search_drugs
```python
drugs = tu.tools.ChEMBL_search_drugs(
query="kinase inhibitor",
limit=10
)
# Returns: ChEMBL drug molecules matching query
```
**Use**: Broad drug search, alternative to DrugBank
#### ChEMBL_get_drug_mechanisms
```python
mechanisms = tu.tools.ChEMBL_get_drug_mechanisms(
chembl_id="CHEMBL941"
)
# Returns: Mechanism of action details
```
**Use**: Understand drug mechanism for repurposing rationale
---
### Drug Information Tools
#### drugbank_get_drug_basic_info_by_drug_name_or_id
```python
info = tu.tools.drugbank_get_drug_basic_info_by_drug_name_or_id(
drug_name_or_drugbank_id="metformin"
)
# Returns: Basic drug info including approval status, groups, description
```
**Use**: Initial drug lookup, verify approval status
#### drugbank_get_indications_by_drug_name_or_drugbank_id
```python
indications = tu.tools.drugbank_get_indications_by_drug_name_or_drugbank_id(
drug_name_or_drugbank_id="aspirin"
)
# Returns: List of approved indications
```
**Use**: Check current uses, identify repurposing opportunities (new indications)
#### drugbank_get_targets_by_drug_name_or_drugbank_id
```python
targets = tu.tools.drugbank_get_targets_by_drug_name_or_drugbank_id(
drug_name_or_drugbank_id="imatinib"
)
# Returns: Drug targets with accessions
```
**Use**: Compound-based repurposing - find all targets for known drug
#### drugbank_get_pharmacology_by_drug_name_or_drugbank_id
```python
pharmacology = tu.tools.drugbank_get_pharmacology_by_drug_name_or_drugbank_id(
drug_name_or_drugbank_id="warfarin"
)
# Returns: Mechanism of action, pharmacodynamics, pharmacokinetics
```
**Use**: Understand drug mechanism for repurposing rationale
#### drugbank_get_pathways_reactions_by_drug_or_id
```python
pathways = tu.tools.drugbank_get_pathways_reactions_by_drug_or_id(
drug_name_or_drugbank_id="statins"
)
# Returns: Affected pathways and reactions
```
**Use**: Pathway-based repurposing - find drugs affecting similar pathways
#### drugbank_get_drug_name_and_description_by_pathway_name
```python
drugs = tu.tools.drugbank_get_drug_name_and_description_by_pathway_name(
pathway_name="cholesterol biosynthesis"
)
# Returns: Drugs affecting specified pathway
```
**Use**: Find drugs with pathway overlap (network-based repurposing)
#### drugbank_get_drug_desc_pharmacology_by_moa
```python
drugs = tu.tools.drugbank_get_drug_desc_pharmacology_by_moa(
mechanism_of_action="receptor antagonist"
)
# Returns: Drugs with specified mechanism
```
**Use**: Mechanism-based repurposing
---
### Safety Assessment Tools
#### FDA_get_warnings_and_cautions_by_drug_name
```python
warnings = tu.tools.FDA_get_warnings_and_cautions_by_drug_name(
drug_name="aspirin"
)
# Returns: FDA warnings, precautions, contraindications
```
**Use**: Critical safety assessment before repurposing recommendation
#### FDA_get_precautions_by_drug_name
```python
precautions = tu.tools.FDA_get_precautions_by_drug_name(
drug_name="metformin"
)
# Returns: Precautions and special populations
```
**Use**: Identify patient populations to exclude
#### drugbank_get_drug_interactions_by_drug_name_or_id
```python
interactions = tu.tools.drugbank_get_drug_interactions_by_drug_name_or_id(
drug_name_or_id="warfarin"
)
# Returns: Drug-drug interactions
```
**Use**: Assess interaction risk for new indication (different patient population)
#### FAERS_search_reports_by_drug_and_reaction
```python
reports = tu.tools.FAERS_search_reports_by_drug_and_reaction(
drug_name="LIPITOR",
reaction="myalgia",
limit=100
)
# Returns: Adverse event reports
```
**Use**: Real-world safety data, specific adverse events
#### FAERS_count_reactions_by_drug_event
```python
reactions = tu.tools.FAERS_count_reactions_by_drug_event(
medicinalproduct="ASPIRIN"
)
# Returns: Counts of all reported reactions
```
**Use**: Overview of adverse event profile
#### FAERS_count_death_related_by_drug
```python
deaths = tu.tools.FAERS_count_death_related_by_drug(
medicinalproduct="FENTANYL"
)
# Returns: Death-related adverse event counts
```
**Use**: Most serious safety assessment
#### FAERS_count_seriousness_by_drug_event
```python
seriousness = tu.tools.FAERS_count_seriousness_by_drug_event(
medicinalproduct="METFORMIN"
)
# Returns: Classification of events by seriousness
```
**Use**: Stratify adverse events by severity
---
### Chemical Property Tools
#### PubChem_get_CID_by_compound_name
```python
cid = tu.tools.PubChem_get_CID_by_compound_name(
compound_name="aspirin"
)
# Returns: PubChem Compound ID
```
**Use**: First step for PubChem queries
#### PubChem_get_compound_properties_by_CID
```python
properties = tu.tools.PubChem_get_compound_properties_by_CID(
cid=2244
)
# Returns: MW, formula, SMILES, LogP, H-bond donors/acceptors
```
**Use**: Assess drug-likeness, compare analogs
#### PubChem_search_compounds_by_similarity
```python
similar = tu.tools.PubChem_search_compounds_by_similarity(
smiles="CC(=O)Oc1ccccc1C(=O)O",
threshold=85,
limit=50
)
# Returns: Structurally similar compounds
```
**Use**: Structure-based repurposing - find approved drug analogs
#### PubChem_get_compound_bioactivity
```python
bioactivity = tu.tools.PubChem_get_compound_bioactivity(
cid=2244
)
# Returns: Active/inactive assay counts
```
**Use**: Evidence of biological activity
#### ChEMBL_search_activities
```python
bioactivity = tu.tools.ChEMBL_search_activities(
chembl_id="CHEMBL25"
)
# Returns: Detailed bioactivity data (IC50, EC50, etc.)
```
**Use**: Quantitative activity data for target validation
---
### ADMET Prediction Tools
#### ADMETAI_predict_physicochemical_properties
```python
admet = tu.tools.ADMETAI_predict_physicochemical_properties(
smiles="CC(C)Cc1ccc(cc1)C(C)C(O)=O"
)
# Returns: Absorption, distribution, metabolism, excretion, toxicity predictions
```
**Use**: Predict drug-like properties for candidates, filter early
**Important**: Use `use_cache=True` for expensive ML predictions
#### ADMETAI_predict_toxicity
```python
toxicity = tu.tools.ADMETAI_predict_toxicity(
smiles=["SMILES1", "SMILES2"]
)
# Returns: Toxicity predictions (hERG, hepatotoxicity, etc.)
```
**Use**: Safety screening before clinical consideration
---
### Literature Search Tools
#### PubMed_search_articles
```python
papers = tu.tools.PubMed_search_articles(
query="metformin AND Alzheimer's disease",
max_results=50
)
# Returns: PubMed articles with PMIDs, titles, abstracts
```
**Use**: Primary literature evidence for repurposing hypothesis
#### EuropePMC_search_articles
```python
papers = tu.tools.EuropePMC_search_articles(
query="aspirin AND cancer",
limit=50
)
# Returns: Europe PMC articles (includes preprints)
```
**Use**: Alternative/additional literature source
#### search_clinical_trials
```python
trials = tu.tools.search_clinical_trials(
condition="COVID-19",
intervention="hydroxychloroquine"
)
# Returns: Clinical trial records
```
**Use**: Check existing clinical evidence, identify completed/ongoing trials
---
### Protein/Target Information Tools
#### UniProt_get_entry_by_accession
```python
protein = tu.tools.UniProt_get_entry_by_accession(
accession="P05067"
)
# Returns: Detailed protein information
```
**Use**: Understand target biology, confirm druggability
---
## Parameter Guidelines
### Query Construction
**Drug names**:
- Use generic names: "aspirin" not "Bayer Aspirin"
- Lowercase for DrugBank: `drug_name="metformin"`
- UPPERCASE for FAERS: `medicinalproduct="METFORMIN"`
**Disease names**:
- Use standard terminology: "Alzheimer's disease" not "dementia"
- Try variations if not found: "breast cancer", "breast carcinoma", "mammary carcinoma"
**Gene/Target names**:
- HUGO nomenclature: "APP" not "Amyloid Precursor Protein"
- Protein names: "Amyloid beta A4 protein" for UniProt
- Ensembl IDs: "ENSG00000" format for OpenTargets
### Result Limits
Recommended limits by tool:
- `OpenTargets_get_associated_targets_by_disease_efoId`: 20-50 (prioritize by score)
- `DGIdb_get_drug_gene_interactions`: No limit (returns all)
- `ChEMBL_search_drugs`: 10-20
- `PubMed_search_articles`: 50-100 for thorough analysis
- `FAERS` tools: 100-1000 (statistical analysis)
- `PubChem_search_compounds_by_similarity`: 50-100
### Caching Strategy
**Always cache**:
- ADMET predictions (expensive ML)
- Literature searches (large results)
- Drug/protein detail queries (static data)
**Don't cache**:
- FAERS data (updated quarterly)
- Clinical trials (frequently updated)
- Real-time safety alerts
```python
# Enable caching globally
tu = ToolUniverse(use_cache=True)
# Or per-call
result = tu.tools.ADMETAI_predict_physicochemical_properties(smiles="...", use_cache=True)
```
---
## Data Structure Patterns
### Standard Result Format
```python
{
'data': [...], # Main results (list or dict)
'meta': {...}, # Metadata (counts, pagination)
'status': 'success', # Status indicator
'message': 'Optional message'
}
```
### OpenTargets Target Object
```python
{
'gene_symbol': 'APP',
'gene_name': 'Amyloid Precursor Protein',
'ensembl_id': 'ENSG00000142192',
'uniprot_id': 'P05067',
'score': 0.95, # Association score (0-1)
'data_sources': [...] # Evidence sources
}
```
### DrugBank Drug Object
```python
{
'drugbank_id': 'DB00945',
'name': 'Aspirin',
'description': '...',
'groups': ['approved', 'vet_approved'],
'indication': '...',
'pharmacodynamics': '...',
'mechanism_of_action': '...',
'targets': [...]
}
```
### FAERS Result Format
```python
{
'results': [
{
'term': 'NAUSEA',
'count': 12345
},
...
],
'meta': {
'total': 50000,
'disclaimer': '...'
}
}
```
---
## Common Patterns & Recipes
### Pattern 1: Batch Target Screening
```python
# Screen multiple targets efficiently
targets = ['APP', 'APOE', 'MAPT', 'PSEN1', 'PSEN2']
all_drugs = []
for target in targets:
drugs = tu.tools.DGIdb_get_drug_gene_interactions(gene_name=target)
if drugs and 'data' in drugs:
all_drugs.extend([{**d, 'target': target} for d in drugs['data']])
# Deduplicate by drug name
unique_drugs = {d['drug_name']: d for d in all_drugs}.values()
```
### Pattern 2: Cross-Database Validation
```python
# Validate drug-target interaction across databases
drug = "imatinib"
target = "ABL1"
# Check DrugBank
db_targets = tu.tools.drugbank_get_targets_by_drug_name_or_drugbank_id(
drug_name_or_drugbank_id=drug
)
db_confirms = any(t['gene_symbol'] == target for t in db_targets.get('data', []))
# Check DGIdb
dgidb = tu.tools.DGIdb_get_drug_gene_interactions(gene_name=target)
dgidb_confirms = any(d['drug_name'].lower() == drug.lower()
for d in dgidb.get('data', []))
# Check ChEMBL
chembl_drugs = tu.tools.ChEMBL_search_drugs(query=drug, limit=1)
if chembl_drugs and 'data' in chembl_drugs:
chembl_id = chembl_drugs['data'][0]['molecule_chembl_id']
mechanisms = tu.tools.ChEMBL_get_drug_mechanisms(chembl_id=chembl_id)
chembl_confirms = any(target in str(m) for m in mechanisms.get('data', []))
validation_score = sum([db_confirms, dgidb_confirms, chembl_confirms])
print(f"Validation: {validation_score}/3 databases confirm {drug}-{target} interaction")
```
### Pattern 3: Safety Signal Detection
```python
# Detect safety signals for repurposing
drug = "THALIDOMIDE"
# Get all adverse events
all_reactions = tu.tools.FAERS_count_reactions_by_drug_event(
medicinalproduct=drug
)
# Classify by seriousness
seriousness = tu.tools.FAERS_count_seriousness_by_drug_event(
medicinalproduct=drug
)
# Get death reports
deaths = tu.tools.FAERS_count_death_related_by_drug(
medicinalproduct=drug
)
# Calculate safety score
total_reports = sum(r['count'] for r in all_reactions.get('results', []))
death_count = deaths.get('meta', {}).get('total', 0)
death_ratio = death_count / max(total_reports, 1)
if death_ratio > 0.01: # >1% death reports
print(f"⚠️ HIGH RISK: {death_ratio*100:.2f}% death ratio")
elif death_ratio > 0.001:
print(f"⚠️ MODERATE RISK: {death_ratio*100:.2f}% death ratio")
else:
print(f"✓ ACCEPTABLE RISK: {death_ratio*100:.2f}% death ratio")
```
### Pattern 4: Literature Evidence Scoring
```python
# Score repurposing candidate by literature evidence
drug = "metformin"
disease = "cancer"
query = f"{drug} AND {disease}"
# Search multiple sources
pubmed = tu.tools.PubMed_search_articles(query=query, max_results=100)
pmc = tu.tools.EuropePMC_search_articles(query=query, limit=100)
trials = tu.tools.search_clinical_trials(condition=disease, intervention=drug)
# Count evidence types
review_count = sum(1 for p in pubmed.get('data', [])
if 'review' in p.get('title', '').lower())
rct_count = sum(1 for p in pubmed.get('data', [])
if 'randomized' in p.get('title', '').lower())
trial_count = len(trials.get('data', []))
# Calculate evidence score
evidence_score = (
len(pubmed.get('data', [])) * 1 + # 1 point per paper
review_count * 3 + # 3 points per review
rct_count * 5 + # 5 points per RCT
trial_count * 10 # 10 points per trial
)
print(f"Evidence Score: {evidence_score}")
print(f" Papers: {len(pubmed.get('data', []))}")
print(f" Reviews: {review_count}")
print(f" RCTs: {rct_count}")
print(f" Trials: {trial_count}")
```
---
## Troubleshooting
### Issue: "Disease not found"
**Solutions**:
1. Try disease synonyms
2. Use broader disease categories
3. Search OMIM or other disease databases
4. Use EFO ID directly if known
### Issue: "No drugs found for target"
**Causes**:
- Target not druggable
- Target name incorrect
- Limited database coverage
**Solutions**:
1. Check gene symbol (HUGO nomenclature)
2. Try protein name instead
3. Expand to pathway-level drugs
4. Check target druggability first
### Issue: "Drug name not recognized"
**Solutions**:
1. Try generic name (not brand)
2. Try different capitalization
3. Use DrugBank ID if known
4. Search PubChem first
### Issue: "API rate limits"
**Solutions**:
1. Enable caching: `use_cache=True`
2. Add delays between calls
3. Use batch operations
4. Register for API keys (NCBI, etc.)
### Issue: "Empty results for FAERS"
**Causes**:
- Drug name spelling
- Insufficient reports
- Wrong capitalization
**Solutions**:
1. Use UPPERCASE: "ASPIRIN" not "aspirin"
2. Try brand names
3. Check OpenFDA directly
### Issue: "Slow performance"
**Solutions**:
1. Enable caching globally
2. Limit result counts
3. Load specific tool categories
4. Use batch operations
5. Disable validation after testing
---
## Best Practices Summary
1. **Start with approved drugs** - Known safety profiles
2. **Validate across databases** - Cross-reference DrugBank, DGIdb, ChEMBL
3. **Check safety first** - FDA warnings before detailed analysis
4. **Use caching** - Save API calls and time
5. **Limit initial searches** - Expand only promising candidates
6. **Document evidence** - Keep track of supporting papers
7. **Consider mechanism** - Biological plausibility critical
8. **Assess patient populations** - Different from original indication
9. **Check IP landscape** - Patent status for new indications
10. **Think commercially** - Market size and unmet need
---
## Additional Resources
- **ToolUniverse Documentation**: https://zitniklab.hms.harvard.edu/ToolUniverse/
- **Tool Catalog**: https://zitniklab.hms.harvard.edu/ToolUniverse/tools/
- **DrugBank**: https://go.drugbank.com/
- **OpenTargets**: https://platform.opentargets.org/
- **ChEMBL**: https://www.ebi.ac.uk/chembl/
- **OpenFDA**: https://open.fda.gov/
- **PubMed**: https://pubmed.ncbi.nlm.nih.gov/