Skip to content

A research-oriented, transparent, and extensible variant interpretation pipeline implementing ACMG/AMP 2015 & 2023 guidelines.

Notifications You must be signed in to change notification settings

Bilmem2/ACMG_Assistant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

60 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧬 ACMG Variant Classification Assistant

v4 0 0 screenshot

A research-oriented, transparent, and extensible variant interpretation pipeline implementing ACMG/AMP 2015 & 2023 guidelines.

πŸ“₯ Quick Start

Download Latest Windows Executable from Google Drive

Ready-to-use standalone .exe β€” No Python installation required!


Overview

ACMG Assistant is a variant classification tool implementing the ACMG/AMP 2015 and 2023 guidelines. It combines automatic data retrieval from public APIs with structured interactive evidence collection to produce transparent, reproducible classifications.

Automatic evaluation:

  • Population frequency criteria (BA1, BS1, PM2) via gnomAD, ExAC, TOPMed
  • Computational/in-silico criteria (PP3, BP4) via multi-source predictor aggregation
  • Functional domain criteria (PM1) via CancerHotspots and UniProt
  • Phenotype matching (PP4, BP5) via HPO ontology similarity

Interactive evaluation:

  • Literature-based criteria (PS3/BS3, PS4, PP1/BS4, PS1/PM5, PP5/BP6) through structured prompts

Intended Use

Use Case Suitability
Educational use βœ… Understanding ACMG classification logic
Research pipelines βœ… Reproducible, transparent variant interpretation
Pre-screening variants βœ… Workflow augmentation before expert review
Clinical decision-making ❌ Not intended β€” requires expert validation

Philosophy

  • βœ… Thresholds, weights, scoring formulas β†’ Defined locally
  • βœ… ACMG evidence combination rules β†’ Defined locally
  • ❌ Predictor scores (REVEL, CADD, etc.) β†’ Must be fetched from APIs
  • ❌ Population allele frequencies β†’ Must be fetched from APIs
  • ❌ Functional domains, hotspots β†’ Must be fetched from APIs
  • ❌ Gene-specific rules β†’ Must be fetched from APIs or entered by user

Data Sources (in priority order)

All factual variant-level data must come from one of:

  1. External APIs (gnomAD, ClinVar, UniProt, CancerHotspots, myvariant.info, etc.)
  2. User input (interactive evidence collection for literature-based criteria)
  3. Validated cache (previously fetched and validated API responses)

The local codebase NEVER fabricates biological values β€” it only interprets them.

Interactive Evidence for Literature-Based Criteria

Criteria that require literature review are handled through structured interactive prompts:

Criterion What User Provides
PS3 / BS3 Functional study details, assay type, quality level
PS4 Case-control counts, odds ratio data
PP1 / BS4 Segregation data, LOD scores, family structure
PS1 / PM5 Prior variant at same codon, ClinVar status
PP5 / BP6 External lab assertions, submission quality

Phenotype Matching

The PhenotypeMatcher provides algorithmic phenotype-to-gene matching for PP4/BP5 evidence:

  • Uses HPO (Human Phenotype Ontology) term similarity
  • Computes reproducible Jaccard and Information Content (IC) based scores
  • Serves as a screening aid, not a replacement for clinical phenotyping by domain experts

Data Flow Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                              CLI / Entry Point                              β”‚
β”‚                            (acmg_assistant.py)                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                      β”‚
                                      β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                            EvidenceEvaluator                                β”‚
β”‚                    (Central orchestration engine)                           β”‚
β”‚                                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                    _fetch_external_data()                            β”‚   β”‚
β”‚  β”‚         "Fetch once, interpret many" β€” pre-loads all data            β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚                    β”‚                    β”‚                    β”‚
          β–Ό                    β–Ό                    β–Ό                    β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ PredictorAPI    β”‚  β”‚ PopulationAPI   β”‚  β”‚ GeneSpecific    β”‚  β”‚ Interactive     β”‚
β”‚ Client          β”‚  β”‚ Client          β”‚  β”‚ Rules           β”‚  β”‚ Evidence        β”‚
β”‚                 β”‚  β”‚                 β”‚  β”‚                 β”‚  β”‚ Collector       β”‚
β”‚ β€’ myvariant.infoβ”‚  β”‚ β€’ gnomAD GraphQLβ”‚  β”‚ β€’ CancerHotspotsβ”‚  β”‚                 β”‚
β”‚ β€’ AlphaMissense β”‚  β”‚ β€’ ExAC REST     β”‚  β”‚ β€’ UniProt       β”‚  β”‚ β€’ PS3/BS3       β”‚
β”‚ β€’ CADD API      β”‚  β”‚ β€’ TOPMed        β”‚  β”‚ β€’ ClinGen       β”‚  β”‚ β€’ PS4           β”‚
β”‚ β€’ VEP           β”‚  β”‚                 β”‚  β”‚                 β”‚  β”‚ β€’ PP1/BS4       β”‚
β”‚                 β”‚  β”‚                 β”‚  β”‚                 β”‚  β”‚ β€’ PS1/PM5       β”‚
β”‚ Multi-source    β”‚  β”‚ Multi-source    β”‚  β”‚ PM1 external    β”‚  β”‚ β€’ PP5/BP6       β”‚
β”‚ priority-based  β”‚  β”‚ gnomAD-first    β”‚  β”‚ hotspots/domainsβ”‚  β”‚                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                    β”‚                    β”‚                    β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚
                         β–Ό
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
          β”‚          ResultCache                β”‚
          β”‚   (Strict validation layer)         β”‚
          β”‚                                     β”‚
          β”‚  β€’ Validates all entries before use β”‚
          β”‚  β€’ Rejects invalid/corrupted data   β”‚
          β”‚  β€’ TTL-based expiration             β”‚
          β”‚  β€’ Thread-safe file storage         β”‚
          β”‚                                     β”‚
          β”‚  "Cache is optimization, NOT truth" β”‚
          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚
                         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                           Pure Interpretation Layer                         β”‚
β”‚                                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                 β”‚
β”‚  β”‚ MissenseEval   β”‚  β”‚ PopulationAnal β”‚  β”‚ PhenotypeMatcherβ”‚                β”‚
β”‚  β”‚                β”‚  β”‚                β”‚  β”‚                β”‚                 β”‚
β”‚  β”‚ Composite scoreβ”‚  β”‚ AF thresholds  β”‚  β”‚ HPO similarity β”‚                 β”‚
β”‚  β”‚ β†’ PP3 / BP4    β”‚  β”‚ β†’ BA1/BS1/PM2  β”‚  β”‚ β†’ PP4 / BP5    β”‚                 β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                 β”‚
β”‚                                                                             β”‚
β”‚  "Data missing β†’ safely degrade evidence strength, never fabricate"         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚
                         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                            ACMGClassifier                                   β”‚
β”‚                                                                             β”‚
β”‚  Merges all evidence (automatic + interactive) β†’ Final classification       β”‚
β”‚  Pathogenic / Likely Pathogenic / VUS / Likely Benign / Benign              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Principles

  1. Fetch Once, Interpret Many: External data is fetched at the start; evaluators are pure interpreters
  2. Cache is Optimization, Not Truth: Invalid cache entries are rejected, not trusted
  3. Graceful Degradation: Missing data β†’ reduced evidence strength, never fabricated values

Caching Model

ACMG Assistant uses a strict, validated caching layer to minimize redundant API calls while ensuring data integrity.

CacheKey Structure

CacheKey(
    category='predictor' | 'population',
    source='dbNSFP' | 'gnomAD_GraphQL' | ...,
    variant_id='GRCh38:17-7674234-G-A',
    version='v4.0'  # optional
)

TTL (Time-To-Live) Rules

Data Type Default TTL Rationale
Predictor scores 7 days Scores rarely change
Population data 30 days gnomAD updates infrequently

Validation Before Trust

All cached entries are validated before use:

  • Predictor scores: Must be within valid ranges (REVEL ∈ [0,1], CADD ∈ [0,60], etc.)
  • Population stats: AF ∈ [0,1], AC ≀ AN, no negative values
  • Invalid entries: Automatically invalidated and re-fetched

Corruption Handling

  • JSON decode errors β†’ Cache miss (file removed)
  • Hash mismatch β†’ Cache miss (file removed)
  • Expired entries β†’ Cache miss (file removed)

Thread Safety

ResultCache uses threading.RLock for safe concurrent access.

Cache Location

Default: src/api_cache/ (organized by category/source)


Evidence Types Supported

Evidence Source Type Details
BA1 / BS1 / PM2 Population data βœ… Automatic gnomAD, ExAC allele frequencies
PP3 / BP4 In-silico predictors βœ… Automatic Multi-source: REVEL, CADD, AlphaMissense, SIFT, PolyPhen2, etc.
PM1 Functional domains βœ… Automatic CancerHotspots API + UniProt domains
PP4 / BP5 Phenotype matching βœ… Automatic HPO ontology similarity scoring
PS3 / BS3 Functional studies πŸ”„ Interactive User enters assay details, quality
PS4 Case-control data πŸ”„ Interactive User enters case/control counts
PP1 / BS4 Segregation πŸ”„ Interactive User enters pedigree, LOD scores
PS1 / PM5 Prior variants πŸ”„ Interactive User enters codon-based prior data
PP5 / BP6 External assertions πŸ”„ Interactive User enters lab submissions
PVS1 Null variants βœ… Automatic LOF in haploinsufficient genes
PS2 / PM6 De novo πŸ”„ Interactive User confirms parental testing
PM3 / BP2 In-trans/cis πŸ”„ Interactive User enters phase data

Limitations & Safety Notes

⚠️ Critical Disclaimers

  1. NOT a Clinical Decision-Making System

    • All evidence must be reviewed by a qualified clinical geneticist
    • Classifications are suggestions, not diagnoses
  2. API Dependency

    • Network failures or API downtime may limit automatic criteria
    • Missing data results in reduced evidence, never forced calls
  3. Interactive Evidence Accuracy

    • PS3, PS4, PP1, etc. rely on truthful user input
  4. Missense Composite Score

    • The PP3/BP4 composite score is a research approximation
    • It is NOT the validated VAMPP score β€” only inspired by similar methodology
    • Clinical labs should use their own validated thresholds
  5. Phenotype Matching

    • HPO similarity is approximate and algorithmic
    • NOT a replacement for clinical phenotyping by experts
    • Low sensitivity for rare/novel phenotypes
  6. Cache Validity

    • Cache is an optimization layer, not a source of truth
    • Stale cache may return outdated scores if TTL not managed

What This Tool Does NOT Do

  • ❌ Replace expert clinical judgment
  • ❌ Guarantee 100% accuracy
  • ❌ Provide legally binding classifications
  • ❌ Automatically retrieve all possible data sources
  • ❌ Handle structural variants (current focus: SNVs, indels)

Versioning & Changelog

Current Version: v4.0.x

Latest Release: December 2025

Major Changes in v4.0.0

Feature Description
Multi-source predictor system Fetches from myvariant.info, AlphaMissense API, CADD API with source priority
Multi-source population AF gnomAD GraphQL (primary), ExAC, TOPMed fallbacks
Strict validated caching ResultCache with validation, TTL, thread safety
PM1 via external hotspots CancerHotspots API + UniProt functional domains
Phenotype matcher overhaul HPO-based similarity with IC weighting
Interactive evidence subsystem Structured prompts for PS3/BS3, PS4, PP1/BS4, PS1/PM5, PP5/BP6
198 tests passing Comprehensive test coverage

Previous Versions

  • v3.5.0: Gene-specific rules, enhanced API integration
  • v3.3.0: Statistical framework (Fisher's exact, LOD scoring)
  • v3.0.0: Initial ACMG 2023 support
  • v2.x: Core ACMG 2015 implementation

Installation & Usage

Python Installation (Recommended for Development)

# Clone the repository
git clone https://github.com/Bilmem2/ACMG_Assistant
cd ACMG_Assistant

# Create virtual environment (optional but recommended)
python -m venv venv
venv\Scripts\activate  # Windows
# source venv/bin/activate  # Linux/Mac

# Install dependencies
pip install -r requirements.txt

# Run from src directory
cd src
python acmg_assistant.py

Command Options

# Standard mode (ACMG 2015)
python acmg_assistant.py

# ACMG 2023 mode
python acmg_assistant.py --acmg-2023

# Test mode (mock data, no API calls)
python acmg_assistant.py --test

# Show version
python acmg_assistant.py --version

API Dependencies

The tool requires internet access for:

  • gnomAD (population frequencies)
  • myvariant.info (predictor scores via dbNSFP)
  • CancerHotspots (PM1 hotspot detection)
  • UniProt (functional domains)
  • ClinVar (external assertions)

Offline mode uses cached data only.

Linux Installation

Tested on Ubuntu 22.04 LTS:

git clone https://github.com/Bilmem2/ACMG_Assistant
cd ACMG_Assistant
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cd src && python3 acmg_assistant.py

Binary Releases / Executable Distribution

Windows Standalone Executable

ACMG Assistant is distributed as a standalone Windows .exe for users without Python:

Download from Google Drive

Usage

  1. Download and extract the ZIP file
  2. Run ACMG_Assistant.exe
  3. Follow the interactive prompts

Notes on Executable

  • First startup may be slow
  • Internet required for API calls
  • Cache persists between runs in the same directory
  • No Python installation needed

Rebuilding the Executable

# Install build dependencies
pip install -r requirements_build.txt

# Build executable
python build_executable_new.py

# Output: dist/ACMG_Assistant.exe

Docker Container

ACMG Assistant is available as a Docker container for cross-platform deployment:

# Pull from GitHub Container Registry
docker pull ghcr.io/bilmem2/acmg_assistant:latest

# Or from Quay.io
docker pull quay.io/bilmem2/acmg_assistant:latest

# Run interactively
docker run -it --rm ghcr.io/bilmem2/acmg_assistant:latest

# With persistent cache
docker run -it --rm -v ./cache:/app/cache ghcr.io/bilmem2/acmg_assistant:latest

See Dockerfile for build details.


Project Structure

ACMG_Assistant/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ acmg_assistant.py              # Main CLI entry point
β”‚   β”œβ”€β”€ config/
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   β”œβ”€β”€ constants.py               # Thresholds, API settings
β”‚   β”‚   β”œβ”€β”€ predictors.py              # PredictorScore, PopulationStats dataclasses
β”‚   β”‚   └── version.py                 # Version metadata
β”‚   β”œβ”€β”€ core/
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   β”œβ”€β”€ acmg_classifier.py         # Final classification engine
β”‚   β”‚   β”œβ”€β”€ evidence_evaluator.py      # Central orchestration
β”‚   β”‚   β”œβ”€β”€ variant_data.py            # VariantData dataclass
β”‚   β”‚   β”œβ”€β”€ missense_evaluator.py      # PP3/BP4 composite scoring
β”‚   β”‚   β”œβ”€β”€ population_analyzer.py     # BA1/BS1/PM2 evaluation
β”‚   β”‚   β”œβ”€β”€ gene_specific_rules.py     # Gene-specific PM1, thresholds
β”‚   β”‚   β”œβ”€β”€ phenotype_matcher.py       # PP4/BP5 HPO matching
β”‚   β”‚   └── functional_studies_evaluator.py  # PS3/BS3 evaluation
β”‚   └── utils/
β”‚       β”œβ”€β”€ __init__.py
β”‚       β”œβ”€β”€ api_client.py              # ClinVar, Ensembl clients
β”‚       β”œβ”€β”€ predictor_api_client.py    # Multi-source predictor/population
β”‚       β”œβ”€β”€ cache.py                   # ResultCache with validation
β”‚       β”œβ”€β”€ input_handler.py           # Interactive evidence collection
β”‚       β”œβ”€β”€ report_generator.py        # Report output
β”‚       └── validators.py              # Input validation
β”œβ”€β”€ tests/
β”‚   β”œβ”€β”€ test_acmg_classifier.py        # 20 tests
β”‚   β”œβ”€β”€ test_gene_specific_pm1.py      # 31 tests
β”‚   β”œβ”€β”€ test_interactive_evidence.py  # 56 tests
β”‚   β”œβ”€β”€ test_predictor_population_api.py  # 40 tests
β”‚   └── test_cache_and_validation.py  # 51 tests
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ gene_rules/                    # Gene-specific configuration
β”‚   └── domain_annotations/            # Functional domain data
β”œβ”€β”€ requirements.txt                   # Runtime dependencies
β”œβ”€β”€ requirements_build.txt             # Build dependencies
β”œβ”€β”€ pyproject.toml                     # Project configuration
└── README.md                          # This file

Citation & References

Citing ACMG Assistant

If you use this tool in your research, please cite:

ACMG Variant Classification Assistant
https://doi.org/10.5281/zenodo.15831866

Related Work

This tool uses a VAMPP-score-inspired metascore approach. If you use this methodology, please also cite:

Eylul Aydin, Berk Ergun, et al. "A New Era in Missense Variant Analysis: Statistical Insights and the Introduction of VAMPP-Score for Pathogenicity Assessment." bioRxiv (2024). DOI: 10.1101/2024.07.11.602867

ACMG/AMP Guidelines

Richards S, et al. "Standards and guidelines for the interpretation of sequence variants." Genet Med. 2015;17(5):405-424.

Plon SE, et al. "Sequence variant classification and reporting: recommendations for improving the interpretation of cancer susceptibility genetic test results." Hum Mutat. 2008.


Contact


ACMG Assistant