PGx: PharmVar genes (CYP1A2, CYP2A6, CYP2A13, CYP2C8, CYP3A4), CYP2A6 *4 from CN (PGX-001/006)

fetch_sources.sh downloads PharmVar per-gene zips; pgx db build adds core alleles for genes CPIC does not
define (normalised against the FASTA, *1 = reference). Masks re-derived with the new variants. GeT-RM:
CYP3A4 15/15, CYP2A6 7/9; all comparable genes 154/168 (CYP1A2/CYP2C8 definitions differ from GeT-RM's).
This commit is contained in:
kemal committed 2026-09-29 16:50:27 +01:00
1 parent b96ae21c70
commit 9a39ae62fe
9 files changed
+289 -14

No files matched your search

+12 -5
View File
@@ -41,7 +41,9 @@ Status: **implemented for CPIC star-allele genes, interim validation** (2026-09-
| GSTM1 (CN: DEL/DEL vs present) | 9/9 | 9/9 |
| GSTT1 (CN 0/1/2) | 7/9 | 7/9 |
| UGT2B17 (CN) | 2/2 | 2/2 |
| **total** | **132/144 (91.7 %)** | **135/144 (93.8 %)** |
| CYP3A4 (PharmVar) | **15/15** | 15/15 |
| CYP2A6 (PharmVar; *4 deletion from CN) | 7/9 | 8/9 |
| **total** | **154/168 (91.7 %)** | **158/168 (94.0 %)** |
PGX-032 target (≥ 90 % for CYP2D6/CYP2C19/CYP2C9 against truth): **42/45 = 93 %** (top solution), 45/45 within
the array-equivalent feasible solutions.
@@ -52,8 +54,10 @@ CYP2D6 structures (PGX-013) come from the three sub-region CNs (`simurg.pgx.star
array cannot separate (both within the feasible set).
Details and every discordant call: `V2_pgx_star_getrm16.json`.
Not in the total (GeT-RM uses pre-2023 names the CPIC definitions no longer carry): UGT1A1 (GeT-RM `*60`;
0/9 top) and SLCO1B1 (`*1B/*17/*21` vs CPIC `*37/*15/*20`; 9/15 top).
Not in the total (GeT-RM uses older names or definitions than CPIC/PharmVar today): UGT1A1 (GeT-RM `*60`;
0/9 top), SLCO1B1 (`*1B/*17/*21` vs CPIC `*37/*15/*20`; 9/15), CYP1A2 (lettered `*1F`; 0/9) and CYP2C8 (PharmVar now
defines rs2071426 alone as `*19`; the array calls it concordantly with 1000G, GeT-RM reports those carriers as
`*1`; 8/15).
Remaining discordances: CYP2D6 *2 vs *1 where the array cannot separate them (prior picks *1), CYP2C19 *8, TPMT *21, CYP2B6 *27, CYP4F2 *2 — rare
alleles whose defining variants are absent or masked on this array.
@@ -84,5 +88,8 @@ so the per-call error is 1e-3 (GS ≥ 0.15) and errors are handled by the probe
`Reference`, phenotype diplotype from the two lowest-activity carried variants), HLA-A/B tag variants (PGX-007,
positions resolved from the manifest's probes, flag `tag_caveat`), and GSTM1/GSTT1/UGT2B17 `*0` genotypes from
the targeted CN (PGX-006).
* Not yet: PharmVar-only
genes (CYP2A6, CYP3A4, CYP1A2, …); DPWG tables.
* PharmVar genes without CPIC definitions (CYP1A2, CYP2A6, CYP2A13, CYP2C8, CYP3A4; PharmVar 6.2.29): core alleles
from the GRCh38 haplotype VCFs, `*1` = reference, prior reference 0.8 (no population frequencies); genotype only
(no CPIC phenotype). The probe mask was re-derived with these variants (one more record: CYP2A6 19:40843845 C>A,
concordance 0.47, which had produced false *5 calls).
* Not yet: DPWG tables.
+151 -3
View File
@@ -1,6 +1,16 @@
{
"individuals": 30,
"genes": {
"CYP1A2": {
"n": 9,
"top": 0,
"equivalent": 0
},
"CYP2A6": {
"n": 9,
"top": 7,
"equivalent": 8
},
"CYP2B6": {
"n": 14,
"top": 12,
@@ -12,6 +22,11 @@
"top": 14,
"equivalent": 15
},
"CYP2C8": {
"n": 15,
"top": 8,
"equivalent": 9
},
"CYP2C9": {
"n": 15,
"top": 15,
@@ -22,6 +37,11 @@
"top": 13,
"equivalent": 15
},
"CYP3A4": {
"n": 15,
"top": 15,
"equivalent": 15
},
"CYP3A5": {
"n": 15,
"top": 15,
@@ -79,15 +99,31 @@
}
},
"legacy_nomenclature_genes": [
"CYP1A2",
"CYP2C8",
"SLCO1B1",
"UGT1A1"
],
"total": {
"n": 144,
"top": 132,
"equivalent": 135
"n": 168,
"top": 154,
"equivalent": 158
},
"discordant": [
{
"individual": "NA12156",
"gene": "CYP1A2",
"truth": "*1A/*1F",
"call": "*1/*15",
"within_equivalents": false
},
{
"individual": "NA12156",
"gene": "CYP2C8",
"truth": "*1/*15",
"call": "*1/*1",
"within_equivalents": true
},
{
"individual": "NA12156",
"gene": "CYP4F2",
@@ -116,6 +152,20 @@
"call": "*1/*1",
"within_equivalents": false
},
{
"individual": "NA07019",
"gene": "CYP1A2",
"truth": "*1A/*1F",
"call": "*1/*15",
"within_equivalents": false
},
{
"individual": "NA07019",
"gene": "CYP2C8",
"truth": "*1/*1",
"call": "*1/*19",
"within_equivalents": false
},
{
"individual": "NA07019",
"gene": "UGT1A1",
@@ -123,6 +173,13 @@
"call": "*1/*1",
"within_equivalents": false
},
{
"individual": "NA06991",
"gene": "CYP1A2",
"truth": "*1F/*1F",
"call": "*15/*24",
"within_equivalents": false
},
{
"individual": "NA06991",
"gene": "UGT1A1",
@@ -137,6 +194,13 @@
"call": "rs9923231 T/T",
"within_equivalents": false
},
{
"individual": "NA12878",
"gene": "CYP1A2",
"truth": "*1F/*1F",
"call": "*15/*24",
"within_equivalents": false
},
{
"individual": "NA12878",
"gene": "UGT1A1",
@@ -144,6 +208,20 @@
"call": "*28/*80",
"within_equivalents": false
},
{
"individual": "NA11993",
"gene": "CYP1A2",
"truth": "*1F/*1F",
"call": "*15/*24",
"within_equivalents": false
},
{
"individual": "NA11993",
"gene": "CYP2A6",
"truth": "*9/*17",
"call": "*15/*17",
"within_equivalents": true
},
{
"individual": "NA11993",
"gene": "SLCO1B1",
@@ -158,6 +236,20 @@
"call": "*28/*80",
"within_equivalents": false
},
{
"individual": "NA12003",
"gene": "CYP1A2",
"truth": "*1A/*1F",
"call": "*15/*24",
"within_equivalents": false
},
{
"individual": "NA12003",
"gene": "CYP2A6",
"truth": "*1/(*8)",
"call": "*1/*1",
"within_equivalents": false
},
{
"individual": "NA12003",
"gene": "UGT1A1",
@@ -179,6 +271,13 @@
"call": "*1/*0",
"within_equivalents": false
},
{
"individual": "NA07029",
"gene": "CYP1A2",
"truth": "*1A/*1F",
"call": "*1/*15",
"within_equivalents": false
},
{
"individual": "NA07029",
"gene": "CYP2B6",
@@ -193,6 +292,13 @@
"call": "*1/*17",
"within_equivalents": true
},
{
"individual": "NA07029",
"gene": "CYP2C8",
"truth": "*1/*3",
"call": "*19/*3",
"within_equivalents": false
},
{
"individual": "NA07029",
"gene": "UGT1A1",
@@ -207,6 +313,27 @@
"call": "*1/*5",
"within_equivalents": false
},
{
"individual": "NA10846",
"gene": "CYP2C8",
"truth": "*1/*1",
"call": "*1/*19",
"within_equivalents": false
},
{
"individual": "NA07000",
"gene": "CYP2C8",
"truth": "*1/*1",
"call": "*1/*19",
"within_equivalents": false
},
{
"individual": "NA11832",
"gene": "CYP1A2",
"truth": "*1F/*1F",
"call": "*15/*24",
"within_equivalents": false
},
{
"individual": "NA11832",
"gene": "NAT2",
@@ -242,6 +369,20 @@
"call": "*1/*14",
"within_equivalents": false
},
{
"individual": "NA12813",
"gene": "CYP1A2",
"truth": "*1F/*1L",
"call": "*15/*24",
"within_equivalents": false
},
{
"individual": "NA12813",
"gene": "CYP2C8",
"truth": "*1/*1",
"call": "*1/*19",
"within_equivalents": false
},
{
"individual": "NA12813",
"gene": "CYP2D6",
@@ -270,6 +411,13 @@
"call": "*1/*0",
"within_equivalents": false
},
{
"individual": "NA11881",
"gene": "CYP2C8",
"truth": "*1/*1",
"call": "*1/*19",
"within_equivalents": false
},
{
"individual": "NA11881",
"gene": "SLCO1B1",