Handling Decoy Contigs

The behavior of DRAGEN with respect to the handling of decoy contigs in the reference has changed since version 2.6.

Starting with DRAGEN 3.x, DRAGEN’s hash table builder automatically detects the absence of the decoy contigs from the reference and adds it to the FASTA file, prior to building the hash table. The decoys file is found at /opt/edico/liftover/hs_decoys.fa. If the reference is missing the decoy contigs, then the reads which map to the decoy contigs are artificially marked as unmapped in the output BAM (because the original reference does not have the decoy contig). This results in an artificially lower mapping rate, however, the accuracy of variant calling is improved thanks to removing false positive caused by decoy reads.

Illumina recommends using this feature by default. However, you can to set the --htsuppress-decoys option to true to suppress adding these decoys to the hash table.

The table below describes the difference in behavior between older DRAGEN versions (2.6 and earlier) and DRAGEN 3.x versions with respect to the handling of decoy contigs in the hash table builder:

DRAGEN Behavior

DRAGEN 2.6 and earlier versions

DRAGEN 3.x

Reference does not include the decoy contigs (eg, GRCh37)

Decoy reads mismap elsewhere in the genome due to the lack of contigs in the reference.

Artificially higher mapping rate.
False positive calls in noisy regions to which the decoy contigs are mismapped.

DRAGEN automatically detects the absence of the decoy contig from the reference and adds it to the FASTA file.

Artificially lower mapping rate (because decoy reads which map to the decoy contigs are artificially marked as unmapped in the output BAM (because the original reference does not have the decoy contig) .
False positive calls are avoided thanks to adding the decoy contigs under the hood. Therefore this helps variant calling.

Reference includes the decoy contigs (eg, hs37d5)

Decoy reads map to the decoy contigs.

High mapping rate
No false positive calls caused by decoy reads because decoy reads map to the right place

Decoy reads map to the decoy contig.

High mapping rate
No false positive calls caused by decoy reads because decoy reads map to the right place