EXPERIMENTAL: Cyrius is installed via pip at runtime inside a generic Python container, which is fragile (network dependency, version drift). Results should be cross-referenced with PharmCAT’s CYP2D6 call.
Calls CYP2D6 star alleles (diplotypes) from your WGS BAM using Illumina’s Cyrius tool. CYP2D6 is the single most important pharmacogene — it metabolizes roughly 25% of clinically used drugs — but its highly homologous pseudogene (CYP2D7) and frequent structural rearrangements (deletions, duplications, gene-pseudogene hybrids) make it extremely difficult to genotype from short reads.
PharmCAT (step 7) handles most pharmacogenes well, but its internal CYP2D6 calling is limited for WGS data. Cyrius was purpose-built by Illumina to resolve CYP2D6 using read-depth patterns across the CYP2D6/CYP2D7 region. Running Cyrius separately gives you a CYP2D6 diplotype that you can cross-reference with PharmCAT’s results.
python:3.11-slim
Cyrius is installed via pip install cyrius inside the container at runtime. No dedicated Cyrius Docker image is required.
${GENOME_DIR}/${SAMPLE}/aligned/${SAMPLE}_sorted.bam${GENOME_DIR}/${SAMPLE}/aligned/${SAMPLE}_sorted.bam.bai./scripts/21-cyrius.sh your_name
star_caller with --genome 38 (GRCh38)| File | Contents |
|---|---|
${SAMPLE}_cyp2d6.tsv |
Tab-delimited results with sample name, diplotype, and supporting evidence |
All output is written to ${GENOME_DIR}/${SAMPLE}/cyrius/.
~5-15 minutes (includes pip install overhead on first run).
The output TSV contains the CYP2D6 diplotype in star-allele notation, for example:
| Sample | Genotype |
|---|---|
| sergio | 1/2 |
Common results and what they mean:
*1/*1 – Normal metabolizer (two fully functional copies)*1/*2 – Normal metabolizer (*2 is also functional)*1/*4 – Intermediate metabolizer (*4 is non-functional)*4/*4 – Poor metabolizer (no functional copies)*1/*1xN – Ultrarapid metabolizer (gene duplication, N extra copies)*5/*5 – Poor metabolizer (whole gene deletion)Look up your specific diplotype at PharmGKB CYP2D6 for the corresponding metabolizer phenotype and drug implications.
Codeine, tramadol, oxycodone, tamoxifen, ondansetron, atomoxetine, most tricyclic antidepressants (amitriptyline, nortriptyline), and paroxetine – among many others.
Aldy v4.8.3 is a leading CYP2D6 caller for short-read WGS data. A systematic comparison (Twesigomwe et al. 2020, PMID 32789024) found Aldy was “the best performing algorithm in calling CYP2D6 structural variants.” It identifies 92.2% of currently defined minor star alleles (vs 85.6% for Cyrius) and is actively maintained with the current PharmVar database.
Aldy also calls 37 additional pharmacogenes (CYP2C19, CYP2B6, UGT1A1, NAT2, DPYD, SLCO1B1, etc.), which can supplement PharmCAT results.
To use Aldy instead of Cyrius:
# Install in a Python container (one-time, or build a custom image)
docker run --rm --user root \
-v ${GENOME_DIR}:/genome \
python:3.11-slim \
bash -c "
pip install -q aldy==4.8.3 &&
aldy genotype \
-p illumina \
-g CYP2D6 \
-o /genome/${SAMPLE}/cyrius/${SAMPLE}_aldy_cyp2d6.aldy \
/genome/${SAMPLE}/aligned/${SAMPLE}_sorted.bam
"
License note: Aldy uses an academic/non-commercial license (IURTC, Indiana University). It is free for personal and research use but is NOT compatible with GPL-3.0 redistribution. This is why it is documented here as an optional recommendation rather than replacing Cyrius in the pipeline script. A GPL-compatible alternative (pypgx) is available in step 32.