Skip to content

PGx DNA Testing: What It Measures, What It Misses, and How to Run the Calls Yourself

Oak
A huge forest tree at night whose branches carry chains of glowing star-shaped pods, with one branch bearing a tangled duplicated cluster.

A PGx DNA test genotypes a small set of positions in genes that control how your body absorbs, activates, and clears drugs. It then converts those genotypes into star-allele diplotypes (CYP2C19 *1/*17) and from there into a metabolizer phenotype (rapid, normal, intermediate or poor). That phenotype is the input to a prescribing guideline, most often one published by CPIC or DPWG. Commercial panels cost roughly $200 to $500 and return results in one to three weeks. If you already have whole-genome sequencing data, you can generate essentially the same calls yourself in under an hour of compute. The well-defined exception is CYP2D6, which needs a dedicated caller.

The important thing to understand up front is that a PGx report is a lookup. It is not a discovery. The lab reads a fixed set of variants, matches them against the PharmVar allele definition table, and prints the guideline text. Nothing in that pipeline is secret. What varies between vendors is which genes they include, which alleles inside each gene they interrogate, and how the report tells you about the ones it did not test.

What the panel covers, gene by gene

A defensible PGx panel covers the genes where CPIC has an A-level guideline and the evidence is not in dispute. Roughly:

  • CYP2C19: clopidogrel activation, voriconazole, several SSRIs and PPIs. Common alleles *2 (rs4244285), *3, *17.
  • CYP2D6: around a quarter of commonly prescribed small molecules, including codeine and tamoxifen bioactivation. Over 150 defined alleles plus copy-number variation from zero to more than four copies.
  • DPYD: fluoropyrimidine toxicity. Four variants carry most of the risk, including the intronic splice variant rs3918290 and rs67376798.
  • TPMT and NUDT15: thiopurine metabolism.
  • SLCO1B1: statin transporter, rs4149056.
  • CYP2C9 plus VKORC1: warfarin dosing algorithms.
  • HLA-B*57:01, HLA-B*15:02, HLA-A*31:01: immune-mediated hypersensitivity, and these are not SNVs, they are HLA types requiring their own calling method.
  • G6PD, UGT1A1, CFTR and CYP3A5, plus CYP4F2, IFNL3 and RYR1/CACNA1S.

If a panel lists 50 genes, most of the extra 35 are there for marketing. Psychiatric “precision prescribing” panels in particular tend to include genes such as COMT, MTHFR, and serotonin transporter variants where the clinical evidence does not support acting on the result. Review of PGx tests and their decision-support tools has found wide variation in which alleles are interrogated and how results are presented, which is a real source of discordant reports between vendors on the same sample.1

Panel genotyping versus whole-genome sequencing

Targeted genotyping arrays read only the variants they were designed to read. That is fine for SLCO1B1 and workable for CYP2C19, and it has a specific failure mode: if you carry a rare or ancestry-enriched allele that is not on the chip, the assay reports the reference allele by default and calls you *1. The default call inflates apparent normal-metabolizer frequency, and it does so unevenly across populations, because allele definition tables were built mostly from European cohorts.

Sequencing removes the design-time restriction. Every base in the gene body is observed, so novel and rare variants show up as variants rather than as silent reference calls.2 Clinical-grade whole-genome pipelines built for population screening now return PGx results alongside hereditary disease risk, which is the model the All of Us Research Program used for its return-of-results program.3 Validation work on WGS-based clinical screening assays in large health systems has shown the approach holds up against established methods across variant classes.4

Our view: if you are going to sequence anything, sequence the genome at 30x or better and treat PGx as one of several readouts you derive from the same CRAM. A dedicated PGx panel is a single-purpose purchase with no residual value. WGS data is a file you can recall in five years when a new allele definition is published, re-run the caller, and get an updated answer with no new blood draw.

Generating diplotypes from your own data

PharmCAT is the tool to use. It takes a VCF, matches against the PharmVar definitions, and emits both the diplotype calls and the matching CPIC guideline text.

Start with a normalized, GRCh38-aligned VCF that includes reference calls at the PGx positions. This part matters: a variants-only VCF is ambiguous, because a missing row could mean “reference” or “not sequenced,” and PharmCAT will treat those differently. Run the preprocessor:

pharmcat_vcf_preprocessor \
  -vcf sample.g.vcf.gz \
  -refFasta GRCh38_full_analysis_set_plus_decoy_hla.fa \
  -o preprocessed/

Then the pipeline:

pharmcat_pipeline preprocessed/sample.preprocessed.vcf \
  -o results/ -reporterHtml

You get sample.match.json (raw diplotype matches), sample.phenotype.json (metabolizer assignments), and an HTML report.

CYP2D6 is excluded from that path by default and needs a structural-variant-aware caller. Cyrius works directly on the aligned reads:

python star_caller.py \
  --manifest manifest.txt \
  --genome 38 \
  --prefix sample \
  --outDir cyp2d6/ \
  --threads 8

where manifest.txt is one CRAM or BAM path per line. Feed the resulting diplotype back into PharmCAT with -po outside_calls.tsv. StellarPGx and Aldy are reasonable alternatives. Aldy handles a broader set of genes, and Cyrius is the simplest for CYP2D6 specifically.

Where calling breaks

Three failure modes account for most of the trouble.

Phasing. Diplotype assignment requires knowing which variants sit on which chromosome. Short-read data is unphased at gene scale, so PharmCAT often returns several candidate diplotypes that are all consistent with the genotype calls. Sometimes they map to the same phenotype and you can ignore the ambiguity. Sometimes they do not. Read-backed phasing with WhatsHap helps when the variants are close enough together to share reads. Long reads solve it properly.

CYP2D6 structure. CYP2D6 sits next to the pseudogene CYP2D7 with about 94% sequence identity, and the locus supports deletions, duplications, and CYP2D6/CYP2D7 hybrid alleles such as *36 and *68. Short-read aligners mismap across that boundary. This is the single place where a targeted clinical assay with a long-range PCR backbone can still beat a generic WGS pipeline, and it is why you should never accept a CYP2D6 call from a pipeline that does not name its caller.

Coverage gaps. DPYD rs3918290 sits in an intron. If your data came from exome sequencing rather than whole genome, check the depth at that position before trusting a normal-metabolizer call. bcftools mpileup -r chr1:97450058-97450068 on the CRAM takes ten seconds and tells you whether there is anything there.

How accurate is it

For the well-characterized SNV-based genes, concordance between research sequencing and CLIA-validated clinical genotyping is high. The eMERGE-PGx project compared research sequence data against clinical pharmacogenetic genotyping across multiple sites and found strong agreement, with the discordances concentrated in exactly the places you would expect from the mechanisms above.5 Analytical accuracy at the variant level is close to solved. Interpretive accuracy is not, because it depends on allele definition tables that are still being extended, and on the vendor’s choice of which alleles to test.

Clinical utility is a separate question from analytical accuracy. The practical guidance is to test when there is a specific prescribing decision in front of you, or preemptively if you expect to accumulate many such decisions.6 A phenotype call in isolation does not tell you what to do. Dose selection, drug substitution, and interpretation of an intermediate-metabolizer result in the context of interacting drugs are decisions for a physician or clinical pharmacist, and several health systems now embed PGx pharmacists for exactly this.

Questions people also ask

How long do PGx test results take? Commercial buccal-swab panels typically return in one to three weeks from sample receipt. If you already hold aligned sequencing data, PharmCAT plus Cyrius runs in well under an hour on a laptop.

How much does a PGx DNA test cost? Direct-to-consumer and clinical panels generally run $200 to $500. Insurance coverage in the US is inconsistent and usually tied to a specific drug indication rather than preemptive testing.

What does a PGx test tell you? Star-allele diplotypes for a set of pharmacogenes and the metabolizer phenotype each implies, mapped to published prescribing guidelines. It tells you about drug processing. It says nothing about disease risk.

Is PGx testing worth it? Worth it if you are facing a decision in one of the high-evidence areas, or if you want the data on file preemptively. Those areas are thiopurines, fluoropyrimidines, clopidogrel, abacavir and high-dose statins.6 Standalone panels aimed at psychiatric prescribing are the weakest case, because much of what they report rests on thin evidence.1

What conditions can PGx testing help with? PGx is organized around drugs. It is not organized around conditions. The strongest guidelines cover the following areas.

  • oncology (fluoropyrimidines, tamoxifen, irinotecan)
  • cardiology (clopidogrel, warfarin, statins)
  • infectious disease (abacavir, voriconazole)
  • immunology (thiopurines)
  • anesthesia (malignant hyperthermia susceptibility)

Footnotes

  1. Gouri Mukerjee, Andrea Huston, Boyko Kabakchiev, et al. User considerations in assessing pharmacogenomic tests and their clinical support tools. npj Genomic Medicine, 2018. https://doi.org/10.1038/s41525-018-0065-4 ↩ ↩2

  2. Steven E. Scherer. The Evolution of DNA Sequencing in Pharmacogenomics. Advances in Molecular Pathology, 2019. https://doi.org/10.1016/j.yamp.2019.08.002 ↩

  3. Eric Venner, Donna M. Muzny, Joshua D. Smith, et al. Whole-genome sequencing as an investigational device for return of hereditary disease risk and pharmacogenomic results as part of the All of Us Research Program. Genome Medicine, 2022. https://doi.org/10.1186/s13073-022-01031-z ↩

  4. Josiah T. Wagner, John Welle, Isabelle A. Lucas Beckett, et al. Design and validation of a clinical whole genome sequencing-based assay for patient screening in a large healthcare system. Frontiers in Molecular Biosciences, 2025. https://doi.org/10.3389/fmolb.2025.1669085 ↩

  5. Laura J. Rasmussen‐Torvik, Berta Almoguera, Kimberly F. Doheny, et al. Concordance between Research Sequencing and Clinical Pharmacogenetic Genotyping in the eMERGE-PGx Study. Journal of Molecular Diagnostics, 2017. https://doi.org/10.1016/j.jmoldx.2017.04.002 ↩

  6. James M. Stevenson, D. Max Smith, Sony Tuteja, et al. Navigating Pharmacogenomic Testing in Practice: Who to Test and When to Test. Clinical Pharmacology & Therapeutics, 2025. https://doi.org/10.1002/cpt.3704 ↩ ↩2

Oak builds longitudinal molecular profiles of individuals: whole-genome sequencing, blood RNA sequencing, and plasma proteomics, delivered as a detailed report plus every data file. Build your profile.