Files
drug-discovery-prompts/upstream/mims-harvard-ToolUniverse/skills/tooluniverse-variant-interpretation/TOOLS_REFERENCE.md

1141 lines
36 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Clinical Variant Interpreter - Tool Reference"
task: ""
lineage_type: import
upstream_source: https://github.com/mims-harvard/ToolUniverse/blob/3038dcbe/skills/tooluniverse-variant-interpretation/TOOLS_REFERENCE.md
upstream_sha: 3038dcbe
imported_at: 2026-06-30
prompt_class: prompt
upstream_changes: accepted
author: upstream
validated: false
---
# Clinical Variant Interpreter - Tool Reference
## Core Annotation Tools
### MyVariant.info - Aggregated Annotations
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `MyVariant_query_variants` | Query variant annotations | `variant_id`, `fields` |
**Example - Query variant**:
```python
result = tu.tools.MyVariant_query_variants(
variant_id="chr17:g.7674220C>T",
fields="clinvar,gnomad,cadd,dbnsfp"
)
# Returns: ClinVar, gnomAD, CADD, dbNSFP predictions
```
**Key Fields**:
| Field | Contains |
|-------|----------|
| `clinvar` | Classification, review status |
| `gnomad` | Allele frequencies |
| `cadd` | CADD scores |
| `dbnsfp` | SIFT, PolyPhen, REVEL, etc. |
---
### ClinVar - Clinical Classifications
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `ClinVar_search_variants` | Search by variant | `variant`, `gene` |
| `ClinVar_get_variant_details` | Get by VCV ID | `variation_id` |
**Example - Search ClinVar**:
```python
result = tu.tools.ClinVar_search_variants(
variant="NM_007294.4:c.5266dupC"
)
# Returns: VCV ID, classification, review status, submitters
```
**Classification Interpretation**:
| ClinVar Status | Stars | Meaning |
|----------------|-------|---------|
| Expert panel | ★★★★ | Highest confidence |
| Practice guideline | ★★★★ | Clinical standard |
| Multiple submitters, criteria | ★★★ | Well-supported |
| Single submitter, criteria | ★★ | Limited evidence |
| Single submitter, no criteria | ★ | Minimal support |
---
### VariantValidator - MANE Transcript Lookup & Variant Validation
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `VariantValidator_gene2transcripts` | Get MANE Select/Plus Clinical transcripts for a gene | `gene_symbol`, `transcript_set`, `genome_build` |
| `VariantValidator_validate_variant` | Validate and normalize HGVS variant descriptions | `genome_build`, `variant_description`, `select_transcripts` |
**Example - Get MANE transcript**:
```python
result = tu.tools.VariantValidator_gene2transcripts(
gene_symbol="TP53", transcript_set="mane", genome_build="GRCh38"
)
# Returns: [{current_symbol: "TP53", transcripts: [{reference: "NM_000546.6",
# annotations: {mane_select: true, mane_plus_clinical: false}}]}]
```
**Example - Validate variant**:
```python
result = tu.tools.VariantValidator_validate_variant(
genome_build="GRCh38",
variant_description="NM_007294.4:c.5266dup",
select_transcripts="NM_007294.4"
)
# Returns: validated HGVS, protein consequence, genomic coordinates, gene IDs
```
**When to use**:
- Phase 1: Always use `gene2transcripts` to identify the MANE Select transcript before annotating variants
- Phase 1: Use `validate_variant` to normalize user-provided HGVS notation and get cross-genome-build coordinates
- Prefer MANE Select transcript for canonical annotation; fall back to MANE Plus Clinical if relevant
---
### gnomAD - Population Frequencies
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `gnomad_search_variants` | Get allele frequencies | `variant`, `dataset` |
**Example - Query gnomAD**:
```python
result = tu.tools.gnomad_search_variants(
variant="17-7674220-C-T"
)
# Returns: AF, ancestry-specific AFs, AC, AN, homozygotes
```
**ACMG Frequency Thresholds**:
| Frequency | Code | Application |
|-----------|------|-------------|
| >5% | BA1 | Benign (stand-alone) |
| >1% | BS1 | Strong benign |
| Absent | PM2 | Supporting pathogenic |
**Ancestry-Specific Populations**:
| Code | Population |
|------|------------|
| nfe | European (Non-Finnish) |
| fin | Finnish |
| afr | African/African American |
| amr | Latino/Admixed American |
| eas | East Asian |
| sas | South Asian |
| asj | Ashkenazi Jewish |
---
## ClinGen - Gene Validity & Dosage Sensitivity (NEW)
Authoritative curation of gene-disease relationships from ClinGen.
### Gene Validity
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `ClinGen_search_gene_validity` | Search validity by gene | `gene` |
| `ClinGen_get_gene_validity` | Get all validity curations | `gene` (optional filter) |
**Example - Check gene-disease validity**:
```python
result = tu.tools.ClinGen_search_gene_validity(gene="BRCA1")
# Returns: Classification (Definitive/Strong/Moderate/Limited), disease, inheritance
```
**Validity Classification Interpretation**:
| Classification | ACMG Impact | Usage |
|----------------|-------------|-------|
| **Definitive** | Supports PS4, PP4 | Strong gene-disease evidence |
| **Strong** | Supports PP4 | Good evidence for classification |
| **Moderate** | Supports PP4 (weak) | Use with caution |
| **Limited** | Do not apply PP4 | Insufficient evidence |
| **Disputed/Refuted** | Contra-evidence | Gene likely NOT causative |
### Dosage Sensitivity
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `ClinGen_search_dosage_sensitivity` | HI/TS scores by gene | `gene` |
| `ClinGen_get_dosage_sensitivity` | All dosage curations | `gene`, `include_regions` |
**Example - Check haploinsufficiency**:
```python
result = tu.tools.ClinGen_search_dosage_sensitivity(gene="MECP2")
# Returns: Haploinsufficiency Score (0-3), Triplosensitivity Score (0-3)
```
**Dosage Score Interpretation** (for CNVs):
| Score | Meaning | Usage |
|-------|---------|-------|
| **3** | Sufficient evidence | HI/TS established - PVS1 for LOF CNVs |
| **2** | Emerging evidence | Some support |
| **1** | Little evidence | Minimal support |
| **0/40** | No evidence / Dosage unlikely | Unknown or unlikely dosage effect |
### Clinical Actionability
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `ClinGen_search_actionability` | Actionability by gene (both contexts) | `gene` |
| `ClinGen_get_actionability_adult` | Adult actionability | `gene` (optional) |
| `ClinGen_get_actionability_pediatric` | Pediatric actionability | `gene` (optional) |
**Why ClinGen is Critical**:
- Required for **PP4** (phenotype specificity)
- Establishes gene-disease validity before classification
- Dosage scores critical for **PVS1** in CNV interpretation
- Actionability informs return of incidental findings
---
## SpliceAI - Splice Variant Prediction (NEW)
Deep learning model for predicting splice-altering effects.
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `SpliceAI_predict_splice` | Full splice prediction | `variant`, `genome`, `distance`, `mask` |
| `SpliceAI_get_max_delta` | Quick max score | `variant`, `genome` |
| `SpliceAI_predict_pangolin` | Pangolin model (alternative) | `variant`, `genome` |
**Example - Predict splice effect**:
```python
# Full prediction
result = tu.tools.SpliceAI_predict_splice(
variant="chr17-41276045-A-G",
genome="38"
)
# Returns: DS_AG, DS_AL, DS_DG, DS_DL scores, max_delta_score, interpretation
# Quick triage
quick = tu.tools.SpliceAI_get_max_delta(
variant="chr17-41276045-A-G"
)
# Returns: max_delta_score, interpretation
```
**Variant Format**: `chr{chrom}-{pos}-{ref}-{alt}` or `{chrom}:{pos}:{ref}:{alt}`
**Delta Score Types**:
| Score | Meaning |
|-------|---------|
| DS_AG | Acceptor Gain (creates new acceptor) |
| DS_AL | Acceptor Loss (disrupts existing) |
| DS_DG | Donor Gain (creates new donor) |
| DS_DL | Donor Loss (disrupts existing) |
**Score Interpretation for ACMG**:
| Max Delta Score | Interpretation | ACMG Support |
|-----------------|----------------|--------------|
| ≥0.8 | High splice impact | PP3 (strong) |
| 0.5-0.8 | Moderate impact | PP3 (supporting) |
| 0.2-0.5 | Low impact | PP3 (weak) |
| <0.2 | Likely no impact | BP7 (if synonymous) |
**When to Use**:
- Intronic variants within ±50bp of splice sites
- Synonymous/missense variants (may still affect splicing)
- Deep intronic variants creating cryptic splice sites
- Validation when functional studies suggest splice defect
---
## Pathogenicity Prediction Tools (NEW)
### CADD - Combined Annotation Dependent Depletion (NEW API)
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `CADD_get_variant_score` | Get PHRED score for variant | `chrom`, `pos`, `ref`, `alt`, `version` |
| `CADD_get_position_scores` | All substitutions at position | `chrom`, `pos` |
| `CADD_get_range_scores` | Scores in genomic range (max 100bp) | `chrom`, `start`, `end` |
**Example - Score a variant**:
```python
result = tu.tools.CADD_get_variant_score(
chrom="17",
pos=7674220,
ref="G",
alt="A",
version="GRCh38-v1.7" # Options: GRCh38-v1.7, GRCh37-v1.7
)
# Returns: phred_score, raw_score, interpretation
```
**CADD PHRED Score Interpretation**:
| Score | Meaning | ACMG Support |
|-------|---------|--------------|
| ≥30 | Top 0.1% deleterious | PP3 (strong) |
| ≥20 | Top 1% deleterious | PP3 (supporting) |
| 15-20 | Uncertain | Neutral |
| <15 | Likely benign | BP4 (supporting) |
---
### AlphaMissense - DeepMind Pathogenicity Prediction (NEW)
State-of-the-art deep learning model for missense pathogenicity prediction.
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `AlphaMissense_get_variant_score` | Score specific variant | `uniprot_id`, `variant` |
| `AlphaMissense_get_residue_scores` | All substitutions at position | `uniprot_id`, `position` |
**Example - Get pathogenicity score**:
```python
result = tu.tools.AlphaMissense_get_variant_score(
uniprot_id="P00533", # EGFR
variant="L858R" # or "p.L858R"
)
# Returns: pathogenicity_score, classification
```
**AlphaMissense Thresholds** (from Cheng et al., Science 2023):
| Score | Classification | ACMG Support |
|-------|----------------|--------------|
| >0.564 | Pathogenic | PP3 (strong) |
| 0.34-0.564 | Ambiguous | Neutral |
| <0.34 | Benign | BP4 (strong) |
**Why Use AlphaMissense**:
- ~90% accuracy on ClinVar pathogenic variants
- Covers all ~71 million possible human missense variants
- Trained on evolutionary data, not clinical annotations
---
### ESMC-6B SAE - Mechanism of Effect (for VUS missense)
AlphaMissense scores tell you a variant is likely pathogenic. ESMC-6B Sparse Autoencoder features tell you **which interpretable protein-language-model features the mutation disrupts** — catalytic, ligand-binding, PTM, domain, transmembrane, etc. Use as a mechanism complement to pathogenicity scores.
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `ESM_explain_variant_mechanism` | One-call mechanism (disruption + feature labels + summary) | `sequence`, `position`, `ref_aa`, `alt_aa`, `top_k_features` |
| `ESM_score_variant_sae_disruption` | Single variant — top features lost/gained, no labels | `sequence`, `position`, `ref_aa`, `alt_aa` |
| `ESM_score_variant_sae_batch` | Multiple variants on same protein, N+1 Forge calls instead of 2N | `sequence`, `variants` (list) |
| `ESM_get_region_sae_features` | Aggregate features over a residue range (domain, motif) | `sequence`, `start_position`, `end_position` |
| `ESM_describe_sae_feature` | Label a feature_id by biological category | `feature_id` |
**Example — One-call mechanism for a VUS**:
```python
result = tu.tools.ESM_explain_variant_mechanism(
sequence=wt_aa_sequence,
position=600, ref_aa="V", alt_aa="E",
top_k_features=5,
)
# result["data"]["mechanism_summary"] e.g.:
# "Disrupted feature categories (lost): catalytic=2, ligand-binding=1"
```
**Example — Saturation at one position (all 19 alternates)**:
```python
from itertools import product
alts = "ACDEFGHIKLMNPQRSTVWY".replace(wt_residue, "")
variants = [{"position": 600, "ref_aa": "V", "alt_aa": a} for a in alts]
result = tu.tools.ESM_score_variant_sae_batch(
sequence=wt_aa_sequence, variants=variants, top_k_features=5,
)
# Forge cost: 20 calls (1 ref + 19 mut), not 38 (2 per variant)
```
**Mapping SAE categories → ACMG support**:
| SAE category lost | Mechanistic claim | ACMG line |
|---|---|---|
| `catalytic` | Active-site disruption | PS3 (functional) candidate; supports PP3 |
| `ligand-binding` | Substrate/cofactor binding loss | Supports PP3 |
| `ptm` | Post-translational modification site | Supports PP3 |
| `domain` / `motif` | Domain integrity loss | Supports PP3 |
| `structural-stability` | Disulfide / coiled-coil disruption | Supports PP3 |
| `transmembrane` / `signal-peptide` | Targeting / membrane integration | Supports PP3 |
| (no interpretable change) | No mechanistic signal | Do not strengthen PP3 above the predictor score alone |
**Requires**: `ESM_API_KEY` (free non-commercial token at https://forge.evolutionaryscale.ai) and `pip install 'esm @ git+https://github.com/evolutionaryscale/esm@ee891c52'` (PyPI esm 3.2.x lacks SAEConfig). Outputs governed by EvolutionaryScale Cambrian Inference License — non-commercial use only.
---
### EVE - Evolutionary Variant Effect (NEW)
Unsupervised deep learning model using evolutionary data (Harvard/Oxford).
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `EVE_get_variant_score` | Get EVE score via VEP | `chrom`, `pos`, `ref`, `alt` OR `variant` (HGVS) |
| `EVE_get_gene_info` | Check if gene has EVE coverage | `gene_symbol` |
**Example - Score variant**:
```python
# Via genomic coordinates
result = tu.tools.EVE_get_variant_score(
chrom="17",
pos=7674220,
ref="C",
alt="T"
)
# Or via HGVS
result = tu.tools.EVE_get_variant_score(
variant="ENST00000269305.4:c.100G>A"
)
# Returns: eve_score, classification, gene, polyphen/sift from VEP
```
**EVE Score Interpretation**:
| Score | Classification | ACMG Support |
|-------|----------------|--------------|
| >0.5 | Likely pathogenic | PP3 |
| ≤0.5 | Likely benign | BP4 |
**Note**: EVE covers ~3,000 disease-related genes. Use `EVE_get_gene_info` to check coverage.
---
### Integrating Prediction Tools
**Best Practice for VUS Classification**:
```python
def get_multi_predictor_evidence(tu, variant_info):
"""
Combine multiple predictors for robust PP3/BP4 assignment.
"""
evidence = []
# 1. CADD (all variants)
cadd = tu.tools.CADD_get_variant_score(
chrom=variant_info['chrom'],
pos=variant_info['pos'],
ref=variant_info['ref'],
alt=variant_info['alt']
)
if cadd.get('status') == 'success':
score = cadd['data']['phred_score']
evidence.append({
'tool': 'CADD',
'score': score,
'damaging': score >= 20
})
# 2. AlphaMissense (missense only)
if variant_info.get('uniprot_id') and variant_info.get('aa_change'):
am = tu.tools.AlphaMissense_get_variant_score(
uniprot_id=variant_info['uniprot_id'],
variant=variant_info['aa_change']
)
if am.get('status') == 'success' and am.get('data'):
evidence.append({
'tool': 'AlphaMissense',
'score': am['data'].get('pathogenicity_score'),
'classification': am['data'].get('classification'),
'damaging': am['data'].get('classification') == 'pathogenic'
})
# 3. EVE (via VEP)
eve = tu.tools.EVE_get_variant_score(
chrom=variant_info['chrom'],
pos=variant_info['pos'],
ref=variant_info['ref'],
alt=variant_info['alt']
)
if eve.get('status') == 'success':
eve_scores = eve['data'].get('eve_scores', [])
if eve_scores:
evidence.append({
'tool': 'EVE',
'score': eve_scores[0].get('eve_score'),
'damaging': eve_scores[0].get('eve_score', 0) > 0.5
})
# Consensus
damaging = sum(1 for e in evidence if e.get('damaging'))
benign = sum(1 for e in evidence if not e.get('damaging'))
return {
'predictions': evidence,
'damaging_count': damaging,
'benign_count': benign,
'acmg_pp3': damaging >= 2 and benign == 0,
'acmg_bp4': benign >= 2 and damaging == 0
}
```
---
## Somatic & Disease Association Tools (NEW)
### COSMIC - Somatic Cancer Mutations
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `COSMIC_search_mutations` | Search mutations | `operation="search"`, `terms`, `max_results` |
| `COSMIC_get_mutations_by_gene` | Gene mutations | `operation="get_by_gene"`, `gene`, `genome_build` |
**Example - Check if variant is somatic hotspot**:
```python
# Search for specific mutation
result = tu.tools.COSMIC_search_mutations(
operation="search",
terms="BRAF V600E",
max_results=20
)
# Returns: mutation_id, cancer types, frequency
# Get all mutations for gene (hotspot analysis)
gene_muts = tu.tools.COSMIC_get_mutations_by_gene(
operation="get_by_gene",
gene="BRAF",
max_results=200
)
# Returns: All mutations with cancer type distribution
```
**COSMIC Evidence for ACMG**:
| Finding | ACMG Code | Application |
|---------|-----------|-------------|
| Recurrent somatic hotspot | PS3 | Functional evidence |
| Frequent in COSMIC (>100) | PM1 | Hotspot/functional domain |
| Rare in COSMIC | - | Consider other evidence |
### OMIM - Mendelian Disease Context
**⚠️ Requires**: `OMIM_API_KEY` environment variable
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `OMIM_search` | Search genes/diseases | `operation="search"`, `query`, `limit` |
| `OMIM_get_entry` | Detailed entry | `operation="get_entry"`, `mim_number` |
| `OMIM_get_clinical_synopsis` | Clinical features | `operation="get_clinical_synopsis"`, `mim_number` |
| `OMIM_get_gene_map` | Gene-disease map | `operation="get_gene_map"`, `mim_number` |
**Example - Get gene-disease context**:
```python
# Search for gene in OMIM
search = tu.tools.OMIM_search(
operation="search",
query="BRCA1",
limit=5
)
# Get detailed entry with clinical info
entry = tu.tools.OMIM_get_entry(
operation="get_entry",
mim_number="113705" # BRCA1
)
# Get clinical synopsis for phenotype matching
synopsis = tu.tools.OMIM_get_clinical_synopsis(
operation="get_clinical_synopsis",
mim_number="114480" # Breast-ovarian cancer
)
```
**OMIM Entry Types**:
| Prefix | Type | Example |
|--------|------|---------|
| * | Gene | *113705 (BRCA1) |
| # | Phenotype with known gene | #114480 (BRCA1 cancer) |
| % | Phenotype, unknown molecular basis | Mapped locus only |
| + | Gene and phenotype combined | Historical entries |
### DisGeNET - Gene-Disease Associations
**⚠️ Requires**: `DISGENET_API_KEY` environment variable
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `DisGeNET_search_gene` | Diseases for gene | `operation="search_gene"`, `gene`, `limit` |
| `DisGeNET_search_disease` | Genes for disease | `operation="search_disease"`, `disease` |
| `DisGeNET_get_gda` | Curated associations | `operation="get_gda"`, `gene`, `source`, `min_score` |
| `DisGeNET_get_vda` | Variant-disease | `operation="get_vda"`, `variant` or `gene` |
**Example - Get gene-disease evidence**:
```python
# Gene-disease associations
gda = tu.tools.DisGeNET_search_gene(
operation="search_gene",
gene="BRCA1",
limit=20
)
# Returns: Associated diseases with scores
# High-confidence curated associations
curated = tu.tools.DisGeNET_get_gda(
operation="get_gda",
gene="BRCA1",
source="CURATED",
min_score=0.5
)
# Variant-disease associations
vda = tu.tools.DisGeNET_get_vda(
operation="get_vda",
gene="BRCA1",
limit=30
)
```
**DisGeNET Score for ACMG**:
| Score | Strength | ACMG Code |
|-------|----------|-----------|
| >0.7 | Strong gene-disease | PP4 (phenotype specific) |
| 0.4-0.7 | Moderate evidence | Supporting |
| <0.4 | Weak/Literature only | Insufficient |
---
## Regulatory Context Tools (NEW)
### ChIPAtlas - Transcription Factor Binding
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `ChIPAtlas_enrichment_analysis` | TF binding enrichment | `gene`, `cell_type` |
| `ChIPAtlas_get_peak_data` | ChIP-seq peaks | `gene`, `experiment_type` |
| `ChIPAtlas_search_datasets` | Find experiments | `antigen`, `cell_type` |
**Example - Check TF binding at variant**:
```python
# Get TF binding near gene
tf_binding = tu.tools.ChIPAtlas_enrichment_analysis(
gene="BRCA1",
cell_type="all"
)
# Returns: TFs with binding peaks near gene
# Get specific peaks
peaks = tu.tools.ChIPAtlas_get_peak_data(
gene="BRCA1",
experiment_type="TF"
)
```
**Use for**: Non-coding variants that may disrupt TF binding sites
### ENCODE - Regulatory Elements
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `ENCODE_search_experiments` | Find regulatory data | `assay_title`, `biosample` |
| `ENCODE_get_experiment` | Experiment details | `accession` |
| `ENCODE_get_biosample` | Sample annotations | `accession` |
### Sequence Deep-Learning Variant-Effect Predictors
Predict the functional impact of a non-coding (and, for Evo 2, any) variant directly from sequence — the mechanistic evidence (PS3_supporting / PP3) that SIFT/PolyPhen/AlphaMissense cannot give for non-coding loci. Outputs are Δ (alt − ref) effect sizes, not calibrated probabilities.
| Tool | Predicts | Access |
|------|----------|--------|
| `AlphaGenome_score_variant` | RNA-seq/ATAC/CAGE/splice track Δ (1 Mb, single-base) | hosted API — `ALPHA_GENOME_API_KEY` |
| `run_enformer_variant_effect` | Δ across 5,313 human tracks (196 kb) | remote MCP server |
| `run_borzoi_variant_effect` | RNA-seq coverage Δ (expression/splicing, 524 kb) | remote MCP server |
| `run_chrombpnet_variant_effect` | chromatin accessibility Δ (ATAC/DNase, base-res) | remote MCP server |
| `Evo2_score_variant` | genome-LM delta log-likelihood; coding + non-coding | hosted NIM — `NVIDIA_API_KEY` |
**Inputs**: `AlphaGenome_score_variant` → `chromosome`,`position`,`reference_bases`,`alternate_bases`,`output_type`,`sequence_length`. `Evo2_score_variant` → `sequence`+`position`+`alternate` (or `ref_sequence`/`alt_sequence`), optional `model` (`evo2-40b`/`evo2-7b`). The Enformer/Borzoi/ChromBPNet remote tools take the variant locus. See SKILL.md Phase 2.5 for selection guidance.
**Example - Get regulatory annotations**:
```python
# Search for regulatory data near variant
experiments = tu.tools.ENCODE_search_experiments(
assay_title="ATAC-seq",
biosample="heart"
)
# Returns: Open chromatin experiments
```
**Key ENCODE Assays**:
| Assay | Purpose | Relevance |
|-------|---------|-----------|
| ATAC-seq | Open chromatin | Accessible regions |
| H3K27ac | Active enhancers | Regulatory activity |
| H3K4me3 | Active promoters | Promoter regions |
| CTCF | Insulator binding | Chromatin structure |
---
## Expression Context Tools (NEW)
### CELLxGENE - Single-Cell Expression
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `CELLxGENE_get_expression_data` | Cell-type expression | `gene`, `tissue` |
| `CELLxGENE_get_cell_metadata` | Cell annotations | `gene` |
**Example - Validate tissue expression**:
```python
# Get expression in disease-relevant tissue
expression = tu.tools.CELLxGENE_get_expression_data(
gene="FBN1",
tissue="heart"
)
# Returns: Expression per cell type (cardiomyocytes, fibroblasts, etc.)
```
**Why use it**: Confirms gene is expressed in phenotype-relevant cells
---
## Literature Tools (ENHANCED)
### BioRxiv/MedRxiv - Preprints
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `EuropePMC_search_articles` | Search preprints (bioRxiv/medRxiv) | `query`, `source='PPR'`, `pageSize` |
| `BioRxiv_get_preprint` | Get preprint by DOI | `doi` |
**Example - Search preprints** (bioRxiv/medRxiv don't have search APIs, use EuropePMC):
```python
# Search for recent findings
preprints = tu.tools.EuropePMC_search_articles(
query="BRCA1 variant functional",
source="PPR", # PPR = Preprints only
pageSize=10
)
```
**⚠️ Important**: Always flag preprints as NOT peer-reviewed
### OpenAlex - Citation Analysis
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `openalex_search_works` | Search with citations | `query`, `limit` |
**Example - Get citation counts**:
```python
# Get citation metrics for key paper
work = tu.tools.openalex_search_works(
query="BRCA1 functional study pathogenic",
limit=5
)
# Returns: Papers with cited_by_count, is_oa, etc.
```
### Semantic Scholar - AI-Ranked Search
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `SemanticScholar_search_papers` | AI-ranked search | `query`, `limit` |
**Example**:
```python
papers = tu.tools.SemanticScholar_search_papers(
query="BRCA1 c.5266dupC pathogenic",
limit=15
)
```
---
### Ensembl - Variant Effect Predictor
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `EnsemblVar_get_variant_consequences` | VEP annotations | `variant_id` |
| `ensembl_lookup_gene` | Gene details | `gene_id` |
**Example - Get VEP data**:
```python
result = tu.tools.EnsemblVar_get_variant_consequences(
variant_id="rs28934576"
)
# Returns: Consequence, transcript, SIFT, PolyPhen
```
---
## Disease Association Tools
### OMIM - Gene-Disease Relationships
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `OMIM_search` | Search by gene/disease | `query` |
| `OMIM_get_entry` | Get MIM entry | `mim_number` |
**Example - Get OMIM associations**:
```python
result = tu.tools.OMIM_search(query="BRCA1")
# Returns: MIM#, gene-phenotype relationships, inheritance
```
---
### ClinGen - Gene Validity
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `ClinGen_gene_validity` | Get curation status | `gene` |
| `ClinGen_dosage` | Dosage sensitivity | `gene` |
**Gene Validity Levels**:
| Level | Meaning |
|-------|---------|
| Definitive | Strong evidence, replicated |
| Strong | Considerable evidence |
| Moderate | Some evidence |
| Limited | Minimal evidence |
| Disputed | Conflicting evidence |
| Refuted | Evidence against |
---
## Structural Analysis Tools
### PDB - Experimental Structures
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `PDBe_get_uniprot_mappings` | Find structures | `uniprot_id` |
| `RCSBData_get_entry` | Download PDB | `pdb_id` |
**Example - Get structure**:
```python
# Find PDB structures for TP53
hits = tu.tools.PDBe_get_uniprot_mappings(uniprot_id="P04637")
if hits:
structure = tu.tools.PDB_get_structure(pdb_id=hits[0]['pdb_id'])
```
### AlphaFold - Predicted Structures
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `alphafold_get_prediction` | Get AF DB prediction | `accession` |
| `NvidiaNIM_alphafold2` | Predict de novo | `sequence`, `algorithm` |
**Example - Get AlphaFold structure**:
```python
# From AlphaFold DB
structure = tu.tools.alphafold_get_prediction(accession="P04637")
# Or predict de novo
structure = tu.tools.NvidiaNIM_alphafold2(
sequence=protein_sequence,
algorithm="mmseqs2"
)
```
**pLDDT Interpretation**:
| Score | Confidence | Use for Variant |
|-------|------------|-----------------|
| >90 | Very high | Reliable position assessment |
| 70-90 | High | Reliable |
| 50-70 | Moderate | Use with caution |
| <50 | Low | Likely disordered |
---
### Domain/Function Tools
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `InterPro_get_protein_domains` | Domain annotations | `accession` |
| `UniProt_get_function_by_accession` | Functional sites | `accession` |
**Example - Get domains**:
```python
domains = tu.tools.InterPro_get_protein_domains(accession="P04637")
# Returns: Domain boundaries, types, functions
```
---
## Literature Tools
### PubMed - Literature Search
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `PubMed_search_articles` | Search articles | `query`, `max_results` |
| `PubMed_get_article` | Get abstract | `pmid` |
**Example - Search for functional studies**:
```python
# Gene + variant search
result = tu.tools.PubMed_search_articles(
query="BRCA1 AND c.5266dupC",
max_results=10
)
# Functional studies
result = tu.tools.PubMed_search_articles(
query="BRCA1 AND functional study",
max_results=20
)
```
**Search Strategies**:
| Strategy | Query Pattern |
|----------|---------------|
| Specific variant | `"{GENE} AND ({HGVS} OR {legacy})"` |
| Functional | `"{GENE} AND (functional study OR mutagenesis)"` |
| Clinical | `"{GENE} AND case report AND {phenotype}"` |
| Review | `"{GENE} AND review[pt]"` |
---
## Workflow Code Examples
### Example 1: Complete Variant Annotation
```python
def annotate_variant(tu, variant_hgvs, gene):
"""Complete variant annotation workflow."""
# Phase 1: Get aggregated annotations
annotations = tu.tools.MyVariant_query_variants(
variant_id=variant_hgvs,
fields="clinvar,gnomad,cadd,dbnsfp"
)
# Phase 2: ClinVar detail
clinvar = tu.tools.ClinVar_search_variants(variant=variant_hgvs)
# Phase 3: Population frequency
gnomad = tu.tools.gnomad_search_variants(variant=variant_hgvs)
# Phase 4: Gene context
omim = tu.tools.OMIM_search(query=gene)
# Phase 5: Literature
literature = tu.tools.PubMed_search_articles(
query=f"{gene} AND {variant_hgvs}",
max_results=20
)
return {
'annotations': annotations,
'clinvar': clinvar,
'gnomad': gnomad,
'omim': omim,
'literature': literature
}
```
### Example 2: Structural Analysis for VUS
```python
def structural_analysis_for_vus(tu, gene, uniprot_id, residue_position):
"""Structural analysis for VUS missense variants."""
# Try PDB first
pdb_structures = tu.tools.PDBe_get_uniprot_mappings(uniprot_id=uniprot_id)
if pdb_structures:
# Use best resolution experimental structure
best_pdb = sorted(pdb_structures, key=lambda x: x.get('resolution', 10))[0]
structure = tu.tools.PDB_get_structure(pdb_id=best_pdb['pdb_id'])
structure_source = f"PDB {best_pdb['pdb_id']}"
else:
# Fallback to AlphaFold
structure = tu.tools.alphafold_get_prediction(accession=uniprot_id)
structure_source = "AlphaFold DB"
# Get domain information
domains = tu.tools.InterPro_get_protein_domains(accession=uniprot_id)
# Get functional sites
functions = tu.tools.UniProt_get_function_by_accession(accession=uniprot_id)
# Analyze residue context
analysis = {
'structure_source': structure_source,
'domains': identify_domain(domains, residue_position),
'functional_sites': find_nearby_sites(functions, residue_position),
'pm1_applicable': assess_pm1(domains, functions, residue_position)
}
return analysis
```
### Example 3: ACMG Classification
```python
def calculate_acmg_classification(evidence_codes):
"""Calculate ACMG classification from evidence codes."""
# Count evidence
pathogenic = {
'very_strong': [],
'strong': [],
'moderate': [],
'supporting': []
}
benign = {
'stand_alone': [],
'strong': [],
'supporting': []
}
for code, strength in evidence_codes:
if code.startswith(('PVS', 'PS', 'PM', 'PP')):
# Pathogenic evidence
if strength == 'very_strong':
pathogenic['very_strong'].append(code)
elif strength == 'strong':
pathogenic['strong'].append(code)
elif strength == 'moderate':
pathogenic['moderate'].append(code)
else:
pathogenic['supporting'].append(code)
else:
# Benign evidence
if code == 'BA1':
benign['stand_alone'].append(code)
elif strength == 'strong':
benign['strong'].append(code)
else:
benign['supporting'].append(code)
# Apply ACMG rules
if benign['stand_alone']:
return 'Benign'
if len(benign['strong']) >= 2:
return 'Benign'
vs = len(pathogenic['very_strong'])
s = len(pathogenic['strong'])
m = len(pathogenic['moderate'])
p = len(pathogenic['supporting'])
if (vs >= 1 and (s >= 1 or m >= 1 or m >= 2 or p >= 2)) or \
(s >= 2) or \
(s >= 1 and m >= 3):
return 'Pathogenic'
if (vs >= 1 and m >= 1) or \
(s >= 1 and m >= 1 or m >= 2) or \
(s >= 1 and p >= 2):
return 'Likely Pathogenic'
if len(benign['strong']) >= 1 and len(benign['supporting']) >= 1:
return 'Likely Benign'
return 'VUS'
```
---
## Fallback Chains
### Variant Annotations
| Primary | Fallback 1 | Fallback 2 |
|---------|------------|------------|
| `MyVariant_query_variants` | `ClinVar_search_variants` + `gnomad_search_variants` | Direct database queries |
### Structure
| Primary | Fallback 1 | Fallback 2 |
|---------|------------|------------|
| `PDBe_get_uniprot_mappings` | `alphafold_get_prediction` | `NvidiaNIM_alphafold2` |
### Gene Information
| Primary | Fallback 1 | Fallback 2 |
|---------|------------|------------|
| `OMIM_search` | `NCBIGene_search` | `ensembl_lookup_gene` |
### Literature
| Primary | Fallback 1 |
|---------|------------|
| `PubMed_search_articles` | `EuropePMC_search_articles` |
---
## Common Parameter Mistakes
| Tool | Wrong | Correct |
|------|-------|---------|
| `MyVariant_query_variants` | `id="rs123"` | `variant_id="rs123"` |
| `ClinVar_search_variants` | `gene="BRCA1:c.123"` | `variant="NM_007294.4:c.123A>G"` |
| `gnomad_search_variants` | `variant="c.123A>G"` | `variant="17-41245466-A-G"` |
| `alphafold_get_prediction` | `uniprot="P04637"` | `accession="P04637"` |
---
## ACMG Code Quick Reference
### Pathogenic Codes
| Code | Strength | Trigger |
|------|----------|---------|
| PVS1 | Very Strong | Null in LOF gene |
| PS1 | Strong | Same AA as pathogenic |
| PS2 | Strong | De novo (confirmed) |
| PS3 | Strong | Functional studies |
| PS4 | Strong | Prevalence in affected |
| PM1 | Moderate | Functional domain |
| PM2 | Moderate | Absent from controls |
| PM3 | Moderate | Trans with pathogenic |
| PM4 | Moderate | Protein length change |
| PM5 | Moderate | Novel at known position |
| PM6 | Moderate | De novo (unconfirmed) |
| PP1 | Supporting | Segregation |
| PP2 | Supporting | Low missense rate gene |
| PP3 | Supporting | Computational predictions |
| PP4 | Supporting | Phenotype specific |
| PP5 | Supporting | Reputable source |
### Benign Codes
| Code | Strength | Trigger |
|------|----------|---------|
| BA1 | Stand-alone | MAF >5% |
| BS1 | Strong | High frequency |
| BS2 | Strong | Homozygotes healthy |
| BS3 | Strong | No functional effect |
| BS4 | Strong | No segregation |
| BP1 | Supporting | Missense in LOF gene |
| BP2 | Supporting | Observed trans |
| BP3 | Supporting | In-frame, no function |
| BP4 | Supporting | Benign predictions |
| BP5 | Supporting | Alternate explanation |
| BP6 | Supporting | Reputable source |
| BP7 | Supporting | Synonymous |
---
## Quality Thresholds
### Computational Predictions (Updated)
| Predictor | Damaging | Uncertain | Benign |
|-----------|----------|-----------|--------|
| **AlphaMissense** | >0.564 | 0.34-0.564 | <0.34 |
| **CADD PHRED** | ≥20 | 15-20 | <15 |
| **EVE** | >0.5 | - | ≤0.5 |
| SIFT | <0.05 | 0.05-0.15 | >0.15 |
| PolyPhen-2 | >0.85 | 0.15-0.85 | <0.15 |
| REVEL | >0.75 | 0.5-0.75 | <0.5 |
**Recommended Order of Use**:
1. AlphaMissense (highest accuracy for missense, ~90%)
2. CADD (works for all variant types)
3. EVE (unsupervised, complements AlphaMissense)
4. SIFT/PolyPhen (legacy, for comparison)
### Concordance for PP3/BP4
| Predictors Agreeing | ACMG Application |
|---------------------|------------------|
| All damaging (≥3) | PP3 (supporting pathogenic) |
| All benign (≥3) | BP4 (supporting benign) |
| Mixed | Neither |
---
## Rate Limits
| Tool | Limit |
|------|-------|
| NVIDIA NIM tools | 40 RPM |
| PubMed | 3 requests/second |
| Ensembl | 15 requests/second |
Handle with appropriate delays between calls.