当前位置: 首页 > news >正文

HISAT 软件比对算法及性能简介

HISAT(hierarchical indexing for spliced alignment of transcripts,利用分层索引对转录本进行剪切比对)使用两种索引方式进行比对:

  1. 全基因组索引,用于将 reads 锚定到基因组上;
  2. 大量局部索引(每个索引覆盖基因组 64 Kbp 区间),用于快速延伸及比对错配序列;

HISAT 将 RNA-seq 的 reads 分为 5 类:

  1. 完整的比对在单个外显子区内(M);
  2. 比对到两个外显子区,且每个外显子区的比对长度 > 15 bp(2M_gt_15);
  3. 比对到两个外显子区,且一个外显子区的比对长度为 8-15 bp(2M_8_15);
  4. 比对到两个外显子区,且一个外显子区的比对长度为 1-7 bp(2M_1_7);
  5. 比对到三个外显子区(gt_2M);

fig 1

图 1   HISAT 将 RNA-seq 的 reads 分为 5 类

第 1、2、3 类 reads 的比对

  HISAT 首先使用全局索引根据 read 的部分序列信息,将其定位到基因组上,一般会定位到一个或少数几个候选位置。然后,HISAT 使用局部索引对 read 的比对结果进行延伸,直至 read 全部比对到参考基因组上。除了第 1 类 reads 外(图 2a),其余 4 类 reads 在延伸过程中会出现大量的错配,算法需要将错配的短序列比对到基因组其他区间(图 2b)。第 3、4 类 reads 因为在一个外显子区域内的序列长度较短,在基因组上存在大量的候选位点。例如,8 bp 序列有 48 = 65536 种可能性,3 Gbp 长度的基因组按照 8 bp 长度切割,产生 375,000,000 个片段,如果基因组由碱基随机排列而成,约 5722 个(375,000,000 / 65,536 = 5,722)片段的序列完全一致。传统的剪切比对算法使用全局索引查找错配短序列的候选位置(图 2,Global Search),然后算法在大量候选中筛选出最佳的比对位置。这类算法在比对过程中需要反复读取庞大的全局索引(如人类基因组全局索引约为 913 MB),较为耗时。为了快速且准确的比对,HISAT 将错配的序列仅在局部索引(覆盖 64 Kbp 范围,索引大小 24 KB)内进行比对(图 2c,Local Search)。以人类基因组为例,64 Kbp 的局部索引将包含 90.4% 的内含子。当错配序列无法在局部索引内被合理比对时,HISAT 则认为遇到了长内含子,会将两个或多个连续的局部索引合并后再进行比对,直至预设的上限(500 Kbp)。达到局部索引长度的上限但仍未比对上时,HISAT 则判定该 read 无法比对到参考基因组上。此外,HISAT 还优化了 reads 比对的延伸步骤,当 reads 的前 28 bp 精确比对到基因组唯一位置时,HISAT 停止全局搜索,直接比较剩余序列和相应的基因组序列来延伸比对结果,直到不匹配为止(图 2,Extension)。如果错配序列较长,HISAT 局部搜索 8 bp 后将再次调用延伸算法(图 2d)。


fig 2

图 2   HISAT 处理第 1、2、3 类 reads

第 4 类 reads 的比对

  如果错配序列非常短(1-7 bp),序列在局部索引内也可能与多个位置匹配,正确比对较为困难。HISAT 选择利用剪切位点信息移除内含子,然后进行比对。具体而言,HISAT 第一遍运行完成对第 1、2、3 类 reads 的比对,第 4 类 reads 因为候选位点较多而无法被正确比对(图 3a)。接着,HISAT 根据第一遍的比对结果识别并收集剪接位点位置。然后,第二遍运行 HISAT,完成对第 4 类 reads 的比对(图 3b,Junction extension)。


fig 3

图 3   HISAT 处理第 4 类 reads

涉及假基因 reads 的比对

  加工后的假基因是原始基因转录、去除内含子并重新插入到基因组不同位置的非功能性副本。假基因与原始基因非常相似,reads 可能同时比对到假基因及原始基因上。图 4 展示了 1 号染色体上两个外显子在 17 号染色体上有几乎完全相同的副本(仅存在一个碱基差异)。因此,原本跨越染色体 1 上两个外显子的 reads 可能被错误地比对到 17 号染色体。由于 reads 比对到 17 号染色体会产生一个错配,得分低于比对到 1 号染色体,HISAT 将仅输出 1 号染色体的比对位置。如果假基因与原始基因序列完全一致,比对结果得分相同,HISAT 将输出所有位置信息。


在这里插入图片描述

图 4   HISAT 处理涉及假基因的 reads

HISAT 比对的速度、精度及内存占用情况

  HISAT 的作者从人类基因组 GRCh37 中随机选择 17,647 个转录本,模拟生成 2000 万个长度为 100 bp 的 reads。不同软件的计算速度和准确度如图 5、6 所示。HISAT 速度最快,约是 STAR 的 1.5 倍,约是 TopHat2 的 62 倍。HISAT 精度最高,略高于 TopHat2,高于 STAR 等软件。另外,HISAT 作者还比较了不同软件比对 109 million reads 的肺成纤维细胞 RNA-seq 数据。结果显示,HISAT 的内存消耗远小于 STAR(图 7)。值得注意的是,第三方的检测结果中 HISAT 的表现并没有这么优秀,参见 https://www.nature.com/articles/s41467-017-00050-4。


在这里插入图片描述

图 5   不同软件比对速度的比较

在这里插入图片描述

图 6   不同软件比对精度的比较

在这里插入图片描述

图 7   不同软件比对时的速度、内存消耗情况

http://www.mrgr.cn/news/42493.html

相关文章:

  • Python的file.read方法
  • 工业物联网在能源管理中的应用
  • vscode报错No module named ‘Crypto‘
  • python爬虫 - 初识爬虫
  • SF-HCI-SAP问题收集20:Metadata导入的时间格式错误问题
  • 程序猿成长之路之设计模式篇——设计模式简介
  • python如何比较字符串
  • 【Git】vscode链接github拉去镜像
  • 梗百科——信号和槽机制
  • 【高频SQL基础50题】21-25
  • 【Docker从入门到进阶】06.常见问题与解决方案 07.总结与资源
  • 民峰:助力投资者实现财务自由
  • 【LeetCode】每日一题 2024_10_4 飞机座位分配概率(数学)
  • 浅谈memset和memcpy的区别
  • C++-容器适配器- stack、queue、priority_queue和仿函数
  • 昇思MindSpore进阶教程--在ResNet-50网络上应用二阶优化实践(下)
  • 多智能体协作强化学习中的知识共享
  • 【数据库】行式存储和列式存储
  • C++游戏开发
  • Spring Boot实现新闻个性化推荐