
Tooluniverse Variant Interpretation
- 305 installs
- 1.6k repo stars
- Updated August 4, 2026
- mims-harvard/tooluniverse
tooluniverse-variant-interpretation is a Claude Code agent skill that runs ACMG-classified genomic variant interpretation from VCF or HGVS input through Harvard ToolUniverse clinical databases and predictors for develope
About
tooluniverse-variant-interpretation is a Claude Code skill from Harvard MIMS ToolUniverse that guides agents through six workflow phases: variant identity, clinical databases, regulatory context, computational predictions, structural analysis, and ACMG classification. The skill queries ClinVar, gnomAD, CIViC, COSMIC, and MyVariant for 15+ pathogenicity predictors, then applies AlphaFold2, SpliceAI, and five regulatory deep-learning models for non-coding variants. Developers reach for tooluniverse-variant-interpretation when annotating VCF files, classifying VUS variants, or producing clinical-grade interpretation reports with cited ACMG/AMP 2015 evidence codes from coding workflows.
- Genomic variant clinical interpretation
- Harvard MIMS ToolUniverse integration
- Agent-callable biomedical research tools
- Pathogenicity and annotation querying
- Bioinformatics-focused skill pattern
Tooluniverse Variant Interpretation by the numbers
- 305 all-time installs (skills.sh)
- +5 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #2,276 of 16,546 AI & Agent Building 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-variant-interpretationAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 305 |
|---|---|
| repo stars | ★ 1.6k |
| Last updated | August 4, 2026 |
| Repository | mims-harvard/tooluniverse ↗ |
How do you ACMG-classify a genomic variant from VCF?
Wire Claude Code agents to Harvard MIMS ToolUniverse for genomic variant interpretation—pathogenicity, clinical significance, and gene-disease links from coding workflows.
Who is it for?
Bioinformatics engineers and clinical informatics developers wiring ToolUniverse MCP tools into agent-driven variant annotation pipelines.
Skip if: Developers who need general-purpose API scaffolding or frontend dashboards without genomic variant data and ToolUniverse MCP access.
When should I use this skill?
A user asks to interpret, classify, or assess pathogenicity of a genomic variant, VCF record, or HGVS notation using clinical databases.
What you get
ACMG-classified variant interpretation report with evidence codes, population frequencies, predictor consensus, and clinical recommendations in Markdown.
- ACMG-classified variant interpretation report
- Evidence code breakdown with cited databases
By the numbers
- Runs a 6-phase workflow from variant identity through ACMG classification
- Retrieves 15+ pathogenicity predictor scores from MyVariant in a single call
- Supports 5 regulatory deep-learning models for non-coding variant scoring
Files
Clinical Variant Interpreter
Systematic variant interpretation using ToolUniverse - from raw variant calls to ACMG-classified clinical recommendations with structural impact analysis.
Triggers
Use this skill when users:
- Ask about variant interpretation, classification, or pathogenicity
- Have VCF data needing clinical annotation
- Need ACMG classification for variants
- Want structural impact analysis for missense variants
Key Principles
1. ACMG-Guided - Follow ACMG/AMP 2015 guidelines with explicit evidence codes 2. Structural Evidence - Use AlphaFold2 for novel structural impact analysis 3. Population Context - gnomAD frequencies with ancestry-specific data 4. Actionable Output - Clear recommendations, not just classifications 5. English-first queries - Always use English terms in tool calls; respond in user's language
---
LOOK UP, DON'T GUESS
When asked about a variant's significance, query ClinVar/gnomAD/CIViC FIRST. Never classify a variant without checking databases. 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.
---
Workflow Overview
Phase 1: VARIANT IDENTITY → Normalize HGVS, map gene/transcript/consequence
Phase 2: CLINICAL DATABASES → ClinVar, gnomAD, OMIM, ClinGen, COSMIC, SpliceAI
Phase 2.5: REGULATORY CONTEXT → ChIPAtlas, ENCODE (non-coding variants only)
Phase 3: COMPUTATIONAL PREDICTIONS → CADD, AlphaMissense, EVE, SIFT/PolyPhen
Phase 4: STRUCTURAL ANALYSIS → PDB/AlphaFold2, domains, functional sites (VUS/novel)
Phase 4.5: EXPRESSION CONTEXT → CELLxGENE, GTEx tissue expression
Phase 5: LITERATURE EVIDENCE → PubMed, EuropePMC, BioRxiv, MedRxiv
Phase 6: ACMG CLASSIFICATION → Evidence codes, classification, recommendations---
Phase 1: Variant Identity
Tools: MyVariant_query_variants, EnsemblVar_get_variant_consequences, NCBIGene_search, VariantValidator_gene2transcripts, VariantValidator_validate_variant, Tark_get_mane_transcripts, Tark_get_transcript
VariantValidator_gene2transcripts: Look up MANE Select and MANE Plus Clinical transcripts for a gene. Use this to identify the correct canonical transcript before variant annotation.
- Parameters:
gene_symbol(e.g. "TP53"),transcript_set("mane" | "refseq" | "ensembl" | "all"),genome_build("GRCh38" default) - Returns: Array of
{current_symbol, transcripts: [{reference, annotations: {mane_select, mane_plus_clinical}}]} - Aliases:
geneandgene_namealso accepted forgene_symbol
Tark_get_mane_transcripts: Lightweight MANE Select / MANE Plus Clinical lookup from Ensembl Tark with the ENST↔RefSeq pairing (e.g. gene="BRCA2" → ENST00000380152.8 / NM_000059.4). Use as a quick cross-check of the canonical transcript namespace alongside VariantValidator, or to translate an ENST↔NM accession. Tark_get_transcript (param stable_id, e.g. "ENST00000380152") returns the archived transcript record (assembly, biotype, coordinates, per-release versions) when you need to resolve a specific transcript version.
VariantValidator_validate_variant: Validate HGVS variant descriptions and get normalized notation with genomic/transcript/protein consequences.
- Parameters:
genome_build("GRCh37" | "GRCh38"),variant_description(HGVS, e.g. "NM_007294.4:c.5266dup"),select_transcripts(transcript or "all") - Returns: Validated HGVS, protein consequence, genomic coordinates, gene IDs
Capture: HGVS notation (c. and p.), gene symbol, canonical transcript (MANE Select via VariantValidator), consequence type, amino acid change, exon/intron location.
Phase 2: Clinical Databases
Tools: ClinVar_search_variants, gnomad_search_variants, gnomad_get_variant, OMIM_search, OMIM_get_entry, ClinGen_search_gene_validity, ClinGen_search_dosage_sensitivity, ClinGen_search_actionability, COSMIC_search_mutations, COSMIC_get_mutations_by_gene, DisGeNET_search_gene, DisGeNET_get_vda, SpliceAI_predict_splice, SpliceAI_get_max_delta, civic_get_variants_by_gene, civic_search_evidence_items, civic_search_assertions
gnomAD two-step workflow:gnomad_search_variantsonly accepts rsIDs or variant IDs (not gene names). Search by rsID first, then use the returnedvariant_idwithgnomad_get_variantto get population allele frequencies.
>
CIViC: Usecivic_search_genes(query="<gene_symbol>")to find the CIViC gene ID dynamically (do NOT rely on a hardcoded lookup table). Then usecivic_get_variants_by_gene(gene_id=<id>)andcivic_search_evidence_itemsfor actionability details. Ifcivic_search_genesreturns no results, the gene may not be curated in CIViC — note this gap.
>
OncoKB note: Demo mode only supports BRAF, TP53, ROS1. For other genes, set ONCOKB_API_TOKEN environment variable.Use SpliceAI for: intronic variants near splice sites, synonymous variants, exonic variants near splice junctions.
See CODE_PATTERNS.md for implementation details.
Phase 2.5: Regulatory Context (Non-Coding Only)
Apply for intronic (non-splice), promoter, UTR, or intergenic variants near disease genes.
Tools: ChIPAtlas_enrichment_analysis, ChIPAtlas_get_peak_data, ENCODE_search_experiments, ENCODE_get_experiment
Phase 2.9: Short-Circuit Check
Before full ACMG classification, check if the variant already has an expert panel classification in ClinVar. Use MyVariant_query_variants with the rsID or HGVS notation — the clinvar field in the response includes clinical significance, review status, and RCV records. If an expert panel has already classified the variant as Pathogenic or Benign, note this prominently and focus on confirming/contextualizing rather than de novo classification.
Phase 3: Computational Predictions
Primary approach: MyVariant_query_variants with fields=dbnsfp,clinvar,cadd,gnomad_genome retrieves 15+ predictor scores (SIFT, PolyPhen, CADD, REVEL, AlphaMissense, MetaRNN, FATHMM, GERP, PhyloP, etc.) in a single call. This is usually sufficient.
REVEL/AlphaMissense fallback: If MyVariant_query_variants returns no dbnsfp block, use the dedicated tool: 1. `MyVariant_get_pathogenicity_scores` (PREFERRED FALLBACK) — returns REVEL, AlphaMissense, SIFT, PolyPhen2, MetaRNN, GERP, PhyloP, and more in a single call with pre-configured dbnsfp fields. Input: variant_id (rsID or HGVS genomic). 2. CADD_get_variant_score (PHRED 0-99) — works for most variants 3. AlphaMissense_get_variant_score (0-1, needs UniProt ID) — missense only 4. EVE_get_variant_score (0-1) — missense only 5. EnsemblVEP_annotate_hgvs (VEP with colocated variants) — includes SIFT/PolyPhen 6. If REVEL is still unavailable, note this as a limitation and rely on CADD + SIFT + PolyPhen consensus. REVEL absence does not prevent classification.
Consensus: Run CADD (all variants) + AlphaMissense + EVE (missense). 2+ concordant damaging = strong PP3; 2+ concordant benign = strong BP4.
See ACMG_CLASSIFICATION.md for thresholds.
Phase 4: Structural Analysis (VUS/Novel Missense)
Tools: PDBe_get_uniprot_mappings, NvidiaNIM_alphafold2 (requires NVIDIA_API_KEY env var; free key at build.nvidia.com), alphafold_get_prediction (param: qualifier, e.g., UniProt accession), InterPro_get_protein_domains, UniProt_get_function_by_accession
Workflow: Get structure -> map residue -> assess domain/functional site -> predict destabilization.
AlphaFold size limitation: Very large proteins (>2,700 aa, e.g., BRCA2 at 3,418 aa) may not have AlphaFold predictions via the standard API. Fall back to published structural studies or PDBe_get_uniprot_mappings for experimental structures.Phase 4.2: Mechanism of Effect (VUS missense, ESMC-6B SAE)
AlphaMissense / REVEL / CADD give a pathogenicity score but no mechanism. When you need to answer "how does this variant disrupt protein function" — e.g. for VUS write-ups, clinical reports, or to triangulate a discordant predictor consensus — use the ESMC-6B Sparse Autoencoder to identify which interpretable protein-language-model features the mutation disrupts.
One-call mechanism summary (recommended starting point):
mech = tu.tools.ESM_explain_variant_mechanism(
sequence=wt_aa_sequence, # full reference protein sequence
position=600, # 1-indexed
ref_aa="V",
alt_aa="E",
top_k_features=5, # describe top 5 lost + top 5 gained
)
# mech["data"]["mechanism_summary"] e.g.:
# "Disrupted feature categories (lost): catalytic=2, ligand-binding=1;
# Induced feature categories (gained): structural-stability=1"Returns mechanism_summary, per-feature lost/gained tables, and category aggregates. Use the category aggregate to support or qualify the pathogenicity verdict in the report:
catalytic/ligand-binding/ptmlost → mechanistic support for PP3secondary-structure/structural-stabilitygained on a stable WT region → mechanistic basis for "destabilizing" claim- No interpretable change at top-K → does not weaken AlphaMissense alone, but flag for caution
When you have a saturation question (e.g. "score all 19 substitutions at residue 600 to find the most disruptive"): use ESM_score_variant_sae_batch — 1 Forge call for the reference + 1 per variant, instead of 2 per variant.
When the region is what matters (e.g. "what's the SAE signature of the kinase activation loop, residues 754-771"): use ESM_get_region_sae_features then ESM_describe_sae_feature on the top hits.
Requires: ESM_API_KEY env var (free non-commercial token at https://forge.evolutionaryscale.ai) and pip install 'esm @ git+https://github.com/evolutionaryscale/esm@ee891c52' (SAE support is on an unmerged feature branch — PyPI esm 3.2.x does NOT include SAEConfig). License: EvolutionaryScale Cambrian Inference License — non-commercial use only.
Phase 4.5: Expression Context
Tools: CELLxGENE_get_expression_data, CELLxGENE_get_cell_metadata, GTEx_get_median_gene_expression
Confirms gene expression in disease-relevant tissues. Supports PP4 if highly restricted; challenges classification if not expressed in affected tissue.
Phase 5: Literature Evidence
Tools: PubMed_search_articles, EuropePMC_search_articles, BioRxiv_list_recent_preprints, MedRxiv_get_preprint, openalex_search_works, SemanticScholar_search_papers
Always flag preprints as NOT peer-reviewed.
Phase 6: ACMG Classification
Apply all relevant evidence codes (PVS1, PS1, PS3, PM1, PM2, PM5, PP3, PP5 for pathogenic; BA1, BS1, BS3, BP4, BP7 for benign). See ACMG_CLASSIFICATION.md for the complete algorithm.
Gene-Specific Population Frequency Thresholds
BS1 (allele frequency too high for disorder) requires gene-specific calibration, not a universal cutoff:
- High-penetrance genes (BRCA1, TP53): BS1 threshold ~0.0001
- Moderate-penetrance genes (PALB2, ATM, CHEK2): BS1 threshold ~0.001
- Low-penetrance/common disease genes: BS1 threshold higher, depends on disease prevalence
- Formula: BS1 threshold = (disease prevalence × max allelic contribution × max genetic contribution) / penetrance
- When in doubt, compare the variant's AF to the highest AF of any known pathogenic variant in the same gene — if it exceeds that, BS1 is likely applicable.
Handling Conflicting Evidence: Functional vs Epidemiological
This is one of the most challenging scenarios in variant interpretation. When a biochemical assay shows damage but population/epidemiological data shows no disease association:
1. Epidemiological data generally trumps in-vitro assays for clinical classification. A variant found at ~0.1% frequency with no disease association in 40K+ cases is unlikely to be clinically significant, even if it reduces protein function in a tube. 2. Apply PS3/BS3 carefully: ClinGen's SVI recommends that PS3 (functional evidence for pathogenicity) requires the assay to be validated against known pathogenic AND known benign controls. A single biochemical study without such validation is PS3_Supporting at best. 3. Hypomorphic variants: Some variants genuinely reduce protein function (detectable in sensitive assays) but not enough to cause disease. This is biologically real and does not make them pathogenic. 4. Document the conflict explicitly in the report. State: "Biochemical assay X shows [result], but case-control study Y with N cases found no significant disease association. Per ACMG guidelines, the epidemiological evidence is weighted more heavily for clinical classification."
Bayesian ACMG Point System (Tavtigian et al. 2018)
Modern clinical labs use a point-based system instead of the original rule-counting approach:
| Evidence Level | Pathogenic Points | Benign Points |
|---|---|---|
| Very Strong (PVS1) | +8 | -- |
| Strong (PS1-PS4) | +4 each | -4 each (BS1-BS4) |
| Moderate (PM1-PM6) | +2 each | -- |
| Supporting (PP1-PP5) | +1 each | -1 each (BP1-BP7) |
| Stand-alone (BA1) | -- | -8 |
Classification by total points:
- Pathogenic: >= 10 points
- Likely Pathogenic: 6-9 points
- VUS: -5 to 5 points
- Likely Benign: -6 to -9 points
- Benign: <= -10 points
This system handles conflicting evidence naturally — a variant with PS3 (+4) and BS1 (-4) and BP4 (-1) nets -1, which is VUS. The original rule-based approach struggles with this scenario.
Computational procedure: ACMG Bayesian classification
# Automated ACMG point calculation
# Input: dict of evidence codes with their applied strength
def classify_acmg(evidence: dict) -> dict:
"""
Classify a variant using the Bayesian ACMG point system.
Args:
evidence: dict mapping ACMG codes to strength levels.
Pathogenic codes: 'very_strong', 'strong', 'moderate', 'supporting'
Benign codes: 'stand_alone', 'strong', 'supporting'
Example:
evidence = {
'BS1': 'strong', # AF too high
'BS3': 'supporting', # Epidemiological evidence against pathogenicity
'BP6': 'supporting', # ClinVar benign consensus
'PP3': 'supporting', # Computational predictors say damaging
}
"""
pathogenic_points = {
'very_strong': 8, 'strong': 4, 'moderate': 2, 'supporting': 1
}
benign_points = {
'stand_alone': -8, 'strong': -4, 'supporting': -1
}
total = 0
details = []
for code, strength in evidence.items():
if code.startswith(('PVS', 'PS', 'PM', 'PP')):
pts = pathogenic_points.get(strength, 0)
elif code.startswith(('BA', 'BS', 'BP')):
pts = benign_points.get(strength, 0)
else:
pts = 0
total += pts
details.append(f"{code} ({strength}): {pts:+d}")
if total >= 10:
classification = "Pathogenic"
elif 6 <= total <= 9:
classification = "Likely Pathogenic"
elif -5 <= total <= 5:
classification = "VUS"
elif -9 <= total <= -6:
classification = "Likely Benign"
else:
classification = "Benign"
return {
'classification': classification,
'total_points': total,
'evidence_breakdown': details
}
# Example: PALB2 c.2816T>G (from test case)
result = classify_acmg({
'BS1': 'strong', # gnomAD AF 0.00105 exceeds threshold
'BS3': 'supporting', # Case-control study shows no association
'BP6': 'supporting', # ClinVar 13 submitters say benign/likely benign
})
# Output: Likely Benign, total_points=-6, evidence: BS1(strong):-4, BS3(supporting):-1, BP6(supporting):-1Use this procedure after collecting all evidence from Phases 1-5 to compute the final classification.
Gene-Specific VCEP Criteria
ClinGen Variant Curation Expert Panels (VCEPs) publish gene-specific ACMG modifications. Before classifying, check if a VCEP exists:
ClinGen_search_gene_validity(gene="<gene_symbol>")— if validity is "Definitive" or "Strong", a VCEP likely exists- Common VCEPs: BRCA1/2 (Enigma), TP53, PTEN, CDH1, PALB2, RASopathies, Lynch syndrome genes
- VCEP criteria override generic ACMG criteria (e.g., PALB2 VCEP has specific PM1 hotspot regions)
Predictor Weighting
Not all computational predictors are equal. For missense variants:
- REVEL (AUC ~0.95) — best single meta-predictor; weight highest
- AlphaMissense (AUC ~0.94) — strong, structure-aware
- CADD (AUC ~0.85) — good for all variant types, but less specific for missense
- SIFT/PolyPhen (AUC ~0.80) — legacy tools; useful for consensus but not individually decisive
When predictors disagree: if REVEL says tolerated but SIFT/PolyPhen say damaging, lean toward REVEL. If REVEL is unavailable, require 3+ concordant predictions for PP3/BP4.
Tool Failure Fallbacks
If a primary tool fails, use these alternatives:
- ClinVar_search_variants returns 0 results: Use
MyVariant_query_variantswith rsID or HGVS — theclinvarfield in MyVariant is more reliable for variant lookup than NCBI Entrez search - gnomad_search_variants fails: Use
EnsemblVEP_annotate_hgvswhich includes gnomAD frequency via colocated variants - CADD_get_variant_score fails: CADD PHRED is also available in the
dbnsfpblock from MyVariant - AlphaFold prediction unavailable (large proteins >2700aa): Use
PDBe_get_uniprot_mappingsfor experimental structures
---
Special Scenarios
Novel Missense VUS: Check PM5 (other pathogenic at same residue), get AlphaFold2 structure, apply PM1/PP3 as appropriate.
Truncating Variant: Check LOF mechanism, NMD escape, alternative isoforms, ClinGen LOF curation. Apply PVS1 at appropriate strength.
Splice Variant: Run SpliceAI, assess canonical splice distance, in-frame skipping potential. Apply PP3/BP7 based on scores.
---
Output Structure
# Variant Interpretation Report: {GENE} {VARIANT}
## Executive Summary
## 1. Variant Identity
## 2. Population Data
## 3. Clinical Database Evidence
## 4. Computational Predictions
## 5. Structural Analysis
## 6. Literature Evidence
## 7. ACMG Classification
## 8. Clinical Recommendations
## 9. Limitations & Uncertainties
## Data SourcesFile naming: {GENE}_{VARIANT}_interpretation_report.md
---
Clinical Recommendations
Pathogenic/Likely Pathogenic: Enhanced screening, risk-reducing options, drug dosing adjustment, reproductive counseling, family cascade screening.
VUS: Do not use for medical decisions. Reinterpret in 1-2 years. Pursue functional studies and segregation data.
Benign/Likely Benign: Not expected to cause disease. No cascade testing needed.
---
Quantified Minimums
| Section | Requirement |
|---|---|
| Population frequency | gnomAD overall + at least 3 ancestry groups |
| Predictions | At least 3 computational predictors |
| Literature search | At least 2 search strategies |
| ACMG codes | All applicable codes listed |
---
Cross-Skill References
For amino acid properties at variant position, run: python3 skills/tooluniverse-sequence-analysis/scripts/amino_acids.py --type amino_acid --code X
---
References
ACMG_CLASSIFICATION.md- Evidence codes, classification algorithm, prediction thresholds, structural/regulatory impact tablesCODE_PATTERNS.md- Reusable code patterns for each workflow phaseCHECKLIST.md- Pre-delivery verificationEXAMPLES.md- Sample interpretationsTOOLS_REFERENCE.md- Tool parameters and fallbacks
ACMG Classification Reference
Evidence Codes
Pathogenic Evidence
| Code | Strength | Description |
|---|---|---|
| PVS1 | Very Strong | Null variant in gene where LOF is mechanism |
| PS1 | Strong | Same amino acid change as known pathogenic |
| PS3 | Strong | Well-established functional studies |
| PM1 | Moderate | Mutational hot spot / functional domain |
| PM2 | Moderate | Absent from controls |
| PM5 | Moderate | Different missense at same residue as pathogenic |
| PP3 | Supporting | Multiple computational predictions |
| PP5 | Supporting | Reputable source reports pathogenic |
Benign Evidence
| Code | Strength | Description |
|---|---|---|
| BA1 | Stand-alone | MAF >5% |
| BS1 | Strong | MAF greater than expected |
| BS3 | Strong | Functional studies show no effect |
| BP4 | Supporting | Multiple computational predictions benign |
| BP7 | Supporting | Synonymous with no splice impact |
Classification Algorithm
| Classification | Evidence Required |
|---|---|
| Pathogenic | 1 Very Strong + 1 Strong; OR 2 Strong; OR 1 Strong + 3 Moderate |
| Likely Pathogenic | 1 Very Strong + 1 Moderate; OR 1 Strong + 2 Moderate; OR 1 Strong + 2 Supporting |
| Likely Benign | 1 Strong + 1 Supporting; OR 2 Supporting |
| Benign | 1 Stand-alone; OR 2 Strong |
| VUS | Criteria not met |
Classification Confidence
| Symbol | Classification | Evidence Level |
|---|---|---|
| 3 stars | High confidence | Multiple independent lines |
| 2 stars | Moderate confidence | Some supporting evidence |
| 1 star | Limited confidence | Minimal evidence |
| VUS | Uncertain | Insufficient data |
ClinVar Classification Map
| ClinVar | Interpretation |
|---|---|
| Pathogenic | Disease-causing |
| Likely pathogenic | 90%+ confidence pathogenic |
| VUS | Uncertain significance |
| Likely benign | 90%+ confidence benign |
| Benign | Not disease-causing |
| Conflicting | Multiple interpretations |
gnomAD Frequency Thresholds (Rare Disease)
| Frequency | ACMG Code | Interpretation |
|---|---|---|
| Absent | PM2_Supporting | Absent from controls |
| <0.00001 | PM2_Supporting | Extremely rare |
| <0.0001 | - | Rare (use with caution) |
| >0.01 | BS1/BA1 | Too common for rare disease |
COSMIC Somatic Evidence
| COSMIC Finding | Interpretation | ACMG Support |
|---|---|---|
| Recurrent hotspot (>100 samples) | Known oncogenic driver | PS3 (functional) |
| Moderate frequency (10-100) | Likely oncogenic | PM1 (hotspot) |
| Rare somatic (<10) | Unknown significance | No support |
DisGeNET Score Interpretation
| GDA Score | Evidence Level | ACMG Support |
|---|---|---|
| >0.7 | Strong | PP4 (phenotype) |
| 0.4-0.7 | Moderate | Supporting |
| <0.4 | Weak | Insufficient |
ClinGen Validity Levels (for ACMG PM1/PP4)
| Classification | Meaning | ACMG Impact |
|---|---|---|
| Definitive | Multiple concordant studies | Strong gene-disease support |
| Strong | Extensive evidence | Moderate-strong support |
| Moderate | Some evidence | Moderate support |
| Limited | Minimal evidence | Weak support, use caution |
| Disputed | Conflicting evidence | Do not use for classification |
| Refuted | Evidence against | Gene NOT associated |
ClinGen Dosage Sensitivity Scores (for CNV interpretation)
| Score | Meaning | Interpretation |
|---|---|---|
| 3 | Sufficient evidence | Haploinsufficiency/triplosensitivity established |
| 2 | Emerging evidence | Some support, not definitive |
| 1 | Little evidence | Minimal support |
| 0 | No evidence | Unknown |
Structural Impact Categories
| Impact Level | Description | ACMG Support |
|---|---|---|
| Critical | Active site, catalytic residue | PM1 (strong) |
| High | Buried residue, disulfide, structural core | PM1 (moderate) |
| Moderate | Domain interface, binding site | PM1 (supporting) |
| Low | Surface, flexible region | No support |
Structural Impact Confidence (AlphaFold pLDDT)
| pLDDT Range | Interpretation |
|---|---|
| >90 | Very high confidence in position |
| 70-90 | High confidence |
| 50-70 | Moderate (often loops) |
| <50 | Low confidence (disorder) |
Prediction Thresholds
| Predictor | Damaging | Benign |
|---|---|---|
| AlphaMissense | >0.564 | <0.34 |
| CADD PHRED | >=20 (top 1%) | <15 |
| EVE | >0.5 | <=0.5 |
| SIFT | <0.05 | >=0.05 |
| PolyPhen2 | >0.85 (probably) | <0.15 (benign) |
PP3/BP4 Application Notes
- PP3: Multiple concordant damaging predictions (AlphaMissense + CADD + EVE agreement = strong PP3)
- BP4: Multiple concordant benign predictions
- Note: AlphaMissense alone achieves ~90% accuracy on ClinVar pathogenic variants
SpliceAI Thresholds
| Max Delta Score | Interpretation | ACMG Support |
|---|---|---|
| >=0.8 | High pathogenicity | PP3 (strong) for splice-altering |
| 0.5-0.8 | Moderate | PP3 (supporting) |
| 0.2-0.5 | Low | Weak evidence |
| <0.2 | Likely benign | BP7 (if synonymous) |
Literature Evidence Weights
| Evidence | ACMG Code | Weight |
|---|---|---|
| Functional study (null) | PS3 | Strong |
| Functional study (reduced) | PS3_Moderate | Moderate |
| Case reports with segregation | PP1 | Supporting to Moderate |
| Co-occurrence with pathogenic | BP2 | Supporting against |
Regulatory Impact Categories
| Category | Criteria | ACMG Support |
|---|---|---|
| High impact | Disrupts known TF binding motif | PP3 (supporting) |
| Moderate impact | In active regulatory region | Consider context |
| Low impact | No regulatory annotation | No support |
PVS1 Application for Truncating Variants
| Scenario | PVS1 Strength |
|---|---|
| Canonical LOF gene, NMD predicted | Very Strong |
| LOF gene, last exon | Moderate |
| Non-LOF gene | Not applicable |
Clinical Variant Interpreter Checklist
Pre-delivery verification checklist for variant interpretation reports.
Report Quality Checklist
Structure & Format
- [ ] Report file created:
{GENE}_{VARIANT}_interpretation_report.md - [ ] All 9 main sections present
- [ ] Executive summary completed (not
[Interpreting...]) - [ ] Data sources section populated
Phase 1: Variant Identity
- [ ] Gene symbol identified
- [ ] HGVS c. notation provided
- [ ] HGVS p. notation (if applicable)
- [ ] Transcript ID (MANE Select preferred)
- [ ] Consequence type identified
- [ ] Exon/intron location stated
- [ ] Amino acid change (for missense)
Phase 2: Population Data
- [ ] gnomAD queried
- [ ] Overall allele frequency reported
- [ ] ≥3 ancestry-specific frequencies
- [ ] Homozygote count reported
- [ ] Hemizygote count (X-linked genes)
- [ ] Frequency interpreted vs. disease prevalence
Phase 3: Clinical Database Evidence
- [ ] ClinVar searched
- [ ] Classification reported (or "Not in ClinVar")
- [ ] Review status noted (gold stars)
- [ ] Number of submissions documented
- [ ] Conflicting interpretations noted (if any)
- [ ] OMIM gene-disease associations checked
- [ ] ClinGen gene validity (if available)
Phase 4: Computational Predictions
- [ ] ≥3 predictors reported
- [ ] SIFT score and interpretation
- [ ] PolyPhen-2 score and interpretation
- [ ] CADD score (raw and phred)
- [ ] Concordance assessed (agree/disagree)
- [ ] PP3 or BP4 applied appropriately
Phase 5: Structural Analysis (for missense)
- [ ] Protein structure source identified (PDB/AlphaFold)
- [ ] pLDDT at variant position (if AlphaFold)
- [ ] Residue location (buried/surface)
- [ ] Secondary structure context
- [ ] Domain/functional site proximity
- [ ] PM1 consideration documented
Phase 6: Literature Evidence
- [ ] PubMed searched with ≥2 strategies
- [ ] Functional studies documented (or "None found")
- [ ] Case reports documented
- [ ] PS3 consideration documented
- [ ] PP1 (segregation) documented if available
Phase 7: ACMG Classification
- [ ] All evidence codes explicitly listed
- [ ] Each code has strength modifier
- [ ] Code justification provided
- [ ] Classification calculated correctly
- [ ] Classification stated in executive summary
Phase 8: Clinical Recommendations
- [ ] Recommendations appropriate to classification
- [ ] VUS: No medical decisions
- [ ] Pathogenic: Specific follow-up
- [ ] Family screening addressed
Phase 9: Limitations
- [ ] Missing data acknowledged
- [ ] Conflicting evidence noted
- [ ] Uncertainty quantified
---
Citation Requirements
Every Evidence Statement Must Include
- [ ] Source database/tool in backticks
- [ ] Specific identifier (ClinVar ID, PMID)
- [ ] Date of access (for changing databases)
Format Examples
*Source: ClinVar VCV000012345, reviewed 4-star, accessed 2026-02-04*
*Source: gnomAD v4.0, overall AF=0.00001, accessed 2026-02-04*
*Source: PMID 12345678 - functional study showed loss of activity*
*Source: AlphaFold DB via `alphafold_get_prediction`, pLDDT=92 at position*---
ACMG Code Verification
For Each Code Applied
- [ ] Code abbreviation correct (PVS1, PM2, PP3, etc.)
- [ ] Strength appropriate (VeryStrong/Strong/Moderate/Supporting)
- [ ] Evidence clearly supports application
- [ ] Not double-counted
Common Errors to Avoid
- [ ] PM2 without checking gnomAD
- [ ] PP3 without multiple concordant predictions
- [ ] PVS1 for non-null variants
- [ ] PS3 without true functional evidence
- [ ] Applying same evidence to multiple codes
---
Classification Calculation
Verify Math
| Classification | Minimum Evidence |
|---|---|
| Pathogenic | ≥1 VeryStrong + ≥1 Strong/Moderate |
| Likely Pathogenic | ≥1 Strong + ≥2 Moderate |
| VUS | Insufficient evidence |
| Likely Benign | ≥1 Strong + ≥1 Supporting (benign) |
| Benign | ≥1 StandAlone OR ≥2 Strong (benign) |
Classification Cross-Check
- [ ] Evidence codes align with final classification
- [ ] No conflicting codes ignored
- [ ] Classification matches standard algorithms
---
Evidence Grading
All Classifications Must Have
- [ ] Classification tier: ★★★, ★★☆, ★☆☆, or VUS
- [ ] Evidence strength description
- [ ] Key supporting evidence highlighted
Tier Definitions
| Tier | Symbol | Criteria |
|---|---|---|
| High confidence | ★★★ | Multiple independent lines, no conflicts |
| Moderate confidence | ★★☆ | Good evidence, minor gaps |
| Limited confidence | ★☆☆ | Minimal evidence, apply with caution |
| Uncertain | VUS | Insufficient to classify |
---
Quantified Minimums
| Section | Minimum Requirement |
|---|---|
| Population frequencies | gnomAD + ≥3 ancestry groups |
| Computational predictors | ≥3 tools |
| Literature searches | ≥2 search strategies |
| ACMG codes | All applicable documented |
| Clinical recommendations | ≥1 per classification type |
---
Structural Analysis Quality (for Missense)
Must Include
- [ ] Structure source (PDB ID or "AlphaFold predicted")
- [ ] pLDDT at position (if AlphaFold)
- [ ] Residue depth/accessibility
- [ ] Structural consequence prediction
Quality Thresholds
| Metric | Confident | Uncertain |
|---|---|---|
| pLDDT | >70 | <70 |
| PDB Resolution | <3.0 Å | >3.0 Å |
---
Special Scenario Checks
Truncating Variants
- [ ] NMD prediction assessed
- [ ] LOF mechanism confirmed for gene
- [ ] PVS1 strength correctly applied
- [ ] Last exon exception considered
Splice Variants
- [ ] Canonical splice site distance
- [ ] SpliceAI scores (if available)
- [ ] In-frame skip assessment
- [ ] PVS1 modified if warranted
X-linked Genes
- [ ] Sex of individual considered
- [ ] Hemizygote frequency used appropriately
- [ ] Penetrance in females addressed
---
Output Files
Required
- [ ]
{GENE}_{VARIANT}_interpretation_report.md- Main report
Optional Data Export
- [ ]
{GENE}_{VARIANT}_evidence_table.csv- Structured evidence - [ ]
{GENE}_{VARIANT}_acmg_codes.csv- Applied codes
---
Final Review
Before Delivery
- [ ] No
[Interpreting...]placeholders remaining - [ ] All tables properly formatted
- [ ] Executive summary synthesizes findings
- [ ] Classification stated prominently
- [ ] Clinical recommendations actionable
- [ ] Limitations clearly stated
Common Issues to Avoid
- [ ] Missing gnomAD frequencies
- [ ] Classification without evidence codes
- [ ] Recommendations not matching classification
- [ ] Missing literature search
- [ ] Structure analysis skipped for VUS missense
- [ ] ACMG codes without justification
---
ClinVar-Specific Checks
When Variant in ClinVar
- [ ] VCV ID documented
- [ ] Review status (stars) noted
- [ ] Number of submitters
- [ ] Date of last evaluation
- [ ] Concordance with our assessment
When Variant NOT in ClinVar
- [ ] Explicitly state "Not in ClinVar as of {date}"
- [ ] Consider novel variant workflow
- [ ] Emphasize structural analysis
---
Tool Verification Checklist
Before Report Generation
- [ ]
ClinVar_search_variantsreturns results or "not found" - [ ]
gnomad_search_variantsfrequency values valid - [ ]
MyVariant_query_variantspredictions populated - [ ] Structure available (PDB or AlphaFold)
NVIDIA NIM Availability
- [ ] Check if structural analysis needed
- [ ] Confirm NVIDIA_API_KEY if using NvidiaNIM_alphafold2
- [ ] Document if fallback used
---
Recommendations Matrix
Match Recommendations to Classification
| Classification | Testing | Management | Family |
|---|---|---|---|
| Pathogenic | Confirm | Specific action | Cascade |
| Likely Path | Confirm | Specific action | Cascade |
| VUS | Monitor | Clinical judgment | Not for testing |
| Likely Benign | No repeat | Reassurance | Not needed |
| Benign | No repeat | Reassurance | Not needed |
---
Report Completeness Score
Calculate before delivery:
| Section | Points |
|---|---|
| Variant identity complete | 10 |
| gnomAD with ancestry | 10 |
| ClinVar documented | 10 |
| ≥3 predictors | 10 |
| Structural analysis | 15 |
| Literature search | 10 |
| ACMG codes with rationale | 20 |
| Clinical recommendations | 10 |
| Limitations stated | 5 |
Minimum passing score: 85/100
Code Patterns for Variant Interpretation
Reusable code patterns for each phase of the variant interpretation workflow.
---
Phase 2: Clinical Database Code Patterns
2.1 COSMIC Somatic Context
def get_somatic_context(tu, gene_symbol, variant_aa):
"""Get somatic mutation context from COSMIC."""
# Search for specific mutation
cosmic = tu.tools.COSMIC_search_mutations(
operation="search",
terms=f"{gene_symbol} {variant_aa}",
max_results=20,
genome_build=38
)
# Get all gene mutations for context
gene_mutations = tu.tools.COSMIC_get_mutations_by_gene(
operation="get_by_gene",
gene=gene_symbol,
max_results=100
)
# Determine if it's a hotspot
mutation_counts = Counter(m['MutationAA'] for m in gene_mutations.get('results', []))
is_hotspot = variant_aa in [m[0] for m in mutation_counts.most_common(10)]
return {
'cosmic_hits': cosmic.get('results', []),
'is_somatic_hotspot': is_hotspot,
'cancer_types': [m['PrimarySite'] for m in cosmic.get('results', [])],
'total_cosmic_count': cosmic.get('total_count', 0)
}2.2 OMIM Gene-Disease Context
def get_omim_context(tu, gene_symbol):
"""Get OMIM gene-disease associations."""
search = tu.tools.OMIM_search(
operation="search",
query=gene_symbol,
limit=5
)
omim_data = []
for entry in search.get('data', {}).get('entries', []):
mim = entry.get('mimNumber')
details = tu.tools.OMIM_get_entry(
operation="get_entry",
mim_number=str(mim)
)
synopsis = tu.tools.OMIM_get_clinical_synopsis(
operation="get_clinical_synopsis",
mim_number=str(mim)
)
omim_data.append({
'mim_number': mim,
'title': details.get('data', {}).get('titles', {}),
'inheritance': synopsis.get('data', {}).get('inheritance'),
'clinical_features': synopsis.get('data', {})
})
return omim_data2.3 DisGeNET Gene-Disease Evidence
def get_disgenet_context(tu, gene_symbol, variant_rsid=None):
"""Get gene-disease associations from DisGeNET."""
gda = tu.tools.DisGeNET_search_gene(
operation="search_gene",
gene=gene_symbol,
limit=20
)
vda = None
if variant_rsid:
vda = tu.tools.DisGeNET_get_vda(
operation="get_vda",
variant=variant_rsid,
limit=20
)
return {
'gene_associations': gda.get('data', {}).get('associations', []),
'variant_associations': vda.get('data', {}).get('associations', []) if vda else []
}2.4 ClinGen Gene Validity & Dosage Sensitivity
def get_clingen_evidence(tu, gene_symbol):
"""
Get ClinGen gene validity and dosage sensitivity data.
CRITICAL for ACMG classification - establishes gene-disease validity.
"""
validity = tu.tools.ClinGen_search_gene_validity(gene=gene_symbol)
validity_data = []
if validity.get('data'):
for entry in validity.get('data', []):
validity_data.append({
'disease': entry.get('Disease Label'),
'classification': entry.get('Classification'),
'inheritance': entry.get('Inheritance'),
'mondo_id': entry.get('Disease ID (MONDO)')
})
dosage = tu.tools.ClinGen_search_dosage_sensitivity(gene=gene_symbol)
dosage_data = {}
if dosage.get('data'):
for entry in dosage.get('data', []):
dosage_data = {
'haploinsufficiency_score': entry.get('Haploinsufficiency Score'),
'triplosensitivity_score': entry.get('Triplosensitivity Score'),
'disease': entry.get('Disease')
}
break
actionability = tu.tools.ClinGen_search_actionability(gene=gene_symbol)
return {
'gene_validity': validity_data,
'dosage_sensitivity': dosage_data,
'actionability': actionability.get('data', {}),
'has_definitive_validity': any(v['classification'] == 'Definitive' for v in validity_data),
'is_haploinsufficient': dosage_data.get('haploinsufficiency_score') == '3'
}2.5 SpliceAI Splice Variant Prediction
def get_spliceai_prediction(tu, chrom, pos, ref, alt, genome="38"):
"""
Get SpliceAI splice effect predictions.
Delta scores: DS_AG (Acceptor gain), DS_AL (Acceptor loss),
DS_DG (Donor gain), DS_DL (Donor loss)
"""
variant = f"chr{chrom}-{pos}-{ref}-{alt}"
result = tu.tools.SpliceAI_predict_splice(
variant=variant,
genome=genome
)
if result.get('data'):
max_score = result['data'].get('max_delta_score', 0)
interpretation = result['data'].get('interpretation', '')
if max_score >= 0.8:
acmg = 'PP3 (strong) - high splice impact'
elif max_score >= 0.5:
acmg = 'PP3 (supporting) - moderate splice impact'
elif max_score >= 0.2:
acmg = 'PP3 (weak) - possible splice impact'
else:
acmg = 'BP7 (if synonymous) - splice benign'
return {
'max_delta_score': max_score,
'interpretation': interpretation,
'acmg_support': acmg,
'scores': result['data'].get('scores', [])
}
return None
def quick_splice_check(tu, variant, genome="38"):
"""Quick triage using max delta score only."""
result = tu.tools.SpliceAI_get_max_delta(variant=variant, genome=genome)
return result.get('data', {})When to Use SpliceAI:
- Intronic variants near splice sites (+/-50bp)
- Synonymous variants (may still affect splicing)
- Exonic variants near splice junctions
- Variants creating cryptic splice sites
---
Phase 2.5: Regulatory Context (Non-Coding Variants)
def assess_regulatory_impact(tu, variant_position, gene_symbol):
"""Assess regulatory impact of non-coding variant."""
tf_binding = tu.tools.ChIPAtlas_enrichment_analysis(
gene=gene_symbol,
cell_type="all"
)
peaks = tu.tools.ChIPAtlas_get_peak_data(
gene=gene_symbol,
experiment_type="TF"
)
encode_data = tu.tools.ENCODE_search_experiments(
assay_title="ATAC-seq",
biosample="all"
)
binding_disrupted = check_motif_disruption(variant_position, peaks)
return {
'tf_binding': tf_binding,
'regulatory_peaks': peaks,
'encode_annotations': encode_data,
'likely_regulatory': binding_disrupted
}---
Phase 3: Computational Predictions
3.1 CADD Scoring
def get_cadd_score(tu, chrom, pos, ref, alt):
"""Get CADD deleteriousness score for a variant."""
result = tu.tools.CADD_get_variant_score(
chrom=str(chrom),
pos=pos,
ref=ref,
alt=alt,
version="GRCh38-v1.7"
)
if result.get('status') == 'success':
phred = result['data'].get('phred_score')
return {
'score': phred,
'interpretation': result['data'].get('interpretation'),
'acmg_support': 'PP3' if phred >= 20 else ('BP4' if phred < 15 else 'neutral')
}
return None3.2 AlphaMissense Pathogenicity
def get_alphamissense_score(tu, uniprot_id, variant):
"""
Get AlphaMissense pathogenicity score.
variant format: 'R123H' or 'p.R123H'
Thresholds: Pathogenic >0.564, Ambiguous 0.34-0.564, Benign <0.34
"""
result = tu.tools.AlphaMissense_get_variant_score(
uniprot_id=uniprot_id,
variant=variant
)
if result.get('status') == 'success' and result.get('data'):
score = result['data'].get('pathogenicity_score')
classification = result['data'].get('classification')
if classification == 'pathogenic':
acmg = 'PP3 (strong)'
elif classification == 'benign':
acmg = 'BP4 (strong)'
else:
acmg = 'neutral'
return {
'score': score,
'classification': classification,
'acmg_support': acmg
}
return None3.3 EVE Evolutionary Prediction
def get_eve_score(tu, chrom, pos, ref, alt):
"""Get EVE evolutionary pathogenicity score. Threshold: >0.5 = likely pathogenic."""
result = tu.tools.EVE_get_variant_score(
chrom=str(chrom), pos=pos, ref=ref, alt=alt
)
if result.get('status') == 'success':
eve_scores = result['data'].get('eve_scores', [])
if eve_scores:
best_score = eve_scores[0]
return {
'score': best_score.get('eve_score'),
'classification': best_score.get('classification'),
'gene': best_score.get('gene_symbol'),
'acmg_support': 'PP3' if best_score.get('eve_score', 0) > 0.5 else 'BP4'
}
return None3.4 Integrated Prediction Strategy
def comprehensive_pathogenicity_assessment(tu, variant_info):
"""Combine all prediction tools for robust classification."""
chrom = variant_info['chrom']
pos = variant_info['pos']
ref = variant_info['ref']
alt = variant_info['alt']
uniprot_id = variant_info.get('uniprot_id')
aa_change = variant_info.get('aa_change')
predictions = {}
cadd = get_cadd_score(tu, chrom, pos, ref, alt)
if cadd:
predictions['cadd'] = cadd
if uniprot_id and aa_change:
am = get_alphamissense_score(tu, uniprot_id, aa_change)
if am:
predictions['alphamissense'] = am
eve = get_eve_score(tu, chrom, pos, ref, alt)
if eve:
predictions['eve'] = eve
damaging_count = sum(1 for p in predictions.values()
if 'PP3' in p.get('acmg_support', ''))
benign_count = sum(1 for p in predictions.values()
if 'BP4' in p.get('acmg_support', ''))
if damaging_count >= 2 and benign_count == 0:
consensus = 'likely_damaging'
acmg = 'PP3 (multiple predictors concordant)'
elif benign_count >= 2 and damaging_count == 0:
consensus = 'likely_benign'
acmg = 'BP4 (multiple predictors concordant)'
else:
consensus = 'uncertain'
acmg = 'neutral (discordant predictions)'
return {
'predictions': predictions,
'consensus': consensus,
'acmg_recommendation': acmg
}---
Phase 4: Structural Analysis (AlphaFold2)
# 1. Get protein sequence
protein_seq = tu.tools.UniProt_get_sequence_by_accession(accession=uniprot_id)
# 2. Get/predict structure
try:
pdb_hits = tu.tools.PDBe_get_uniprot_mappings(uniprot_id=uniprot_id)
structure = tu.tools.PDB_get_structure(pdb_id=pdb_hits[0]['pdb_id'])
except:
structure = tu.tools.NvidiaNIM_alphafold2(
sequence=protein_seq['sequence'],
algorithm="mmseqs2"
)
# 3. Analyze variant position
# - Extract pLDDT at residue position
# - Calculate solvent accessibility
# - Check for nearby functional sitesStructural Features to Report:
- pLDDT at variant position
- Secondary structure (helix/sheet/coil)
- Solvent accessibility (buried/exposed)
- Distance to active site (if applicable)
- Interactions disrupted (H-bonds, salt bridges)
---
Phase 4.5: Expression Context
def validate_expression_context(tu, gene_symbol, phenotype_tissues):
"""Validate gene is expressed in phenotype-relevant tissues."""
sc_expression = tu.tools.CELLxGENE_get_expression_data(
gene=gene_symbol,
tissue=phenotype_tissues[0] if phenotype_tissues else "all"
)
gtex = tu.tools.GTEx_get_median_gene_expression(gene=gene_symbol)
relevant_expression = {
tissue: gtex.get(tissue, 0)
for tissue in phenotype_tissues
}
return {
'single_cell': sc_expression,
'gtex': relevant_expression,
'expressed_in_phenotype_tissue': any(v > 1 for v in relevant_expression.values())
}---
Phase 5: Literature Search
def comprehensive_literature_search(tu, gene, variant, phenotype):
"""Search across all literature sources."""
pubmed = tu.tools.PubMed_search_articles(
query=f'"{gene}" AND ("{variant}" OR functional)',
max_results=30
)
biorxiv = tu.tools.BioRxiv_list_recent_preprints(
query=f"{gene} {phenotype}",
limit=10
)
medrxiv = tu.tools.MedRxiv_get_preprint(
query=f"{gene} variant {phenotype}",
limit=10
)
key_papers = pubmed[:5]
for paper in key_papers:
citations = tu.tools.openalex_search_works(
query=paper['title'],
limit=1
)
paper['citation_count'] = citations[0].get('cited_by_count', 0) if citations else 0
return {
'pubmed': pubmed,
'preprints': biorxiv + medrxiv,
'key_papers_with_citations': key_papers
}Search Query Templates:
# Gene + variant specific
"{GENE} AND ({HGVS_p} OR {AA_change})"
# Functional studies
"{GENE} AND (functional OR functional study OR mutagenesis)"
# Clinical reports
"{GENE} AND (case report OR patient) AND {phenotype}"
# Preprint-specific
"{GENE} genetics 2024" (for recent preprints)Warning: Always flag preprints as NOT peer-reviewed in reports.
Clinical Variant Interpreter - Examples
Example 1: Pathogenic BRCA1 Variant
User Query
"Interpret the clinical significance of BRCA1 c.5266dupC"
Expected Output
# Variant Interpretation Report: BRCA1 c.5266dupC
**Generated**: 2026-02-04 | **Analyst**: ToolUniverse Variant Interpreter
---
## Executive Summary
| Field | Value |
|-------|-------|
| **Variant** | NM_007294.4:c.5266dupC (p.Gln1756ProfsTer74) |
| **Gene** | BRCA1 |
| **Classification** | **PATHOGENIC** ★★★ |
| **Evidence Strength** | Very Strong (multiple independent lines) |
| **Key Finding** | Frameshift variant in established LOF gene; well-documented pathogenic variant |
**Clinical Action Required**: Hereditary breast/ovarian cancer risk management indicated.
---
## 1. Variant Identity
| Property | Value |
|----------|-------|
| Gene | BRCA1 |
| Chromosome | 17 |
| Position | 17:43057051 (GRCh38) |
| Transcript | NM_007294.4 (MANE Select) |
| cDNA change | c.5266dupC |
| Protein change | p.Gln1756ProfsTer74 |
| Consequence | Frameshift |
| Exon | 20 of 23 |
**Note**: Also known as 5382insC (legacy notation)
*Source: `EnsemblVar_get_variant_consequences`, `MyVariant_query_variants`*
---
## 2. Population Data
### gnomAD v4.0 Frequencies
| Population | Allele Frequency | Allele Count |
|------------|------------------|--------------|
| **Overall** | 0.00006 | 45 |
| European (Non-Finnish) | 0.00012 | 38 |
| Ashkenazi Jewish | 0.011 | 89 |
| African/African American | 0.00001 | 2 |
| Latino/Admixed American | 0.00002 | 3 |
| East Asian | 0 | 0 |
| South Asian | 0 | 0 |
**Homozygotes**: 0
**Hemizygotes**: N/A (autosomal gene)
**Interpretation**: Elevated in Ashkenazi Jewish population (founder variant). Overall frequency consistent with disease prevalence when accounting for reduced penetrance and carrier frequency.
*Source: `gnomad_search_variants`, accessed 2026-02-04*
---
## 3. Clinical Database Evidence
### ClinVar
| Property | Value |
|----------|-------|
| VCV ID | VCV000017661 |
| Classification | Pathogenic |
| Review Status | ★★★★ (Expert panel reviewed) |
| Submitters | 47 |
| Last Evaluated | 2024-12-15 |
| Conditions | Hereditary breast/ovarian cancer syndrome |
**Expert Panel**: ENIGMA consortium - criteria met for Pathogenic
### OMIM
| Gene-Disease | Inheritance | MIM# |
|--------------|-------------|------|
| Breast-ovarian cancer, familial 1 | AD | 604370 |
| Fanconi anemia, complementation group S | AR | 617883 |
### ClinGen
| Assessment | Status |
|------------|--------|
| Gene-Disease Validity | DEFINITIVE for HBOC |
| Dosage Sensitivity | Haploinsufficient |
| LOF Mechanism | Established |
*Sources: ClinVar VCV000017661, OMIM #113705, ClinGen*
---
## 4. Computational Predictions
**Note**: Computational predictors not applicable to frameshift variants (by definition, these are loss-of-function).
| Predictor | Score | Not Applicable Reason |
|-----------|-------|----------------------|
| SIFT | N/A | Frameshift |
| PolyPhen-2 | N/A | Frameshift |
| CADD | 35 (Phred) | High deleteriousness |
**NMD Prediction**: Predicted to undergo nonsense-mediated decay (PTC at codon 1829, well before last exon junction)
*Source: `MyVariant_query_variants`*
---
## 5. Structural Analysis
**Structural impact assessment not required** for truncating variants where LOF is established mechanism.
**Protein Context**:
- Truncation at codon 1756 (of 1863)
- Removes C-terminal BRCT domains
- BRCT domains essential for DNA repair function
- Even if translated, protein would be non-functional
*Source: UniProt P38398, InterPro domain annotations*
---
## 6. Literature Evidence
### Functional Studies
| Study | Finding | PMID |
|-------|---------|------|
| Carvalho et al., 2007 | LOF in HDR assay | 17308087 |
| Moghadasi et al., 2018 | Absent protein | 29446198 |
| Multiple studies | Segregates with cancer | Multiple |
### Clinical Reports
- Founder variant in Ashkenazi Jewish population
- Extensive clinical documentation (>500 families)
- Co-segregation in >100 affected individuals
**PS3 Evidence**: Strong - multiple functional studies demonstrating loss of DNA repair function
*Source: `PubMed_search_articles`*
---
## 7. ACMG Classification
### Evidence Codes Applied
| Code | Strength | Rationale |
|------|----------|-----------|
| **PVS1** | Very Strong | Null variant (frameshift) in gene where LOF is established mechanism |
| **PS4** | Strong | >5 affected individuals documented |
| **PM2** | Supporting | Absent/extremely rare in general population (outside founders) |
| **PP5** | Supporting | Expert panel (ENIGMA) reports pathogenic |
### Evidence Summary
| Pathogenic | Benign |
|------------|--------|
| 1 Very Strong (PVS1) | None |
| 1 Strong (PS4) | |
| 2 Supporting (PM2, PP5) | |
### Classification: **PATHOGENIC**
**Rationale**: Meets ACMG criteria for Pathogenic (1 Very Strong + 1 Strong + 2 Supporting). Well-established pathogenic variant with multiple lines of independent evidence.
**Confidence**: ★★★ (High) - Expert panel reviewed, extensive clinical data
---
## 8. Clinical Recommendations
### For Affected Individual
| Category | Recommendation |
|----------|----------------|
| **Confirmation** | No re-testing needed; well-documented variant |
| **Cancer screening** | NCCN high-risk breast/ovarian protocols |
| **Risk-reducing options** | Discuss prophylactic mastectomy, salpingo-oophorectomy |
| **Medical management** | Consider PARP inhibitor eligibility if cancer |
| **Genetic counseling** | Discuss implications, reproductive options |
### For Family Members
| Relationship | Action |
|--------------|--------|
| First-degree relatives | Offer cascade testing |
| At-risk children | Consider testing at 18-25 years |
| Partners | Reproductive counseling if planning children |
### Testing Recommendations
- Cascade genetic testing for first-degree relatives
- Consider panel testing for other cancer genes if clinically indicated
- Tumor testing for PARP inhibitor eligibility if cancer present
---
## 9. Limitations & Uncertainties
| Factor | Status |
|--------|--------|
| Classification certainty | High - well-documented |
| Penetrance | Incomplete (~70% breast, ~40% ovarian by age 70) |
| Modifier genes | May influence risk |
| Environmental factors | May modify risk |
**No significant limitations** - This is a well-characterized pathogenic variant with extensive clinical documentation.
---
## Data Sources
| Tool | Purpose | Result |
|------|---------|--------|
| `ClinVar_search_variants` | Classification lookup | VCV000017661 |
| `gnomad_search_variants` | Population frequency | AF=0.00006 |
| `MyVariant_query_variants` | Aggregated annotations | Complete |
| `PubMed_search_articles` | Literature evidence | 47 relevant papers |
| `OMIM_search` | Gene-disease | HBOC confirmed |---
Example 2: VUS Missense Requiring Structural Analysis
User Query
"Interpret TP53 p.R175C - it's reported as a VUS"
Expected Output
# Variant Interpretation Report: TP53 p.R175C
**Generated**: 2026-02-04 | **Analyst**: ToolUniverse Variant Interpreter
---
## Executive Summary
| Field | Value |
|-------|-------|
| **Variant** | NM_000546.6:c.523C>T (p.Arg175Cys) |
| **Gene** | TP53 |
| **Classification** | **LIKELY PATHOGENIC** ★★☆ |
| **Evidence Strength** | Moderate (structural + computational + clinical) |
| **Key Finding** | Hotspot residue in DNA-binding domain; R175 is known pathogenic position (R175H documented) |
**Reclassified from VUS based on structural analysis and PM5 evidence.**
---
## 1. Variant Identity
| Property | Value |
|----------|-------|
| Gene | TP53 |
| Chromosome | 17 |
| Position | 17:7674220 (GRCh38) |
| Transcript | NM_000546.6 (MANE Select) |
| cDNA change | c.523C>T |
| Protein change | p.Arg175Cys |
| Consequence | Missense |
| Exon | 5 of 11 |
*Source: `EnsemblVar_get_variant_consequences`, `MyVariant_query_variants`*
---
## 2. Population Data
### gnomAD v4.0 Frequencies
| Population | Allele Frequency | Allele Count |
|------------|------------------|--------------|
| **Overall** | 0 | 0 |
| European (Non-Finnish) | 0 | 0 |
| African/African American | 0 | 0 |
| Latino/Admixed American | 0 | 0 |
| East Asian | 0 | 0 |
| South Asian | 0 | 0 |
**Homozygotes**: 0
**Interpretation**: Absent from gnomAD (>140,000 individuals). Supports PM2 (absent from controls).
*Source: `gnomad_search_variants`, accessed 2026-02-04*
---
## 3. Clinical Database Evidence
### ClinVar
| Property | Value |
|----------|-------|
| VCV ID | VCV000376642 |
| Classification | VUS (outdated) |
| Review Status | ★★ (criteria provided) |
| Submitters | 3 |
| Conditions | Li-Fraumeni syndrome |
**Note**: ClinVar classification may require update based on structural evidence.
### Critical Context: R175 Position
| Variant at R175 | ClinVar Classification |
|-----------------|------------------------|
| p.R175H | Pathogenic (★★★★) |
| p.R175G | Pathogenic |
| p.R175L | Pathogenic |
| p.R175S | Pathogenic |
| **p.R175C** | VUS (being reclassified) |
**PM5 Applies**: Multiple different missense changes at R175 are pathogenic.
### OMIM
| Gene-Disease | Inheritance |
|--------------|-------------|
| Li-Fraumeni syndrome | AD |
| Various cancers | Somatic |
*Sources: ClinVar, OMIM #191170*
---
## 4. Computational Predictions
| Predictor | Score | Interpretation |
|-----------|-------|----------------|
| SIFT | 0.00 | Damaging |
| PolyPhen-2 | 1.00 | Probably damaging |
| CADD | 29.5 (Phred) | Top 0.1% deleterious |
| REVEL | 0.92 | Pathogenic range |
**Concordance**: 4/4 predictors indicate damaging → **PP3 applies**
*Source: `MyVariant_query_variants`*
---
## 5. Structural Analysis
### Structure Information
| Property | Value |
|----------|-------|
| Structure used | PDB: 2OCJ (1.8 Å) |
| Domain | DNA-binding domain (DBD) |
| Position pLDDT | N/A (experimental structure) |
| Resolution | 1.8 Å |
### R175 Structural Context
| Feature | Assessment |
|---------|------------|
| **Location** | DNA-binding domain core |
| **Solvent accessibility** | Buried (RSA = 5%) |
| **Secondary structure** | Loop L2 (critical for zinc coordination) |
| **Zinc coordination** | 4.2 Å from Zn²⁺ binding site |
| **Conservation** | 100% in vertebrates |
### Structural Impact Analysis
| Factor | Wildtype (Arg) | Mutant (Cys) | Impact |
|--------|----------------|--------------|--------|
| Charge | +1 (basic) | 0 (neutral) | Charge loss in buried position |
| Side chain volume | Large | Small | Potential cavity |
| H-bonding | 5 H-bonds | 1 H-bond | Loss of stabilizing interactions |
| Zinc coordination | Proximal | Potential interference | May affect zinc binding |
### Structural Conclusion
**PM1 applies (moderate)**:
- R175 is in a critical structural region
- Known mutational hotspot
- Zinc coordination region essential for DNA binding
- Structural analysis supports pathogenicity
*Sources: PDB 2OCJ, structural analysis*
---
## 6. Literature Evidence
### Functional Studies (at R175 position)
| Study | Variant | Finding | PMID |
|-------|---------|---------|------|
| Kato et al., 2003 | R175H | Loss of transactivation | 12826609 |
| Bullock et al., 2000 | R175H | Destabilized, unfolded | 10788335 |
| Joerger et al., 2006 | R175 mutations | Disrupt zinc binding | 16630891 |
### R175C-Specific Evidence
- Limited direct functional data for R175C specifically
- Same position as extensively characterized R175H
- Mechanism (zinc coordination disruption) likely conserved
**PS3**: Not directly applicable (no R175C-specific functional study)
**PS1**: Not applicable (amino acid change differs from R175H)
*Source: `PubMed_search_articles`*
---
## 7. ACMG Classification
### Evidence Codes Applied
| Code | Strength | Rationale |
|------|----------|-----------|
| **PM2** | Moderate | Absent from gnomAD (>140,000 individuals) |
| **PM5** | Moderate | Different missense at same position (R175H) is pathogenic |
| **PM1** | Moderate | Critical DNA-binding domain, zinc coordination region |
| **PP3** | Supporting | All 4 predictors concordantly damaging |
### Evidence Summary
| Pathogenic | Benign |
|------------|--------|
| 0 Very Strong | None |
| 0 Strong | |
| 3 Moderate (PM2, PM5, PM1) | |
| 1 Supporting (PP3) | |
### Classification: **LIKELY PATHOGENIC**
**Rationale**: 3 Moderate + 1 Supporting meets ACMG criteria for Likely Pathogenic. Strong structural evidence at known hotspot position supports classification upgrade from VUS.
**Confidence**: ★★☆ (Moderate) - Structural evidence strong, but lacks direct R175C functional data
---
## 8. Clinical Recommendations
### For Affected Individual
| Category | Recommendation |
|----------|----------------|
| **Confirmation** | Consider orthogonal confirmation |
| **Clinical management** | Li-Fraumeni screening protocol |
| **Cancer surveillance** | Comprehensive multi-organ screening |
| **Genetic counseling** | Discuss uncertainty, manage expectations |
### Family Testing Considerations
- Likely Pathogenic classification supports cascade testing
- Counsel families about classification confidence level
- Consider research enrollment for functional studies
### Recommended Surveillance (Li-Fraumeni Protocol)
| Modality | Frequency | Starting Age |
|----------|-----------|--------------|
| Breast MRI | Annual | 20-25 |
| Colonoscopy | Every 2-5 years | 25 |
| Skin exam | Annual | 18 |
| Whole-body MRI | Consider annual | 25 |
---
## 9. Limitations & Uncertainties
| Factor | Impact |
|--------|--------|
| **No direct functional data** | Classification relies on position analogy |
| **ClinVar discordance** | Our Likely Pathogenic vs ClinVar VUS |
| **Phenocopy risk** | Environmental factors could explain cancer |
**Recommendation**: Consider this classification provisional pending functional studies. Reanalyze when new data available.
---
## Data Sources
| Tool | Purpose | Result |
|------|---------|--------|
| `ClinVar_search_variants` | Classification | VCV000376642 (VUS) |
| `gnomad_search_variants` | Population freq | 0 (absent) |
| `MyVariant_query_variants` | Predictions | All damaging |
| `RCSBData_get_entry` | Structure | 2OCJ |
| `PubMed_search_articles` | Literature | R175 studies |---
Example 3: Likely Benign Common Variant
User Query
"What is the significance of the CFTR p.M470V variant?"
Expected Output (Key Sections)
# Variant Interpretation Report: CFTR p.M470V
## Executive Summary
| Field | Value |
|-------|-------|
| **Variant** | NM_000492.4:c.1408A>G (p.Met470Val) |
| **Gene** | CFTR |
| **Classification** | **BENIGN** ★★★ |
| **Evidence Strength** | Very Strong (population frequency) |
| **Key Finding** | Common variant (14% global AF); well-established benign polymorphism |
---
## 2. Population Data
### gnomAD v4.0 Frequencies
| Population | Allele Frequency |
|------------|------------------|
| **Overall** | 0.14 (14%) |
| European | 0.22 |
| East Asian | 0.03 |
| African | 0.08 |
**Interpretation**: Far too common to cause rare disease like CF (prevalence 1/3,000). **BA1 applies**.
---
## 7. ACMG Classification
### Evidence Codes Applied
| Code | Strength | Rationale |
|------|----------|-----------|
| **BA1** | Stand-Alone | AF >5% in gnomAD |
| **BS1** | Strong | AF far exceeds disease frequency |
| **BP4** | Supporting | Benign computational predictions |
### Classification: **BENIGN**
**Rationale**: BA1 alone is sufficient for Benign classification. This is a well-established benign polymorphism.
---
## 8. Clinical Recommendations
### For Individual
- This variant is **NOT** disease-causing
- Do not use for CF carrier screening interpretation
- No clinical follow-up needed based on this variant
### Important Notes
- May be found in compound heterozygosity with pathogenic variants
- Presence does NOT modify carrier status determined by other variants---
Example 4: Novel Variant with Limited Data
User Query
"Interpret SCN5A c.4813+3A>G - novel splice variant"
Expected Output (Key Sections)
# Variant Interpretation Report: SCN5A c.4813+3A>G
## Executive Summary
| Field | Value |
|-------|-------|
| **Variant** | NM_000335.5:c.4813+3A>G |
| **Gene** | SCN5A |
| **Classification** | **VUS - FAVOR PATHOGENIC** ★☆☆ |
| **Evidence Strength** | Limited (splice prediction only) |
| **Key Finding** | Near-splice variant in cardiac arrhythmia gene; SpliceAI predicts donor loss |
**Action**: Functional RNA studies recommended before clinical use.
---
## 4. Computational Predictions
### Splice Predictions
| Tool | Score | Prediction |
|------|-------|------------|
| SpliceAI donor loss | 0.89 | High impact predicted |
| MaxEntScan (WT) | 8.2 | Strong donor site |
| MaxEntScan (Mut) | 4.1 | Weakened |
**Interpretation**: +3 position variants can affect splicing. SpliceAI score of 0.89 suggests high likelihood of splice disruption.
---
## 7. ACMG Classification
### Evidence Codes Applied
| Code | Strength | Rationale |
|------|----------|-----------|
| **PM2** | Supporting | Absent from gnomAD |
| **PP3** | Supporting | SpliceAI predicts splice disruption |
| **PM4** | Supporting | If causes in-frame deletion, alters protein |
### Classification: **VUS (Favor Pathogenic)**
**Rationale**: Insufficient evidence for Likely Pathogenic (would need 1 Strong + 1 Moderate or 3 Moderate). Splice prediction is suggestive but not confirmed.
---
## 8. Clinical Recommendations
### Recommended Studies
1. **RNA studies** - RT-PCR from patient sample to confirm aberrant splicing
2. **Family segregation** - Test affected relatives
3. **Functional studies** - Minigene assay if RNA unavailable
### Clinical Management
- Classification is VUS: Do NOT use for clinical decisions
- Continue phenotype-based cardiac management
- Offer participation in research studies
### Reclassification Potential
- RNA showing exon skipping → Upgrade to Likely Pathogenic (PVS1)
- Segregation in 2+ affected → Add PP1Clinical 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:
result = tu.tools.MyVariant_query_variants(
variant_id="chr17:g.7674220C>T",
fields="clinvar,gnomad,cadd,dbnsfp"
)
# Returns: ClinVar, gnomAD, CADD, dbNSFP predictionsKey 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:
result = tu.tools.ClinVar_search_variants(
variant="NM_007294.4:c.5266dupC"
)
# Returns: VCV ID, classification, review status, submittersClassification 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:
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:
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 IDsWhen to use:
- Phase 1: Always use
gene2transcriptsto identify the MANE Select transcript before annotating variants - Phase 1: Use
validate_variantto 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:
result = tu.tools.gnomad_search_variants(
variant="17-7674220-C-T"
)
# Returns: AF, ancestry-specific AFs, AC, AN, homozygotesACMG 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:
result = tu.tools.ClinGen_search_gene_validity(gene="BRCA1")
# Returns: Classification (Definitive/Strong/Moderate/Limited), disease, inheritanceValidity 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:
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:
# 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, interpretationVariant 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:
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, interpretationCADD 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:
result = tu.tools.AlphaMissense_get_variant_score(
uniprot_id="P00533", # EGFR
variant="L858R" # or "p.L858R"
)
# Returns: pathogenicity_score, classificationAlphaMissense 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:
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):
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:
# 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 VEPEVE 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:
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:
# 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 distributionCOSMIC 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:
# 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:
# 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:
# 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 |
Example - Get regulatory annotations:
# Search for regulatory data near variant
experiments = tu.tools.ENCODE_search_experiments(
assay_title="ATAC-seq",
biosample="heart"
)
# Returns: Open chromatin experimentsKey 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:
# 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):
# 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:
# 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:
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:
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:
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:
# 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:
# 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:
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:
# 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
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
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 analysisExample 3: ACMG Classification
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.
Related skills
How it compares
Pick tooluniverse-variant-interpretation over generic research skills when you need ACMG-guided clinical variant reports wired to real genomic databases via ToolUniverse MCP.
FAQ
What databases does tooluniverse-variant-interpretation query?
tooluniverse-variant-interpretation queries ClinVar, gnomAD, OMIM, ClinGen, COSMIC, CIViC, and MyVariant through Harvard ToolUniverse MCP tools. Population frequency requires gnomAD overall plus at least three ancestry groups before ACMG classification proceeds.
Does tooluniverse-variant-interpretation handle non-coding variants?
tooluniverse-variant-interpretation handles non-coding variants in Phase 2.5 using ChIPAtlas and ENCODE annotation plus five regulatory deep-learning models including AlphaGenome, Enformer, Borzoi, ChromBPNet, and Evo2 for sequence-based effect prediction.
What output does tooluniverse-variant-interpretation produce?
tooluniverse-variant-interpretation produces a clinical-grade Markdown report named {GENE}_{VARIANT}_interpretation_report.md with nine sections covering population data, predictions, ACMG classification, and clinical recommendations with cited evidence codes.