7.0 KiB
7.0 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 |
|---|---|---|---|---|---|---|---|---|---|
| Infectious Disease Outbreak Intelligence - Phase Details | import | https://github.com/mims-harvard/ToolUniverse/blob/e2520a96/skills/tooluniverse-infectious-disease/phase_details.md | e2520a96 | 2026-06-26 | prompt | accepted | upstream | false |
Infectious Disease Outbreak Intelligence - Phase Details
Phase 1: Pathogen Identification
1.1 Taxonomic Classification
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)
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
## 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
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
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
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)
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
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
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.