# CYP2B6 Caller

The CYP2B6 Caller is capable of genotyping the *CYP2B6* gene from whole-genome sequencing (WGS) data. Due to high sequence similarity with its pseudogene paralog *CYP2B7* and a wide variety of common structural variants (SVs), a specialized caller is necessary to resolve variants and identify likely star allele haplotypes.

The CYP2B6 Caller performs the following steps:

1. Determines total *CYP2B6* and *CYP2B7* copy number from read depth.
2. Determines *CYP2B6*-derived copy number at *CYP2B6*/*CYP2B7* differentiating sites.
3. Detects SV breakpoints by calculating the changes in *CYP2B6*-derived copy number along the *CYP2B6*gene.
4. Calls small variants in *CYP2B6* copies.
5. Identifies star alleles from the detected SV breakpoints and small variants.
6. Identifies the most likely genotype for the called star alleles.

## Total *CYP2B6* and *CYP2B7* Copy Number

The first step of CYP2B6 calling is to determine the combined copy number of *CYP2B6* and *CYP2B7*. Reads aligned to regions in either *CYP2B6* or *CYP2B7* are counted. The counts in each region are corrected for GC-bias, and then normalized to a diploid baseline. The GC-bias correction and normalization factors are determined from read counts in 3000 preselected 2 kb regions across the genome. These 3000 normalization regions were randomly selected from the portion of the reference genome having stable coverage across population samples. The combined *CYP2B6* and *CYP2B7* copy number is then calculated from the average sequencing depth across the *CYP2B6* and *CYP2B7* regions.

## Differentiating Sites

The *CYP2B6*-derived copy number is calculated at 99 predefined differentiating sites across the *CYP2B6* gene. The differentiating sites are selected at positions with sequence differences in *CYP2B6* and *CYP2B7* where calling the *CYP2B6*-derived copy number shows an accuracy of greater than 98% based on sequencing data from the 1000 Genomes Project.

For each differentiating site, *CYP2B6*-specific and *CYP2B7*-specific alleles are counted in reads mapping to either *CYP2B6* or the homologous region in *CYP2B7*. The *CYP2B6*-derived copy number is then calculated from the two gene-specific allele counts using the total *CYP2B6* and *CYP2B7* copy number calculated from the previous step.

## Structural Variant Calling

The *CYP2B6*-derived copy number along the *CYP2B6* gene is used to identify known population structural variants (SVs), including whole gene deletions and duplications as well as certain gene conversions and gene fusions. The following fusion variants are detected:

| Fusion Breakpoint | Hybrid Gene Structure | Star-Allele Designation |
| ----------------- | --------------------- | ----------------------- |
| intron 4-exon 5   | 2B7-2B6               | `*29`                   |
| intron 4-exon 5   | 2B6-2B7               | `*30`                   |

## Small Variant Calling

35 small variants that define various star alleles are detected from the read alignments. All of these variants are in unique (nonhomologous) regions of *CYP2B6* with high mapping quality. Only reads mapping to *CYP2B6* are used for calling variants in nonhomologous regions.

For each variant, reads containing either the variant allele or the nonvariant alleles are counted. A binomial model that incorporates the sequencing errors is then used to determine the most likely variant copy number (0 for nonvariant).

Samples with poor sequencing quality or greater than five copies of *CYP2B6* will have allele counts with higher variance. This elevated variance increases the chance that the most likely variant copy number is wrong. To handle these cases, the small variant caller also indicates alternate, less likely variant copy numbers.

## Recombinant Variant Calling

The recombinant (gene conversion) variant 18053A>G is detected by phasing the variant site with five flanking differentiating sites. When the haplotypes formed from phasing these sites supports the gene conversion in *CYP2B6*, a read depth analysis at the gene conversion breakpoints (transitions from either *CYP2B6*->*CYP2B7* or *CYP2B7*->*CYP2B6*) is performed. When the posterior probability that there is at least one gene conversion variant is above 0.7 then DRAGEN uses the variant for star allele identification.

## Star Allele Identification

The called SVs and small variant genotypes are matched against the definitions of 39 different star alleles (PharmVar version 4.17, July 3, 2020) including an unreported star allele identified as `*U1` by the caller. `*U1` is defined by the following two variant alleles: 64C>T (NC\_000019.10:g.40991369C>T) and 25505C>T (NC\_000019.10:g.41016810C>T). Multiple star allele genotypes may be reported when different sets of star alleles match the called variant genotypes, as with `*1`, `*6` and `*4`, `*49` where both sets of star alleles contain the same two small variants. Additionally, the small variant caller can emit alternate genotypes with similar likelihoods to the most likely variant genotypes. This can also result in different sets of star alleles being reported. When matching the variant genotypes to the star alleles, the number of identified star alleles must equal the number of *CYP2B6*-derived gene copies determined from previous steps. If no variant genotypes can be matched to a set of star alleles, the CYP2B6 Caller returns a no call during the genotyping step with filter value `No_call`.

## Genotyping

Given a possible set of star alleles, the genotyping step attempts to identify the two likely haplotypes that contain all star alleles in the set. The likelihood of any given genotype is determined from a table of population frequencies determined from the 1000 Genomes Project and the genotype with the highest population frequency is selected. When two or more possible genotypes are identified with similar population frequencies, then all genotypes are emitted. This results in a call with filter value `More_than_one_possible_genotype`.

## CYP2B6 Output File

The caller prints out its calls in the targeted caller output file, `<output-file-prefix>.targeted.json` that also contains calls from other targets (see [Targeted JSON File](https://help.connected.illumina.com/dragen/product-guides/dragen-v4.5/dragen-dna-pipeline/targeted-caller/..#targeted-json-file)).

An example of the CYP2B6 caller content in the output is as follows:

```
{
    "cyp2b6": {
        "genotype": "*17/*2",
        "genotypeFilter": "PASS",
        "phenotypeDatabaseAnnotation": "Normal Metabolizer"
    }
}
```

For CYP2B6 caller, the fields are defined as follows.

| Fields in JSON              | Explanation                                                                               | Type and Possible Values                                                               |
| --------------------------- | ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| genotype                    | star allele genotype identified for sample                                                | string                                                                                 |
| genotypeFilter              | The filter status for the genotype call                                                   | string (The value can include: PASS, No\_call, or More\_than\_one\_possible\_genotype) |
| phenotypeDatabaseAnnotation | The metabolism status corresponding to the genotype, mapped from phenotypeDatabaseSources | string or null if not present in the database                                          |
