Skip to main content

variant-interpretation

ToolUniverse workflow — Variant Interpretation

Quellinformationen

Repository
lamm-mit/scienceclaw
Letzte Quellaktivität
14. März 2026 um 06:18
Erkannte Sprache von SKILL.md
Englisch
Sterne
250
Forks
49

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
3 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
variant-interpretation
description
ToolUniverse workflow — Variant Interpretation
source
https://github.com/mims-harvard/ToolUniverse/tree/main/skills/tooluniverse-variant-interpretation
metadata
null
--- name: tooluniverse-variant-interpretation description: Systematic clinical variant interpretation from raw variant calls to ACMG-classified recommendations with structural impact analysis. Aggregates evidence from ClinVar, gnomAD, CIViC, UniProt, and PDB across ACMG criteria. Produces pathogenicity scores (0-100), clinical recommendations, and treatment implications. Use when interpreting genetic variants, classifying variants of uncertain significance (VUS), performing ACMG variant classification, or translating variant calls to clinical actionability. --- --- name: tooluniverse-variant-interpretation description: Systematic clinical variant interpretation from raw variant calls to ACMG-classified recommendations with structural impact analysis. Aggregates evidence from ClinVar, gnomAD, CIViC, UniProt, and PDB across ACMG criteria. Produces pathogenicity scores (0-100), clinical recommendations, and treatment implications. Use when interpreting genetic variants, classifying variants of uncertain significance (VUS), performing ACMG variant classification, or translating variant calls to clinical actionability. --- # Clinical Variant Interpreter Systematic variant interpretation skill using ToolUniverse - from raw variant calls to ACMG-classified clinical recommendations with structural impact analysis. --- ## Problem This Skill Solves Clinical labs and researchers face critical challenges in variant interpretation: 1. **Variant classification uncertainty** - VUS (Variants of Uncertain Significance) comprise 40-60% of clinical variants 2. **Evidence aggregation burden** - Must integrate data from 10+ databases per variant 3. **Structural context missing** - Traditional annotation ignores 3D protein impact 4. **Clinical actionability unclear** - How does classification translate to patient care? **This skill provides**: A systematic workflow that combines population databases, functional predictions, structural analysis (via AlphaFold2), and literature evidence into ACMG-compliant interpretations with clear clinical recommendations. --- ## Key Principles 1. **ACMG-Guided Classification** - Follow ACMG/AMP 2015 guidelines with explicit evidence codes 2. **Structural Evidence Integration** - Use AlphaFold2 for novel structural impact analysis 3. **Population Context** - gnomAD frequencies with ancestry-specific data 4. **Gene-Disease Validity** - ClinGen curation status for clinical relevance 5. **Actionable Output** - Clear recommendations, not just classifications 6. **English-first queries** - Always use English terms in tool calls (gene names, variant descriptions, disease names), even if the user writes in another language. Only try original-language terms as a fallback. Respond in the user's language --- ## Triggers Use this skill when users: - Ask about variant interpretation or classification - Have VCF data needing clinical annotation - Ask "what does this variant mean clinically?" - Need ACMG classification for variants - Want structural impact analysis for missense variants - Ask about pathogenicity of specific variants --- ## Workflow Overview ``` ┌─────────────────────────────────────────────────────────────────┐ │ VARIANT INTERPRETATION │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ Phase 1: VARIANT IDENTITY │ │ ├── Normalize variant notation (HGVS) │ │ ├── Map to gene, transcript, protein │ │ └── Get consequence type (missense, nonsense, etc.) │ │ │ │ Phase 2: CLINICAL DATABASES │ │ ├── ClinVar: Existing classifications │ │ ├── gnomAD: Population frequencies (all + ancestry) │ │ ├── OMIM: Gene-disease associations │ │ ├── ClinGen: Gene validity + dosage sensitivity (ENHANCED) │ │ │ └─ ClinGen_search_gene_validity, ClinGen_search_dosage │ │ └── SpliceAI: Splice variant prediction (NEW) │ │ │ │ Phase 2.5: REGULATORY CONTEXT (NEW - for non-coding variants) │ │ ├── ChIPAtlas: TF binding at position │ │ ├── ENCODE: Regulatory elements (enhancers, promoters) │ │ ├── Conservation in regulatory regions │ │ └── Functional annotation of regulatory impact │ │ │ │ Phase 3: COMPUTATIONAL PREDICTIONS │ │ ├── SIFT/PolyPhen: Damaging predictions │ │ ├── CADD: Deleteriousness score │ │ ├── SpliceAI: Splice impact (if applicable) │ │ └── Conservation: Cross-species alignment │ │ │ │ Phase 4: STRUCTURAL ANALYSIS (for VUS/novel missense) │ │ ├── Get protein structure (PDB or AlphaFold2) │ │ ├── Map variant to structure │ │ ├── Assess domain/functional site impact │ │ └── Predict structural destabilization │ │ │ │ Phase 4.5: EXPRESSION CONTEXT (NEW) │ │ ├── CELLxGENE: Cell-type specific expression │ │ ├── Tissue relevance to phenotype │ │ └── Expression validation │ │ │ │ Phase 5: LITERATURE EVIDENCE │ │ ├── PubMed: Functional studies │ │ ├── BioRxiv/MedRxiv: Recent preprints (NEW) │ │ ├── Case reports: Phenotype correlations │ │ └── Segregation data (if in literature) │ │ │ │ Phase 6: ACMG CLASSIFICATION │ │ ├── Apply evidence codes (PVS1, PM2, PP3, etc.) │ │ ├── Calculate classification │ │ ├── Identify limiting factors │ │ └── Generate clinical recommendations │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Phase Details ### Phase 1: Variant Identity & Normalization **Goal**: Standardize variant notation and determine molecular consequence **Tools**: | Tool | Purpose | |------|---------| | `myvariant_query` | Get variant annotations from MyVariant.info | | `Ensembl_get_variant_info` | Variant effect predictor data | | `NCBI_gene_search` | Gene information | **Key Information to Capture**: - HGVS notation (c. and p.) - Gene symbol and Ensembl ID - Transcript (canonical/MANE Select) - Consequence type - Amino acid change (for missense) - Exon/intron location ### Phase 2: Clinical Database Queries **Goal**: Aggregate existing clinical knowledge **Tools**: | Tool | Purpose | Key Data | |------|---------|----------| | `clinvar_search` | Existing classifications | Classification, review status, submissions | | `gnomad_search` | Population frequency | AF, ancestry-specific AFs, homozygotes | | `OMIM_search`, `OMIM_get_entry` | Gene-disease | Inheritance, phenotypes | | `ClinGen_gene_validity` | Curation status | Gene-disease validity level | | `COSMIC_search_mutations` | **Somatic mutations (NEW)** | Cancer frequency, histology | | `DisGeNET_search_gene` | **Gene-disease associations (NEW)** | Evidence scores, sources | ### 2.1 COSMIC for Somatic Context (NEW) For cancer variants, check COSMIC for somatic mutation frequency: ```python 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 (NEW) ```python def get_omim_context(tu, gene_symbol): """Get OMIM gene-disease associations.""" # Search OMIM for gene 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') # Get detailed entry details = tu.tools.OMIM_get_entry( operation="get_entry", mim_number=str(mim) ) # Get clinical synopsis 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_data ``` ### 2.3 DisGeNET Gene-Disease Evidence (NEW) ```python def get_disgenet_context(tu, gene_symbol, variant_rsid=None): """Get gene-disease associations from DisGeNET.""" # Gene-disease associations gda = tu.tools.DisGeNET_search_gene( operation="search_gene", gene=gene_symbol, limit=20 ) # Variant-disease associations (if rsID available) 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 (NEW) ClinGen provides authoritative curation of gene-disease relationships: ```python def get_clingen_evidence(tu, gene_symbol): """ Get ClinGen gene validity and dosage sensitivity data. CRITICAL for ACMG classification - establishes gene-disease validity. """ # 1. Gene-disease validity (Definitive/Strong/Moderate/Limited) 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'), # Definitive, Strong, etc. 'inheritance': entry.get('Inheritance'), 'mondo_id': entry.get('Disease ID (MONDO)') }) # 2. Dosage sensitivity (haploinsufficiency, triplosensitivity) 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 # Usually one entry per gene # 3. Clinical actionability (for incidental findings context) 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' } ``` **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 | **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 | ### 2.5 SpliceAI Splice Variant Prediction (NEW) ~15% of pathogenic variants affect splicing. SpliceAI is the gold standard for splice prediction: ```python 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 Thresholds: - ≥0.8: High pathogenicity (strong PP3) - 0.5-0.8: Moderate (supporting PP3) - 0.2-0.5: Low (weak evidence) - <0.2: Likely benign """ # Format variant for SpliceAI variant = f"chr{chrom}-{pos}-{ref}-{alt}" # Get full splice predictions 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', '') # Determine ACMG support 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)
Auf GitHub ansehen
Diese SKILL.md ist sehr gross, daher zeigt SkillsMP hier nur den ersten Abschnitt. Auf GitHub ansehen