Catalog PyPI
PACKAGE EXPLORERView in registry

acmg-points

PyPI

Points-based ACMG/AMP variant classification (Tavtigian 2020 naturally-scaled system, the basis of SVC v4) side by side with the 2015 combining rules — see where they disagree.

acmgampbayesianclassificationclingenpointssvivariant
Versions collected1
Direct dependencies0From release 0.1.2
Last observed20 Oct, 18:19 UTC

README

Version 0.1.2 documentation

acmg-points

ci DOI coverage no dependencies scheme rules License: MIT

Points-based ACMG/AMP variant classification, side by side with the 2015 combining rules — so you can see exactly where the two systems disagree on your evidence.

ClinGen is moving variant classification from the 2015 combining rules to a points system (Tavtigian 2020, the basis of the forthcoming SVC v4). Most labs still reason in 2015 rules; most calculators implement one system or the other. acmg-points runs both on the same evidence and flags the disagreements, with the provenance of every point.

pip install git+https://github.com/MargoSolo/acmg-points      # no dependencies
acmg-points classify PVS1 PM1
  PVS1  VeryStrong  +8
  PM1   Moderate    +2
  total             +10 → Pathogenic          [tavtigian2020]
  2015 rules        → Likely pathogenic       (2015 combining rule met)
  ⚠️ SCHEMES DISAGREE

Where the systems disagree

Fifteen evidence sets from examples/cases.txt, placed on the points scale; the band gives the points class, and ✕ marks the sets where the 2015 rules say something else:

points vs 2015 rules

evidencepointspoints class2015 classwhy
PVS1 + PM1 (one Moderate)+10PathogenicLikely pathogenic2015 needs PVS1 + ≥ 2 Moderate for Pathogenic; points reach 10 with one
PVS1 + PP3 (one Supporting)+9Likely pathogenicVUS2015 needs ≥ 2 Supporting next to PVS1; points need one
PVS1 + PM2_Supporting+9Likely pathogenicVUSthe same pattern with PM2 at the strength ClinGen SVI recommends since 2020

Full table: examples/compare.md.

Conflicting evidence. Richards 2015 puts a variant in Uncertain significance when "the criteria for benign and pathogenic are contradictory". That sentence has two readings, and implementations differ. acmg-points defaults to the stricter one and lets you switch:

--conflictreadingPS1 + PM1 + BS1
any (default)any pathogenic evidence together with any benign evidence → VUSVUS (points: +2, VUS too)
both-metVUS only when a pathogenic rule and a benign rule are both metLikely pathogenic

BA1 is stand-alone benign evidence under both readings and is not overridden by supporting pathogenic criteria. The JSON output records which reading was used.

PM2. The 2015 default is Moderate; ClinGen SVI recommended PM2 at Supporting strength in 2020. Apply it as PM2_Supporting — the package does not silently downgrade it, because the strength is your decision.

Use

acmg-points classify PVS1 PM2_Supporting PP3      # modified strengths: CODE_Strength (also CODE:Strength, CODE-Sup)
acmg-points classify PS1 PM1 --json               # per-criterion points and both verdicts, machine-readable
acmg-points compare --file cases.txt              # one evidence set per line, '#' comments → markdown table
acmg-points table                                 # the scheme in force, with citation

Strengths: Supporting Moderate Strong VeryStrong (Sup/Mod/Str/VS), StandAlone for BA1. Applying a criterion twice is an error.

What is implemented — and what deliberately is not

flowchart LR
  E["applied criteria<br/>PVS1 · PM2_Supporting · BS1 …"] --> P["points<br/>Tavtigian 2020<br/>+1 +2 +4 +8 / −1 −2 −4 −8, BA1 = −8"]
  E --> R["2015 combining rules<br/>Richards 2015, Table 5<br/>counted at applied strength"]
  P --> V[both verdicts · disagree flag · JSON]
  R --> V
  • Points: Tavtigian et al. 2020, Hum Mutat 41:1734. Bands: Pathogenic ≥ 10 · Likely pathogenic 6–9 · VUS 0–5 · Likely benign −6…−1 · Benign ≤ −7.
  • 2015 rules: Richards et al. 2015, Genet Med 17:405, including the conflict rule. Criteria count at their applied strength (PM2_Supporting is a Supporting criterion), as ClinGen SVI modifiers intend.
  • Not implemented on purpose: any "SVC v4.0 points table". v4 is in pilot and unpublished. Schemes live in one file, schemes.py; when the official table appears it becomes a second scheme, not a rewrite.

This is a combiner, not a classifier: it assumes you have decided which criteria apply at which strength. It does not assess evidence, query gnomAD, or know VCEP gene-specific specifications. It will also happily sum criteria that should not be co-applied (e.g. PVS1 with PM4) — mutual-exclusion checks are on the roadmap.

Tests

Five pytest cases pin the published bands, the strength modifiers, the 2015 conflict rule and the three divergences above; CI also regenerates the comparison table.

Roadmap

Official SVC v4.0 table as a drop-in scheme · SVI modifier library (PVS1 decision tree, calibrated PP3/BP4) · co-application checks · VCEP-specific schemes · batch from CSV / VCF INFO · JOSS paper.

Cite

DOI (all versions): 10.5281/zenodo.22286276 · this version: 10.5281/zenodo.22286277

Soloshenko M. acmg-points: points-based ACMG/AMP classification alongside the 2015 rules. 2026, v0.1.0. Please also cite Tavtigian et al. 2020 and Richards et al. 2015 — the science is theirs. MIT License.

Downloads & popularity

2downloads
1-day window · source-reported counts20 Oct 2026
237118.50
2026-09-03: 237 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-03–2026-09-032026-09-04: 31 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-04–2026-09-042026-09-05: 21 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-05–2026-09-052026-09-06: 10 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-06–2026-09-062026-09-07: 14 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-07–2026-09-072026-09-08: 6 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-08–2026-09-082026-09-09: 8 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-09–2026-09-092026-09-10: 5 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-10–2026-09-102026-09-11: 4 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-11–2026-09-112026-09-12: 1 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-12–2026-09-122026-09-14: 1 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-14–2026-09-142026-09-15: 2 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-15–2026-09-152026-09-16: 8 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-16–2026-09-162026-09-17: 1 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-17–2026-09-172026-09-18: 6 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-18–2026-09-182026-09-19: 6 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-19–2026-09-192026-09-20: 5 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-20–2026-09-202026-09-21: 1 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-21–2026-09-212026-09-24: 8 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-24–2026-09-242026-09-25: 1 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-25–2026-09-252026-09-26: 2 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-26–2026-09-262026-09-27: 2 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-27–2026-09-272026-09-28: 6 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-28–2026-09-282026-09-29: 3 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-29–2026-09-292026-09-30: 6 · observed 2026-10-21T12:35:00.0398131Z · period 2026-09-30–2026-09-302026-10-03: 9 · observed 2026-10-21T12:35:00.0398131Z · period 2026-10-03–2026-10-032026-10-04: 1 · observed 2026-10-21T12:35:00.0398131Z · period 2026-10-04–2026-10-042026-10-05: 6 · observed 2026-10-21T12:35:00.0398131Z · period 2026-10-05–2026-10-052026-10-06: 1 · observed 2026-10-21T12:35:00.0398131Z · period 2026-10-06–2026-10-062026-10-08: 6 · observed 2026-10-21T12:35:00.0398131Z · period 2026-10-08–2026-10-082026-10-09: 7 · observed 2026-10-21T12:35:00.0398131Z · period 2026-10-09–2026-10-092026-10-10: 2 · observed 2026-10-21T12:35:00.0398131Z · period 2026-10-10–2026-10-102026-10-13: 2 · observed 2026-10-21T12:35:00.0398131Z · period 2026-10-13–2026-10-132026-10-16: 9 · observed 2026-10-21T12:35:00.0398131Z · period 2026-10-16–2026-10-162026-10-17: 1 · observed 2026-10-21T12:35:00.0398131Z · period 2026-10-17–2026-10-172026-10-18: 2 · observed 2026-10-21T12:35:00.0398131Z · period 2026-10-18–2026-10-182026-10-19: 2 · observed 2026-10-21T12:35:00.0398131Z · period 2026-10-19–2026-10-192026-10-20: 2 · observed 2026-10-21T12:35:00.0398131Z · period 2026-10-20–2026-10-20
3 Sept20 Oct

pypistats · 38 observations shown. Missing days are unknown. Source category: overall: without mirrors.

View observed values
Date / source periodValueObserved at
2026-10-20 – 2026-10-2022026-10-21T12:35:00.0398131Z
2026-10-19 – 2026-10-1922026-10-21T12:35:00.0398131Z
2026-10-18 – 2026-10-1822026-10-21T12:35:00.0398131Z
2026-10-17 – 2026-10-1712026-10-21T12:35:00.0398131Z
2026-10-16 – 2026-10-1692026-10-21T12:35:00.0398131Z
2026-10-13 – 2026-10-1322026-10-21T12:35:00.0398131Z
2026-10-10 – 2026-10-1022026-10-21T12:35:00.0398131Z
2026-10-09 – 2026-10-0972026-10-21T12:35:00.0398131Z
2026-10-08 – 2026-10-0862026-10-21T12:35:00.0398131Z
2026-10-06 – 2026-10-0612026-10-21T12:35:00.0398131Z
2026-10-05 – 2026-10-0562026-10-21T12:35:00.0398131Z
2026-10-04 – 2026-10-0412026-10-21T12:35:00.0398131Z
2026-10-03 – 2026-10-0392026-10-21T12:35:00.0398131Z
2026-09-30 – 2026-09-3062026-10-21T12:35:00.0398131Z
2026-09-29 – 2026-09-2932026-10-21T12:35:00.0398131Z
2026-09-28 – 2026-09-2862026-10-21T12:35:00.0398131Z
2026-09-27 – 2026-09-2722026-10-21T12:35:00.0398131Z
2026-09-26 – 2026-09-2622026-10-21T12:35:00.0398131Z
2026-09-25 – 2026-09-2512026-10-21T12:35:00.0398131Z
2026-09-24 – 2026-09-2482026-10-21T12:35:00.0398131Z
2026-09-21 – 2026-09-2112026-10-21T12:35:00.0398131Z
2026-09-20 – 2026-09-2052026-10-21T12:35:00.0398131Z
2026-09-19 – 2026-09-1962026-10-21T12:35:00.0398131Z
2026-09-18 – 2026-09-1862026-10-21T12:35:00.0398131Z
2026-09-17 – 2026-09-1712026-10-21T12:35:00.0398131Z
2026-09-16 – 2026-09-1682026-10-21T12:35:00.0398131Z
2026-09-15 – 2026-09-1522026-10-21T12:35:00.0398131Z
2026-09-14 – 2026-09-1412026-10-21T12:35:00.0398131Z
2026-09-12 – 2026-09-1212026-10-21T12:35:00.0398131Z
2026-09-11 – 2026-09-1142026-10-21T12:35:00.0398131Z
2026-09-10 – 2026-09-1052026-10-21T12:35:00.0398131Z
2026-09-09 – 2026-09-0982026-10-21T12:35:00.0398131Z
2026-09-08 – 2026-09-0862026-10-21T12:35:00.0398131Z
2026-09-07 – 2026-09-07142026-10-21T12:35:00.0398131Z
2026-09-06 – 2026-09-06102026-10-21T12:35:00.0398131Z
2026-09-05 – 2026-09-05212026-10-21T12:35:00.0398131Z
2026-09-04 – 2026-09-04312026-10-21T12:35:00.0398131Z
2026-09-03 – 2026-09-032372026-10-21T12:35:00.0398131Z

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.1.23 Sept 20260

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
margosolo/acmg-points

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 18:19 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:296529b0346632e756b9c616342a29a8b6ecb1b2e3cddf079157b7768bb31b61