Skip to content

Non-coding germline (CPSR) Pathogenic/Likely Pathogenic variants dropped from PCGR report #306

Description

@sigven

Description

The germline variant table embedded in the PCGR HTML report (sourced from CPSR classification results) was incorrectly filtering out Pathogenic and Likely Pathogenic variants whenever they had a non-coding consequence (e.g. intron_variant, 3_prime_UTR_variant, 5_prime_UTR_variant). Only variants matching CODING_STATUS == "coding" were retained, and this filter was applied uniformly across all clinical significance categories — including P/LP — rather than being limited to VUS.

As a result, a case with CPSR-flagged pathogenic findings in cancer predisposition genes could show zero of them in the PCGR report's germline table, while the full CPSR report correctly listed them.

Steps to reproduce

  1. Run CPSR on a germline VCF with at least one Pathogenic/Likely Pathogenic variant that has a non-coding consequence (e.g. intronic or UTR).
  2. Run PCGR with the CPSR output integrated.
  3. Compare the CPSR summary panel (which correctly lists the P/LP gene(s)) against the "Germline findings" table embedded in the PCGR report — the P/LP variant(s) are absent.

Example
intron_variant classified Pathogenic
3_prime_UTR_variant classified Likely Pathogenic

Both were excluded from the PCGR-embedded table despite being correctly classified by CPSR.

Root cause

In pcgrr/R/input_data.R, load_cpsr_classified_variants() applied:

dplyr::filter((.data$CLINICAL_SIGNIFICANCE == "Pathogenic" |
                .data$CLINICAL_SIGNIFICANCE == "Likely Pathogenic" |
                .data$CLINICAL_SIGNIFICANCE == "VUS") &
                .data$CODING_STATUS == "coding")

The CODING_STATUS == "coding" clause was AND-ed across the whole filter, so it also excluded non-coding P/LP variants, not just non-coding VUS - which should be the intended scope of that restriction. Do note that with respect to the totality of ClinVar P/LP variants in cancer predisposition genes, the non-coding ones are very rare. However, as some of these may be common in the population (which may question their classification accuracy), and will therefore show up frequently in reports.

Fix

All Pathogenic/Likely Pathogenic variants are now shown regardless of coding status; only VUS remains restricted to coding variants (to keep that subset focused rather than exhaustive):

dplyr::filter(
  .data$CLINICAL_SIGNIFICANCE == "Pathogenic" |
  .data$CLINICAL_SIGNIFICANCE == "Likely Pathogenic" |
  (.data$CLINICAL_SIGNIFICANCE == "VUS" &
     .data$CODING_STATUS == "coding"))

The report text explaining the germline table was also updated to make explicit that shown VUS are a focused, coding-only subset, not the complete CPSR VUS list.

Already fixed on dev; will ship in the next patch release.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions