21 KiB
21 KiB
title, task, lineage_type, upstream_source, upstream_sha, imported_at, prompt_class, upstream_changes, author, validated
| title | task | lineage_type | upstream_source | upstream_sha | imported_at | prompt_class | upstream_changes | author | validated |
|---|---|---|---|---|---|---|---|---|---|
| Target Intelligence Examples | import | https://github.com/mims-harvard/ToolUniverse/blob/e2520a96/skills/tooluniverse-target-research/EXAMPLES.md | e2520a96 | 2026-06-26 | prompt | accepted | upstream | false |
Target Intelligence Examples
Detailed examples showing multi-step workflows for comprehensive target analysis.
Example 1: Complete EGFR Target Profile
Query: "Tell me everything about EGFR as a drug target"
Step 1: Resolve Identifiers
from tooluniverse import ToolUniverse
tu = ToolUniverse(use_cache=True)
tu.load_tools()
# Resolve EGFR to all IDs
# Search UniProt for human EGFR
search_result = tu.tools.UniProt_search(
query='gene:EGFR AND organism_id:9606',
limit=1
)
uniprot_id = search_result['results'][0]['primaryAccession'] # P00533
# Map to Ensembl
mapping = tu.tools.UniProt_id_mapping(
ids=['P00533'],
from_db='UniProtKB_AC-ID',
to_db='Ensembl'
)
ensembl_id = mapping['results'][0]['to'] # ENSG00000146648
ids = {
'symbol': 'EGFR',
'uniprot': 'P00533',
'ensembl': 'ENSG00000146648'
}
Step 2: Core Identity (PATH 1)
# Get full UniProt entry
entry = tu.tools.UniProt_get_entry_by_accession(accession='P00533')
# Extract key info
identity = {
'name': entry.get('proteinDescription', {}).get('recommendedName', {}).get('fullName', {}).get('value'),
'length': entry.get('sequence', {}).get('length'),
'organism': entry.get('organism', {}).get('scientificName'),
'function': tu.tools.UniProt_get_function_by_accession(accession='P00533')
}
# Get gene annotation
gene_info = tu.tools.MyGene_get_gene_annotation(
gene_id='1956', # Entrez ID for EGFR
fields='symbol,name,summary,alias,genomic_pos'
)
Output:
Name: Epidermal growth factor receptor
Symbol: EGFR
Length: 1210 amino acids
Organism: Homo sapiens
Function: Receptor tyrosine kinase binding ligands of the EGF family...
Step 3: Structure & Domains (PATH 2)
# Get PDB structures from UniProt entry
pdb_refs = [xref for xref in entry.get('uniProtKBCrossReferences', [])
if xref.get('database') == 'PDB']
# Get details for best structure
best_pdb = '1M17' # Example: EGFR kinase domain
pdb_info = tu.tools.get_protein_metadata_by_pdb_id(pdb_id='1M17')
# Get AlphaFold prediction
alphafold = tu.tools.alphafold_get_prediction(qualifier='P00533')
# Get domain architecture
domains = tu.tools.InterPro_get_protein_domains(protein_id='P00533')
# Get PTMs and active sites
ptms = tu.tools.UniProt_get_ptm_processing_by_accession(accession='P00533')
Output:
PDB Structures: 150+ entries
Best Resolution: 1.8Å (1M17)
AlphaFold: Available, high confidence
Key Domains:
- Receptor L domain (EGF binding)
- Furin-like domain
- Growth factor receptor domain
- Protein kinase domain
PTMs: Multiple phosphorylation sites (Y992, Y1068, Y1086...)
Step 4: Function & Pathways (PATH 3)
# GO annotations
go_terms = tu.tools.GO_get_annotations_for_gene(gene_id='UniProtKB:P00533')
# Reactome pathways
reactome_pathways = tu.tools.Reactome_map_uniprot_to_pathways(id='P00533')
# KEGG pathways
kegg_info = tu.tools.kegg_get_gene_info(gene_id='hsa:1956')
# Open Targets GO
ot_go = tu.tools.OpenTargets_get_target_gene_ontology_by_ensemblID(
ensemblID='ENSG00000146648'
)
Output:
GO Biological Process:
- Signal transduction (GO:0007165)
- Cell proliferation (GO:0008283)
- MAPK cascade (GO:0000165)
GO Molecular Function:
- Protein tyrosine kinase activity (GO:0004713)
- ATP binding (GO:0005524)
- Receptor binding (GO:0005102)
Key Pathways:
- EGFR signaling pathway (Reactome)
- PI3K-Akt signaling (KEGG hsa04151)
- MAPK signaling (KEGG hsa04010)
- ErbB signaling pathway (KEGG hsa04012)
Step 5: Protein Interactions (PATH 4)
# STRING interactions
string_ppi = tu.tools.STRING_get_protein_interactions(
protein_ids=['EGFR'],
species=9606,
confidence_score=0.9,
limit=50
)
# IntAct experimental interactions
intact_ppi = tu.tools.intact_get_interactions(
identifier='P00533',
format='json'
)
# Open Targets interactions
ot_ppi = tu.tools.OpenTargets_get_target_interactions_by_ensemblID(
ensemblID='ENSG00000146648'
)
Output:
Top STRING Interactors (score > 0.9):
1. GRB2 (0.999) - Adapter protein
2. SHC1 (0.999) - Signal transduction
3. ERBB2 (0.998) - Receptor family
4. SRC (0.996) - Kinase
5. STAT3 (0.994) - Transcription factor
IntAct Complexes:
- EGFR-GRB2-SOS1 complex
- EGFR-PI3K complex
Step 6: Expression Profile (PATH 5)
# GTEx expression
gtex = tu.tools.GTEx_get_median_gene_expression(
gencode_id='ENSG00000146648.11'
)
# HPA expression
hpa = tu.tools.HPA_get_comprehensive_gene_details_by_ensembl_id(
ensembl_id='ENSG00000146648'
)
# Subcellular location
subcell = tu.tools.HPA_get_subcellular_location(
ensembl_id='ENSG00000146648'
)
# Cancer prognostics
cancer = tu.tools.HPA_get_cancer_prognostics_by_gene(
gene_symbol='EGFR'
)
Output:
Top Expression Tissues (GTEx TPM):
1. Skin (150+ TPM)
2. Esophagus mucosa (120+ TPM)
3. Kidney cortex (100+ TPM)
4. Lung (80+ TPM)
Tissue Specificity: Low (broadly expressed)
Subcellular: Plasma membrane, Cytoplasm
Cancer Relevance:
- Overexpressed in: NSCLC, Glioblastoma, Colorectal
- Prognostic: Unfavorable in lung cancer
Step 7: Variants & Disease (PATH 6)
# gnomAD constraint scores
constraints = tu.tools.gnomad_get_gene_constraints(gene_symbol='EGFR')
# UniProt disease variants
disease_vars = tu.tools.UniProt_get_disease_variants_by_accession(accession='P00533')
# ClinVar variants
clinvar = tu.tools.ClinVar_search_variants(gene='EGFR', max_results=100)
# Open Targets disease associations
diseases = tu.tools.OpenTargets_get_diseases_phenotypes_by_target_ensembl(
ensemblId='ENSG00000146648'
)
Output:
Constraint Scores:
- pLI: 0.99 (highly loss-of-function intolerant)
- LOEUF: 0.18
- Missense Z: 3.5
Disease Associations (Open Targets):
1. Non-small cell lung carcinoma (0.95)
2. Glioblastoma multiforme (0.89)
3. Colorectal cancer (0.82)
4. Pancreatic cancer (0.75)
ClinVar Pathogenic Variants: 45
- L858R (common activating mutation)
- T790M (resistance mutation)
- Exon 19 deletions
Step 8: Drug Interactions (PATH 7)
# Open Targets tractability
tractability = tu.tools.OpenTargets_get_target_tractability_by_ensemblID(
ensemblID='ENSG00000146648'
)
# DGIdb druggability
druggability = tu.tools.DGIdb_get_gene_druggability(genes=['EGFR'])
# Known drugs
drugs = tu.tools.OpenTargets_get_associated_drugs_by_target_ensemblID(
ensemblID='ENSG00000146648'
)
# ChEMBL bioactivity
# First get ChEMBL target ID
chembl_target = tu.tools.ChEMBL_search_targets(
pref_name__contains='EGFR',
organism='Homo sapiens',
limit=1
)
target_chembl_id = chembl_target['targets'][0]['target_chembl_id'] # CHEMBL203
activities = tu.tools.ChEMBL_get_target_activities(
target_chembl_id__exact='CHEMBL203',
limit=100
)
# Safety profile
safety = tu.tools.OpenTargets_get_target_safety_profile_by_ensemblID(
ensemblID='ENSG00000146648'
)
# Chemical probes
probes = tu.tools.OpenTargets_get_chemical_probes_by_target_ensemblID(
ensemblID='ENSG00000146648'
)
Output:
Tractability:
- Small Molecule: HIGH (clinical precedence)
- Antibody: HIGH (approved antibodies)
- PROTAC: HIGH (structural data available)
- Other Modalities: MEDIUM
Approved Drugs:
1. Erlotinib (Tarceva) - TKI
2. Gefitinib (Iressa) - TKI
3. Afatinib (Gilotrif) - TKI
4. Osimertinib (Tagrisso) - 3rd gen TKI
5. Cetuximab (Erbitux) - mAb
6. Panitumumab (Vectibix) - mAb
ChEMBL Activities:
- 50,000+ bioactivity records
- Best IC50: 0.5 nM (osimertinib)
Safety Liabilities:
- Skin toxicity (class effect)
- Diarrhea (common)
- Interstitial lung disease (rare)
Chemical Probes:
- Gefitinib (SGC probe)
Step 9: Literature (PATH 8)
# PubMed publications
pubmed_total = tu.tools.PubMed_search_articles(
query='EGFR[Gene Name]',
limit=0 # Just count
)
pubmed_recent = tu.tools.PubMed_search_articles(
query='EGFR[Gene Name] AND "2024"[Date - Publication]',
limit=0
)
pubmed_drug = tu.tools.PubMed_search_articles(
query='EGFR AND drug AND cancer',
limit=10
)
# Open Targets publications
ot_pubs = tu.tools.OpenTargets_get_publications_by_target_ensemblID(
ensemblID='ENSG00000146648',
size=10
)
Output:
Literature Summary:
- Total publications: 180,000+
- Recent (2024): 8,000+
- Drug-related: 45,000+
- Trend: Stable (mature, well-studied target)
Recent Focus Areas:
- Resistance mechanisms
- Third-generation inhibitors
- Combination therapies
- Liquid biopsy for monitoring
Final Synthesized Report
# Target Intelligence Report: EGFR
## Quick Facts
| Property | Value |
|----------|-------|
| Symbol | EGFR |
| UniProt | P00533 |
| Ensembl | ENSG00000146648 |
| Name | Epidermal growth factor receptor |
| Length | 1210 amino acids |
| Organism | Homo sapiens |
## Druggability Assessment
| Modality | Score | Evidence |
|----------|-------|----------|
| Small molecule | ✅ HIGH | 4+ approved TKIs |
| Antibody | ✅ HIGH | 2+ approved mAbs |
| PROTAC | ✅ HIGH | Structural data |
## Summary by Domain
### Identity & Function
- Receptor tyrosine kinase of the ErbB family
- Regulates cell proliferation, survival, differentiation
- Activates RAS-MAPK and PI3K-AKT pathways
### Structure
- 150+ PDB structures available
- Key domains: Kinase (for TKIs), Extracellular (for mAbs)
- AlphaFold model: High confidence
### Expression
- Broadly expressed (skin, lung, kidney highest)
- Overexpressed in multiple cancers
- Subcellular: Plasma membrane
### Variants & Disease
- Highly constrained (pLI=0.99)
- Major cancer associations: NSCLC, glioblastoma, CRC
- Key mutations: L858R, T790M, exon 19 del
### Drugs
- 6+ approved drugs
- 200+ clinical trials
- Well-characterized safety profile (skin toxicity)
### Research
- Mature target (180K+ publications)
- Active research on resistance mechanisms
## Recommendations
1. [HIGH] Excellent target validation - multiple approved therapies
2. [MEDIUM] Consider resistance mutations in drug design
3. [INFO] Extensive structural data for SBDD available
Example 2: Novel Target Assessment (KRAS G12C)
Query: "Is KRAS druggable? What's the current state?"
Multi-Step Workflow
from tooluniverse import ToolUniverse
from concurrent.futures import ThreadPoolExecutor
tu = ToolUniverse(use_cache=True)
tu.load_tools()
# Resolve KRAS
ids = {
'symbol': 'KRAS',
'uniprot': 'P01116',
'ensembl': 'ENSG00000133703'
}
# Parallel execution
def assess_druggability():
results = {}
# 1. Tractability
results['tractability'] = tu.tools.OpenTargets_get_target_tractability_by_ensemblID(
ensemblID=ids['ensembl']
)
# 2. DGIdb assessment
results['dgidb'] = tu.tools.DGIdb_get_gene_druggability(genes=['KRAS'])
# 3. Known drugs
results['drugs'] = tu.tools.OpenTargets_get_associated_drugs_by_target_ensemblID(
ensemblID=ids['ensembl']
)
# 4. ChEMBL activities
chembl = tu.tools.ChEMBL_search_targets(
pref_name__contains='KRAS',
organism='Homo sapiens',
limit=1
)
if chembl.get('targets'):
target_id = chembl['targets'][0]['target_chembl_id']
results['activities'] = tu.tools.ChEMBL_get_target_activities(
target_chembl_id__exact=target_id,
limit=50
)
# 5. Structures
results['structures'] = tu.tools.alphafold_get_prediction(qualifier='P01116')
# 6. Safety
results['safety'] = tu.tools.OpenTargets_get_target_safety_profile_by_ensemblID(
ensemblID=ids['ensembl']
)
return results
druggability = assess_druggability()
Output:
KRAS Druggability Assessment:
Tractability:
- Small Molecule: MEDIUM → HIGH (recent breakthroughs!)
- Previously "undruggable" - now validated
Approved Drugs (G12C-specific):
- Sotorasib (Lumakras) - 2021
- Adagrasib (Krazati) - 2022
ChEMBL Activities:
- 5000+ bioactivity records
- G12C-specific covalent inhibitors
Structure:
- Multiple G12C-bound structures
- Switch II pocket (key for covalent inhibitors)
Recent Breakthrough:
- Covalent inhibitors targeting G12C mutant
- Switch II pocket discovered as druggable site
- Active clinical development for other mutations (G12D, G12V)
Example 3: Target Comparison
Query: "Compare EGFR vs HER2 as drug targets"
Parallel Analysis
targets = [
{'symbol': 'EGFR', 'uniprot': 'P00533', 'ensembl': 'ENSG00000146648'},
{'symbol': 'ERBB2', 'uniprot': 'P04626', 'ensembl': 'ENSG00000141736'} # HER2
]
def analyze_target(target):
result = {
'symbol': target['symbol'],
'tractability': tu.tools.OpenTargets_get_target_tractability_by_ensemblID(
ensemblID=target['ensembl']
),
'drugs': tu.tools.OpenTargets_get_associated_drugs_by_target_ensemblID(
ensemblID=target['ensembl']
),
'diseases': tu.tools.OpenTargets_get_diseases_phenotypes_by_target_ensembl(
ensemblId=target['ensembl']
),
'safety': tu.tools.OpenTargets_get_target_safety_profile_by_ensemblID(
ensemblID=target['ensembl']
),
'ppi': tu.tools.STRING_get_protein_interactions(
protein_ids=[target['symbol']],
species=9606,
confidence_score=0.9,
limit=20
)
}
return result
# Parallel analysis
with ThreadPoolExecutor(max_workers=2) as executor:
results = list(executor.map(analyze_target, targets))
Comparison Output:
| Property | EGFR | HER2/ERBB2 |
|----------|------|------------|
| **Approved Drugs** | 6+ | 8+ |
| **TKI Tractability** | HIGH | HIGH |
| **mAb Tractability** | HIGH | HIGH |
| **ADC** | N/A | HIGH (T-DM1, T-DXd) |
| **Primary Indication** | NSCLC | Breast cancer |
| **Key Mutations** | L858R, T790M | Amplification |
| **Safety Concerns** | Skin toxicity | Cardiotoxicity |
Example 4: Target Validation Pipeline
Query: "Validate CDK4 as a potential drug target for cancer"
Systematic Validation
def validate_target(gene_symbol, disease_area='cancer'):
"""
Systematic target validation following industry best practices.
"""
tu = ToolUniverse(use_cache=True)
tu.load_tools()
validation_results = {}
# 1. GENETIC EVIDENCE
# Disease associations
ensembl_id = 'ENSG00000135446' # CDK4
disease_assoc = tu.tools.OpenTargets_get_diseases_phenotypes_by_target_ensembl(
ensemblId=ensembl_id
)
validation_results['genetic_evidence'] = {
'disease_associations': disease_assoc,
'score': 'HIGH' if any(d.get('score', 0) > 0.5 for d in disease_assoc.get('data', [])) else 'LOW'
}
# Constraint score
constraint = tu.tools.gnomad_get_gene_constraints(gene_symbol='CDK4')
validation_results['constraint'] = constraint
# 2. EXPRESSION EVIDENCE
# Cancer expression
hpa_cancer = tu.tools.HPA_get_cancer_prognostics_by_gene(gene_symbol='CDK4')
validation_results['expression'] = hpa_cancer
# 3. FUNCTIONAL EVIDENCE
# Pathways
pathways = tu.tools.Reactome_map_uniprot_to_pathways(id='P11802')
go_terms = tu.tools.GO_get_annotations_for_gene(gene_id='UniProtKB:P11802')
validation_results['function'] = {
'pathways': pathways,
'go_terms': go_terms
}
# 4. DRUGGABILITY
tractability = tu.tools.OpenTargets_get_target_tractability_by_ensemblID(
ensemblID=ensembl_id
)
existing_drugs = tu.tools.OpenTargets_get_associated_drugs_by_target_ensemblID(
ensemblID=ensembl_id
)
validation_results['druggability'] = {
'tractability': tractability,
'existing_drugs': existing_drugs
}
# 5. SAFETY
safety = tu.tools.OpenTargets_get_target_safety_profile_by_ensemblID(
ensemblID=ensembl_id
)
mouse_models = tu.tools.OpenTargets_get_biological_mouse_models_by_ensemblID(
ensemblID=ensembl_id
)
validation_results['safety'] = {
'profile': safety,
'mouse_models': mouse_models
}
# 6. COMPETITIVE LANDSCAPE
lit_count = tu.tools.PubMed_search_articles(
query=f'{gene_symbol} AND drug AND cancer',
limit=0
)
validation_results['competitive'] = {
'publication_count': lit_count.get('count', 0),
'maturity': 'mature' if lit_count.get('count', 0) > 1000 else 'emerging'
}
return validation_results
results = validate_target('CDK4')
Validation Report:
# Target Validation Report: CDK4
## Validation Scorecard
| Criterion | Score | Evidence |
|-----------|-------|----------|
| Genetic Evidence | ✅ HIGH | Strong cancer associations |
| Expression | ✅ HIGH | Overexpressed in multiple cancers |
| Functional Role | ✅ HIGH | Cell cycle regulator |
| Druggability | ✅ HIGH | Approved inhibitors |
| Safety | ⚠️ MEDIUM | On-target effects expected |
| Competitive | 🔴 HIGH | Mature, crowded space |
## Existing Drugs
- Palbociclib (Ibrance)
- Ribociclib (Kisqali)
- Abemaciclib (Verzenio)
## Recommendation
CDK4 is a **validated target** with approved drugs.
New entrants would need differentiation (selectivity, CNS penetration, etc.)
Example 5: Finding Drug Targets for a Disease
Query: "What are the best drug targets for Alzheimer's disease?"
Disease-to-Target Discovery
def find_targets_for_disease(disease_name):
tu = ToolUniverse(use_cache=True)
tu.load_tools()
# 1. Get disease ID
disease_search = tu.tools.OpenTargets_get_disease_ids_by_name(
diseaseName=disease_name
)
efo_id = disease_search.get('id') # e.g., EFO_0000249 for Alzheimer's
# 2. Get associated targets
targets = tu.tools.OpenTargets_get_associated_targets_by_disease_efoId(
efoId=efo_id
)
# 3. For top targets, assess druggability
top_targets = targets.get('data', [])[:10]
target_assessments = []
for target in top_targets:
ensembl_id = target.get('target_id')
symbol = target.get('gene_symbol')
# Druggability
tract = tu.tools.OpenTargets_get_target_tractability_by_ensemblID(
ensemblID=ensembl_id
)
# Existing drugs
drugs = tu.tools.OpenTargets_get_associated_drugs_by_target_ensemblID(
ensemblID=ensembl_id
)
# Safety
safety = tu.tools.OpenTargets_get_target_safety_profile_by_ensemblID(
ensemblID=ensembl_id
)
target_assessments.append({
'symbol': symbol,
'ensembl_id': ensembl_id,
'disease_score': target.get('score'),
'tractability': tract,
'drug_count': len(drugs.get('data', [])),
'safety_flags': len(safety.get('data', []))
})
return target_assessments
alzheimer_targets = find_targets_for_disease("Alzheimer's disease")
Output:
# Top Drug Targets for Alzheimer's Disease
| Rank | Target | Score | Druggability | Drugs | Safety |
|------|--------|-------|--------------|-------|--------|
| 1 | APP | 0.95 | MEDIUM | 0 | ⚠️ |
| 2 | PSEN1 | 0.92 | LOW | 0 | ⚠️ |
| 3 | APOE | 0.88 | LOW | 0 | ✅ |
| 4 | MAPT | 0.85 | MEDIUM | 2 | ⚠️ |
| 5 | BACE1 | 0.82 | HIGH | 0* | ⚠️ |
| 6 | GSK3B | 0.75 | HIGH | 5 | ⚠️ |
| 7 | ACE | 0.70 | HIGH | 10+ | ✅ |
| 8 | TREM2 | 0.68 | MEDIUM | 2 | ✅ |
*BACE1 inhibitors failed in trials
## Recommendations
1. **TREM2** - Emerging target, favorable safety, antibody approaches
2. **GSK3B** - Druggable, existing tool compounds
3. **ACE** - Repurposing opportunity (existing drugs)
Quick Reference: Common Multi-Step Patterns
Pattern: Gene Symbol → Full Profile
# 1. Symbol → UniProt
search = tu.tools.UniProt_search(query=f'gene:{symbol} AND organism_id:9606', limit=1)
uniprot = search['results'][0]['primaryAccession']
# 2. UniProt → Ensembl
mapping = tu.tools.UniProt_id_mapping(ids=[uniprot], from_db='UniProtKB_AC-ID', to_db='Ensembl')
ensembl = mapping['results'][0]['to']
# 3. Get all info
entry = tu.tools.UniProt_get_entry_by_accession(accession=uniprot)
tractability = tu.tools.OpenTargets_get_target_tractability_by_ensemblID(ensemblID=ensembl)
Pattern: PDB → Ligand Analysis
# 1. Get PDB info
pdb_info = tu.tools.get_protein_metadata_by_pdb_id(pdb_id='1M17')
# 2. Get ligands
ligands = pdb_info.get('rcsb_binding_affinity', [])
# 3. For each ligand, get ChEMBL data
for lig in ligands:
comp_id = lig.get('comp_id')
smiles = tu.tools.get_ligand_smiles_by_chem_comp_id(chem_comp_id=comp_id)
# Search ChEMBL for similar molecules
Pattern: Disease → Target → Drug
# 1. Disease → EFO ID
efo = tu.tools.OpenTargets_get_disease_ids_by_name(diseaseName='lung cancer')
# 2. EFO → Targets
targets = tu.tools.OpenTargets_get_associated_targets_by_disease_efoId(efoId=efo['id'])
# 3. Target → Drugs
for target in targets['data'][:5]:
drugs = tu.tools.OpenTargets_get_associated_drugs_by_target_ensemblID(
ensemblID=target['target_id']
)