smithery/gptomics

bio-clinical-databases-pharmacogenomics

Queries PharmGKB / CPIC / DPWG for drug-gene interactions; calls CYP2D6/CYP2C9/CYP2C19/DPYD/TPMT/NUDT15/UGT1A1/SLCO1B1 star alleles and phenotype with PharmCAT, Cyrius (CYP2D6 structural variants), Aldy, Stargazer; applies Caudle 2020 activity-score translation.

Installation

$ npx skills add smithery/gptomics --skill bio-clinical-databases-pharmacogenomics

Summary

  • Queries PharmGKB / CPIC / DPWG for drug-gene interactions; calls CYP2D6/CYP2C9/CYP2C19/DPYD/TPMT/NUDT15/UGT1A1/SLCO1B1 star alleles and phenotype with PharmCAT, Cyrius (CYP2D6 structural variants), Aldy, Stargazer; applies Caudle 2020 activity-score translation.
  • Use when implementing pharmacogenomic-guided prescribing, applying CPIC vs DPWG guidance, screening HLA risk alleles for ICI / antiepileptics / abacavir, or interpreting compound TPMT+NUDT15 thiopurine risk.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery/gptomics · top by installs.

npx skills add smithery/gptomics

Browse all from smithery/gptomics

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 30,641 B
  • docs SUMMARY.md 249 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

Version Compatibility

Reference examples tested with: PharmCAT 2.13+, Cyrius 1.1+ (Chen 2021), Aldy 4.0+, Stargazer 2.0+, StarPhase 1.0+ (PacBio HiFi), HIBAG 1.40+, requests 2.31+, pandas 2.2+. CPIC guideline versions are gene-specific; PharmVar releases are quarterly. DPYD dosing uses the CPIC gene activity-score system (Amstutz 2018 Clin Pharmacol Ther 103:210, the 2017-update guideline); the 2025 TPMT/NUDT15 update (Maillard 2026) refines compound-IM dosing.

Before using code patterns, verify installed versions match. If versions differ:

  • Python: pip show <package> then help(module.function) to check signatures
  • CLI: <tool> --version then <tool> --help to confirm flags

If code throws ImportError, AttributeError, or TypeError, introspect the installed package and adapt the example to match the actual API rather than retrying. PharmVar is the authoritative star-allele source (https://www.pharmvar.org); the older Human CYP Allele Nomenclature Database was deprecated in 2017.

Pharmacogenomics; Star Alleles, Activity Scores, and CPIC/DPWG Guidance

'What is my patient's CYP2D6 metabolizer status and should I adjust their tamoxifen dose?' -> Call star alleles (haplotype-level), translate diplotype -> activity score -> phenotype, apply CPIC + DPWG dosing.

  • CLI (recommended): pharmcat -vcf input.vcf.gz -o pharmcat_out; CPIC-recommended, single-tool reporting
  • CLI (CYP2D6 SV-aware): cyrius -m sample.bam -o cyrius_out; mandatory addition for CYP2D6
  • CLI (multi-gene CN-aware): aldy genotype -p illumina sample.bam; alternative
  • CLI (long-read 8-field): PacBio HiFi starphase; transplant-grade including HLA
  • R (SNP-array): HIBAG for HLA-B57:01/B15:02/B58:01/A31:01 imputation
  • API: requests.get('https://api.pharmgkb.org/v1/data/clinicalAnnotation';, ...)

Governance: CPIC vs DPWG vs PharmGKB vs FDA

These four authorities are routinely conflated. They differ in scope, scale, and recommendations:

Authority Scope Output Anchors
CPIC (US Clinical Pharmacogenetics Implementation Consortium) Once a result is available, what to prescribe Level A/B/C/D gene-drug pair + strength of recommendation per phenotype + evidence quality ~26 guidelines, ~25 genes, 100+ drugs as of 2026
DPWG (Dutch Pharmacogenetics Working Group) Whether to test AND what to prescribe 5-pt (0-4) evidence + 7-pt (AA-F) clinical-relevance scale G-Standaard (Dutch EHR-integrated); RCT-validated via PREPARE
PharmGKB clinical annotation levels Evidence cataloguing 1A/1B/2A/2B/3/4 1A = guideline OR medical-society OR PGRN/eMERGE implementation; NOT pure evidence
FDA Table of Pharmacogenomic Biomarkers Drug label info ~300 drugs (informational) NOT an actionability list; many entries are dosing-suggestion-only
FDA Table of Pharmacogenetic Associations Actionable subset Closer to CPIC Compare head-to-head with CPIC

Bank et al 2018 Clin Pharmacol Ther 103:599 (DOI 10.1002/cpt.762) is the canonical CPIC-vs-DPWG comparison. Notable disagreements:

  • CYP2D6 IM + multiple antidepressants: DPWG actionable; CPIC says insufficient evidence.
  • HLA-B*15:11 carbamazepine: DPWG actionable; CPIC silent.
  • CYP2C19 IM + voriconazole: dosing magnitudes differ 25-50%.

Common PGx-evidence critiques: (1) EUR over-representation in discovery cohorts; (2) most PGx RCTs are open-label / prescriber-unblinded; (3) publication bias in antiseizure PGx may overstate effects ~2x; (4) subjective composite endpoints.

PharmGKB Clinical Annotation Levels: What 1A Actually Means

Level Requirement
1A Variant-drug pair appears in CPIC guideline OR medical-society guideline OR is implemented at a PGRN/eMERGE site
1B Replication in multiple cohorts; preponderance of evidence; no formal guideline yet
2A Replicated association in a VIP (Very Important Pharmacogene)
2B Replicated association in non-VIP gene
3 Single significant association OR mixed-evidence variant-drug pair
4 In vitro / case report / molecular evidence only

1A does NOT require RCT evidence; mechanism + guideline status suffices.

Star Allele Nomenclature (PharmVar)

PharmVar (https://www.pharmvar.org) is authoritative for: CYP1A1, CYP1A2, CYP1B1, CYP2A6, CYP2A13, CYP2B6, CYP2C8, CYP2C9, CYP2C19, CYP2D6, CYP2E1, CYP2F1, CYP2J2, CYP2R1, CYP2S1, CYP2W1, CYP3A4, CYP3A5, CYP3A7, CYP3A43, CYP4A11, CYP4F2, CYP19A1, CYP26A1, DPYD, NUDT15, SLCO1B1, TPMT.

A star allele is a haplotype, not a single variant. Suballeles (1.001, 1.002, etc.) encode the exact SNV+indel pattern within a defined functional haplotype.

**The *1 reference is the PharmVar consensus reference, NOT biological wild type.** Defined as the absence of all known functional variants at the locus.

CYP2D6 Activity Scores (Caudle 2020 Clin Transl Sci; DOI 10.1111/cts.12692)

Phenotype Activity score (AS) range
PM (Poor Metabolizer) 0
IM (Intermediate Metabolizer) 0 < AS < 1.25
NM (Normal Metabolizer) 1.25 <= AS <= 2.25
UM (Ultra-rapid) AS > 2.25

Key per-allele activity values (selected):

Allele Activity Notes
\1, \2, \*35 1.0 Normal
\3, \4, \5 (gene deletion), \6, \7, \8, \11, \12, \15, \19, \20, \36, \40, \42 0 No function
\9, \41, \17, \29 0.5 Decreased function (substrate-specific caveats for \*17)
**\*10** 0.25 Caudle 2020 RESET from 0.5 to 0.25; reclassified large fractions of East-Asian populations to IM
\*68 0 Hybrid; non-functional

**\*4xN is clinically silent:** a no-function allele multiplied by N is still no-function. Reporting *4xN as UM is the most-common reportable error in clinical PGx.

CYP2D6 Structural Complexity

CYP2D6 on 22q13.2 sits adjacent to the highly-similar CYP2D7 pseudogene. Four classes of structural variant that no SNV-only caller can resolve:

  1. **Gene deletion (\*5):** ~13 kb deletion; activity 0; diagnostic REP6/REP7 breakpoint.
  2. **Gene duplication/multiplication (\1xN, \2xN, \4xN, \10xN, \17xN, \35xN, \36xN): Tandem copies; clinical impact depends on which allele is amplified; \4xN is clinically silent**.
  3. **CYP2D7 -> CYP2D6 hybrids (\*13):** Pseudogene fused 5'; non-functional.
  4. **CYP2D6 -> CYP2D7 hybrids (\36, \61, \63, \68, \*83):** 5' CYP2D6 with 3' pseudogene exon 9 conversion; typically embedded in duplications upstream of 10 (East Asian) or upstream of 4 (European).

GATK / DeepVariant alone cannot call any of these. They operate on multi-mapper-filtered BAMs; 97%+ identity between CYP2D6 and CYP2D7 produces silent miscalls of every \5, \13, \36, \68, \*4xN sample.

Algorithmic Taxonomy: Star Allele Callers

Tool CYP2D6 SV CYP2D6 CN Other PGx genes Phased Validation Fails when
PharmCAT (Sangkuhl 2020 Clin Pharmacol Ther) No (consumes outside SV calls) No 21 CPIC genes; full clinical reporting Phased or unphased VCF High; CPIC reference CYP2D6 SV-rich samples need Cyrius/StellarPGx upstream
Cyrius (Chen 2021 Pharmacogenomics J) Yes (99.3% concordance) Yes CYP2D6 only Phased haplotypes GeT-RM 99.3% Other genes (single-purpose tool)
BCyrius (PubMed 39901590, 2025) Yes (extended) Yes CYP2D6 only Phased Extended SV diversity Other genes
Aldy v4 (Numanagic 2018 Nat Commun) Yes Yes CYP2D6, CYP2A6, CYP2B6, etc. Phased GeT-RM 82-87% (CYP2D6) Less accurate than Cyrius for CYP2D6
Stargazer (Lee 2019 Genet Med) Limited Yes ~50 PGx genes Statistical phasing ~84% (CYP2D6) Fails on rare alleles; statistical phasing is unstable
StellarPGx Yes (~99%) Yes CYP2D6 + others Phased GeT-RM ~99% Less widely deployed than Cyrius
Astrolabe (proprietary, formerly Constellation) Yes Yes Multi-gene Proprietary Industry-validated License required
StarPhase (PacBio HiFi 2024+) Yes Yes All CPIC Level A genes + HLA Native phasing Long-read gold standard Requires PacBio HiFi

Canonical clinical workflow 2024-2026: PharmCAT for the panel + Cyrius (or StellarPGx) for CYP2D6 SVs + dedicated HLA typer (T1K, OptiType, HLA-LA) for HLA.

Twesigomwe 2020 npj Genom Med: inter-tool discordance 10-18% on CYP2D6; nearly all in samples carrying SVs.

HLA-Drug Associations: Mechanistically Distinct from CYP

HLA associations are idiosyncratic immune reactions, not dose-response phenomena. Effect sizes (OR 50-1000+) far exceed any CYP polymorphism. Testing rationale is screen-and-avoid, not dose-adjust.

Allele Drug Reaction Population Landmark
**HLA-B\*57:01** Abacavir HSS All ancestries (5-8% NFE) Mallal 2008 NEJM (PREDICT-1)
**HLA-B\*15:02** Carbamazepine, oxcarbazepine, phenytoin, lamotrigine (weaker) SJS/TEN Han Chinese, Thai, Malay, Indian (>=5%) Chung 2004 Nature; FDA black-box 2007
**HLA-A\*31:01** Carbamazepine DRESS, MPE, SJS/TEN Europeans (2-5%), Japanese McCormack 2011 NEJM
**HLA-B\*58:01** Allopurinol SJS/TEN, DRESS Han Chinese (10-15%), Thai, Korean Hung 2005 PNAS (OR ~580)
**HLA-B\*13:01** Dapsone DDS Han Chinese, SE Asian Zhang 2013 NEJM
**HLA-B\*35:02** (NOT \*35:01) Minocycline DILI All Urban 2017 J Hepatol
**HLA-B\*35:01** TMP-SMX DILI, DRESS-like African American Li 2021 Hepatology
**HLA-B\*14:01** TMP-SMX DILI European American (OR 9.20) Li 2021
**HLA-A\*33:01/03** Terbinafine DILI Multi-ancestry Nicoletti 2017
**HLA-DRB1\15:01-DQB1\06:02 haplotype** Amoxicillin-clavulanate DILI Europeans Stephens 2013
**HLA-B\*15:13** Phenytoin SJS Malaysian Chang 2017

Critical: HLA screening requires 4-field resolution. \57:01 (abacavir risk) vs \57:03 (no risk); \35:02 (minocycline DILI) vs \35:01 (TMP-SMX DILI). See clinical-databases/hla-typing for typing.

Non-CYP Pharmacogenes: Variant-Level Detail

DPYD (5-FU / Capecitabine / Tegafur); Activity Score Framework

The CPIC DPYD guideline (Amstutz 2018 Clin Pharmacol Ther 103:210) uses a gene activity score system. Activity values: normal-function = 1.0, decreased = 0.5, no function = 0.

Variant rsID Allele Activity
c.1905+1G>A rs3918290 DPYD*2A 0 (splice disruption)
c.1679T>G rs55886062 DPYD*13 (p.I560S) 0
c.2846A>T rs67376798 (p.D949V) 0.5
c.1129-5923C>G / c.1236G>A (HapB3) rs56038477 / rs75017182 HapB3 0.5

Gene AS = sum of two lowest activities. Recommended dose: AS 2 = full dose; AS 1.5 = 50% start + TDM; AS 1.0 = 50% start + TDM; AS 0 = avoid.

c.85T>C (DPYD\*9A) is NOT in the CPIC actionable set despite frequent commercial reporting; evidence does not support clinical decrement.

EU universal pre-treatment testing standard since Henricks 2018 Lancet Oncol (genotype-guided dosing lowered severe fluoropyrimidine toxicity in DPYD variant carriers, e.g. DPYD*2A grade >=3 toxicity RR 2.87 -> 1.31) and EMA 2020 endorsement. US lags; ASCO/NCCN moved 2022-2024.

TPMT + NUDT15 (Thiopurines); 2025 Update

Maillard 2026 Clin Pharmacol Ther update emphasizes greater dose reduction for compound TPMT/NUDT15 IM.

Gene Variant Activity Population
TPMT *2 c.238G>C 0 --
TPMT *3A c.460G>A + c.719A>G 0 EUR-common
TPMT *3B c.460G>A 0 --
TPMT *3C c.719A>G 0 AFR / EAS dominant
NUDT15 *3 c.415C>T (rs116855232) 0 ~9.8% East Asian; <1% EUR

NUDT15 3 is the dominant thiopurine determinant in East Asians; TPMT-alone testing misses these patients (Yang 2015 J Clin Oncol*).

UGT1A1 (Irinotecan, Atazanavir)

  • \28 (TA7 promoter repeat vs \1 = TA6, \*37 = TA8); EUR-common
  • \*6 (c.211G>A, p.G71R); East Asian dominant
  • Severe neutropenia in \28/\28 at irinotecan >=180 mg/m^2

CYP2C19 + Clopidogrel; The Most-Litigated Pair

  • Pare 2010 NEJM: no benefit of clopidogrel in \*2 carriers in CURE/ACTIVE-A.
  • TAILOR-PCI (Pereira 2020 JAMA): 5,302 patients post-PCI; primary endpoint MACE @12mo HR 0.66, p=0.06 (negative by pre-specified alpha) but positive in sensitivity analyses.
  • Pereira NL et al 2021 meta-analysis (7 RCTs, 15,949 patients): ~30% MACE reduction in CYP2C19 LOF carriers (JACC Cardiovasc Interv 14:739).
  • Consensus 2024 (ACC/AHA/ESC): genotype-guided therapy reasonable; strongest in post-PCI ACS.

Warfarin (CYP2C9 + VKORC1 + CYP4F2)

  • EU-PACT 2013 NEJM: PGx dosing positive (European).
  • COAG 2013 NEJM: PGx dosing negative; worse in African Americans because algorithm omitted CYP2C9 \5, \6, \8, \11 alleles common in African ancestry. Paradigmatic ancestry-algorithm failure (Daneshjou 2014 Blood).
  • IWPC algorithm explains 47-55% of dose variance.

SLCO1B1 + Simvastatin

  • rs4149056 (c.521T>C, p.V174A); OR 4.5 per C allele for myopathy on 80 mg simvastatin (SEARCH 2008 NEJM).
  • 2022 CPIC update broadened to all statins with SLCO1B1 substrate behavior.

Other Actionable

  • **CYP2B6 *6** (c.516G>T + c.785A>G): efavirenz dose 600 -> 400 mg in 6/6 (ENCORE1).
  • **CYP3A5 *3** (rs776746): non-expressers (\3, \6, \7) are the common* state in non-AFR; expressers need 1.5-2x higher tacrolimus dose.
  • G6PD (CPIC 2022 Gammal 2023): X-linked; female heterozygotes have mosaic activity that single-timepoint assay misclassifies.

Decision Tree by Scenario

Scenario Recommended path Why
Multi-gene PGx panel from VCF PharmCAT CPIC-recommended; 21 genes + full clinical reporting
CYP2D6 with structural variants Cyrius (or StellarPGx) Only tools with reliable SV calling from short-read
All CPIC Level A + HLA from one sample PacBio HiFi + StarPhase Long-read single-pass typing
Pre-emptive panel for cohort PREPARE-style 12-gene panel Swen 2023 RCT-validated
HLA-B\*57:01 abacavir screen T1K or OptiType (4-field); HIBAG if SNP-array Need 4-field specificity
African-ancestry warfarin IWPC algorithm + CYP2C9 5/6/8/11 explicit COAG failure paradigm
East Asian thiopurine NUDT15 + TPMT NUDT15 *3 is dominant in EAS
Compound IM (TPMT + NUDT15) Apply 2025 update More aggressive dose reduction than single-gene IM
Activity score interpretation Caudle 2020 thresholds for CYP2D6; gene-specific for others Per CPIC

PharmCAT Workflow (Recommended Multi-Gene Pipeline)

Goal: Generate CPIC-compliant pharmacogenomic report from a phased or unphased VCF covering 21 PGx genes.

Approach: Run PharmCAT on the VCF; supplement CYP2D6 with Cyrius output if SVs suspected; cross-reference HLA from separate typing.

# PharmCAT (CPIC-recommended; covers 21 genes including CYP2C19, CYP2C9, CYP2D6,
# DPYD, TPMT, NUDT15, UGT1A1, SLCO1B1, CYP3A5, CYP4F2, VKORC1, IFNL3/IFNL4, etc.)

# 1. Preprocess VCF (ensures correct ref allele alignment + chr formatting)
pharmcat_vcf_preprocessor.py \
    -vcf input.vcf.gz \
    -refFna GRCh38.fa \
    -o pharmcat_input/

# 2. Run PharmCAT
java -jar pharmcat.jar \
    -vcf pharmcat_input/input.preprocessed.vcf.bgz \
    -o pharmcat_output/

# Output: <sample>.report.html with phenotype, activity score, dosing recommendations

For CYP2D6 SV-rich samples, run Cyrius separately and pass outside calls to PharmCAT:

# Cyrius for CYP2D6 (99.3% concordance vs Aldy 82-87%, Stargazer 84%)
cyrius -m sample.bam -o cyrius_out --threads 8
# Output: cyrius_out/sample.tsv with diplotype + activity score

# Pass outside calls to PharmCAT
java -jar pharmcat.jar \
    -vcf pharmcat_input/input.preprocessed.vcf.bgz \
    -po cyrius_out/cyrius_for_pharmcat.tsv \
    -o pharmcat_output_with_cyrius/

CYP2D6 Activity Score Calculation

Goal: Convert CYP2D6 diplotype to activity score and phenotype with Caudle 2020 conventions.

Approach: Look up per-allele activity values; handle copy-number duplications; apply Caudle 2020 phenotype bins.

# Caudle 2020 activity values; *10 reset from 0.5 to 0.25 in 2020
CYP2D6_ACTIVITY = {
    '*1': 1.0, '*2': 1.0, '*35': 1.0,
    '*3': 0.0, '*4': 0.0, '*5': 0.0, '*6': 0.0, '*7': 0.0, '*8': 0.0,
    '*11': 0.0, '*12': 0.0, '*15': 0.0, '*19': 0.0, '*20': 0.0,
    '*36': 0.0, '*40': 0.0, '*42': 0.0, '*68': 0.0,
    '*9': 0.5, '*41': 0.5, '*17': 0.5, '*29': 0.5,
    '*10': 0.25,
    '*13': 0.0,
}


def cyp2d6_activity(diplotype):
    '''Convert CYP2D6 diplotype to activity score.

    Accepts e.g. '*1/*4' or '*2xN/*10' or '*4xN/*10'. Copy-number-aware:
    - *4xN is clinically silent (no-function * N = 0)
    - *1xN, *2xN multiply functional activity
    '''
    left, right = diplotype.split('/')
    return _allele_activity(left) + _allele_activity(right)


def _allele_activity(allele_str):
    '''Handle copy-number suffix xN. *4xN remains 0 (the most common mis-classification).'''
    if 'x' in allele_str:
        base, n = allele_str.split('x')
        copies = int(n) if n != 'N' else 2  # 'N' usually >=2; clinical assumes 2 unless quantified
        return CYP2D6_ACTIVITY.get(base, 1.0) * copies
    return CYP2D6_ACTIVITY.get(allele_str, 1.0)


def cyp2d6_phenotype(activity_score):
    '''Caudle 2020 phenotype bins.'''
    if activity_score == 0:
        return 'Poor Metabolizer'
    if activity_score < 1.25:
        return 'Intermediate Metabolizer'
    if activity_score <= 2.25:
        return 'Normal Metabolizer'
    return 'Ultrarapid Metabolizer'


# Example: *4xN/*10; the classic clinical-silence footgun
diplotype = '*4xN/*10'
score = cyp2d6_activity(diplotype)  # 0 (from *4xN) + 0.25 (from *10) = 0.25
print(f'{diplotype}: AS={score}, phenotype={cyp2d6_phenotype(score)}')  # IM, NOT UM

DPYD Activity Score (CPIC)

DPYD_2024_ACTIVITY = {
    'c.1905+1G>A': 0.0,    # *2A; splice donor
    'c.1679T>G': 0.0,      # *13; p.I560S
    'c.2846A>T': 0.5,      # p.D949V
    'HapB3': 0.5,          # c.1129-5923C>G linked with c.1236G>A
}


def dpyd_activity(variants):
    '''Compute DPYD gene activity score from observed variants.

    Sum the two lowest activities across the two alleles. CPIC dosing:
    - AS 2.0: full dose
    - AS 1.5: 50% start + TDM
    - AS 1.0: 50% start + TDM
    - AS 0.0: avoid
    '''
    activities = sorted([DPYD_2024_ACTIVITY.get(v, 1.0) for v in variants])
    return sum(activities[:2])


def dpyd_dosing(activity_score):
    if activity_score >= 1.99:
        return 'Full dose'
    if activity_score >= 1.0:
        return '50% starting dose + therapeutic drug monitoring'
    return 'Avoid fluoropyrimidines'

PharmGKB API for Drug-Gene Pair Lookup

import requests

PHARMGKB = 'https://api.pharmgkb.org/v1'


def clinical_annotation(gene_symbol):
    '''Query PharmGKB clinical annotations by gene.'''
    r = requests.get(f'{PHARMGKB}/data/clinicalAnnotation',
                     params={'view': 'base', 'location.genes.symbol': gene_symbol},
                     timeout=30)
    return r.json().get('data', [])


def cpic_guideline(gene_symbol):
    '''Query CPIC guidelines via PharmGKB.'''
    r = requests.get(f'{PHARMGKB}/data/guideline',
                     params={'view': 'base', 'relatedGenes.symbol': gene_symbol, 'source': 'CPIC'},
                     timeout=30)
    return r.json().get('data', [])

Per-Operation Failure Modes

**1. *4xN -> "Ultrarapid Metabolizer"**

  • Trigger: Pipeline reports CYP2D6 \*4xN as UM.
  • Mechanism: \4 has activity 0; \4 x N = still 0. Only functional alleles (\1, \2, \*35) become UM when amplified.
  • Symptom: Patient labeled as needing dose reduction when they should be PM/IM.
  • Fix: Look up per-allele activity BEFORE multiplying by N; \*4xN = 0; AS depends entirely on the other allele.

2. Calling CYP2D6 from short-read without SV-aware tool

  • Trigger: Use GATK + PharmCAT only on CYP2D6.
  • Mechanism: 97%+ CYP2D6/CYP2D7 identity; SVs (deletion, duplications, hybrids) silently miscalled.
  • Symptom: ~10-18% of samples miscalled (Twesigomwe 2020); concentrated in samples with SVs.
  • Fix: Add Cyrius (or StellarPGx) for CYP2D6; pass outside calls to PharmCAT.

**3. Pre-2020 \*10 activity value**

  • Trigger: Use activity = 0.5 for CYP2D6 \*10.
  • Mechanism: Caudle 2020 reset \*10 from 0.5 to 0.25 based on metabolic-ratio evidence.
  • Symptom: East-Asian samples mis-classified as NM (when should be IM).
  • Fix: Use Caudle 2020 activity table; \*10 = 0.25.

4. EUR-only DPYD panel

  • Trigger: Pre-treat fluoropyrimidine using CPIC-core 4-variant panel only.
  • Mechanism: 4-variant panel captures EUR DPD-deficient carriers but misses additional DPYD variants enriched in non-European populations (Offer 2014 identified ~30 such deleterious variants).
  • Symptom: African-ancestry patients suffer severe toxicity despite "negative" PGx.
  • Fix: Use extended panel for AFR cohorts; supplement with phenotype testing (uracil/dihydrouracil plasma ratio).

5. TPMT testing without NUDT15

  • Trigger: Pre-treat thiopurines using TPMT-only PGx in East Asian patient.
  • Mechanism: NUDT15 *3 (9.8% EAS, <1% EUR) is the dominant determinant in EAS.
  • Symptom: EAS patients TPMT-wildtype suffer severe myelosuppression.
  • Fix: Always test NUDT15 alongside TPMT; apply Maillard 2026 compound-IM rules.

**6. HLA-B\*57 -> "abacavir risk" (4-field underspecified)**

  • Trigger: Screen reports "B*57 present" as contraindication.
  • Mechanism: B57:01 (HSS risk), B57:02, B*57:03 (no HSS risk).
  • Symptom: False contraindication; patient denied effective therapy.
  • Fix: Report 4-field; B*57:01 specifically.

**7. CYP3A5 *3 / non-expresser confusion**

  • Trigger: Apply "CYP3A5 normal metabolizer" to 3/3 in tacrolimus dosing.
  • Mechanism: 3/3 are NON-EXPRESSERS (most common state in non-AFR); expressers (any *1) need 1.5-2x higher dose.
  • Symptom: Tacrolimus over-dosing in expressers; under-dosing in non-expressers.
  • Fix: Apply CPIC 2015 (Birdwell) tacrolimus dosing; flag expresser status.

8. Activity-based vs allele-based confusion

  • Trigger: Sum activities across substrate-non-specific assumption for *17.
  • Mechanism: CYP2D6 *17 shows substrate-dependent activity (reduced for some substrates, near-normal for others).
  • Symptom: Substrate-specific dose recommendations applied generically.
  • Fix: Use substrate-specific guidance where available; flag *17 in AFR cohorts.

Reconciliation: When Tools Disagree

Pattern Likely cause Action
Cyrius vs Aldy CYP2D6 disagree SV-rich sample; Aldy less accurate Trust Cyrius
PharmCAT vs CPIC website disagree on phenotype PharmCAT version lag or *10 activity value drift Update PharmCAT to current release
CPIC vs DPWG dosing differ Independent guideline bodies Cite both; use jurisdiction-appropriate one
Patient phenotype doesn't match genotype Drug-drug interaction; clearance physiology; non-pharmacogenetic factor Consider phenoconversion; clinical reassessment
TPMT-only test vs IM phenotype Missed NUDT15 in EAS Re-test with NUDT15
*4xN reported as UM Tool bug Use SV-aware tool and Caudle 2020 activity table
HLA-B*57 reported without 4-field Insufficient resolution Re-type at 4-field minimum

Quantitative Thresholds and Conventions

Threshold Convention Source
Cyrius CYP2D6 accuracy 99.3% on GeT-RM reference samples Chen 2021 Pharmacogenomics J
Aldy CYP2D6 accuracy 82-87% on GeT-RM Twesigomwe 2020
Stargazer CYP2D6 accuracy ~84% on GeT-RM Twesigomwe 2020
Inter-tool CYP2D6 discordance 10-18% (concentrated in SV samples) Twesigomwe 2020
PREPARE ADR reduction OR 0.70 (95% CI 0.54-0.91) for actionable interactions Swen 2023 Lancet
PREPARE actionable variant rate 93.5% of patients had >=1 actionable variant Swen 2023
TAILOR-PCI primary endpoint HR 0.66 (95% CI 0.43-1.02), p=0.06 (negative) Pereira 2020 JAMA
Pereira 2021 meta-analysis ~30% MACE reduction in CYP2C19 LOF carriers Pereira 2021 JACC Cardiovasc Interv 14:739
Henricks 2018 DPYD outcome Per-variant toxicity reduction (DPYD*2A grade >=3 RR 2.87 -> 1.31) Henricks 2018 Lancet Oncol
NUDT15 *3 frequency ~9.8% East Asian vs <1% EUR Relling 2019 CPIC Clin Pharmacol Ther 105:1095
HLA-B*57:01 OR for abacavir HSS ~100 (case-control) Mallal 2002 Lancet 359:727

Common Errors

Symptom Cause Solution
CYP2D6 reported as UM in samples with *4xN Tool not SV-aware OR Caudle 2020 not applied Use Cyrius; check *4xN handling
East-Asian patient labeled CYP2D6 NM *10 still at activity 0.5 Update activity table to Caudle 2020 (*10 = 0.25)
African patient suffers warfarin bleeding despite "wildtype" CYP2C9 Panel omits 5/6/8/11 (AFR-common) Use ancestry-aware panel; supplement with INR-guided dosing
Severe thiopurine toxicity in TPMT-wildtype EAS patient NUDT15 not tested Always pair TPMT + NUDT15
Patient with CYP2C19 2/2 and clopidogrel failure Expected; no genotype-guided alternative chosen Switch to prasugrel/ticagrelor per CPIC
DPYD AS = 0 but no dose adjustment Single-variant rule used instead of activity score Update to the CPIC activity-score framework
HLA-B*57:01 false positive 2-field B*57 result misinterpreted Re-type at 4-field

Anticipated Reviewer Pushback

Pushback Standard response
"TAILOR-PCI missed primary endpoint; why genotype clopidogrel?" Sensitivity analyses positive; Pereira 2021 meta-analysis (7 RCTs) +30% MACE reduction; ESC 2023 endorses; ACC 2022 weaker.
"DPYD universal screening is expensive" Henricks 2018 per-variant toxicity reduction + Knikman 2021 cost-effective; EU standard since 2020; US ASCO/NCCN updated 2022-2024.
"CYP2D6 SV calling is unreliable" Cyrius 99.3% on GeT-RM (Chen 2021); not unreliable; the prior tools were.
"*10 = 0.25 disagrees with old paper" Caudle 2020 Clin Transl Sci consensus reset based on substrate-metabolic-ratio evidence.
"GeneSight is approved by my hospital" GUIDED trial (Greden 2019) missed primary endpoint; physician-unblinded; literature shows modest effects inseparable from expectancy bias.
"Why pair TPMT + NUDT15?" NUDT15 3 is the dominant thiopurine determinant in East Asians (9.8% vs TPMT 3C ~2%); compound IM (TPMT + NUDT15) requires more aggressive dose reduction per Maillard 2026.
"HLA imputation from SNP array reliable?" EUR-trained panel on EUR samples ~95%; cross-ancestry drops to 70-80%; for HSCT use sequencing-based typing.

References

  • Sangkuhl K et al. 2020. Pharmacogenomics Clinical Annotation Tool (PharmCAT). Clin Pharmacol Ther 107:203.
  • Chen X et al. 2021. Cyrius: accurate CYP2D6 genotyping using whole-genome sequencing data. Pharmacogenomics J 21:251.
  • Numanagic I et al. 2018. Allelic decomposition and exact genotyping of highly polymorphic and structurally variant genes. Nat Commun 9:828. (Aldy)
  • Lee SB et al. 2019. Stargazer: a tool for calling star alleles. Genet Med 21:361.
  • Twesigomwe D et al. 2020. A systematic comparison of pharmacogene star allele calling bioinformatics algorithms. npj Genom Med 5:30.
  • Caudle KE et al. 2020. Standardizing CYP2D6 genotype to phenotype translation. Clin Transl Sci 13:116. (Activity-score reset for *10)
  • Bank PCD et al. 2018. Comparison of the guidelines of the CPIC and the Dutch Pharmacogenetics Working Group. Clin Pharmacol Ther 103:599.
  • Amstutz U et al. 2018. CPIC guideline for dihydropyrimidine dehydrogenase genotype and fluoropyrimidine dosing: 2017 update. Clin Pharmacol Ther 103:210. (DPYD activity score)
  • Swen JJ et al. 2023. PREPARE: A pre-emptive pharmacogenetic testing strategy. Lancet 401:347.
  • Henricks LM et al. 2018. DPYD-guided dose individualization to fluoropyrimidines. Lancet Oncol 19:1459.
  • Pereira NL et al. 2020. Effect of genotype-guided oral P2Y12 inhibitor selection vs conventional clopidogrel therapy on ischemic outcomes after PCI. JAMA 324:761. (TAILOR-PCI)
  • Pereira NL et al. 2021. Effect of CYP2C19 genotype on ischemic outcomes during oral P2Y12 inhibitor therapy: a meta-analysis. JACC Cardiovasc Interv 14:739.
  • Mallal S et al. 2008. HLA-B5701 screening for hypersensitivity to abacavir. NEJM* 358:568. (PREDICT-1)
  • Chung WH et al. 2004. Medical genetics: a marker for Stevens-Johnson syndrome. Nature 428:486.
  • McCormack M et al. 2011. HLA-A3101 and carbamazepine-induced hypersensitivity reactions in Europeans. NEJM* 364:1134.
  • Hung SI et al. 2005. HLA-B5801 allele as a genetic marker for severe cutaneous adverse reactions caused by allopurinol. PNAS* 102:4134.
  • Yang JJ et al. 2015. Inherited NUDT15 variant is a genetic determinant of mercaptopurine intolerance. J Clin Oncol 33:1235.
  • Relling MV et al. 2019. CPIC guideline for thiopurine dosing based on TPMT and NUDT15 genotypes: 2018 update. Clin Pharmacol Ther 105:1095.
  • PharmCAT documentation: https://pharmcat.org
  • PharmVar: https://www.pharmvar.org
  • CPIC: https://cpicpgx.org
  • DPWG: https://www.knmp.nl/dpwg

Related Skills

  • clinical-databases/hla-typing - HLA-B57:01, B15:02, B58:01, A31:01 typing
  • clinical-databases/clinvar-lookup - Variant pathogenicity for non-PGx context
  • clinical-databases/variant-prioritization - Rare-disease pipeline
  • clinical-databases/myvariant-queries - Aggregated PGx variant annotation
  • chemoinformatics/admet-prediction - Drug metabolism prediction