Initial commit

This commit is contained in:
2025-11-28 11:52:04 +08:00
commit f74dc351f7
51 changed files with 2402 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
from __future__ import annotations
from dataclasses import dataclass
from typing import List
from genomic_consultant.acmg.tagger import ACMGConfig, tag_variant
from genomic_consultant.panels.panels import GenePanel
from genomic_consultant.store.query import GenomicStore
from genomic_consultant.utils.models import FilterConfig, SuggestedClassification, Variant
@dataclass
class PanelVariantResult:
variant: Variant
acmg: SuggestedClassification
@dataclass
class PanelAnalysisResult:
individual_id: str
panel: GenePanel
variants: List[PanelVariantResult]
def run_panel_variant_review(
individual_id: str,
panel: GenePanel,
store: GenomicStore,
acmg_config: ACMGConfig,
filters: FilterConfig | None = None,
) -> PanelAnalysisResult:
"""Query variants for a panel and attach ACMG evidence suggestions."""
variants = store.get_variants_by_gene(individual_id=individual_id, genes=panel.genes, filters=filters)
enriched = [PanelVariantResult(variant=v, acmg=tag_variant(v, acmg_config)) for v in variants]
return PanelAnalysisResult(individual_id=individual_id, panel=panel, variants=enriched)