> For the complete documentation index, see [llms.txt](https://help.tso500software.illumina.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.tso500software.illumina.com/dragen-tso-500-guides/mtap-spike-in-resources/mtap-add-on-workflow-resources.md).

# MTAP add-on workflow resources

[A published application note](https://www.illumina.com/content/dam/illumina/gcs/assembled-assets/marketing-literature/tso500-v2-mtap-cnv-app-note-m-gl-04207/tso500-v2-mtap-cnv-app-note-m-gl-04207.pdf) describes a proof-of-concept study using a spike-in probe set with the TSO 500 product and the [DRAGEN Enrichment BSSH App 4.4.6](https://ilmn-tso500.basespace.illumina.com/apps/18134116) to enable *MTAP* gene CNV calling. This page describes the data and resources that were used in the app note. ***The resources and output on this page were generated using the reference genome Homo sapiens \[NCBI] hs37d5 with chr prefix v5.***

## Probe Information

Probes for the *MTAP* spike in were designed to cover exonic and intronic locations that are unique in the genome and did not interfere with OPD2 (TSO 500) or OPD3 (HRD) probe sets. The probes are optimized for CNV calling and do not cover all exonic regions.

In addition to the *MTAP* targets, the *MTAP* spike-in design includes intronic probes for *ALK* and *ESR1* to serve as internal controls. Because *ALK* and *ESR1* exons are targeted in OPD2, the spike-in probes targeting these genes' introns enable the user to check if the spike in concentration was comparable to the OPD2 probe concentration (see details in the [QC section](#using-the-housekeeping-genes-included-as-qc) below).

The probe pool has 196 unique probes: 146 *MTAP*, 25 *ALK*, 25 *ESR1*.

## Resource files

Use the below resource files to run the DRAGEN Enrichment App in BSSH or using command line. Refer to [Analyzing with DRAGEN Enrichment App](/dragen-tso-500-guides/mtap-spike-in-resources/supplemental-cnv-analysis-using-dragen-enrichment.md) for instructions. ***Note that these resources were produced using Homo sapiens \[NCBI] hs37d5 with chr prefix v5*** and are only intended for running DRAGEN Enrichment using that reference genome.

**Targeted Regions bed file:** The manifest inclusive of TSO 500 and the *MTAP* spike-in targets. Provide in Custom Target BED File field and in Additional Resource Files under Additional Arguments in the BSSH App.

{% file src="/files/Uye9naBo12X4WAlufc97" %}

**Target Segmentation bed:** The bed file with the gene boundaries for *MTAP* for segment mean calling. Provide in Additional Resource Files under Additional Arguments in the BSSH App.

{% file src="/files/SRHWpSLwM8MwFsawo8YX" %}

**Panel of Normals:** Counts from 22 normal run with TSO 500 + *MTAP* probes. Provide in Additional Resource Files under Additional Arguments in the BSSH App.

{% file src="/files/LMAFIme5HPsz82lvZ08G" %}

**QC Bed File:** Segmentation bed of *ALK* and *ESR1* exon and intronic boundaries to be used for quality control. Provide in Additional Resource Files under Additional Arguments in the BSSH App.

{% file src="/files/ZOAJB9rQxgpgHASMcgto" %}

**Additional Command-line Arguments:** In this BSSH field (under Additional Arguments), provide the following arguments:

```
--enable-cnv true --cnv-filter-copy-ratio 0.2 --cnv-enable-filter-copy-ratio true --cnv-filter-qual 25 --cnv-enable-gcbias-correction false --cnv-enable-ref-calls true --cnv-enable-split-intervals false --cnv-normalize-rows-by-interval-size true --cnv-linear-regression-noise-removal true --cnv-normalize-counts-by-good-median true --cnv-count-mapq-zero false --cnv-num-singular-values 5 --cnv-enable-tso500-arm-level-detection true --cnv-segmentation-mode bed --cnv-enable-tso500-gender-call true --cnv-target-bed TSO500_PLUS_MTAP_targets_noheader.bed --cnv-segmentation-bed MTAP_seg_only.bed --cnv-combined-counts MTAP_PON_525_20260428.combined.counts.txt.gz --cnv-filter-duplicate-alignments false --enable-duplicate-marking false --qc-coverage-region-1 QC_seg_housekeeping_MTAP.bed --qc-coverage-tag-1 QC --qc-coverage-reports-1 cov_report full_res
```

### Running DRAGEN Enrichment for *MTAP* analysis on Local DRAGEN Server

{% hint style="warning" %}
If you are planning to run on a local DRAGEN server, use the below command and resources. Note that you may need to contact customer support for assistance with the specific DRAGEN license needs for running DRAGEN Enrichment.
{% endhint %}

Command:

```ssh-config
dragen 
--vc-use-somatic-hotspots true \
--vc-frd-max-effective-depth 40 \
--cnv-enable-ref-calls true \
--output-format BAM \
--cnv-enable-gcbias-correction false \
--enable-variant-caller true \
--umi-enable true \
--umi-library-type random-duplex \
--qc-coverage-region-padding-2 150 \
--vc-bqd-max-effective-depth 50 \
--enable-map-align-output true \
--umi-min-supporting-reads 2 \
--enable-vcf-compression true \
--vc-target-bed TSO500_PLUS_MTAP_targets_noheader.bed \
--enable-metrics-json true \
--vc-systematic-noise NONE\
--vc-target-bed-padding 0 \
--enable-map-align true \
--vc-enable-vcf-output true \
--vc-enable-umi-solid true \
--vc-emit-ref-confidence GVCF \
--umi-metrics-interval-file TSO500_PLUS_MTAP_targets_noheader.bed \
--vc-skip-germline-tagging true \
--enable-duplicate-marking false \
--logging-to-output-dir true \
--output-file-prefix $SAMPLEID \
--output-directory $SAMPLEID \
--tumor-fastq-list tumor-fastq-list.csv \
--tumor-fastq-list-sample-id $SAMPLEID \
--sample-sex none \
--generate-ploidy-vcf false \
--ref-dir \/scratch\/hs37d5_chr-cnv\/DRAGEN\/11 \
--qc-coverage-region-1 QC_seg_housekeeping_MTAP.bed \
--qc-coverage-filters-1 mapq<0 \
--qc-coverage-region-2 TSO500_PLUS_MTAP_targets_noheader.bed \
--qc-coverage-filters-2 mapq<0 \
--enable-cnv true \
--cnv-filter-copy-ratio 0.2 \
--cnv-enable-filter-copy-ratio true \
--cnv-filter-qual 25 \
--cnv-enable-split-intervals false \
--cnv-normalize-rows-by-interval-size true \
--cnv-linear-regression-noise-removal true \
--cnv-normalize-counts-by-good-median true \
--cnv-count-mapq-zero false \
--cnv-num-singular-values 5 \
--cnv-enable-tso500-arm-level-detection true \
--cnv-segmentation-mode bed \
--cnv-enable-tso500-gender-call true \
--cnv-target-bed TSO500_PLUS_MTAP_targets_noheader.bed \
--cnv-segmentation-bed MTAP_seg_only.bed \
--cnv-combined-counts MTAP_PON_525_20260428.combined.counts.txt.gz \
--cnv-filter-duplicate-alignments false \
--qc-coverage-tag-1 QC \
--qc-coverage-reports-1 cov_report full_res \
--qc-coverage-reports-2 full_res
```

## Results from DRAGEN Enrichment App

The fold change (also known as segment mean or SM) can be found in the following location in the DRAGEN enrichment App output: `$SAMPLEID/$SAMPLEID.cnv.vcf.gz`. A single entry in the vcf is expected that will correspond to the *MTAP* segment mean. An example:

<table><thead><tr><th width="87">#CHROM</th><th width="87">POS</th><th width="87">ID</th><th width="87">REF</th><th width="87">ALT</th><th width="87">QUAL</th><th width="87">FILTER</th><th width="87">INFO</th><th width="87">FORMAT</th><th width="87" align="right">10847</th></tr></thead><tbody><tr><td>chr9</td><td>21802574</td><td>DRAGEN:REF:chr9:21802574-21867130</td><td>N</td><td>.</td><td>3</td><td>cnvQual</td><td>END=21867130;REFLEN=64557;SEGID=target-wes-chr9-21802573:21867130</td><td>GT:<strong>SM</strong>:BC:PE</td><td align="right">./.:<strong>1.06262</strong>:100:0,3</td></tr></tbody></table>

{% hint style="info" %}
While customers should interpret these results within the context of their own validation studies, our development work showed that combining **fold change (SM)** with **tumor fraction estimates from the HRD probes** provides the most accurate assessment of MTAP status (see Figure 8 of the Application Note). Accordingly, we do not rely on **ALT DEL/DUP** calls in the VCF.
{% endhint %}

## Using the Housekeeping Genes included as QC

A known risk of this workflow is improper spike-in of the MTAP probes, leading to uneven coverage between TSO 500 and the *MTAP* target sequence and inaccurate fold change estimates. To reduce this risk, intronic sequence for two TSO 500 genes are targeted by the spike-in probes. If the spike-in was effective, we expect the exon:intron mean coverage ratio to be close to 1. In order to compute the spike in ratio, the `$SAMPLEID/$SAMPLEID.QC_cov_report.bed` from the DRAGEN Enrichment App output can be used.

Using the coverage report and the `QC_seg_housekeeping_MTAP.bed` resource, you can calculate the ratio for both genes. Because copy alterations are not likely to occur in both *ALK* and *ESR1* in a single cancer type, at least one should be usable for QC even if a true biological CNV is observed in the other (to check for whole gene CNVs on these two genes you can look to the standard TSO output).

An example R script for calculating the ratio:

```r
library(tidyverse)

#required 
resourceseg_housekeeping <- ("QC_seg_housekeeping_MTAP.bed")

#function
intron_exon_mean_ratio <- function(cov_path) {
                seg <- read_tsv(seg_housekeeping, col_names = c("chrom","start","end","seg_name"), show_col_types = FALSE)  
                
                cov <- read_tsv(cov_path, show_col_types = FALSE, col_names = T) %>%
                rename(chrom = `#chrom`)  
                
                joined <- seg %>%    
                inner_join(cov, by = c("chrom","start","end")) %>%
                select(c(chrom, start, end, seg_name, mean_cvg)) %>%
                mutate(region_type = if_else(str_detect(seg_name, regex("intron", ignore_case = TRUE)), "intron", "exon")) %>%
                mutate(gene = case_when(str_detect(seg_name, regex("^ALK",  ignore_case = TRUE)) ~ "ALK", str_detect(seg_name, regex("^ESR1", ignore_case = TRUE)) ~ "ESR1"))  
                
                out <- joined %>%
                group_by(gene, region_type) %>%    
                summarize(mean_cvg_region = mean(mean_cvg, na.rm = TRUE), .groups = "drop") %>%    
                tidyr::pivot_wider(names_from = region_type, values_from = mean_cvg_region) %>%    
                mutate(intron_exon_ratio = intron / exon) %>%    
                arrange(gene)  
                
                out}
                
#usage of function

intron_exon_mean_ratio("Sample.QC_cov_report.bed")
```

A spike-in that will reliably produce an accurate *MTAP* fold change will have ratios near one, such as Runs 1 and 2 below. If the ratio is much lower or higher than 1, as observed in Run 3 below, the *MTAP* fold change will not be accurate. In our experience, the *ESR1* ratio appears to be more accurate and reproducible than the *ALK* ratio.

<figure><img src="https://3845108255-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7XRWgkRPkhoHXVslBqXD%2Fuploads%2Fgit-blob-b01aea76c35c0315671025e1eeb91b497f1238dc%2FUG_Ratios.svg?alt=media" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.tso500software.illumina.com/dragen-tso-500-guides/mtap-spike-in-resources/mtap-add-on-workflow-resources.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
