BWA(Burrows-Wheeler Aligner)是如何建立索引和进行快速匹配的

BWA(Burrows-Wheeler Aligner) 是如何建立索引和进行快速匹配的


一、BWA 的流程概述

  1. 构建索引(Indexing)

    • 首先,BWA 对参考基因组序列进行预处理,构建一个压缩的索引结构,以支持快速的序列匹配。
    • 这个索引是基于 Burrows-Wheeler 变换(BWT)FM-索引 构建的。
  2. 序列比对(Alignment)

    • 使用预先构建的索引,对读取的序列(query sequences)进行比对。
    • BWA 支持精确匹配和允许一定程度错配的比对,能够处理小范围的突变。

二、关键数据结构与算法

1. Burrows-Wheeler 变换(BWT)

  • 概念:BWT 是一种可逆的字符串变换,将原始字符串转换为更易于压缩和搜索的形式。
  • 作用:在生物信息学中,BWT 被用来构建压缩的全文本索引,以实现快速的子串搜索。

2. 后缀数组和后缀树

  • 虽然后缀树可以快速搜索模式,但其内存消耗较大。
  • 后缀数组是后缀树的空间优化版本,但对于大规模基因组仍然占用大量内存。

3. FM-索引

  • 原理:结合了 BWT、后缀数组和额外的辅助手段,实现了对文本的压缩存储和高效查询。
  • 特点:支持快速的精确和近似匹配,且内存占用较小。

三、索引构建的详细步骤

1. 构建 BWT

  • 对参考基因组序列添加终止符(通常为 $),然后生成所有循环右移的序列。
  • 对这些序列进行字典序排序。
  • 提取排序后序列的最后一列,即得到 BWT 序列。

2. 生成辅助手段

  • C 数组:统计在字典序中比某个字符小的字符的数量。
  • Occ 表:记录 BWT 序列中每个字符在指定位置前出现的次数。

3. 构建 FM-索引

  • 使用 C 数组和 Occ 表,可以在 BWT 上进行高效的反向搜索(Backward Search)。
  • FM-索引将这些结构进行了压缩存储。

四、快速匹配的算法

  • 从查询序列的末尾开始,逐字符逆向匹配。
  • 使用 C 数组和 Occ 表,更新可能匹配的位置范围。
  • 在匹配过程中,范围逐渐缩小,最终确定匹配的位置。

2. 处理错配

  • BWA 支持允许一定错配的比对。
  • 采用了基于 动态规划启发式算法 的方法,如前向搜索(Forward Search)和部分匹配。

五、利用存储器层次结构提高速度

1. 数据局部性和缓存

  • 局部性原理:程序访问的数据和指令倾向于聚集在一起,分为时间局部性和空间局部性。
  • 在 BWA 中
    • 索引结构被设计为紧凑的,使得相关数据在内存中相邻,增加缓存命中率。
    • 反向搜索过程中,对 C 数组和 Occ 表的访问具有较好的局部性。

2. 内存压缩

  • 索引的压缩存储减少了内存占用,使得更多的数据可以驻留在高速缓存(L1、L2、L3 缓存)中,加快访问速度。

3. 多线程并行

  • BWA 支持多线程,能够同时处理多个序列的比对。
  • 多线程在 CPU 层面利用缓存一致性协议,共享数据,提高了整体性能。

六、类似的算法和工具

1. Bowtie

  • 也是基于 BWT 和 FM-索引的比对工具。
  • 采用了更激进的压缩和索引策略,内存占用更小,速度更快。

2. SOAP2

  • 基于 Burrows-Wheeler 变换和位图的索引结构。
  • 在全基因组水平上进行高效的短序列比对。

3. HISAT2

  • 结合了 Hierarchical FM-Index 和跳跃表,适用于包含剪接事件的 RNA-seq 数据。

七、小结

  • BWA 利用 BWTFM-索引,构建紧凑的参考基因组索引,实现了对查询序列的快速匹配。
  • 核心是通过 反向搜索算法,在索引上高效地定位查询序列的位置,支持处理少量的突变。
  • 通过 压缩存储 和优化的数据结构设计,充分利用了存储器层次结构,提高了缓存命中率,进而提升了比对速度。
  • 类似算法 也采用了类似的思想,不断优化数据结构和算法流程,以适应不断增长的基因组数据规模和分析需求。

参考资料

  1. Li, H., & Durbin, R. (2009). Fast and accurate short read alignment with Burrows-Wheeler transform. Bioinformatics, 25(14), 1754-1760.

  2. Langmead, B., Trapnell, C., Pop, M., & Salzberg, S. L. (2009). Ultrafast and memory-efficient alignment of short DNA sequences to the human genome. Genome biology, 10(3), R25.

  3. Kim, D., Langmead, B., & Salzberg, S. L. (2015). HISAT: a fast spliced aligner with low memory requirements. Nature methods, 12(4), 357-360.

posted @ 2024-12-03 21:48  全球通u1  阅读(200)  评论(0)    收藏  举报