GeneFuse相关文献解读
Introduction
细读 GeneFuse
相关文献,整理其检测融合事件的原理。自带序列比对算法,可从原始测序数据
*.fq.gz
文件中直接检测融合事件。
Getting Started
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6036752/
Chen, Shifu et al. “GeneFuse: detection and visualization of target gene fusions from DNA sequencing data.” International journal of biological sciences vol. 14,8 843-848. 22 May. 2018, doi:10.7150/ijbs.24626
文中提及 Factera
与 DELLY
两款融合检测软件均基于比对结果识别相关的融合事件,故两者的检测结果严重依赖于比对结果的准确性;而
GeneFuse
只关注已知临床意义的融合基因(cosmic收录),利用自身的比对算法,可直接从原始
Fastq
下机测序数据中检测融合。
Factera
- 从比对结果中发现不匹配的reads,而后将不匹配的reads附近外显子聚类为不同的基因对组合,最后找到断点定位基因融合
DELLY:可以从 BAM
文件中发现基因融合
- 从比对结果中实现双末端比对分析,找出方向异常或插入片段大小异常的reads对
- 识别出的成对簇被解释为包含断点的基因组区间,这些区间被筛选为
split-read
支持,以在单核苷酸分辨率(single-nucleotide
)下映射基因组重排 - 合并支持的reads对,并根据参考基因组进行注释
GeneFuse
寻找能够很好比对到左右两个不同基因的reads,但又不能完全映射到整个参考基因组的任何位置;主要分为以下 4 个部分:
- Indexing --- 基于已知的融合基因,从参考基因组中提取相关序列,并生成长度为 k 的 k-mer
- Matching --- 收集 k-mer 序列,为每条reads计算一组序列,最后一步计算的索引将子序列映射到基因组坐标,从而找到该reads的相关基因
- Filtering --- 若一条reads能够比对到参考基因组上,则将其从候选融合列表中删除;若reads被映射到一个基因的两个片段,它将被视为一个缺失,太短则被删除
- Reporting --- 最终输出融合对;并html格式输出可视化结果;也可输出纯文本形式的融合信息,其中包括:融合发生的断点位置、推断的蛋白质形式、融合的reads支持数
Introduction
融合基因是两个不同基因的嵌合体,来自基因组结构重排(genomic structural rearrangements
)、转录通读(transcription read-through
)或者异常的RNA剪接(RNA splicing
)
基因融合事件在前列腺癌、淋巴癌、软组织癌、乳腺癌、胃癌和肺癌中较为常见;许多基因融合与癌症发生和肿瘤进展有关,有些甚至被认为是几种癌症类型中的驱动突变;所以融合基因是肿瘤诊断、预后和治疗指导的良好生物标志物。如:BCR-ABL
、TMPRSS2-ERG
、EML4-ALK
、KIFB-RET
基于比对的基因融合检测软件的优势:
- 可以扫描所有可能的基因融合
- 可以检测新的融合基因
需要注意的是,mapping-based
的融合检测算法严重依赖于比对结果的准确性,特别是比对算法对剪切(clips
)和嵌合体(chimeras
)的识别;对其产生影响的因素有:
1)包含融合的reads,可能会发生错位(可能造成假阴性);
2)对于不包含融合的正常reads,clips
和
chimeras
可能也会经常发生(可能造成假阳性);
以上两个因素会影响融合检测软件的敏感性和特异性;==假阳性经常出现在重复的区域==;此外,Mapping-based
的 fusion callers
在处理低肿瘤DNA组成的样本,或者无细胞肿瘤DNA的数据时,经常会出现假阴性。
==对于临床应用而言,与其寻找大量临床意义不明、不确定性大的基因融合,不如寻找已知对临床治疗有帮助的基因融合==
GeneFuse
可以直接从原始 FASTQ
文件中检测基因融合,以消除比对结果的影响;满足高灵敏度和特异性检测临床重要基因融合的需求,明确的是
GeneFuse
只关注已知临床意义的融合基因,且这些基因可以在
COSMIC(the Catalogue of Somatic Mutations in Cancer
)
数据库中找到
Implementation
重点介绍
GeneFuse
的比对算法和融合检测算法
GeneFuse
的基本思想是寻找能够很好低映射到左右两个不同基因的
reads,但不能完全映射到整个参考基因组的任何位置
基本概念:
- 支持read(
supporting read
):与融合的两个基因在其融合位置(fusion point
)相匹配的read;每次融合的重复支持read被分组为一个唯一的支持read
GeneFuse
判定检测的融合是否可靠依赖于统计得到的独特支持reads数(unique supporting reads
)
GeneFuse
的具体实现主要有如下 4 个步骤:
Indexing
重点在于计算获取映射到融合基因的哈希图
首先,准备一个包含目标融合基因及其外显子的基因组区域信息的
CSV
文件,以便于从参考基因组中提取基因序列;GeneFuse
提供了两个
CSV
文件,分别给出 COSMIC
数据库中
hg19/GRCh37
和 hg38/GRCh38
的基因融合列表;此外,GeneFuse
还提供了一个基因列表生成工具来定制目标融合基因
接着,GeneFuse
将从融合基因区域内的参考基因组中提取序列,并计算这些序列所有的
k=16
的 k-mer
,并且 k-mer
的每个元素都与它匹配的基因组坐标列表相关联【怎么关联???】
最终,利用 哈希图(hashmap
) 来存储 k-mer
和基因组坐标(genome coordinate
)之间的关联(用于将 reads
映射到目标基因);并且,它将被用于 read
与目标基因(target genes
)之间的 mapping
。
- read=ATGCTGA --- k=4
此外,随着 k
值的增加,四种碱基(A, T, G, C)组合成的
k-mer
数量会成指数增长。即: k=16
时,可能的 k-mer
将有
4,294,967,296
,超过十亿种可能存在的
k-mer
。
若长度为 100
的一段序列得到的 k=16
的
k-mer
个数为 100-16+1=85
条 k-mer
为什么用 k-mer 进行比对???
尽管现有的NGS测序准确度高达99.9%;但原始测序数据总是存在一定的错误率,且测序错误具有随机性;于是若将长read打断成一定长度k的k-mer时,带有测序错误的k-mer在真实情况下一般是不存在的,即测序数据中带有错误碱基的k-mer出现的次数仅为
1/2
次或者出现的次数很低,去除这种k-mer就可以很大程度上出去测序错误
Matching
目的在于利用前面计算的哈希图将 reads 映射到参考基因组上,并将映射到两个基因的数据保存到融合匹配中
在匹配过程中,为每一条 read
收集长度为 k
的所有 k-mer
;并通过 Indexing
步骤得到的
hashmap
将从reads中收集的k-mers映射到基因组坐标,这样就可以找到该read的相关基因了。
若一条 read
的左右部分可以映射到两个不同的基因,则该
read
将被分割成两个区域;若read
的左区域和右区域都足够长(read
被视为候选匹配(match candidate
);所有融合匹配候选记录将被存储在一个列表中,并将在下一步中进行筛选。
需要注意的是,测序的read长度也是影响突变检测的重要因素;所以
GeneFuse
为了获得更长的序列,尝试合并双端测序数据的每对reads;
双端reads合并算法:
read pair
分别是 R1
和
R2
,其中对 R2
计算其反向互补链为
rcR2
;这时,合并算法将搜索 R1
和
rcR2
的最大重叠(overlap
)区域,而它们重叠的子序列完全相同;如果重叠区域长于阈值(overlapped
),并将它们合并为一条
read
(需要注意的是:其中不接受高质量的碱基差异,只允许 3
碱基的低质量mismatch);于是在合并 read pair
之后获得更长的序列,甚至可以在融合断点位于 reads
边缘的情况下,继续进行匹配过程(Matching
)
1 | read1: GGAG...TC |
如果reads对不能发生合并,GeneFuse
将处理它们;尽管具有较大插入片段的测序文库(sequencing library
)将禁止读对的重叠,但这不会对性能造成重大影响,因为
GeneFuse
可以将一个读对单独处理为两个reads(single-end
)
举例说明:
Filtering
主要根据其reads的复杂度、匹配质量和其他因素进行过滤
一旦准备好融合匹配候选list
,支持融合的reads所有的子序列就形成了新的
k-mer
;而后对整个参考基因组进行扫描,搜索相同的
k-mer
元素,并把匹配的基因组坐标存储为全局索引
G
。对于融合匹配候选列表中的每一条read,都将其映射到
G
,以检查其是否能很好的与参考基因组对齐;
若一条read可以映射到一个参考基因组上,则将其从融合匹配候选列表中删除。
若一条read被映射到一个基因的两个片段,这将被视为一个缺失,如果缺失长度太短,将被删除。
此外,还采用低复杂度过滤器(low complexity filter
)和匹配质量过滤器(match quality filter
)来消除错误检出;
低复杂度的定义是与其下一个碱基不同的碱基比例(base[i] != base[i+1]).
"low complexity"指的是一种由重复或者相似的碱基序列组成的 reads 或者参考基因组的区域。这种序列在比对的过程中容易产生误匹配,导致比对质量降低。
Reporting
验证检测到的融合,并对每个融合进行reads支持数统计,并以HTML的形式对融合进行可视化
经过过滤的融合匹配结果将首先由融合位置(fusion points
)聚类成融合结果(fusion results
);对于每个融合结果进行定位其融合位置,并调整断点位置以找到更好的分离融合的reads
支持;然后对每个融合结果的支持reads进行过排序,并将重复的reads分组为单个唯一的read(也就是说多个重复的read支持统一计算成一条read计数);最终计算得到的唯一支持reads数大于设定阈值(
GeneFuse
给出的融合结果表现形式有两种:纯文本(FASTA/json/txt)和网页报告(HTML)
与其他融合软件的比较(FACTERA
and DELLY
)
GeneFuse
检测 10 个 cfDNA
样本中
EML4-ALK
融合事件的结果与 FATERA
和
DELLY
两者相比,GeneFuse
的敏感性最高;
运行速度上,GeneFuse比(BWA + Picard + FACTERA)或(BWA + Picard +
DELLY)用时短得多;但是实际生产中,GeneFuse
的运行速度并没有想象中的快。
GeneFuse
无法检测发生在基因间区的融合事件
影响 GeneFuse 检测融合准确性的可能因素:
- 测序数据的准确性:是否对fastq下机数据进行
rmdup
;存在重复的融合reads在很大程度上是假的 - 扫描genelist的
fusion files
文件:GeneFuse
只能对给定的fusion files
文件中的基因及对应的exon区域进行扫描;Factera
检出,但GeneFuse
漏检,可能的原因是融合断点不在fusion files
文件中存在的区间。 fusion files
文件中gene对应的转录本可以改成我们最终报出的经典转录本或可能最短的转录本GeneFuse
最大的缺陷是只能检索给定文件区间内的融合事件;超出范围的融合可能造成漏检- 解决方案:给定
genelist
检测融合+能够发现新融合的软件;两者相比较,可以在一定程度上避免重要融合事件的漏检,同时也能对可能存在的新融合进行一定的检测(并且这种融合可以通过前者对其验证性检测,若GeneFuse
能够在修改对应fusion files
,将新发融合的位置信息添加至其中,其能检测出来,那这个融合有很大的概率是真的) - 【注意】
GeneFuse
好像无法检测融合对中其中一个基因无reads支持的融合事件;只能检索两端均有reads支持的融合事件; genefuse
v0.8.0
较v0.6.1
去除了重复区域的融合检测,更加精准但可能存在隐患genefuse
受测序读长太短的限制,可能造成融合的漏检
References
[1] Chen, Shifu et al. “GeneFuse: detection and visualization of target gene fusions from DNA sequencing data.” International journal of biological sciences vol. 14,8 843-848. 22 May. 2018, doi:10.7150/ijbs.24626