
Tooluniverse Disease Research
- 389 installs
- 1.6k repo stars
- Updated August 4, 2026
- mims-harvard/tooluniverse
tooluniverse-disease-research is a Claude skill that generates progressively updated, cited disease research markdown reports using 100+ ToolUniverse scientific tools for developers and researchers who need multi-omic di
About
tooluniverse-disease-research is a Harvard ToolUniverse agent skill that produces comprehensive, citation-backed disease research reports as markdown files updated incrementally during investigation. It orchestrates 100+ scientific tools across 10 research dimensions: identity and classification (EFO, UMLS, ICD, SNOMED), clinical presentation (OpenTargets phenotypes, HPO), genetic basis (ClinVar, GWAS, gnomAD), treatment landscape, biological pathways (Reactome, GTEx), epidemiology and literature (PubMed, OpenAlex), similar diseases, cancer-specific CIViC data when applicable, pharmacology, and drug safety (FAERS). Install via `npx skills add https://github.com/mims-harvard/tooluniverse --skill tooluniverse-disease-research`, then prompt with requests like "Generate disease report for diabetes." Developers and computational biologists reach for this skill when they need structured, evidence-graded disease profiles with source citations instead of ad-hoc PubMed searches. Reports follow a report-first workflow with evidence grading and standardized citation formats across each section.
- Harvard ToolUniverse agent tooling
- Cross-database disease ontology lookup
- Mechanism and pathway exploration
- Literature-backed hypothesis framing
- Structured biomedical API orchestration
Tooluniverse Disease Research by the numbers
- 389 all-time installs (skills.sh)
- +7 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #520 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/mims-harvard/tooluniverse --skill tooluniverse-disease-researchAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 389 |
|---|---|
| repo stars | ★ 1.6k |
| Last updated | August 4, 2026 |
| Repository | mims-harvard/tooluniverse ↗ |
How do you generate a cited disease research report?
Query ToolUniverse disease databases and literature to map mechanisms, comorbidities, and therapeutic targets before designing experiments or clinical hypotheses.
Who is it for?
Developers and computational biologists who need multi-source, citation-backed disease characterization before designing experiments or clinical hypotheses.
Skip if: Teams that need production clinical decision software, real-time patient data pipelines, or generic web scraping without biomedical tooling.
When should I use this skill?
User asks to generate a disease report, research a condition's genetics or treatments, or map therapeutic targets with ToolUniverse.
What you get
Progressively updated markdown disease report with graded evidence, source citations, and 10-dimension research sections.
- Cited disease markdown report
- Evidence-graded research sections
- Source bibliography
By the numbers
- Uses 100+ ToolUniverse scientific tools for disease research
- Structures reports across 10 research dimensions with progressive markdown updates
Files
ToolUniverse Disease Research
Generate a comprehensive disease research report with full source citations. The report is created as a markdown file and progressively updated during research.
IMPORTANT: Always use English disease names and search terms in tool calls. Respond in the user's language.
---
LOOK UP, DON'T GUESS
When asked about a disease, query Orphanet/OMIM/DisGeNET FIRST. Don't rely on memory for prevalence, genetics, or treatment — these change over time. When you're not sure about a fact, your first instinct should be to SEARCH for it using tools, not to reason harder from memory.
---
When to Use
- User asks about any disease, syndrome, or medical condition
- Needs comprehensive disease intelligence or a detailed research report
- Asks "what do we know about [disease]?"
---
Core Workflow: Report-First Approach
DO NOT show the search process to the user. Instead:
1. Create report file first - Initialize {disease_name}_research_report.md 2. Research each dimension - Use all relevant tools 3. Update report progressively - Write findings after each dimension 4. Include citations - Every fact must reference its source tool
---
Disease Mechanism Reasoning
When synthesizing disease etiology, trace the full pathogenic cascade: 1. Genetic basis - Which variants (rare or common) confer risk, and in which genes? 2. Molecular mechanism - How do those variants alter protein function, expression, or regulation? 3. Cellular effect - What downstream cellular processes are disrupted (signaling, metabolism, stress response)? 4. Tissue/organ manifestation - How does cellular dysfunction present as organ-level pathology?
This chain structures the Genetic & Molecular Basis (Section 3) and Biological Pathways (Section 5) sections.
---
10 Research Dimensions
| Dim | Section | Key Tools |
|---|---|---|
| 1 | Identity & Classification | OSL_get_efo_id_by_disease_name, ols_search_efo_terms, ols_get_efo_term, umls_search_concepts, icd_search_codes, snomed_search_concepts |
| 2 | Clinical Presentation | OpenTargets phenotypes, HPO lookup, MedlinePlus |
| 3 | Genetic & Molecular Basis | OpenTargets targets, ClinVar variants, GWAS associations, gnomAD |
| 4 | Treatment Landscape | OpenTargets drugs, clinical trials, GtoPdb |
| 5 | Biological Pathways | Reactome pathways, humanbase_ppi_analysis, GTEx expression, HPA |
| 6 | Epidemiology & Literature | PubMed, OpenAlex, Europe PMC, Semantic Scholar |
| 7 | Similar Diseases | OpenTargets similar entities |
| 8 | Cancer-Specific (if applicable) | CIViC genes/variants/therapies |
| 9 | Pharmacology | GtoPdb targets/interactions/ligands |
| 10 | Drug Safety | OpenTargets warnings, clinical trial AEs, FAERS |
See: tool_usage_details.md for complete tool calls per section.
Normalizing free text to ontology IDs (Dimension 1)
When the input is messy free text (a sample attribute, a synonym, a tissue/organism label) rather than a clean disease name, use ZOOMA_annotate_text to map it to standardized ontology terms (EFO/MONDO/UBERON/etc.) before lookup. It returns each match as an ontology IRI with a confidence rating (HIGH/GOOD/MEDIUM/LOW), so you can keep only high-confidence hits and feed the resolved ID into OLS / OpenTargets.
tu.run_tool("ZOOMA_annotate_text", {
"property_value": "asthma", # free text to resolve
"property_type": "disease", # optional context hint
"min_confidence": "HIGH", # drop fuzzy matches
"max_results": 3,
})
# -> [{"semantic_tags": ["http://purl.obolibrary.org/obo/MONDO_0004979"],
# "curies": ["MONDO:0004979"], "confidence": "HIGH", "source": "zooma", ...}]
# Restrict to one ontology source (e.g. EFO) when you need a specific namespace:
tu.run_tool("ZOOMA_annotate_text", {"property_value": "diabetes", "ontologies": "efo"})
# Inspect which curated datasources back ZOOMA annotations (for provenance):
tu.run_tool("ZOOMA_list_datasources", {})
# -> [{"name": "eva-clinvar", "type": "DATABASE", "uri": "https://www.ebi.ac.uk/eva"}, ...]Each match also carries a ready-to-use curies field (e.g. MONDO:0004979) so you can feed the resolved ID straight into OLS / OpenTargets without parsing the IRI. ZOOMA is the live replacement for the retired OxO cross-reference service; pair it with ols_get_efo_term to expand the resolved IRI into labels, synonyms, and hierarchy.
---
Report Template
Create this file structure at the start:
# Disease Research Report: {Disease Name}
**Report Generated**: {date}
**Disease Identifiers**: (to be filled)
---
## Executive Summary
(Brief 3-5 sentence overview - fill after all research complete)
---
## 1. Disease Identity & Classification
### Ontology Identifiers
| System | ID | Source |
### Synonyms & Alternative Names
### Disease Hierarchy
---
## 2. Clinical Presentation
### Phenotypes (HPO)
| HPO ID | Phenotype | Description | Source |
### Symptoms & Signs
### Diagnostic Criteria
---
## 3. Genetic & Molecular Basis
### Associated Genes
| Gene | Score | Ensembl ID | Evidence | Source |
### GWAS Associations
| SNP | P-value | Odds Ratio | Study | Source |
### Pathogenic Variants (ClinVar)
---
## 4. Treatment Landscape
### Approved Drugs
| Drug | ChEMBL ID | Mechanism | Phase | Target | Source |
### Clinical Trials
| NCT ID | Title | Phase | Status | Source |
---
## 5. Biological Pathways & Mechanisms
## 6. Epidemiology & Risk Factors
## 7. Literature & Research Activity
## 8. Similar Diseases & Comorbidities
## 9. Cancer-Specific Information (if applicable)
## 10. Drug Safety & Adverse Events
---
## References
### Tools Used
| # | Tool | Parameters | Section | Items Retrieved |---
Citation Format
Every piece of data MUST include its source:
In tables: Add a Source column with tool name In lists: - Finding [Source: tool_name] In prose: (Source: tool_name, query: "...") References section: Complete tool usage log with parameters
---
Progressive Update Pattern
# After each dimension's research:
# 1. Read current report
# 2. Replace placeholder with formatted content
# 3. Write back immediately
# 4. Continue to next dimension---
Evidence Grading & Interpretation
Every finding in the report should be graded:
| Grade | Criteria | Example |
|---|---|---|
| T1 (Strong) | Replicated genetic evidence (GWAS, rare variants), FDA-approved therapy | BRCA1 → breast cancer; trastuzumab for HER2+ |
| T2 (Moderate) | Single genetic study, phase II+ trial data, strong biological evidence | FOXO3 → longevity (centenarian studies) |
| T3 (Association) | Observational data, gene expression changes, pathway membership | IL-6 elevated in Alzheimer's CSF |
| T4 (Computational) | Network proximity, text mining, predicted associations | DisGeNET text-mined gene-disease link |
Synthesis Questions (answer in Executive Summary)
After collecting data from all 10 dimensions, the report MUST answer:
1. What causes this disease? Summarize the genetic architecture (monogenic vs polygenic, key loci, penetrance) 2. What are the therapeutic options? Ranked by evidence level and approval status 3. What biomarkers exist? For diagnosis, prognosis, and treatment selection 4. What's the unmet need? What aspects lack effective treatment or understanding? 5. What are the active research frontiers? Based on clinical trials and recent publications
Interpreting Cross-Database Concordance
When multiple databases provide different data for the same disease:
- OpenTargets + DisGeNET + OMIM agree on a gene: T1 evidence — high confidence
- Only OpenTargets reports an association: Check the datasource scores — genetic_association > literature > animal_model
- DisGeNET score > 0.5 but not in OpenTargets: May be text-mined; verify with PubMed
- Gene in GWAS but not OMIM: Likely a complex disease susceptibility locus, not Mendelian
Handling Conflicting Data
| Conflict | Resolution |
|---|---|
| Different prevalence estimates across sources | Report range; note the most recent/largest study |
| Drug approved in one country but not another | Note regulatory status per region |
| Gene-disease association in one DB but absent in another | Grade by evidence type; text-mining alone is T4 |
| Clinical trial results contradict label indications | The trial result is newer evidence; note both |
---
Final Report Quality Checklist
- [ ] All 10 sections have content (or marked "No data available")
- [ ] Every data point has a source citation
- [ ] Executive summary reflects key findings
- [ ] References section lists all tools used
- [ ] Tables properly formatted
- [ ] No placeholder text remains
---
Expected Output Scale
For a well-studied disease (e.g., Alzheimer's), the final report should include:
- 5+ ontology IDs, 10+ synonyms, disease hierarchy
- 20+ phenotypes with HPO IDs
- 50+ genes, 30+ GWAS associations, 100+ ClinVar variants
- 20+ drugs, 50+ clinical trials
- 10+ pathways, PPI network, expression data
- 100+ publications
- 15+ similar diseases
- Drug warnings and adverse events
Total: 500+ individual data points, each with source citation.
---
Cross-Skill References
For rare disease differential diagnosis, run: python3 skills/tooluniverse-rare-disease-diagnosis/scripts/clinical_patterns.py --type differential --symptoms 'symptom1,symptom2'
---
Reference Files
- [REPORT_TEMPLATE.md](REPORT_TEMPLATE.md) - Full report markdown template and citation format guide
- [RESEARCH_PROTOCOL.md](RESEARCH_PROTOCOL.md) - Step-by-step code procedures, progressive update pattern, quality checklist
- [tool_usage_details.md](tool_usage_details.md) - Complete tool calls for each research dimension
- [TOOLS_REFERENCE.md](TOOLS_REFERENCE.md) - Complete tool documentation
- [EXAMPLES.md](EXAMPLES.md) - Sample disease research reports
Disease Research Report Examples
Sample reports demonstrating the report-first approach with full citations.
---
Example 1: Alzheimer's Disease Research Report
This is a condensed example. Actual reports are much more detailed.
# Disease Research Report: Alzheimer's Disease
**Report Generated**: 2026-02-04 14:30
**Disease Identifiers**: EFO_0000249 | ICD-10: G30 | UMLS: C0002395
---
## Executive Summary
Alzheimer's disease is a progressive neurodegenerative disorder characterized by
cognitive decline and memory impairment. Research has identified 245+ associated
genes with APOE, APP, and PSEN1/2 showing strongest associations. Currently, 2
disease-modifying therapies (aducanumab, lecanemab) are FDA-approved, with 120+
active clinical trials. The disease affects approximately 6.5 million Americans,
with research activity increasing 20% annually.
---
## 1. Disease Identity & Classification
### Ontology Identifiers
| System | ID | Name | Source |
|--------|-----|------|--------|
| EFO | EFO_0000249 | Alzheimer's disease | OSL_get_efo_id_by_disease_name |
| ICD-10 | G30 | Alzheimer's disease | icd_search_codes |
| ICD-10 | G30.0 | Early onset | icd_search_codes |
| ICD-10 | G30.1 | Late onset | icd_search_codes |
| ICD-10 | G30.9 | Unspecified | icd_search_codes |
| UMLS CUI | C0002395 | Alzheimer's Disease | umls_search_concepts |
| SNOMED CT | 26929004 | Alzheimer's disease | snomed_search_concepts |
| MONDO | MONDO:0004975 | Alzheimer disease | ols_search_efo_terms |
### Synonyms & Alternative Names
| Synonym | Source |
|---------|--------|
| Alzheimer disease | ols_get_efo_term |
| Alzheimer's | ols_get_efo_term |
| AD | ols_get_efo_term |
| Presenile dementia | ols_get_efo_term |
| Senile dementia of Alzheimer type | ols_get_efo_term |
| SDAT | ols_get_efo_term |
| Primary degenerative dementia | umls_get_concept_details |
### Disease Hierarchy
**Parent Disease**: Dementia (EFO:0001360) [Source: ols_get_efo_term]
**Subtypes** [Source: ols_get_efo_term_children]:
| Subtype | EFO ID |
|---------|--------|
| Early-onset Alzheimer disease | EFO:0004718 |
| Late-onset Alzheimer disease | EFO:0004719 |
| Familial Alzheimer disease | EFO:0005244 |
| Sporadic Alzheimer disease | EFO:0005245 |
**Sources Used**: OSL_get_efo_id_by_disease_name, ols_get_efo_term, ols_get_efo_term_children,
umls_search_concepts, umls_get_concept_details, icd_search_codes, snomed_search_concepts
---
## 2. Clinical Presentation
### Phenotypes (HPO)
| HPO ID | Phenotype | Frequency | Source |
|--------|-----------|-----------|--------|
| HP:0002354 | Memory impairment | Very frequent | OpenTargets_get_associated_phenotypes_by_disease_efoId |
| HP:0001268 | Mental deterioration | Very frequent | OpenTargets_get_associated_phenotypes_by_disease_efoId |
| HP:0000726 | Dementia | Very frequent | OpenTargets_get_associated_phenotypes_by_disease_efoId |
| HP:0002145 | Frontotemporal dementia | Frequent | OpenTargets_get_associated_phenotypes_by_disease_efoId |
| HP:0002185 | Neurofibrillary tangles | Frequent | OpenTargets_get_associated_phenotypes_by_disease_efoId |
| HP:0100256 | Senile plaques | Frequent | OpenTargets_get_associated_phenotypes_by_disease_efoId |
| HP:0002067 | Bradykinesia | Occasional | OpenTargets_get_associated_phenotypes_by_disease_efoId |
| HP:0000708 | Behavioral abnormality | Frequent | OpenTargets_get_associated_phenotypes_by_disease_efoId |
| HP:0007302 | Biparietal thinning | Occasional | OpenTargets_get_associated_phenotypes_by_disease_efoId |
| HP:0001289 | Confusion | Frequent | OpenTargets_get_associated_phenotypes_by_disease_efoId |
### Clinical Features
[Source: MedlinePlus_get_genetics_condition_by_name, condition="alzheimer-disease"]
**Early Symptoms**:
- Memory problems, especially remembering recent events
- Difficulty concentrating, planning, or problem-solving
- Trouble completing familiar tasks
**Progressive Symptoms**:
- Confusion about time and place
- Mood and personality changes
- Increased memory loss
- Difficulty recognizing family and friends
- Language problems
- Impaired judgment
### Diagnostic Criteria
[Source: PubMed_search_articles, query="Alzheimer disease diagnostic criteria"]
- NIA-AA criteria (2011, updated 2018)
- Clinical assessment of cognitive decline
- Biomarker confirmation (amyloid PET, CSF biomarkers)
- MRI showing characteristic atrophy
**Sources Used**: OpenTargets_get_associated_phenotypes_by_disease_efoId,
MedlinePlus_get_genetics_condition_by_name, MedlinePlus_search_topics_by_keyword,
get_HPO_ID_by_phenotype, PubMed_search_articles
---
## 3. Genetic & Molecular Basis
### Top Associated Genes
[Source: OpenTargets_get_associated_targets_by_disease_efoId, efoId="EFO_0000249"]
| Rank | Gene | Ensembl ID | Score | Evidence Types | Source |
|------|------|------------|-------|----------------|--------|
| 1 | APOE | ENSG00000130203 | 0.92 | Genetic, Literature | OpenTargets |
| 2 | APP | ENSG00000142192 | 0.88 | Genetic, Pathways | OpenTargets |
| 3 | PSEN1 | ENSG00000080815 | 0.85 | Genetic | OpenTargets |
| 4 | PSEN2 | ENSG00000143801 | 0.82 | Genetic | OpenTargets |
| 5 | TREM2 | ENSG00000095970 | 0.78 | Genetic | OpenTargets |
| 6 | CLU | ENSG00000120885 | 0.75 | Genetic | OpenTargets |
| 7 | ABCA7 | ENSG00000064687 | 0.72 | Genetic | OpenTargets |
| 8 | BIN1 | ENSG00000024048 | 0.70 | Genetic | OpenTargets |
| 9 | SORL1 | ENSG00000137642 | 0.68 | Genetic | OpenTargets |
| 10 | CR1 | ENSG00000203710 | 0.65 | Genetic | OpenTargets |
### GWAS Associations
[Source: gwas_get_associations_for_trait, disease_trait="Alzheimer disease"]
| SNP | P-value | OR | Mapped Gene | Study | Source |
|-----|---------|-----|-------------|-------|--------|
| rs429358 | 1.0E-300 | 3.68 | APOE | GCST000678 | GWAS Catalog |
| rs7412 | 1.5E-250 | 0.28 | APOE | GCST000678 | GWAS Catalog |
| rs6656401 | 2.3E-45 | 1.18 | CR1 | GCST007320 | GWAS Catalog |
| rs11218343 | 4.5E-32 | 0.91 | SORL1 | GCST007320 | GWAS Catalog |
| rs9331896 | 8.2E-28 | 0.92 | CLU | GCST002305 | GWAS Catalog |
### GWAS Studies
[Source: gwas_get_studies_for_trait, disease_trait="Alzheimer disease"]
| Study ID | Title | Sample Size | Year | Source |
|----------|-------|-------------|------|--------|
| GCST90027158 | Late-onset AD GWAS | 788,989 | 2022 | GWAS Catalog |
| GCST007320 | AD GWAS meta-analysis | 455,258 | 2019 | GWAS Catalog |
| GCST002305 | IGAP Stage 1 | 74,046 | 2013 | GWAS Catalog |
### ClinVar Variants
[Source: ClinVar_search_variants, condition="Alzheimer"]
| Variant | Gene | Clinical Significance | Review Status | Source |
|---------|------|----------------------|---------------|--------|
| NM_000484.4:c.2149G>T | APP | Pathogenic | Reviewed by expert panel | ClinVar |
| NM_000021.4:c.428T>C | PSEN1 | Pathogenic | Reviewed by expert panel | ClinVar |
| NM_000447.3:c.529A>G | PSEN2 | Pathogenic | Criteria provided | ClinVar |
**Total pathogenic variants**: 487 [Source: ClinVar_search_variants]
**Sources Used**: OpenTargets_get_associated_targets_by_disease_efoId,
OpenTargets_target_disease_evidence, gwas_get_associations_for_trait,
gwas_get_variants_for_trait, gwas_get_studies_for_trait, ClinVar_search_variants,
ClinVar_get_variant_details, ClinVar_get_clinical_significance
---
## 4. Treatment Landscape
### Approved Drugs
[Source: OpenTargets_get_associated_drugs_by_disease_efoId, efoId="EFO_0000249"]
| Drug | ChEMBL ID | Mechanism | Phase | Target | Source |
|------|-----------|-----------|-------|--------|--------|
| Lecanemab | CHEMBL4650319 | Anti-amyloid antibody | Approved | Amyloid beta | OpenTargets |
| Aducanumab | CHEMBL4303257 | Anti-amyloid antibody | Approved | Amyloid beta | OpenTargets |
| Donepezil | CHEMBL502 | AChE inhibitor | Approved | ACHE | OpenTargets |
| Rivastigmine | CHEMBL95 | AChE inhibitor | Approved | ACHE/BCHE | OpenTargets |
| Galantamine | CHEMBL659 | AChE inhibitor | Approved | ACHE | OpenTargets |
| Memantine | CHEMBL807 | NMDA antagonist | Approved | GRIN1/2A/2B | OpenTargets |
### Drug Mechanisms
[Source: OpenTargets_get_drug_mechanisms_of_action_by_chemblId]
**Lecanemab (CHEMBL4650319)**:
- Action type: Binding agent
- Target: Amyloid beta A4 protein (APP)
- Mechanism: Binds to soluble amyloid beta protofibrils
**Donepezil (CHEMBL502)**:
- Action type: Inhibitor
- Target: Acetylcholinesterase (ACHE)
- Mechanism: Reversible inhibition of acetylcholinesterase
### Clinical Trials
[Source: search_clinical_trials, condition="Alzheimer disease"]
**Summary**:
- Total trials: 2,847
- Active/Recruiting: 342
- Phase III: 127
- Phase II: 215
**Top Active Phase III Trials**:
| NCT ID | Title | Intervention | Status | Source |
|--------|-------|--------------|--------|--------|
| NCT04468659 | TRAILBLAZER-ALZ 2 | Donanemab | Active | ClinicalTrials.gov |
| NCT05108922 | EVOKE/EVOKE+ | Semaglutide | Recruiting | ClinicalTrials.gov |
| NCT04381468 | GRADUATE I/II | Gantenerumab | Completed | ClinicalTrials.gov |
[Source: get_clinical_trial_descriptions, extract_clinical_trial_outcomes]
**Sources Used**: OpenTargets_get_associated_drugs_by_disease_efoId,
OpenTargets_get_drug_chembId_by_generic_name, OpenTargets_get_drug_mechanisms_of_action_by_chemblId,
search_clinical_trials, get_clinical_trial_descriptions, get_clinical_trial_outcome_measures,
extract_clinical_trial_outcomes, GtoPdb_search_diseases, GtoPdb_search_diseases
---
## 5. Biological Pathways & Mechanisms
### Key Pathways
[Source: Reactome_map_uniprot_to_pathways for top disease genes]
| Pathway | Reactome ID | Key Genes | Source |
|---------|-------------|-----------|--------|
| Amyloid fiber formation | R-HSA-977225 | APP, PSEN1, PSEN2 | Reactome |
| BACE1 processing of APP | R-HSA-418457 | APP, BACE1, PSEN1 | Reactome |
| Presenilin-mediated signaling | R-HSA-418885 | PSEN1, PSEN2, NCSTN | Reactome |
| Cholesterol metabolism | R-HSA-191273 | APOE, CLU | Reactome |
| Innate immune system | R-HSA-168249 | TREM2, CR1 | Reactome |
### Protein-Protein Interactions
[Source: humanbase_ppi_analysis, gene_list=["APP","PSEN1","APOE","TREM2"], tissue="brain"]
**Brain-specific PPI network**: 45 nodes, 128 edges
- Hub genes: APP (degree: 23), PSEN1 (degree: 18)
- Key interactions: APP-PSEN1, APP-BACE1, APOE-CLU
### Expression Patterns
[Source: gtex_get_expression_by_gene, HPA_get_protein_expression]
| Gene | Highest Expression Tissue | TPM | Source |
|------|--------------------------|-----|--------|
| APP | Brain - Cerebellum | 245.3 | GTEx |
| APOE | Brain - Frontal Cortex | 892.1 | GTEx |
| PSEN1 | Brain - Hippocampus | 45.2 | GTEx |
**Sources Used**: Reactome_get_diseases, Reactome_map_uniprot_to_pathways,
Reactome_get_pathway, Reactome_get_pathway_reactions, humanbase_ppi_analysis,
gtex_get_expression_by_gene, HPA_get_protein_expression, geo_search_datasets
---
## 6. Epidemiology & Research Activity
### Prevalence
[Source: PubMed_search_articles, query="Alzheimer disease epidemiology prevalence"]
- US prevalence: ~6.5 million (2023 estimate)
- Global prevalence: ~55 million
- Projected US (2050): 12.7 million
### Risk Factors
[Source: PubMed_search_articles, gwas_get_associations_for_trait]
| Factor | Evidence Level | Source |
|--------|----------------|--------|
| APOE ε4 allele | Very strong (OR 3.68) | GWAS Catalog |
| Age (>65) | Very strong | PubMed |
| Family history | Strong | PubMed |
| Cardiovascular disease | Moderate | PubMed |
| Type 2 diabetes | Moderate | PubMed |
| Low education | Moderate | PubMed |
### Publication Trends
[Source: PubMed_search_articles]
| Query | Period | Count | Source |
|-------|--------|-------|--------|
| "Alzheimer disease" | 5 years | 78,432 | PubMed |
| "Alzheimer disease" | 1 year | 17,234 | PubMed |
| "Alzheimer disease" mechanism | 5 years | 12,456 | PubMed |
| "Alzheimer disease" treatment | 5 years | 23,891 | PubMed |
**Trend**: Increasing (+22% year-over-year)
### Top Research Institutions
[Source: openalex_search_works]
1. Harvard University
2. University of California system
3. Mayo Clinic
4. Karolinska Institute
5. University College London
**Sources Used**: PubMed_search_articles, PubMed_get_article, PubMed_get_related,
PubMed_get_cited_by, OpenTargets_get_publications_by_disease_efoId,
openalex_search_works, europe_pmc_search_abstracts, semantic_scholar_search_papers
---
## 7. Similar Diseases & Comorbidities
### Similar Diseases
[Source: OpenTargets_get_similar_entities_by_disease_efoId, efoId="EFO_0000249"]
| Disease | EFO ID | Similarity Score | Shared Genes | Source |
|---------|--------|-----------------|--------------|--------|
| Frontotemporal dementia | EFO:0000621 | 0.78 | MAPT, GRN, C9orf72 | OpenTargets |
| Parkinson's disease | EFO:0002508 | 0.65 | SNCA, LRRK2 | OpenTargets |
| Lewy body dementia | EFO:0002549 | 0.72 | SNCA, GBA | OpenTargets |
| Vascular dementia | EFO:0003914 | 0.58 | NOTCH3, HTRA1 | OpenTargets |
| Mild cognitive impairment | EFO:0003882 | 0.82 | APOE, CLU | OpenTargets |
**Sources Used**: OpenTargets_get_similar_entities_by_disease_efoId
---
## 8. Cancer-Specific Information
*Not applicable - Alzheimer's disease is not a cancer.*
---
## 9. Pharmacological Targets
### Druggable Targets
[Source: GtoPdb_search_diseases, GtoPdb_search_diseases]
| Target | Type | Drugs | Source |
|--------|------|-------|--------|
| Acetylcholinesterase (ACHE) | Enzyme | Donepezil, Rivastigmine, Galantamine | GtoPdb |
| NMDA receptor | Ion channel | Memantine | GtoPdb |
| Amyloid beta | Protein | Lecanemab, Aducanumab | GtoPdb |
| BACE1 | Enzyme | (pipeline) | GtoPdb |
| Tau | Protein | (pipeline) | GtoPdb |
**Sources Used**: GtoPdb_search_diseases, GtoPdb_search_diseases, GtoPdb_search_targets,
GtoPdb_search_targets, GtoPdb_get_interactions
---
## 10. Drug Safety & Adverse Events
### Drug Warnings
[Source: OpenTargets_get_drug_warnings_by_chemblId]
| Drug | Warning Type | Description | Source |
|------|--------------|-------------|--------|
| Aducanumab | Boxed warning | ARIA (amyloid-related imaging abnormalities) | OpenTargets |
| Lecanemab | Boxed warning | ARIA-E and ARIA-H | OpenTargets |
| Donepezil | Warning | Bradycardia, syncope | OpenTargets |
| Memantine | Warning | Dizziness, confusion | OpenTargets |
### Clinical Trial Adverse Events
[Source: extract_clinical_trial_adverse_events]
**Lecanemab (CLARITY AD Trial, NCT03887455)**:
| Adverse Event | Drug (%) | Placebo (%) | Source |
|---------------|----------|-------------|--------|
| ARIA-E | 12.6% | 1.7% | ClinicalTrials.gov |
| ARIA-H microhemorrhage | 17.3% | 9.0% | ClinicalTrials.gov |
| Infusion reactions | 26.4% | 7.4% | ClinicalTrials.gov |
| Headache | 11.1% | 8.1% | ClinicalTrials.gov |
**Sources Used**: OpenTargets_get_drug_warnings_by_chemblId,
OpenTargets_get_drug_blackbox_status_by_chembl_ID, extract_clinical_trial_adverse_events,
FAERS_count_reactions_by_drug_event
---
## References
### Complete Tool Usage Log
| # | Tool | Parameters | Section | Items |
|---|------|------------|---------|-------|
| 1 | OSL_get_efo_id_by_disease_name | disease="Alzheimer disease" | 1 | 1 |
| 2 | ols_get_efo_term | obo_id="EFO:0000249" | 1 | 1 |
| 3 | ols_get_efo_term_children | obo_id="EFO:0000249", size=30 | 1 | 4 |
| 4 | umls_search_concepts | query="Alzheimer disease" | 1 | 1 |
| 5 | umls_get_concept_details | cui="C0002395" | 1 | 1 |
| 6 | icd_search_codes | query="Alzheimer", version="ICD10CM" | 1 | 4 |
| 7 | snomed_search_concepts | query="Alzheimer disease" | 1 | 1 |
| 8 | OpenTargets_get_associated_phenotypes_by_disease_efoId | efoId="EFO_0000249" | 2 | 15 |
| 9 | MedlinePlus_get_genetics_condition_by_name | condition="alzheimer-disease" | 2 | 1 |
| 10 | OpenTargets_get_associated_targets_by_disease_efoId | efoId="EFO_0000249" | 3 | 245 |
| 11 | gwas_get_associations_for_trait | disease_trait="Alzheimer disease", size=50 | 3 | 50 |
| 12 | gwas_get_studies_for_trait | disease_trait="Alzheimer disease", size=30 | 3 | 28 |
| 13 | ClinVar_search_variants | condition="Alzheimer", max_results=50 | 3 | 50 |
| 14 | OpenTargets_get_associated_drugs_by_disease_efoId | efoId="EFO_0000249", size=100 | 4 | 45 |
| 15 | search_clinical_trials | condition="Alzheimer disease", pageSize=50 | 4 | 50 |
| 16 | Reactome_map_uniprot_to_pathways | id="P05067" (APP) | 5 | 12 |
| 17 | humanbase_ppi_analysis | gene_list=["APP","PSEN1","APOE","TREM2"], tissue="brain" | 5 | 45 |
| 18 | gtex_get_expression_by_gene | gene="APP" | 5 | 54 |
| 19 | PubMed_search_articles | query="Alzheimer disease", limit=100 | 6 | 100 |
| 20 | openalex_search_works | query="Alzheimer disease", limit=50 | 6 | 50 |
| 21 | OpenTargets_get_similar_entities_by_disease_efoId | efoId="EFO_0000249", size=20 | 7 | 15 |
| 22 | GtoPdb_search_diseases | name="Alzheimer" | 9 | 1 |
| 23 | OpenTargets_get_drug_warnings_by_chemblId | chemblId="CHEMBL4650319" | 10 | 2 |
| 24 | extract_clinical_trial_adverse_events | nct_ids=["NCT03887455"] | 10 | 8 |
### Summary Statistics
- **Total tools used**: 24 unique tools
- **Total API calls**: 58
- **Total data points retrieved**: 847
- **Sections completed**: 10/10
- **Report completeness**: 100%
### Database Versions
- OpenTargets Platform: v24.03
- GWAS Catalog: Release 2024-02-15
- ClinVar: 2024-02
- ClinicalTrials.gov: Live data
- Reactome: v87
- PubMed: Live data
---
*Report generated using ToolUniverse Disease Research Skill*
*All data retrieved from public databases via ToolUniverse API*---
Example 2: Handling Rare Disease with Limited Data
When some tools return empty results, note this clearly:
## 3. Genetic & Molecular Basis
### Associated Genes
[Source: OpenTargets_get_associated_targets_by_disease_efoId, efoId="EFO_XXXXXXX"]
| Gene | Score | Source |
|------|-------|--------|
| GENE1 | 0.75 | OpenTargets |
| GENE2 | 0.68 | OpenTargets |
*Note: Limited genetic data available for this rare disease (2 genes vs typical 50+)*
### GWAS Associations
[Source: gwas_get_associations_for_trait]
**No GWAS associations found** - This is a rare disease without large-scale genetic studies.
### ClinVar Variants
[Source: ClinVar_search_variants]
| Variant | Clinical Significance | Source |
|---------|----------------------|--------|
| (3 variants found) | | ClinVar |
*Data gap identified: Consider searching case reports in PubMed for variant information*---
Example 3: Multi-Disease Comparison Report
When comparing diseases, maintain citations for each:
# Comparative Disease Report: Neurodegenerative Disorders
## Disease Comparison Table
| Aspect | Alzheimer's | Parkinson's | ALS | Source |
|--------|-------------|-------------|-----|--------|
| EFO ID | EFO_0000249 | EFO_0002508 | EFO_0000253 | OSL_get_efo_id_by_disease_name |
| Associated genes | 245 | 180 | 95 | OpenTargets_get_associated_targets_by_disease_efoId |
| Approved drugs | 6 | 12 | 4 | OpenTargets_get_associated_drugs_by_disease_efoId |
| Active trials | 342 | 267 | 89 | search_clinical_trials |
| US prevalence | 6.5M | 1M | 30K | PubMed_search_articles |
| 5-year pubs | 78,432 | 52,891 | 18,234 | PubMed_search_articles |
## Shared Genetic Basis
[Source: OpenTargets_get_associated_targets_by_disease_efoId for each disease]
| Gene | Alzheimer's Score | Parkinson's Score | ALS Score |
|------|-------------------|-------------------|-----------|
| MAPT | 0.45 | 0.52 | 0.12 |
| GRN | 0.38 | 0.15 | 0.42 |---
Citation Best Practices
DO: Include tool name with every data point
The disease affects 6.5 million Americans [Source: PubMed_search_articles,
query="Alzheimer disease epidemiology prevalence"]DO: Use table format for structured data
| Gene | Score | Source |
|------|-------|--------|
| APOE | 0.92 | OpenTargets_get_associated_targets_by_disease_efoId |DO: Note when data is unavailable
### GWAS Associations
[Source: gwas_get_associations_for_trait]
**No data available** - This query returned 0 results.DON'T: Present data without source
❌ The disease has 245 associated genes.
✓ The disease has 245 associated genes [Source: OpenTargets_get_associated_targets_by_disease_efoId]Disease Research Report Template
Use this template when creating the initial report file {disease_name}_research_report.md.
---
# Disease Research Report: {Disease Name}
**Report Generated**: {date}
**Disease Identifiers**: (to be filled)
---
## Executive Summary
(Brief 3-5 sentence overview - fill after all research complete)
---
## 1. Disease Identity & Classification
### Ontology Identifiers
| System | ID | Source |
|--------|-----|--------|
| EFO | | |
| ICD-10 | | |
| UMLS CUI | | |
| SNOMED CT | | |
### Synonyms & Alternative Names
- (list with source)
### Disease Hierarchy
- Parent:
- Subtypes:
**Sources**: (list tools used)
---
## 2. Clinical Presentation
### Phenotypes (HPO)
| HPO ID | Phenotype | Description | Source |
|--------|-----------|-------------|--------|
### Symptoms & Signs
- (list with source)
### Diagnostic Criteria
- (from literature/MedlinePlus)
**Sources**: (list tools used)
---
## 3. Genetic & Molecular Basis
### Associated Genes
| Gene | Score | Ensembl ID | Evidence | Source |
|------|-------|------------|----------|--------|
### GWAS Associations
| SNP | P-value | Odds Ratio | Study | Source |
|-----|---------|------------|-------|--------|
### Pathogenic Variants (ClinVar)
| Variant | Clinical Significance | Condition | Source |
|---------|----------------------|-----------|--------|
**Sources**: (list tools used)
---
## 4. Treatment Landscape
### Approved Drugs
| Drug | ChEMBL ID | Mechanism | Phase | Target | Source |
|------|-----------|-----------|-------|--------|--------|
### Clinical Trials
| NCT ID | Title | Phase | Status | Intervention | Source |
|--------|-------|-------|--------|--------------|--------|
### Treatment Guidelines
- (from literature)
**Sources**: (list tools used)
---
## 5. Biological Pathways & Mechanisms
### Key Pathways
| Pathway | Reactome ID | Genes Involved | Source |
|---------|-------------|----------------|--------|
### Protein-Protein Interactions
- (tissue-specific networks)
### Expression Patterns
| Tissue | Expression Level | Source |
|--------|------------------|--------|
**Sources**: (list tools used)
---
## 6. Epidemiology & Risk Factors
### Prevalence & Incidence
- (from literature)
### Risk Factors
| Factor | Evidence | Source |
|--------|----------|--------|
### GWAS Studies
| Study | Sample Size | Findings | Source |
|-------|-------------|----------|--------|
**Sources**: (list tools used)
---
## 7. Literature & Research Activity
### Publication Trends
- Total publications (5 years):
- Current year:
- Trend:
### Key Publications
| PMID | Title | Year | Citations | Source |
|------|-------|------|-----------|--------|
### Research Institutions
- (from OpenAlex)
**Sources**: (list tools used)
---
## 8. Similar Diseases & Comorbidities
### Similar Diseases
| Disease | Similarity Score | Shared Genes | Source |
|---------|-----------------|--------------|--------|
### Comorbidities
- (from literature/clinical data)
**Sources**: (list tools used)
---
## 9. Cancer-Specific Information (if applicable)
### CIViC Variants
| Gene | Variant | Evidence Level | Clinical Significance | Source |
|------|---------|----------------|----------------------|--------|
### Molecular Profiles
- (biomarkers)
### Targeted Therapies
| Therapy | Target | Evidence | Source |
|---------|--------|----------|--------|
**Sources**: (list tools used)
---
## 10. Drug Safety & Adverse Events
### Drug Warnings
| Drug | Warning Type | Description | Source |
|------|--------------|-------------|--------|
### Clinical Trial Adverse Events
| Trial | Drug | Adverse Event | Frequency | Source |
|-------|------|---------------|-----------|--------|
### FAERS Reports
- (FDA adverse event data)
**Sources**: (list tools used)
---
## References
### Data Sources Used
| Tool | Query | Section |
|------|-------|---------|
### Database Versions
- OpenTargets: (version/date)
- ClinVar: (version/date)
- GWAS Catalog: (version/date)---
Citation Format
Every piece of data MUST include its source. Use these formats:
In Tables
| Gene | Score | Source |
|------|-------|--------|
| APOE | 0.92 | OpenTargets_get_associated_targets_by_disease_efoId |
| APP | 0.88 | OpenTargets_get_associated_targets_by_disease_efoId |In Lists
- Memory loss [Source: OpenTargets_get_associated_phenotypes_by_disease_efoId]
- Cognitive decline [Source: MedlinePlus_get_genetics_condition_by_name]In Prose
The disease affects approximately 6.5 million Americans (Source: PubMed_search_articles,
query: "Alzheimer disease epidemiology").References Section
At the end of the report, include complete tool usage log:
## References
### Tools Used
| # | Tool | Parameters | Section | Items Retrieved |
|---|------|------------|---------|-----------------|
| 1 | OSL_get_efo_id_by_disease_name | disease="Alzheimer disease" | Identity | 1 |
| 2 | ols_get_efo_term | obo_id="EFO:0000249" | Identity | 1 |
| 3 | OpenTargets_get_associated_targets_by_disease_efoId | efoId="EFO_0000249" | Genetics | 245 |
| ... | ... | ... | ... | ... |
### Data Retrieved Summary
- Total tools used: 45
- Total API calls: 78
- Sections completed: 10/10Research Protocol: Step-by-Step Procedures
Step 1: Initialize Report
from datetime import datetime
def create_report_file(disease_name):
"""Create initial report file with template"""
filename = f"{disease_name.lower().replace(' ', '_')}_research_report.md"
template = f"""# Disease Research Report: {disease_name}
**Report Generated**: {datetime.now().strftime('%Y-%m-%d %H:%M')}
**Disease Identifiers**: Pending research...
---
## Executive Summary
*Research in progress...*
---
## 1. Disease Identity & Classification
*Researching...*
## 2. Clinical Presentation
*Pending...*
[... rest of template ...]
"""
with open(filename, 'w') as f:
f.write(template)
return filenameStep 2: Research Each Dimension with Citations
For EACH piece of information, track:
- Tool name that provided the data
- Parameters used in the query
- Timestamp of the query
def research_with_citations(tu, disease_name, report_file):
"""Research and update report with full citations"""
references = [] # Track all sources
# === DIMENSION 1: Identity ===
# Get EFO ID
efo_result = tu.tools.OSL_get_efo_id_by_disease_name(disease=disease_name)
efo_id = efo_result.get('efo_id')
references.append({
'tool': 'OSL_get_efo_id_by_disease_name',
'params': {'disease': disease_name},
'section': 'Identity'
})
# Get ICD codes
icd_result = tu.tools.icd_search_codes(query=disease_name, version="ICD10CM")
references.append({
'tool': 'icd_search_codes',
'params': {'query': disease_name, 'version': 'ICD10CM'},
'section': 'Identity'
})
# Get UMLS
umls_result = tu.tools.umls_search_concepts(query=disease_name)
references.append({
'tool': 'umls_search_concepts',
'params': {'query': disease_name},
'section': 'Identity'
})
# Get synonyms from EFO
if efo_id:
efo_term = tu.tools.ols_get_efo_term(obo_id=efo_id.replace('_', ':'))
references.append({
'tool': 'ols_get_efo_term',
'params': {'obo_id': efo_id},
'section': 'Identity'
})
# Get subtypes
children = tu.tools.ols_get_efo_term_children(obo_id=efo_id.replace('_', ':'), size=20)
references.append({
'tool': 'ols_get_efo_term_children',
'params': {'obo_id': efo_id, 'size': 20},
'section': 'Identity'
})
# UPDATE REPORT FILE with Identity section
update_report_section(report_file, 'Identity', {
'efo_id': efo_id,
'icd_codes': icd_result,
'umls': umls_result,
'synonyms': efo_term.get('synonyms', []) if efo_term else [],
'subtypes': children
}, references[-5:]) # Last 5 references for this section
# === DIMENSION 2: Clinical ===
# ... continue for all dimensionsStep 3: Update Report File After Each Dimension
# After each dimension's research completes:
# 1. Read current report
with open(report_file, 'r') as f:
report = f.read()
# 2. Replace placeholder with formatted content
report = report.replace(
"## 3. Genetic & Molecular Basis\n*Pending...*",
formatted_genetics_section
)
# 3. Write back immediately
with open(report_file, 'w') as f:
f.write(report)
# 4. Continue to next dimensionStep 4: Format Section Content
def format_identity_section(data, sources):
"""Format Identity section with proper citations"""
source_list = ', '.join([s['tool'] for s in sources])
return f"""## 1. Disease Identity & Classification
### Ontology Identifiers
| System | ID | Source |
|--------|-----|--------|
| EFO | {data['efo_id']} | OSL_get_efo_id_by_disease_name |
| ICD-10 | {data['icd_codes']} | icd_search_codes |
| UMLS CUI | {data['umls']} | umls_search_concepts |
### Synonyms & Alternative Names
{format_list_with_source(data['synonyms'], 'ols_get_efo_term')}
### Disease Subtypes
{format_list_with_source(data['subtypes'], 'ols_get_efo_term_children')}
**Sources**: {source_list}
"""Final Report Quality Checklist
Before presenting to user, verify:
- [ ] All 10 sections have content (or marked as "No data available")
- [ ] Every data point has a source citation
- [ ] Executive summary reflects key findings
- [ ] References section lists all tools used
- [ ] Tables are properly formatted
- [ ] No placeholder text remains
Expected Output Scale
For a disease like "Alzheimer's Disease", the final report should be 2000+ lines with:
- Section 1: 5+ ontology IDs, 10+ synonyms, disease hierarchy
- Section 2: 20+ phenotypes with HPO IDs, symptoms list
- Section 3: 50+ genes with scores, 30+ GWAS associations, 100+ ClinVar variants
- Section 4: 20+ drugs, 50+ clinical trials with details
- Section 5: 10+ pathways, PPI network, expression data
- Section 6: 100+ publications, citation analysis, institution list
- Section 7: 15+ similar diseases with similarity scores
- Section 8: (if cancer) variants, evidence items
- Section 9: Pharmacological targets and interactions
- Section 10: Drug warnings, adverse events
Total: Detailed report with 500+ individual data points, each with source citation.
Disease Research: Complete Tool Usage by Section
Detailed tool calls for each of the 10 research dimensions.
---
Section 1: Identity (use ALL)
tu.tools.OSL_get_efo_id_by_disease_name(disease=disease_name)
tu.tools.OpenTargets_get_disease_id_description_by_name(diseaseName=disease_name)
tu.tools.ols_search_efo_terms(query=disease_name)
tu.tools.ols_get_efo_term(obo_id=efo_id)
tu.tools.ols_get_efo_term_children(obo_id=efo_id, size=30)
tu.tools.umls_search_concepts(query=disease_name)
tu.tools.umls_get_concept_details(cui=cui)
tu.tools.icd_search_codes(query=disease_name, version="ICD10CM")
tu.tools.snomed_search_concepts(query=disease_name)---
Section 2: Clinical Presentation (use ALL)
tu.tools.OpenTargets_get_associated_phenotypes_by_disease_efoId(efoId=efo_id)
tu.tools.get_HPO_ID_by_phenotype(query=symptom) # for each key symptom
tu.tools.get_phenotype_by_HPO_ID(id=hpo_id) # for top phenotypes
tu.tools.MedlinePlus_search_topics_by_keyword(term=disease_name, db="healthTopics")
tu.tools.MedlinePlus_get_genetics_condition_by_name(condition=disease_slug)
tu.tools.MedlinePlus_connect_lookup_by_code(cs=icd_oid, c=icd_code)---
Section 3: Genetics (use ALL)
tu.tools.OpenTargets_get_associated_targets_by_disease_efoId(efoId=efo_id)
tu.tools.OpenTargets_target_disease_evidence(efoId=efo_id, ensemblId=gene_id) # top genes
tu.tools.ClinVar_search_variants(condition=disease_name, max_results=50)
tu.tools.ClinVar_get_variant_details(variant_id=vid) # top variants
tu.tools.ClinVar_get_clinical_significance(variant_id=vid)
tu.tools.gwas_search_associations(disease_trait=disease_name, size=50)
tu.tools.gwas_get_variants_for_trait(disease_trait=disease_name, size=50)
tu.tools.gwas_get_associations_for_trait(disease_trait=disease_name, size=50)
tu.tools.gwas_get_studies_for_trait(disease_trait=disease_name, size=30)
tu.tools.GWAS_search_associations_by_gene(gene_name=gene) # top genes
tu.tools.gnomad_get_variant_frequency(variant=variant) # key variants---
Section 4: Treatment (use ALL)
tu.tools.OpenTargets_get_associated_drugs_by_disease_efoId(efoId=efo_id, size=100)
tu.tools.OpenTargets_get_drug_chembId_by_generic_name(drugName=drug)
tu.tools.OpenTargets_get_drug_mechanisms_of_action_by_chemblId(chemblId=chembl_id)
tu.tools.search_clinical_trials(condition=disease_name, pageSize=50)
tu.tools.get_clinical_trial_descriptions(nct_ids=nct_list)
tu.tools.get_clinical_trial_conditions_and_interventions(nct_ids=nct_list)
tu.tools.get_clinical_trial_eligibility_criteria(nct_ids=nct_list)
tu.tools.get_clinical_trial_outcome_measures(nct_ids=nct_list)
tu.tools.extract_clinical_trial_outcomes(nct_ids=nct_list)
tu.tools.GtoPdb_search_diseases(name=disease_name)
tu.tools.GtoPdb_search_diseases(disease_id=gtopdb_id)---
Section 5: Pathways (use ALL)
tu.tools.Reactome_get_diseases()
tu.tools.Reactome_map_uniprot_to_pathways(uniprot_id=uniprot_id) # top genes
tu.tools.Reactome_get_pathway(stId=pathway_id)
tu.tools.Reactome_get_pathway_reactions(stId=pathway_id)
tu.tools.humanbase_ppi_analysis(gene_list=top_genes, tissue=relevant_tissue)
tu.tools.GTEx_get_expression_summary(gene_symbol=gene) # top genes
tu.tools.HPA_get_rna_expression_by_source(gene_name=gene)
tu.tools.geo_search_datasets(query=disease_name)---
Section 6: Literature (use ALL)
tu.tools.PubMed_search_articles(query=f'"{disease_name}"', limit=100)
tu.tools.PubMed_search_articles(query=f'"{disease_name}" AND epidemiology', limit=50)
tu.tools.PubMed_search_articles(query=f'"{disease_name}" AND mechanism', limit=50)
tu.tools.PubMed_search_articles(query=f'"{disease_name}" AND treatment', limit=50)
tu.tools.PubMed_get_article(pmid=pmid) # top 10 articles
tu.tools.PubMed_get_related(pmid=key_pmid)
tu.tools.PubMed_get_cited_by(pmid=key_pmid)
tu.tools.OpenTargets_get_publications_by_disease_efoId(efoId=efo_id)
tu.tools.openalex_search_works(query=disease_name, limit=50)
tu.tools.EuropePMC_search_articles(query=disease_name, limit=50)
tu.tools.SemanticScholar_search_papers(query=disease_name, limit=50)---
Section 7: Similar Diseases
tu.tools.OpenTargets_get_similar_entities_by_disease_efoId(efoId=efo_id, threshold=0.3, size=30)---
Section 8: Cancer-Specific (if cancer)
tu.tools.civic_search_diseases(limit=100)
tu.tools.civic_search_genes(query=gene, limit=20)
tu.tools.civic_get_variants_by_gene(gene_id=civic_gene_id, limit=50)
tu.tools.civic_get_variant(variant_id=vid)
tu.tools.civic_get_evidence_item(evidence_id=eid)
tu.tools.civic_search_therapies(limit=100)
tu.tools.civic_search_molecular_profiles(limit=50)---
Section 9: Pharmacology
tu.tools.GtoPdb_search_targets(target_type=type, limit=50) # GPCR, ion channel, etc
tu.tools.GtoPdb_search_targets(target_id=tid)
tu.tools.GtoPdb_get_interactions(target_id=tid)
tu.tools.GtoPdb_get_interactions(approved_only=True)
tu.tools.GtoPdb_list_ligands(ligand_type="Approved")---
Section 10: Safety (use ALL)
tu.tools.OpenTargets_get_drug_warnings_by_chemblId(chemblId=cid)
tu.tools.OpenTargets_get_drug_blackbox_status_by_chembl_ID(chemblId=cid)
tu.tools.extract_clinical_trial_adverse_events(nct_ids=nct_list)
tu.tools.FAERS_count_reactions_by_drug_event(drug=drug_name, event=event)
tu.tools.AdverseEventPredictionQuestionGenerator(disease_name=disease, drug_name=drug)---
Research Protocol
Step 1: Initialize Report
from datetime import datetime
filename = f"{disease_name.lower().replace(' ', '_')}_research_report.md"
# Write template with placeholders for each sectionStep 2: Research Each Dimension
For EACH piece of information, track:
- Tool name that provided the data
- Parameters used in the query
- Timestamp of the query
Step 3: Update Report After Each Dimension
# Read current file
# Replace placeholder with formatted content
# Write back immediately
# Continue to next dimensionComplete Tool Reference for Disease Information
Comprehensive reference of all ToolUniverse tools for disease information retrieval.
---
1. Disease Identification & Ontology
OSL_get_efo_id_by_disease_name
Purpose: Map disease name to EFO ID (primary entry point)
tu.tools.OSL_get_efo_id_by_disease_name(disease="diabetes mellitus")
# Returns: {"efo_id": "EFO:0000400", "name": "diabetes mellitus"}ols_search_efo_terms
Purpose: Search EFO ontology for disease terms
tu.tools.ols_search_efo_terms(query="diabetes mellitus", rows=10)
# Returns: terms with iri, obo_id, label, descriptionols_get_efo_term
Purpose: Get detailed EFO term information
tu.tools.ols_get_efo_term(obo_id="EFO:0000400")
# Returns: synonyms, description, has_children, is_obsoleteols_get_efo_term_children
Purpose: Get disease subtypes/children
tu.tools.ols_get_efo_term_children(obo_id="EFO:0000400", size=20)
# Returns: child terms (disease subtypes)OpenTargets_get_disease_id_description_by_name
Purpose: Search OpenTargets for disease by name
tu.tools.OpenTargets_get_disease_id_description_by_name(diseaseName="Diabetes Mellitus")
# Returns: id, name, descriptionumls_search_concepts
Purpose: Search UMLS for medical concepts
tu.tools.umls_search_concepts(query="diabetes", sabs="SNOMEDCT_US", pageSize=25)
# Returns: CUI, name, source
# Note: Requires UMLS_API_KEYumls_get_concept_details
Purpose: Get UMLS concept details by CUI
tu.tools.umls_get_concept_details(cui="C0011849")
# Returns: definitions, semantic typesicd_search_codes
Purpose: Search ICD-10/ICD-11 codes
tu.tools.icd_search_codes(query="diabetes", version="ICD10CM")
# Returns: ICD codes with descriptionssnomed_search_concepts
Purpose: Search SNOMED CT concepts
tu.tools.snomed_search_concepts(query="diabetes mellitus")
# Returns: SNOMED concepts with codes---
2. Clinical Manifestations & Phenotypes
OpenTargets_get_associated_phenotypes_by_disease_efoId
Purpose: Get HPO phenotypes for disease
tu.tools.OpenTargets_get_associated_phenotypes_by_disease_efoId(efoId="EFO_0000384")
# Returns: phenotypeHPO (id, name, description), phenotypeEFOget_HPO_ID_by_phenotype (Monarch)
Purpose: Convert symptom name to HPO ID
tu.tools.get_HPO_ID_by_phenotype(query="seizure", limit=5)
# Returns: HPO IDs matching the phenotypeget_phenotype_by_HPO_ID (Monarch)
Purpose: Get phenotype details by HPO ID
tu.tools.get_phenotype_by_HPO_ID(id="HP:0001250")
# Returns: phenotype detailsget_joint_associated_diseases_by_HPO_ID_list (Monarch)
Purpose: Find diseases from list of phenotypes (differential diagnosis)
tu.tools.get_joint_associated_diseases_by_HPO_ID_list(
HPO_ID_list=["HP:0001250", "HP:0001251"], limit=20
)
# Returns: diseases associated with these phenotypesMedlinePlus_search_topics_by_keyword
Purpose: Search consumer health information
tu.tools.MedlinePlus_search_topics_by_keyword(
term="diabetes", db="healthTopics", rettype="topic"
)
# Returns: topics with title, summary, urlMedlinePlus_get_genetics_condition_by_name
Purpose: Get genetic condition information
tu.tools.MedlinePlus_get_genetics_condition_by_name(condition="alzheimer-disease")
# Returns: description, genes, synonymsMedlinePlus_connect_lookup_by_code
Purpose: Look up by clinical code (ICD-10, LOINC)
tu.tools.MedlinePlus_connect_lookup_by_code(
cs="2.16.840.1.113883.6.90", # ICD-10 CM OID
c="E11.9" # Type 2 diabetes
)
# Returns: MedlinePlus health information---
3. Genetic & Molecular Basis
OpenTargets_get_associated_targets_by_disease_efoId
Purpose: Get disease-gene associations with scores
tu.tools.OpenTargets_get_associated_targets_by_disease_efoId(efoId="EFO_0000384")
# Returns: target.id, target.approvedSymbol, scoreOpenTargets_get_diseases_phenotypes_by_target_ensembl
Purpose: Find diseases associated with a gene (reverse lookup)
tu.tools.OpenTargets_get_diseases_phenotypes_by_target_ensembl(ensemblId="ENSG00000141510")
# Returns: diseases associated with this geneOpenTargets_target_disease_evidence
Purpose: Get evidence for target-disease association
tu.tools.OpenTargets_target_disease_evidence(
efoId="EFO_0000384", ensemblId="ENSG00000141510"
)
# Returns: evidence details, mutation dataClinVar_search_variants
Purpose: Search ClinVar for variants
tu.tools.ClinVar_search_variants(condition="breast cancer", max_results=20)
# OR
tu.tools.ClinVar_search_variants(gene="BRCA1", max_results=20)
# Returns: variant IDs, countClinVar_get_variant_details
Purpose: Get variant details by ClinVar ID
tu.tools.ClinVar_get_variant_details(variant_id="12345")
# Returns: variant informationClinVar_get_clinical_significance
Purpose: Get pathogenicity classification
tu.tools.ClinVar_get_clinical_significance(variant_id="12345")
# Returns: clinical significance datagwas_search_associations
Purpose: Search GWAS associations
tu.tools.gwas_search_associations(disease_trait="diabetes", size=20)
# Returns: associations with p_value, snp_allele, mapped_genesgwas_get_variants_for_trait
Purpose: Get variants for specific trait
tu.tools.gwas_get_variants_for_trait(disease_trait="breast cancer", size=50)
# Returns: variants with rs_id, locations, mapped_genesgwas_get_associations_for_trait
Purpose: Get associations sorted by significance
tu.tools.gwas_get_associations_for_trait(disease_trait="type 2 diabetes", size=20)
# Returns: associations sorted by p-valuegwas_get_studies_for_trait
Purpose: Get GWAS studies for trait
tu.tools.gwas_get_studies_for_trait(disease_trait="diabetes", size=20)
# Returns: study details, sample sizesgwas_get_snp_by_id
Purpose: Get SNP details by rs ID
tu.tools.gwas_get_snp_by_id(rs_id="rs1234")
# Returns: SNP details, locations, allelesgwas_get_associations_for_snp
Purpose: Get all associations for a SNP
tu.tools.gwas_get_associations_for_snp(rs_id="rs12345", size=20)
# Returns: traits associated with this SNPgwas_get_snps_for_gene
Purpose: Get SNPs mapped to a gene
tu.tools.gwas_get_snps_for_gene(mapped_gene="BRCA1", size=20)
# Returns: SNPs in/near this geneGWAS_search_associations_by_gene
Purpose: Search GWAS by gene name
tu.tools.GWAS_search_associations_by_gene(gene_name="TP53", size=10)
# Returns: associations for genegnomad_get_variant_frequency
Purpose: Get population variant frequencies
tu.tools.gnomad_get_variant_frequency(variant="1-55505647-G-T")
# Returns: population frequencies (gnomAD data)---
4. Treatment Landscape
OpenTargets_get_associated_drugs_by_disease_efoId
Purpose: Get drugs for disease
tu.tools.OpenTargets_get_associated_drugs_by_disease_efoId(efoId="EFO_0000384", size=100)
# Returns: drug info, phase, status, mechanism, targetOpenTargets_get_drug_chembId_by_generic_name
Purpose: Get ChEMBL ID from drug name
tu.tools.OpenTargets_get_drug_chembId_by_generic_name(drugName="Aspirin")
# Returns: chemblId, name, descriptionOpenTargets_get_drug_mechanisms_of_action_by_chemblId
Purpose: Get drug mechanism of action
tu.tools.OpenTargets_get_drug_mechanisms_of_action_by_chemblId(chemblId="CHEMBL25")
# Returns: mechanism, actionType, targetsOpenTargets_get_drug_warnings_by_chemblId
Purpose: Get drug warnings
tu.tools.OpenTargets_get_drug_warnings_by_chemblId(chemblId="CHEMBL25")
# Returns: warningType, description, toxicityClassOpenTargets_get_drug_blackbox_status_by_chembl_ID
Purpose: Check withdrawn/blackbox status
tu.tools.OpenTargets_get_drug_blackbox_status_by_chembl_ID(chemblId="CHEMBL25")
# Returns: hasBeenWithdrawn, blackBoxWarningsearch_clinical_trials
Purpose: Search ClinicalTrials.gov
tu.tools.search_clinical_trials(
condition="lung cancer",
intervention="pembrolizumab",
query_term="Phase III",
pageSize=20
)
# Returns: NCT ID, brief_title, status, phaseget_clinical_trial_descriptions
Purpose: Get trial descriptions
tu.tools.get_clinical_trial_descriptions(
nct_ids=["NCT04852770", "NCT01728545"],
description_type="full"
)
# Returns: detailed trial descriptionsget_clinical_trial_conditions_and_interventions
Purpose: Get conditions and interventions
tu.tools.get_clinical_trial_conditions_and_interventions(
nct_ids=["NCT01158625"],
condition_and_intervention=""
)
# Returns: conditions, arm_groups, interventionsget_clinical_trial_eligibility_criteria
Purpose: Get eligibility criteria
tu.tools.get_clinical_trial_eligibility_criteria(
nct_ids=["NCT01158625"],
eligibility_criteria=""
)
# Returns: eligibility_criteria, sex, age rangeget_clinical_trial_outcome_measures
Purpose: Get outcome measures
tu.tools.get_clinical_trial_outcome_measures(
nct_ids=["NCT01158625"],
outcome_measures="primary"
)
# Returns: primary/secondary outcomesextract_clinical_trial_outcomes
Purpose: Extract efficacy results
tu.tools.extract_clinical_trial_outcomes(
nct_ids=["NCT01158625"],
outcome_measure="overall survival"
)
# Returns: detailed outcome resultsextract_clinical_trial_adverse_events
Purpose: Extract safety data
tu.tools.extract_clinical_trial_adverse_events(
nct_ids=["NCT01158625"],
organ_systems=["Cardiac Disorders"],
adverse_event_type="serious"
)
# Returns: adverse event data---
5. Biological Pathways & Mechanisms
Reactome_get_diseases
Purpose: Get all disease-associated pathways
tu.tools.Reactome_get_diseases()
# Returns: disease pathways with DOID annotationsReactome_get_pathway
Purpose: Get pathway details
tu.tools.Reactome_get_pathway(stId="R-HSA-73817")
# Returns: pathway metadata, events, referencesReactome_get_pathway_reactions
Purpose: Get reactions in pathway
tu.tools.Reactome_get_pathway_reactions(stId="R-HSA-73817")
# Returns: reactions and subpathwaysReactome_map_uniprot_to_pathways
Purpose: Get pathways for protein
tu.tools.Reactome_map_uniprot_to_pathways(id="P04637")
# Returns: pathways containing this proteinReactome_map_uniprot_to_reactions
Purpose: Get reactions for protein
tu.tools.Reactome_map_uniprot_to_reactions(id="P04637")
# Returns: reactions involving this proteinReactome_list_top_pathways
Purpose: List top-level pathways
tu.tools.Reactome_list_top_pathways(species="Homo sapiens")
# Returns: top-level pathway hierarchyhumanbase_ppi_analysis
Purpose: Tissue-specific protein interactions
tu.tools.humanbase_ppi_analysis(
gene_list=["TP53", "MDM2"],
tissue="brain",
max_node=10,
interaction="co-expression",
string_mode=True
)
# Returns: PPI network, GO biological processesgtex_get_expression_by_gene
Purpose: Get tissue-specific gene expression (GTEx)
tu.tools.gtex_get_expression_by_gene(gene="BRCA1")
# Returns: expression levels across tissuesHPA_get_protein_expression
Purpose: Get protein expression from Human Protein Atlas
tu.tools.HPA_get_protein_expression(gene="TP53")
# Returns: protein expression by tissue, subcellular localizationgeo_search_datasets
Purpose: Search GEO for gene expression datasets
tu.tools.geo_search_datasets(query="Alzheimer disease", max_results=20)
# Returns: GEO dataset accessions, descriptions---
6. Literature & Research
PubMed_search_articles
Purpose: Search biomedical literature
tu.tools.PubMed_search_articles(
query='"Alzheimer disease" AND biomarker',
limit=50
)
# Returns: PMIDsPubMed_get_article
Purpose: Get article metadata
tu.tools.PubMed_get_article(pmid="12345678")
# Returns: title, abstract, authors, journalPubMed_get_related
Purpose: Get related articles
tu.tools.PubMed_get_related(pmid="20210808", limit=20)
# Returns: related PMIDsPubMed_get_cited_by
Purpose: Get citing articles
tu.tools.PubMed_get_cited_by(pmid="20210808", limit=20)
# Returns: PMIDs of citing articlesOpenTargets_get_publications_by_disease_efoId
Purpose: Get publications for disease
tu.tools.OpenTargets_get_publications_by_disease_efoId(efoId="EFO_0000384")
# Returns: disease-related publicationsOpenTargets_get_publications_by_target_ensemblID
Purpose: Get publications for target
tu.tools.OpenTargets_get_publications_by_target_ensemblID(ensemblId="ENSG00000141510")
# Returns: target-related publicationsopenalex_search_works
Purpose: Search OpenAlex for works with institutional data
tu.tools.openalex_search_works(query="Alzheimer disease biomarker", limit=50)
# Returns: works with authors, institutions, citations, topicseurope_pmc_search_abstracts
Purpose: Search Europe PMC literature
tu.tools.EuropePMC_search_articles(query="Parkinson disease mechanism", limit=50)
# Returns: abstracts from Europe PMCsemantic_scholar_search_papers
Purpose: Search Semantic Scholar with citation networks
tu.tools.SemanticScholar_search_papers(query="cancer immunotherapy", limit=50)
# Returns: papers with citation counts, influential citations---
7. Similar Diseases
OpenTargets_get_similar_entities_by_disease_efoId
Purpose: Find similar diseases, targets, drugs
tu.tools.OpenTargets_get_similar_entities_by_disease_efoId(
efoId="EFO_0000249",
threshold=0.5,
size=20
)
# Returns: similar entities with scores---
8. Cancer-Specific (CIViC)
civic_search_diseases
Purpose: Search cancer diseases
tu.tools.civic_search_diseases(limit=50)
# Returns: cancer diseases in CIViCcivic_search_genes
Purpose: Search cancer genes
tu.tools.civic_search_genes(query="BRAF", limit=10)
# Returns: gene id, name, descriptioncivic_get_variants_by_gene
Purpose: Get variants for gene
tu.tools.civic_get_variants_by_gene(gene_id=5, limit=50)
# Returns: variants for genecivic_get_variant
Purpose: Get variant details
tu.tools.civic_get_variant(variant_id=4170)
# Returns: variant detailscivic_get_evidence_item
Purpose: Get clinical evidence
tu.tools.civic_get_evidence_item(evidence_id=116)
# Returns: evidence description, level, typecivic_search_therapies
Purpose: Search cancer therapies
tu.tools.civic_search_therapies(limit=50)
# Returns: therapy listcivic_search_molecular_profiles
Purpose: Search biomarker profiles
tu.tools.civic_search_molecular_profiles(limit=50)
# Returns: molecular profiles---
9. Pharmacology (GtoPdb)
GtoPdb_search_diseases
Purpose: Search diseases
tu.tools.GtoPdb_search_diseases(name="diabetes", limit=20)
# Returns: diseases with IDs, OMIM, DOIDGtoPdb_search_diseases
Purpose: Get disease details
tu.tools.GtoPdb_search_diseases(disease_id=652)
# Returns: targets, ligands, descriptionGtoPdb_search_targets
Purpose: Get pharmacological targets
tu.tools.GtoPdb_search_targets(target_type="GPCR", limit=20)
# Returns: targets with drugs, ligandsGtoPdb_search_targets
Purpose: Get target details
tu.tools.GtoPdb_search_targets(target_id=290)
# Returns: detailed target infoGtoPdb_get_interactions
Purpose: Get target-ligand interactions
tu.tools.GtoPdb_get_interactions(
target_id=290,
action_type="Agonist"
)
# Returns: interactions with affinityGtoPdb_get_interactions
Purpose: Search drug-target interactions
tu.tools.GtoPdb_get_interactions(
approved_only=True,
limit=100
)
# Returns: interaction dataGtoPdb_list_ligands
Purpose: Search ligands/drugs
tu.tools.GtoPdb_list_ligands(ligand_type="Approved", limit=20)
# Returns: ligands with propertiesGtoPdb_get_ligand
Purpose: Get ligand details
tu.tools.GtoPdb_get_ligand(ligand_id=1016)
# Returns: SMILES, properties, targets---
10. Protein Information (UniProt)
UniProt_get_disease_variants_by_accession
Purpose: Get disease-associated variants
tu.tools.UniProt_get_disease_variants_by_accession(accession="P05067")
# Returns: disease variants for proteinUniProt_get_function_by_accession
Purpose: Get protein function
tu.tools.UniProt_get_function_by_accession(accession="P05067")
# Returns: protein function descriptionUniProt_get_subcellular_location_by_accession
Purpose: Get protein localization
tu.tools.UniProt_get_subcellular_location_by_accession(accession="P05067")
# Returns: cellular location---
11. Adverse Events
AdverseEventPredictionQuestionGenerator
Purpose: Generate safety questions
tu.tools.AdverseEventPredictionQuestionGenerator(
disease_name="Alzheimer's disease",
drug_name="Kisunla"
)
# Returns: safety prediction questionsAdverseEventICDMapper
Purpose: Map adverse events to ICD codes
tu.tools.AdverseEventICDMapper(
source_text="Patient experienced headache and nausea"
)
# Returns: ICD-10 codes for adverse eventsFAERS_count_reactions_by_drug_event
Purpose: Get FDA adverse event reports count
tu.tools.FAERS_count_reactions_by_drug_event(drug="metformin", event="nausea")
# Returns: count of adverse event reports from FAERS---
ID Mapping Summary
| From | To | Tool |
|---|---|---|
| Disease name | EFO ID | OSL_get_efo_id_by_disease_name |
| Disease name | EFO ID | OpenTargets_get_disease_id_description_by_name |
| Drug name | ChEMBL ID | OpenTargets_get_drug_chembId_by_generic_name |
| Gene symbol | Ensembl ID | Use OpenTargets search |
| UniProt ID | Pathways | Reactome_map_uniprot_to_pathways |
| Symptom | HPO ID | get_HPO_ID_by_phenotype |
| HPO IDs | Diseases | get_joint_associated_diseases_by_HPO_ID_list |
| Gene | Diseases | OpenTargets_get_diseases_phenotypes_by_target_ensembl |
| SNP rs ID | Diseases | gwas_get_associations_for_snp |
---
Query Construction Tips
PubMed Queries
Good query construction:
# Specific disease + topic
query = '"Alzheimer disease" AND mechanism'
# Multiple terms with OR
query = '"Parkinson disease" OR "Parkinson\'s disease" AND therapy'
# Exclude terms
query = '"diabetes" NOT "gestational diabetes" AND treatment'
# Recent papers only
query = '"cancer" AND immunotherapy'
arguments = {'query': query, 'years': 2} # Last 2 yearsField-specific searches:
# Title only
query = 'Alzheimer[Title] AND biomarker[Title]'
# MeSH terms
query = '"Alzheimer Disease"[MeSH] AND "Drug Therapy"[MeSH]'
# Publication types
query = '"diabetes" AND systematic review[Publication Type]'OpenTargets Queries
Disease ID formats:
- EFO IDs:
EFO_0000249(Alzheimer's) - Orphanet:
Orphanet_558(rare diseases) - MONDO:
MONDO_0008199
Finding disease IDs:
# Search by name
result = tu.tools.OSL_get_efo_id_by_disease_name(disease='Alzheimer disease')
efo_id = result.get('efo_id') # Get EFO IDClinical Trials Queries
Effective search strategies:
# By condition
{'condition': 'Alzheimer Disease'}
# By intervention
{'condition': 'cancer', 'intervention': 'pembrolizumab'}
# By phase
{'condition': 'diabetes', 'query_term': 'Phase 3'}
# By status
{'condition': 'depression', 'status': 'Recruiting'}---
Common Issues & Solutions
Issue: Disease name vs EFO ID mismatch
Solution: Always try to get both
if disease_name and not disease_id:
# Get EFO ID from name
result = tu.tools.OSL_get_efo_id_by_disease_name(disease=disease_name)
disease_id = result.get('efo_id')
elif disease_id and not disease_name:
# Get name from EFO ID
result = tu.tools.OpenTargets_get_disease_id_description_by_name(efoId=disease_id)
disease_name = result.get('name')Issue: Empty results from a tool
Solution: Try alternative tools or queries
targets = tu.tools.OpenTargets_get_associated_targets_by_disease_efoId(efoId=disease_id)
if not targets.get('data'):
# Try PubMed text mining as fallback
pmids = tu.tools.PubMed_search_articles(query=f'"{disease_name}" AND gene')Issue: Timeout on slow queries
Solution: Set appropriate timeouts and handle gracefully
try:
result = future.result(timeout=120) # 2 minutes
except TimeoutError:
result = {'status': 'timeout', 'message': 'Query too slow'}Issue: Rate limiting
Solution: Add delays or use caching
import time
from functools import lru_cache
@lru_cache(maxsize=100)
def cached_query(tool_name, args_json):
# Cache results to avoid repeated queries
import json
return tu.run({'name': tool_name, 'arguments': json.loads(args_json)})---
Performance Optimization
Parallel Execution Best Practices
# Good: Independent paths in parallel
with ThreadPoolExecutor(max_workers=5) as executor:
futures = {
'path1': executor.submit(path1_func),
'path2': executor.submit(path2_func),
# All independent
}
# Bad: Dependent queries in parallel
# Don't parallelize if path2 needs path1 resultsResult Limiting
# Limit results to avoid overwhelming output
top_targets = targets['data'][:10] # Top 10 only
top_pathways = pathways['data'][:5] # Top 5 only
top_drugs = drugs['data'][:5] # Top 5 onlyCaching Strategy
# Cache expensive queries
cache = {}
def get_gene_info(gene_id):
if gene_id in cache:
return cache[gene_id]
result = tu.tools.UniProt_get_entry_by_accession(accession=gene_id)
cache[gene_id] = result
return result---
Data Quality Indicators
Track data quality in your synthesis:
quality_metrics = {
'sources_queried': 15, # How many tools used
'sources_successful': 12, # How many returned data
'completeness_score': 0.80, # 80% of paths succeeded
'data_recency': {
'publications': '2024', # Most recent paper
'trials': '2024', # Most recent trial
'approval': '2023' # Most recent drug approval
}
}Include in report:
Data Quality: ⭐⭐⭐⭐ (80% complete, 12/15 sources)
Most recent data: 2024Related skills
How it compares
Pick disease research for full multi-omic disease reports; use tooluniverse-literature-deep-research when the primary goal is systematic paper synthesis rather than disease profiling.
FAQ
How many research dimensions does tooluniverse-disease-research cover?
tooluniverse-disease-research structures reports across 10 dimensions including identity, clinical presentation, genetics, treatments, pathways, epidemiology, similar diseases, cancer-specific data, pharmacology, and drug safety.
How do you install tooluniverse-disease-research?
Run `npx skills add https://github.com/mims-harvard/tooluniverse --skill tooluniverse-disease-research` in your project, reload the agent, then ask prompts like "Generate disease report for diabetes" to start the report-first workflow.