CNV Classifier

ACMG/ClinGen constitutional CNV interpretation · GRCh38

This tool classifies a single constitutional copy-number variant (CNV) using the ACMG/ClinGen 2020 technical standard (Riggs et al., Genet Med 2020). It applies the published point-based scoring system: evidence is gathered across five categories, added into a single score, and mapped to a 5-tier clinical classification. Deletions (losses) and duplications (gains) are scored with separate tables.

The five evidence sections

Section 1 — Genomic content. Does the CNV contain a protein-coding gene? A CNV with no genes or functionally important elements is initial evidence against pathogenicity; otherwise evaluation continues.

Section 2 — Overlap with dosage-sensitive genes and regions. The strongest evidence, drawn from ClinGen curations:

Section 3 — Number of genes. Larger CNVs spanning many protein-coding genes score higher, with different thresholds for losses and gains. Clustered gene families are collapsed to avoid over-counting.

Section 4 — Population frequency and published cases. A CNV that is common in the general population (gnomAD-SV) is benign evidence, scaled by frequency — though a common heterozygous deletion of a recessive-disease gene is treated as an expected carrier allele, not as benign evidence. Reported patients, family segregation, and case-control studies are scored here when supplied.

Section 5 — Inheritance in your proband. De novo occurrence, inheritance from an affected or unaffected parent, segregation with disease, and how specifically the patient’s phenotype (HPO terms) matches the genes involved.

From score to classification

Section scores are summed — with caps that prevent any single category from dominating — into a final point value:

ClassificationTotal points
Pathogenic≥ +0.99
Likely pathogenic+0.90 to +0.98
Uncertain significance−0.89 to +0.89
Likely benign−0.90 to −0.98
Benign≤ −0.99

What to enter

Use it from a coding agent (JSON API)

The same engine behind this form is a JSON API. To let a coding agent (Claude Code, Cursor, etc.) classify CNVs for you, paste the annotated brief below into the agent — it contains the endpoint, the request and response shapes, and the field meanings it needs to integrate.

Quick test with curl:

curl -X POST https://cnvclassifier.viknox.com/api/v1/classify \
  -H 'Content-Type: application/json' \
  -d '{"variants": [{"chrom": "chr22", "start": 19000000,
                     "end": 21500000, "cnv_type": "loss"}]}'

Copy-paste brief for your coding agent:

CNV Classification API — integration brief
==========================================
Base URL:   https://cnvclassifier.viknox.com/
Classify:   POST api/v1/classify   (Content-Type: application/json)
Health:     GET  health
Rate limit: 120 requests/minute per IP (batch many variants in one call).

Implements the ACMG/ClinGen 2020 (Riggs) CNV point metric and returns a
5-tier classification. Coordinates are 1-based, inclusive. Scoring is on
GRCh38; pass genome_build "hg19" to have coordinates lifted before scoring
(a lift judged unreliable is refused, not scored).

Request body — annotated (comments are NOT valid JSON, strip before sending):
{
  "variants": [                        // batch: one or more variants
    {
      "chrom": "chr22",                // chr1-22, chrX, chrY (chr optional)
      "start": 19000000,               // 1-based inclusive        (required)
      "end": 21500000,                 //                          (required)
      "cnv_type": "loss",              // "loss" | "gain"          (required)
      "genome_build": "hg38",          // "hg38" (default) | "hg19"

      // --- everything below is optional clinical evidence ---
      "hpo_terms": ["HP:0001250"],     // proband phenotype (HPO ids)
      "inheritance": "de_novo_confirmed",
      "phenotype_consistency": "consistent",
      "reported_cases": [{"inheritance": "de_novo_confirmed",
                          "phenotype": "specific"}],
      "reported_segregation": {"affected_with_variant": 3,
                               "affected_without_variant": 0},
      "case_control_studies": [{"significant": true,
                                "phenotype_specific": true}]
    }
  ]
}

Response:
{
  "results": [                         // results[i] aligns with variants[i]
    {
      "classification": "Pathogenic",  // Pathogenic | Likely pathogenic |
                                       // Uncertain significance |
                                       // Likely benign | Benign | null
      "total_points": 1.0,
      "section_scores": {"1": 0.0, "2": 1.0, "3": 0.0, "4": 0.0, "5": 0.0},
      "evidence": [
        {"category_id": "2A", "points": 1.0,
         "suggested_range": null, "reason": "..."}
      ],
      "pending_evidence": [],
      "liftover": null                 // populated only for hg19 requests
    }
  ]
}

Notes:
- classification is null only when an hg19->hg38 lift is refused; then
  liftover.status == "failed" and liftover.reason explains why.
- With coordinates only, mid-size CNVs often score Uncertain significance;
  adding hpo_terms / inheritance / segregation can move them to a call.

Scope and limitations

The tool implements the published Riggs 2020 scoresheet verbatim; point values and tier thresholds are not rescaled. Some categories remain documented simplifications (for example, inheritance from an affected parent is scored neutrally). Results depend on the completeness of the evidence supplied and on the underlying ClinGen, gnomAD-SV, and HPO reference data.

Reference

Riggs ER, Andersen EF, Cherry AM, et al. Technical standards for the interpretation and reporting of constitutional copy-number variants: a joint consensus recommendation of the American College of Medical Genetics and Genomics (ACMG) and the Clinical Genome Resource (ClinGen). Genet Med. 2020;22(2):245–257. doi:10.1038/s41436-019-0686-8

Research and demonstration use only — not for diagnostic use. Every classification should be reviewed by a qualified clinician or clinical laboratory geneticist.

Classify a CNV