Gene Fusion Detection

The DRAGEN Gene Fusion module uses the DRAGEN RNA splice-aware aligner to detect gene fusion events. The supplementary (chimeric) alignments are used to find potential breakpoints and read evidence is accumulated for the resulting fusion event candidates. Then, an ML model is applied to score the putative fusion events to filter potential false positives. The ML scoring model is currently available on human samples and does not support non-human reference genomes.

Running DRAGEN Gene Fusion

You can run the DRAGEN Gene Fusion module together with a regular RNA-Seq map/align job. To enable the DRAGEN Gene Fusion module, set --enable-rna-gene-fusion to true in your current RNA-Seq command-line scripts. The DRAGEN Gene Fusion module requires a gene annotations file in GTF or GFF format.

The following is an example command line for running an end-to-end RNA-Seq experiment.

dragen \
-r <HASHTABLE> \
-1 <FASTQ1> \
-2 <FASTQ2> \
-a <ANNOTATION_FILE> \
--output-dir <OUT_DIRECTORY> \
--output-file-prefix <OUTPUT_PREFIX> \
--RGID <READ_GROUP_ID> \
--RGSM <SAMPLE_NAME> \
--enable-rna true \
--enable-rna-gene-fusion true

At the end of a run, a summary of detected gene fusion events is output, which is similar to the following example.

==================================================================
Completed DRAGEN Gene Fusion Detection
==================================================================
Chimeric alignments: 3072
Total fusion candidates: 259
Final fusion candidates: 223

Gene Fusion Output and Filters

The <OUTPUT_PREFIX>.fusion_candidates.features.csv file lists the detected gene fusion events. The output CSV file includes the following columns.

  • #FusionGene: Parent gene names (in 5' to 3' order of transcript) participating in the fusion; hereafter refer red to as Gene 1 and Gene 2. If a fusion breakpoint overlaps multiple genes, the genes are listed by default as separate candidates (rows). To show them as a semi-colon separated gene list on the same row, the option --rna-gf-merge-calls can be set to true as described in the Gene Fusion Options and Filters section.

  • Score: Fusion call confidence score predicted by the ML model. If the ML model is used, the score can be 0 (low confidence) to 1 (high-confidence call). Currently the ML model only supports human references. In the case an ML model is not available, the number of supporting reads will be reported as the score.

  • LeftBreakpoint: Gene 1 breakpoint formatted as <Chromosome>:<Position>:<Strand>.

  • RightBreakpoint: Gene 2 breakpoint formatted as <Chromosome>:<Position>:<Strand>.

  • Filter: Semicolon separated list of filter flags. The LOW_SCORE filter is used to filter low confidence fusion candidates. If --rna-gf-enable-post-filtering=true, other confidence filters will also be applied. Informative filters, on the other hand, do not fail the fusion. In the absence of the ML model scoring (i.e. a non-human reference is used), a more aggressive post-filtering will take place and all confidence and informative filters will be applied. The following are the available filters.

Note that the specific features and column values are subject to change in future DRAGEN versions as more RNA data is analyzed.

  • #SplitScore: Combined count of fusion supporting read pairs reported as split reads and soft-clipped reads

  • #NumSplitReads: Number of fusion supporting read pairs with at least one split read alignment.

  • #NumSoftClippedReads: Number of fusion supporting read pairs with no split read alignment, but at least one soft clipped alignment. Included in SplitScore and includes soft-clipped reads for both Gene1 and Gene2

  • #NumSoftClippedReadsGene1: Number of fusion supporting read pairs with no split read alignment, but at least one soft clipped alignment to Gene 1

  • #NumSoftClippedReadsGene2: See above (NumSoftClippedReadsGene1) for Gene 2

  • #NumPairedReads: Number of fusion supporting read pairs such that one of the reads maps to Gene1 and the other maps to Gene2, without any breakpoint overlap

  • #NumRefSplitReadsGene1: Number of read pairs that map fully within Gene 1 such that at least one of the reads aligns across the breakpoint. These reads support the reference transcript and do not support the fusion.

  • #NumRefSplitReadsGene2: See above (NumRefSplitReadsGene1) for Gene 2

  • #NumRefPairedReadsGene1: Number of read pairs such that one of the reads maps on the left side of the Gene1 breakpoint and the other maps on the right side of the Gene1 breakpoint, without overlapping the break. These reads support the reference transcript and do not support the fusion.

  • #NumRefPairedReadsGene2: See above (NumRefPairedReadsGene1) for Gene 2

  • #AltToRef-- Ratio of (fusion split + soft clipped reads) / max(NumRefSplitReadsGene1, NumRefSplitReadsGene2); used for the LOW_ALT_TO_REF filter

  • #UniqueAlignmentsGene1: Unique (start-end) positions of fusion supporting read alignments to Gene 1 (after dedup); used for the LOW_UNIQUE_ALIGNMENTS filter

  • #UniqueAlignmentsGene2: Unique (start-end) positions of fusion supporting read alignments to Gene 2 (after dedup); used for the LOW_UNIQUE_ALIGNMENTS filter

  • #MaxMapqGene1: Maximum MAPQ for fusion supporting reads in Gene 1

  • #AvgMapqGene1: Average MAPQ for fusion supporting reads in Gene 1

  • #MaxMapqGene2: Maximum MAPQ for fusion supporting reads in Gene 2

  • #AvgMapqGene2: Average MAPQ for fusion supporting reads in Gene 2

  • #CoverageBasesGene1: Bases in Gene 1 with read coverage within a certain distance (default 1000 bp) of the breakpoint in the direction of the breakpoint strand which is part of the fusion transcript

  • #CoverageBasesGene2: See above (CoverageBasesGene1) for Gene 2

  • #DeltaExonBoundaryGene1: Distance from the Gene 1 breakpoint for the closest fusion supporting alignment (higher distance to boundary lowers score)

  • #DeltaExonBoundaryGene2: See above (DeltaExonBoundaryGene1) for Gene 2

  • #IsRestrictedGene1: Indicator variable of whether the Gene 1 is tagged as protein coding in the annotation file

  • #IsRestrictedGene2: Indicator variable of whether the Gene 2 is tagged as protein coding in the annotation file

  • #IsEnrichedGene1: If enrichment or amplicon assay, then indicates whether Gene 1 is enriched. If whole transcriptome sequencing, then set to 1

  • #IsEnrichedGene2: See above (IsEnrichedGene1) for Gene 2

  • #CisDistance: Distance between breakpoints if they are adjacent to each other and on the same strand. Large value (100M) if not a CIS break; used for the READ_THROUGH filter.

  • #BreakpointDistance: Distance between breakpoints if they are adjacent. Large value (100M) if not within same chromosome

  • #GenePairHomologyEval: E-value of pairwise BLAST alignment of the parent genes

  • #AnchorLength1: Longest alignment of a fusion supporting read to Gene 1

  • #AnchorLength2: Longest alignment of a fusion supporting read to Gene 2

  • #FusionLengthGene1: Distance from breakpoint to the end of Gene 1

  • #FusionLengthGene2: Distance from breakpoint to the end of Gene 2

  • #NonFusionLengthGene1: Breakpoint distance to the end of transcript not part of the fusion for Gene 1

  • #NonFusionLengthGene2: Breakpoint distance to the end of transcript not part of the fusion for Gene 2

  • #Gene1Id: Gene ID reported in the annotation file for Gene 1

  • #Gene2Id: Gene ID reported in the annotation file for Gene 2

  • #Gene1Location:

    • IntactExon: Breakpoint matches exon boundary,

    • BrokenExon: Breakpoint is within an exon but does not match the exon boundary,

    • Intron: Breakpoint is within an intron,

    • Intergenic: Breakpoint does not overlap any gene

  • #Gene2Location: See above (Gene1Location) for Gene 2

  • #Gene1Sense: True if the Gene 1 5' to 3' direction matches the breakpoint order, indicating that the gene is the upstream gene in the fusion transcript

  • #Gene2Sense: See above (Gene1Sense) for Gene 2

In addition, if --rna-gf-merge-calls is enabled, DRAGEN merges the fusion candidates that overlap the same breakpoint into a single row reporting the feature values for the highest scoring passing candidate (or highest scoring failing candidate if no passing candidate is reported). For each breakpoint, in the column #FusionGene, it reports a semi-colon separated list of names of all overlapping genes with a passing candidate. The following two columns are added to the features.csv output file:

  • #AdditionalGenes1: If a mix of passing and failing candidates are reported for the same breakpoint of Gene 1, genes with only failing candidates are listed. If no passing candidate exists, then all overlapping genes are reported in the #FusionGene column.

  • #AdditionalGenes2: See above (AdditionalGenes1) for Gene 2

The <OUTPUT_PREFIX>.fusion_candidates.final output file lists each passing fusion along with the read names that support the fusion, including Split Reads, Soft-clipped reads, and Paired (discordant) Reads and the passing scores. These reads can be extracted from the output BAM file and then used to visualize the fusions (i.e. in IGV). The same information for the non-passing fusions is provided in the <OUTPUT_PREFIX>.filter_info output file.

The <OUTPUT_PREFIX>.fusion_candidates.vcf.gz output file provides the VCF representation for all of the breakpoints for the candidate fusions using structural variant-style BND notation. The VCF header is annotated with ##source=DRAGEN_RNA_GF to indicate the file is generated by the DRAGEN RNA Gene Fusion pipeline. All fusion candidates (passing and failing) are represented in the VCF output with one entry for each side of the fusion breakpoint (Gene 1 and Gene 2).

The <OUTPUT_PREFIX>.fusion_metrics.csv output file provides a simple count of the total number of fusion candidates, those passing the scoring filter, and the number of unique left-right gene combinations that are found.

Gene Fusion Options and Filters

The following thresholds and options may be used to configure the fusion caller:

  • --rna-gf-blast-pairs A tab separated file listing gene pairs that have a high level of similarity. The first and second column are the gene names, and the third column is the e-score. This list of gene pairs is used as a homology filter to reduce false positives. For runs on human genome assemblies GRCH38 and hg19, DRAGEN automatically applies a default file generated using Gencode Human Release 32 annotations for primary chromosomes if no other file is specified using the command-line.

  • --rna-gf-enriched-genes For RNA enrichment assays, a list of targeted genes specified as one gene-name per line. Only fusion calls involving at least one gene on the list are reported. The enriched genes list should only contain genes listed in the input annotation file. This option cannot be provided together with --rna-gf-enriched-regions. If RNA amplicon mode is enabled and the amplicon bed file already includes the gene name, then you do not need to set this option; DRAGEN will read the enriched genes names from the amplicon BED file (fifth column). See DRAGEN Amplicon Pipeline for further information.

  • --rna-gf-enriched-regions Alternative to --rna-gf-enriched-genes, but input is provided as a bed-file with regions coordinates instead of a gene list. All the genes in the provided annotation file that overlap such regions are included. Genes that are extracted in this way are summarized in output in the *.fusion.enriched_genes.txt file. This option cannot be provided together with --rna-gf-enriched-genes.

  • --rna-repeat-genes Text file that contains the names or IDs (from the annotation file) of targeted repetitive genes for sensitive fusion detection. Exclusive from --rna-repeat-intervals. This option overrides the default BED file. The repeat genes list should only contain genes listed in the input annotation file.

  • --rna-repeat-intervals BED file that contains a target list of repeat intervals for sensitive fusion detection. Exclusive from --rna-repeat-genes. This option overrides the default files, which contain the genes CIC, DUX4, PSPH, and SEPTIN14 for GRCh38 and hg19 reference genomes.

  • --enable-variant-annotation=true, --variant-annotation-assembly, and --variant-annotation-data Enable Illumina Annotation Engine (IAE) to report fusion annotations in JSON format. --enable-variant-annotation must be set to true. For more information, see Illumina Annotation Engine.

  • --rna-gf-restrict-genes When parsing the gene annotations file for use in the DRAGEN Gene Fusion module, you can use this option to restrict the entries of interest to only protein-coding regions. Restricting the annotation to only the protein-coding genes reduces false positive rates in currently studied fusion events. To report non-coding gene fusions such as pseudo genes and lincRNAs, turn off this option. The default value is true.

  • --rna-gf-merge-calls If multiple genes overlap a fusion breakpoint, DRAGEN generates and scores a separate fusion candidate for each gene pair overlapping the breakpoint. The default value is false so that each reported fusion event only has one left and right gene in the fusion, and overlapping genes are output as separate events.

  • --rna-gf-allow-overlapping-genes Allows for fusion calls between overlapping genes. The default value is "false".

  • --rna-gf-enable-post-filters Enable post-filtering of RNA gene fusion candidates by confidence flags. The filter flags are listed in the table above. The default value is "false".

  • --enable-rna-amplicon A separate fusion filtering model is trained for RNA amplicon mode. Duplicate removal for fusion supporting reads is disabled for RNA amplicon mode and both genes are required to be in the list of enriched genes. By default, the DRAGEN fusion caller filters candidates if a breakpoint overlaps both transcripts (e.g. fusions such as FIP1L1--PDGFRA and GOPC--ROS1). In RNA amplicon mode, such candidates are not filtered. See DRAGEN Amplicon Pipeline for further information. The default is "false".

  • --rna-gf-sv-vcf Structural Variant VCF file output from DRAGEN DNA structural variant caller run in somatic mode. See the next section for more information.

Running RNA fusion detection with a somatic SV evidence

You can run the DRAGEN Gene Fusion module with a VCF file containing somatic Structural Variant (SV) calls. DRAGEN will report SV events matching each fusion candidate in the *.features.csv output file for informational purposes, but will not use this data in the scoring or filtering of the fusion candidates. The SV events must be run in somatic mode (for more information see DRAGEN Structural Variant Calling pipeline). The following is an example command line for running an end-to-end RNA-Seq experiment with a somatic SV VCF file.

dragen \
-r <HASHTABLE> \
-1 <FASTQ1> \
-2 <FASTQ2> \
-a <ANNOTATION_FILE> \
--output-dir <OUT_DIRECTORY> \
--output-file-prefix <OUTPUT_PREFIX> \
--RGID <READ_GROUP_ID> \
--RGSM <SAMPLE_NAME> \
--enable-rna true \
--enable-rna-gene-fusion true
--rna-gf-sv-vcf <SV_VCF_PATH>

When the SV VCF input is provided to the RNA fusion caller, the following additional features will be reported in the features.csv output file:

  • #SvEvent: A semi-colon separated string representation of SV events matching the fusion candidate.

  • #SvType: A semi-colon separated list of type of the matching SV events.

  • #SomaticScore: The highest SomaticScore value of the matching SV events.

  • #SvDistance: The maximum distance between any SV breakpoint to any fusion breakpoints (if multiple matching SV events, then minimum of all maximum distances over all SV events).

  • #LeftSvDistance: The distance between the left fusion breakpoint and the corresponding SV breakpoint (if multiple matching SV events, then minimum over all SV events).

  • #RightSvDistance: The distance between the right fusion breakpoint and the corresponding SV breakpoint (if multiple matching SV events, then minimum over all SV events).

  • #SvPresent: Set to 1 if matching SV event is present, otherwise 0.

  • #SvAbsent: Set to 1 if no matching SV event is present, otherwise 0.

Last updated