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   不同软件比对时的速度、内存消耗情况
HISAT2 是一款广泛使用的 RNA-seq 数据比对软件,可以将 RNA-seq 数据比对到参考基因组上。为了生成正确的 HISAT2 比对代码,您需要考虑以下几个方面: 1. 参考基因组文件:首先需要准备好参考基因组文件,可以是 FASTA 格式的基因组序列文件,也可以是 HISAT2 索引文件。如果没有可用的参考基因组文件,可以从 NCBI 等公共数据库下载。 2. RNA-seq 数据:需要准备好 RNA-seq 数据文件,可以是单端或双端测序数据,可以是 FASTQ 格式的数据文件,也可以是 SAM 或 BAM 格式的对齐结果文件。 3. HISAT2 命令行参数:在运行 HISAT2 时,需要指定一些命令行参数,以控制比对过程中的各个步骤。例如,可以使用 "-x" 参数来指定参考基因组索引文件,使用 "-U" 参数来指定单端或双端测序数据文件,使用 "-S" 参数来指定输出的 SAM 文件名,还可以使用其他参数来控制比对的参数和输出格式等。 4. 常用参数设置:在实际使用过程中,需要根据具体的数据和分析任务,设置一些常用的参数。例如,可以设置 "-q" 参数来指定 FASTQ 格式的输入数据,使用 "-p" 参数来指定线程数,使用 "--no-spliced-alignment" 参数来禁用剪接比对等。 下面是一个简单的 HISAT2 比对示例: ``` hisat2 -x ref_genome -U reads.fastq -S output.sam -p 4 ``` 该命令将使用参考基因组索引文件 "ref_genome",对单端测序数据文件 "reads.fastq" 进行比对,输出结果到 SAM 文件 "output.sam" 中,并使用 4 个线程来加速比对过程。 希望这些信息能够帮助您生成正确的 HISAT2 比对代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值