Files
drug-discovery-prompts/upstream/mims-harvard-ToolUniverse/skills/tooluniverse-infectious-disease/phase_details.md

224 lines
7.0 KiB
Markdown

---
title: "Infectious Disease Outbreak Intelligence - Phase Details"
task: ""
lineage_type: import
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/e2520a96/skills/tooluniverse-infectious-disease/phase_details.md
upstream_sha: e2520a96
imported_at: 2026-06-26
prompt_class: prompt
upstream_changes: accepted
author: upstream
validated: false
---
# Infectious Disease Outbreak Intelligence - Phase Details
## Phase 1: Pathogen Identification
### 1.1 Taxonomic Classification
```python
def identify_pathogen(tu, pathogen_query):
"""Classify pathogen taxonomically."""
taxonomy = tu.tools.NCBIDatasets_suggest_taxonomy(query=pathogen_query)
return {
'taxid': taxonomy.get('taxid'),
'scientific_name': taxonomy.get('scientific_name'),
'rank': taxonomy.get('rank'),
'lineage': taxonomy.get('lineage'),
'type': classify_type(taxonomy) # virus, bacteria, fungus, parasite
}
```
### 1.2 Related Pathogens (Knowledge Transfer)
```python
def find_related_pathogens(tu, taxid):
"""Find related pathogens for drug knowledge transfer."""
relatives = tu.tools.NCBI_Taxonomy_get_children(taxid=taxid, rank="genus")
related_with_drugs = []
for rel in relatives:
drugs = tu.tools.ChEMBL_search_targets(
query=rel['scientific_name'], organism_contains=True
)
if drugs:
related_with_drugs.append({'pathogen': rel, 'drugs': drugs})
return related_with_drugs
```
### 1.3 Output Example
```markdown
## 1. Pathogen Profile
### 1.1 Taxonomic Classification
| Property | Value |
|----------|-------|
| **Organism** | SARS-CoV-2 |
| **Taxonomy ID** | 2697049 |
| **Type** | RNA virus (positive-sense, single-stranded) |
| **Family** | Coronaviridae |
| **Genus** | Betacoronavirus |
### 1.2 Related Pathogens with Drug Precedent
| Relative | Similarity | Approved Drugs | Relevance |
|----------|------------|----------------|-----------|
| SARS-CoV | 79% genome | Remdesivir (EUA) | High |
| MERS-CoV | 50% genome | None approved | Medium |
```
---
## Phase 2: Target Identification
### 2.1 Essential Protein Identification
```python
def identify_targets(tu, pathogen_name):
"""Identify essential druggable targets."""
proteins = tu.tools.UniProt_search(
query=f"organism:{pathogen_name}", reviewed=True
)
targets = []
for protein in proteins:
chembl_target = tu.tools.ChEMBL_search_targets(query=protein['gene_name'])
targets.append({
'uniprot': protein['accession'],
'name': protein['protein_name'],
'function': protein['function'],
'has_drug_precedent': len(chembl_target) > 0,
'druggability': assess_druggability(protein)
})
return rank_targets(targets)
```
### 2.2 Target Prioritization Criteria
| Criterion | Weight | Description |
|-----------|--------|-------------|
| **Essentiality** | 30% | Required for replication/survival |
| **Conservation** | 25% | Conserved across strains/variants |
| **Druggability** | 25% | Structural features amenable to binding |
| **Drug precedent** | 20% | Existing drugs for homologous targets |
---
## Phase 3: Structure Prediction
```python
def predict_target_structure(tu, sequence, target_name):
"""Predict structure using AlphaFold2 via NVIDIA NIM."""
structure = tu.tools.NvidiaNIM_alphafold2(
sequence=sequence, algorithm="mmseqs2", relax_prediction=False
)
plddt_scores = parse_plddt(structure)
return {
'structure': structure['structure'],
'mean_plddt': np.mean(plddt_scores),
'high_confidence_regions': get_high_confidence(plddt_scores),
'predicted_binding_site': identify_binding_site(structure)
}
```
### pLDDT Quality Assessment
| pLDDT Range | Confidence | Use for Docking |
|-------------|------------|-----------------|
| >90 | Very High | Excellent |
| 70-90 | High | Good |
| 50-70 | Medium | Use caution |
| <50 | Low | Not recommended |
---
## Phase 4: Drug Repurposing Screen
### 4.1 Identify Candidates
```python
def get_repurposing_candidates(tu, target_name, pathogen_family):
"""Find approved drugs to repurpose."""
candidates = []
# 1. Drugs approved for related pathogens
candidates.extend(tu.tools.ChEMBL_search_drugs(
query=pathogen_family, max_phase=4))
# 2. Broad-spectrum antivirals
candidates.extend(tu.tools.ChEMBL_search_drugs(
query="broad spectrum antiviral", max_phase=4))
# 3. Drugs with known activity against target class
candidates.extend(tu.tools.DGIdb_get_drug_gene_interactions(
genes=[target_name]))
return deduplicate(candidates)
```
### 4.2 Docking Screen (NVIDIA NIM)
```python
def dock_candidates(tu, target_structure, candidate_smiles_list):
"""Dock candidate drugs against target."""
results = []
for smiles in candidate_smiles_list:
docking = tu.tools.NvidiaNIM_diffdock(
protein=target_structure, ligand=smiles, num_poses=5
)
results.append({
'smiles': smiles,
'top_score': docking['poses'][0]['confidence'],
'poses': docking['poses']
})
return sorted(results, key=lambda x: x['top_score'], reverse=True)
```
---
## Phase 4.5: Pathway Analysis
```python
def analyze_pathogen_pathways(tu, pathogen_name, pathogen_type):
"""Identify druggable metabolic pathways in pathogen."""
pathways = tu.tools.kegg_search_pathway(query=f"{pathogen_name} metabolism")
essential_genes = tu.tools.KEGG_get_pathway_genes(
pathway_id=pathways[0]['pathway_id'])
host_pathogen = tu.tools.kegg_search_pathway(
query=f"{pathogen_name} host interaction")
return {
'metabolic_pathways': pathways,
'essential_genes': essential_genes,
'host_interaction': host_pathogen
}
```
---
## Phase 5: Literature Intelligence
```python
def comprehensive_outbreak_literature(tu, pathogen_name):
"""Search all literature sources for outbreak intelligence."""
pubmed = tu.tools.PubMed_search_articles(
query=f"{pathogen_name} AND (outbreak OR treatment OR drug)",
limit=50, sort="date")
biorxiv = tu.tools.BioRxiv_list_recent_preprints(
query=f"{pathogen_name} treatment mechanism", limit=20)
medrxiv = tu.tools.MedRxiv_get_preprint(
query=f"{pathogen_name} clinical trial", limit=20)
arxiv = tu.tools.ArXiv_search_papers(
query=f"{pathogen_name} drug discovery", category="q-bio", limit=10)
trials = tu.tools.search_clinical_trials(
condition=pathogen_name, status="Recruiting")
key_papers = pubmed[:10]
for paper in key_papers:
citation = tu.tools.openalex_search_works(query=paper['title'], limit=1)
paper['citations'] = citation[0].get('cited_by_count', 0) if citation else 0
return {
'pubmed': pubmed, 'biorxiv': biorxiv, 'medrxiv': medrxiv,
'arxiv': arxiv, 'trials': trials, 'key_papers': key_papers
}
```
**Note**: Preprints (BioRxiv/MedRxiv) are NOT peer-reviewed but CRITICAL for outbreak intelligence. Always note this caveat in reports.