Files

359 lines
16 KiB
Markdown

---
title: "Tool Reference: Multi-Omics Disease Characterization"
task: ""
lineage_type: import
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/e2520a96/skills/tooluniverse-multiomic-disease-characterization/tool-reference.md
upstream_sha: e2520a96
imported_at: 2026-06-26
prompt_class: prompt
upstream_changes: accepted
author: upstream
validated: false
---
# Tool Reference: Multi-Omics Disease Characterization
Detailed tool parameters, inputs/outputs, and per-phase workflows.
---
## Phase 0: Disease Disambiguation Tools
**OpenTargets_get_disease_id_description_by_name** (primary):
- **Input**: `diseaseName` (string)
- **Output**: `{data: {search: {hits: [{id, name, description}]}}}`
- **CRITICAL**: Disease IDs use underscore format (e.g., `MONDO_0004975`), NOT colon format
**OSL_get_efo_id_by_disease_name** (secondary):
- **Input**: `disease` (string)
- **Output**: `{efo_id, name}`
**OpenTargets_get_disease_description_by_efoId**:
- **Input**: `efoId` (string, e.g., `MONDO_0004975`)
- **Output**: `{data: {disease: {id, name, description, dbXRefs}}}`
**OpenTargets_get_disease_synonyms_by_efoId**:
- **Input**: `efoId` (string)
- **Output**: `{data: {disease: {id, name, synonyms: [{relation, terms}]}}}`
**OpenTargets_get_disease_therapeutic_areas_by_efoId**:
- **Input**: `efoId` (string)
- **Output**: `{data: {disease: {id, name, therapeuticAreas: [{id, name}]}}}`
**OpenTargets_get_disease_ancestors_parents_by_efoId**:
- **Input**: `efoId` (string)
- **Output**: `{data: {disease: {id, name, ancestors: [{id, name}]}}}`
**OpenTargets_get_disease_descendants_children_by_efoId**:
- **Input**: `efoId` (string)
- **Output**: `{data: {disease: {id, name, descendants: [{id, name}]}}}`
**OpenTargets_map_any_disease_id_to_all_other_ids**:
- **Input**: `inputId` (string, e.g., `OMIM:104300`, `UMLS:C0002395`)
- **Output**: `{data: {disease: {id, name, dbXRefs: [str], ...}}}`
### Phase 0 Workflow
1. Search by disease name to get primary ID (OpenTargets)
2. Get full description and cross-references
3. Get synonyms for search term expansion
4. Get therapeutic areas for context
5. Get disease hierarchy (parents/children)
6. If user provided OMIM/other ID, map to MONDO/EFO first
### Collision-Aware Search
- Check if user's input matches any hit exactly
- If ambiguous, present top 3-5 options and ask user to select
- Prefer the most specific disease (not parent categories)
- For cancer, prefer the specific tumor type over generic "cancer"
### Key Disease IDs to Track
After disambiguation, store for downstream queries:
- `efo_id` - Primary ID for OpenTargets (e.g., `MONDO_0004975`)
- `disease_name` - Canonical name
- `synonyms` - For literature search expansion
- `therapeutic_areas` - For context
- `dbXRefs` - Cross-references (OMIM, UMLS, DOID, etc.)
---
## Phase 1: Genomics Layer Tools
**OpenTargets_get_associated_targets_by_disease_efoId** (primary):
- **Input**: `efoId` (string)
- **Output**: `{data: {disease: {id, name, associatedTargets: {count, rows: [{target: {id, approvedSymbol}, score}]}}}}`
- **NOTE**: Returns top 25 by default. Note the total `count`
**OpenTargets_get_evidence_by_datasource**:
- **Input**: `efoId` (string), `ensemblId` (string), optional `datasourceIds` (array), `size` (int, default 50)
- **Output**: `{data: {disease: {evidences: {count, rows: [{...}]}}}}`
- Key datasourceIds for genomics:
- `['ot_genetics_portal']` - GWAS/genetics
- `['gene2phenotype', 'genomics_england', 'orphanet']` - Rare variants
- `['eva']` - ClinVar variants
**gwas_search_associations** (GWAS Catalog):
- **Input**: `disease_trait` (string), `size` (int, default 20)
- **Output**: `{data: [{association_id, p_value, or_per_copy_num, or_value, beta, risk_frequency, efo_traits}], metadata: {pagination: {totalElements}}}`
- **NOTE**: Use disease name (e.g., "Alzheimer"), not ID
**gwas_get_studies_for_trait**:
- **Input**: `disease_trait` (string), `size` (int)
- **NOTE**: May return empty if trait name does not match exactly. Try synonyms
**gwas_get_variants_for_trait**:
- **Input**: `disease_trait` (string), `size` (int)
**GWAS_search_associations_by_gene**:
- **Input**: `gene_name` (string)
**OpenTargets_search_gwas_studies_by_disease**:
- **Input**: `diseaseIds` (array of strings), `enableIndirect` (bool, default true), `size` (int, default 10)
- **Output**: `{data: {studies: {count, rows: [{id, studyType, traitFromSource, publicationFirstAuthor, publicationDate, pubmedId, nSamples, nCases, nControls}]}}}`
**ClinVar_search_variants**:
- **Input**: `condition` (string) or `gene` (string), optional `max_results` (int)
### Phase 1 Workflow
1. Get associated genes from OpenTargets (overall scores)
2. For top 10-15 genes, get genetic evidence via `OpenTargets_get_evidence_by_datasource`
3. Search GWAS Catalog for associations
4. Search OpenTargets GWAS studies
5. Search ClinVar for rare variants
6. For top GWAS genes, check `GWAS_search_associations_by_gene`
### Gene Tracking
Maintain a dictionary of genes found in genomics layer:
```python
genomics_genes = {
'PSEN1': {'score': 0.87, 'evidence': 'genetic', 'ensembl_id': 'ENSG00000080815', 'layer': 'genomics'},
'APP': {'score': 0.82, 'evidence': 'genetic', 'ensembl_id': 'ENSG00000142192', 'layer': 'genomics'},
}
```
---
## Phase 2: Transcriptomics Layer Tools
**ExpressionAtlas_search_differential**:
- **Input**: optional `gene` (string), `condition` (string), `species` (string, default 'homo sapiens')
**ExpressionAtlas_search_experiments**:
- **Input**: optional `gene` (string), `condition` (string), `species` (string)
**expression_atlas_disease_target_score**:
- **Input**: `efoId` (string), `pageSize` (int, required)
**europepmc_disease_target_score**:
- **Input**: `efoId` (string), `pageSize` (int, required)
**HPA_get_rna_expression_by_source** (Human Protein Atlas):
- **Input**: `gene_name` (string), `source_type` (string: 'tissue', 'blood', 'brain'), `source_name` (string)
- **Output**: `{status, data: {gene_name, source_type, source_name, expression_value, expression_level, expression_unit}}`
- **NOTE**: ALL 3 params required. `source_type` options: 'tissue', 'blood', 'brain', 'cell_line', 'single_cell'
**HPA_get_rna_expression_in_specific_tissues**:
- **Input**: `gene_name` (string), `tissues` (array of strings)
**HPA_get_cancer_prognostics_by_gene**:
- **Input**: `gene_name` (string) - for cancer context
**HPA_get_subcellular_location**:
- **Input**: `gene_name` (string)
**HPA_search_genes_by_query**:
- **Input**: `query` (string)
### Phase 2 Workflow
1. Search Expression Atlas for differential expression studies
2. Get expression-based disease scores
3. Get literature-based disease scores (EuropePMC)
4. For top 10-15 genes from genomics layer, check tissue expression via HPA
5. Check disease-relevant tissue expression patterns
6. For cancer: check prognostic biomarkers
---
## Phase 3: Proteomics & Interaction Layer Tools
**STRING_get_interaction_partners** (primary PPI):
- **Input**: `protein_ids` (array of strings), `species` (int, default 9606), `confidence_score` (float, default 0.4), `limit` (int, default 20)
- **Output**: `{status: 'success', data: [{stringId_A, stringId_B, preferredName_A, preferredName_B, ncbiTaxonId, score, nscore, fscore, pscore, ascore, escore, dscore, tscore}]}`
- **NOTE**: `protein_ids` is an array, NOT string. Gene symbols like `['APOE']` work
**STRING_get_network**:
- **Input**: `protein_ids` (array), `species` (int), `confidence_score` (float)
**STRING_functional_enrichment**:
- **Input**: `protein_ids` (array), `species` (int)
**STRING_ppi_enrichment**:
- **Input**: `protein_ids` (array), `species` (int)
**intact_get_interactions**:
- **Input**: `identifier` (string - UniProt ID or gene name)
**intact_search_interactions**:
- **Input**: `query` (string), `first` (int, default 0), `max` (int, default 25)
**HPA_get_protein_interactions_by_gene**:
- **Input**: `gene_name` (string)
- **Output**: `{gene, interactions, interactor_count, interactors: [...]}`
**humanbase_ppi_analysis**:
- **Input**: `gene_list` (array), `tissue` (string), `max_node` (int), `interaction` (string), `string_mode` (bool)
- **NOTE**: ALL params required. `interaction` options: 'coexpression', 'interaction', 'coexpression_and_interaction'
### Phase 3 Workflow
1. Take top 15-20 genes from genomics + transcriptomics layers
2. Query STRING for interaction partners of each gene
3. Build composite PPI network using STRING_get_network
4. Test PPI enrichment (are genes more connected than random?)
5. Get functional enrichment from STRING
6. For disease-relevant tissue, get tissue-specific network (HumanBase)
7. Identify hub genes (highest degree centrality)
8. Check IntAct for experimentally validated interactions
### Hub Gene Analysis
- **Degree**: Number of interaction partners
- **Betweenness**: Number of shortest paths through node
- **Hub score**: Genes with degree > mean + 1 SD are hubs
---
## Phase 4: Pathway & Network Layer Tools
**enrichr_gene_enrichment_analysis** (primary enrichment):
- **Input**: `gene_list` (array, min 2), `libs` (array of library names)
- **Output**: `{status: 'success', data: '{...JSON string...}'}`
- **Key libraries**: `['KEGG_2021_Human']`, `['Reactome_2022']`, `['WikiPathway_2023_Human']`, `['GO_Biological_Process_2023']`, `['GO_Molecular_Function_2023']`, `['GO_Cellular_Component_2023']`
- **NOTE**: `data` field is a JSON string, needs parsing. `libs` is REQUIRED as array
**ReactomeAnalysis_pathway_enrichment**:
- **Input**: `identifiers` (string - space-separated gene list), optional `page_size` (int, default 20), `include_disease` (bool), `projection` (bool)
- **Output**: `{data: {token, analysis_type, pathways_found, pathways: [{pathway_id, name, species, is_disease, is_lowest_level, entities_found, entities_total, entities_ratio, p_value, fdr, reactions_found, reactions_total}]}}`
**Reactome_map_uniprot_to_pathways**:
- **Input**: `id` (string - UniProt accession)
**Reactome_get_pathway** / **Reactome_get_pathway_reactions**:
- **Input**: `stId` (string, e.g., 'R-HSA-73817')
**kegg_search_pathway**:
- **Input**: `keyword` (string)
**kegg_get_pathway_info**:
- **Input**: `pathway_id` (string, e.g., 'hsa04930')
**WikiPathways_search**:
- **Input**: `query` (string), optional `organism` (string, e.g., 'Homo sapiens')
### Phase 4 Workflow
1. Collect all genes from genomics + transcriptomics layers (top 20-30)
2. Run Enrichr enrichment for KEGG, Reactome, WikiPathways
3. Run ReactomeAnalysis for detailed Reactome enrichment with p-values
4. Search KEGG for disease-specific pathways
5. Search WikiPathways for disease pathways
6. For top Reactome pathways, get detailed reactions
7. Identify cross-pathway connections (genes in multiple pathways)
---
## Phase 5: Gene Ontology & Functional Annotation Tools
**enrichr_gene_enrichment_analysis** (GO enrichment):
- Use with `libs=['GO_Biological_Process_2023']` for BP
- Use with `libs=['GO_Molecular_Function_2023']` for MF
- Use with `libs=['GO_Cellular_Component_2023']` for CC
**GO_get_annotations_for_gene**:
- **Input**: `gene_id` (string - gene symbol or UniProt ID)
**GO_search_terms**:
- **Input**: `query` (string)
**QuickGO_annotations_by_gene**:
- **Input**: `gene_product_id` (string, e.g., 'UniProtKB:P02649'), optional `aspect` ('biological_process', 'molecular_function', 'cellular_component'), `taxon_id` (int: 9606), `limit` (int: 25)
**OpenTargets_get_target_gene_ontology_by_ensemblID**:
- **Input**: `ensemblId` (string)
### Phase 5 Workflow
1. Run Enrichr GO enrichment for all 3 aspects using combined gene list
2. For top 5 genes, get detailed GO annotations from QuickGO
3. For top genes, get OpenTargets GO terms
4. Summarize key biological processes, molecular functions, cellular components
---
## Phase 6: Therapeutic Landscape Tools
**OpenTargets_get_associated_drugs_by_disease_efoId** (primary):
- **Input**: `efoId` (string), `size` (int, REQUIRED - use 100)
- **Output**: `{data: {disease: {knownDrugs: {count, rows: [{drug: {id, name, tradeNames, maximumClinicalTrialPhase, isApproved, hasBeenWithdrawn}, phase, mechanismOfAction, target: {id, approvedSymbol}, disease: {id, name}, urls: [{url, name}]}]}}}}`
**OpenTargets_get_target_tractability_by_ensemblID**:
- **Input**: `ensemblId` (string)
**OpenTargets_get_associated_drugs_by_target_ensemblID**:
- **Input**: `ensemblId` (string), `size` (int, REQUIRED)
**search_clinical_trials**:
- **Input**: `query_term` (string, REQUIRED), optional `condition` (string), `intervention` (string), `pageSize` (int, default 10)
- **NOTE**: `query_term` is REQUIRED even if `condition` is provided
**OpenTargets_get_drug_mechanisms_of_action_by_chemblId**:
- **Input**: `chemblId` (string)
### Phase 6 Workflow
1. Get all drugs for disease from OpenTargets
2. For top disease-associated genes, check tractability
3. For top genes with no approved drugs, identify repurposing candidates
4. Search clinical trials for disease
5. For top approved drugs, get mechanism of action
### Drug Tracking
```python
drug_targets = {
'PSEN1': {'drugs': ['Semagacestat'], 'tractability': 'small_molecule', 'clinical_phase': 3},
'ACHE': {'drugs': ['Donepezil', 'Galantamine'], 'tractability': 'small_molecule', 'clinical_phase': 4},
}
```
---
## Tool Parameter Quick Reference
| Tool | Key Parameters | Notes |
|------|---------------|-------|
| `OpenTargets_get_disease_id_description_by_name` | `diseaseName` | Primary disambiguation |
| `OSL_get_efo_id_by_disease_name` | `disease` | Secondary disambiguation |
| `OpenTargets_get_associated_targets_by_disease_efoId` | `efoId` | Returns top 25 genes |
| `OpenTargets_get_evidence_by_datasource` | `efoId`, `ensemblId`, `datasourceIds[]`, `size` | Per-gene evidence |
| `OpenTargets_search_gwas_studies_by_disease` | `diseaseIds[]`, `size` | GWAS studies |
| `gwas_search_associations` | `disease_trait`, `size` | GWAS Catalog |
| `ClinVar_search_variants` | `condition` or `gene`, `max_results` | Rare variants |
| `ExpressionAtlas_search_differential` | `condition`, `species` | DEGs |
| `expression_atlas_disease_target_score` | `efoId`, `pageSize` (REQUIRED) | Expression scores |
| `europepmc_disease_target_score` | `efoId`, `pageSize` (REQUIRED) | Literature scores |
| `HPA_get_rna_expression_by_source` | `gene_name`, `source_type`, `source_name` (ALL REQUIRED) | Tissue expression |
| `STRING_get_interaction_partners` | `protein_ids[]`, `species` (9606), `limit` | PPI partners |
| `STRING_get_network` | `protein_ids[]`, `species` | PPI network |
| `STRING_functional_enrichment` | `protein_ids[]`, `species` | Functional enrichment |
| `STRING_ppi_enrichment` | `protein_ids[]`, `species` | Network significance |
| `intact_search_interactions` | `query`, `max` | Experimental PPIs |
| `humanbase_ppi_analysis` | `gene_list[]`, `tissue`, `max_node`, `interaction`, `string_mode` (ALL REQ) | Tissue PPI |
| `enrichr_gene_enrichment_analysis` | `gene_list[]`, `libs[]` (BOTH REQUIRED) | Pathway/GO enrichment |
| `ReactomeAnalysis_pathway_enrichment` | `identifiers` (space-sep string) | Reactome enrichment |
| `Reactome_map_uniprot_to_pathways` | `id` (UniProt accession) | Protein-pathway mapping |
| `kegg_search_pathway` | `keyword` | KEGG pathway search |
| `WikiPathways_search` | `query`, `organism` | WikiPathways search |
| `GO_get_annotations_for_gene` | `gene_id` | GO annotations |
| `QuickGO_annotations_by_gene` | `gene_product_id` (e.g., 'UniProtKB:P02649') | Detailed GO |
| `OpenTargets_get_associated_drugs_by_disease_efoId` | `efoId`, `size` (REQUIRED) | Disease drugs |
| `OpenTargets_get_target_tractability_by_ensemblID` | `ensemblId` | Druggability |
| `search_clinical_trials` | `query_term` (REQUIRED), `condition`, `pageSize` | Clinical trials |
| `PubMed_search_articles` | `query`, `limit` | Literature |
| `ensembl_lookup_gene` | `gene_id`, `species` ('homo_sapiens' REQUIRED) | Gene lookup |
| `MyGene_query_genes` | `query`, `species`, `fields`, `size` | Gene info |
| `OpenTargets_get_similar_entities_by_disease_efoId` | `efoId`, `threshold`, `size` (ALL REQUIRED) | Similar diseases |