2.1 BSW
Banded Smith-Waterman(BSW)可以理解为 “带状的 Smith-Waterman 算法”。它是在经典 Smith-Waterman(SW)序列比对算法基础上,加了一个“带状区域”限制,从而大幅减少计算量。论文里 BSW 主要用于 短读测序的 read alignment(读段比对),也就是把一条测序读段和参考基因组序列进行局部相似性比对。
下面按层次解释。
1. BSW 要解决什么问题?
在基因组测序中,测序仪产生的 reads 是一小段 DNA 序列,比如 100–150 bp。参考基因组是已知的长序列。
read alignment 的目标是:这条 read 来自参考基因组的哪个位置?它和参考序列有多相似?
由于测序错误、真实变异、插入、缺失等原因,read 和参考序列不会完全一样。所以需要一种算法,允许:
- 错配(mismatch)
- 插入(insertion)
- 缺失(deletion)
并且找出它们之间最相似的局部区域。Smith-Waterman 就是做这件事的经典动态规划算法。
2. Smith-Waterman 的基本思想
Smith-Waterman 是一种 局部序列比对 算法。它不要求两条序列从头比到尾,而是寻找两条序列中得分最高的局部相似片段。
它用一个二维 DP 表来记录相似性得分。表中的每个单元格通常记作:
表示:序列 的前 个字符和序列 的前 个字符之间,某个局部比对的最大相似性得分。
为了处理插入和缺失,Smith-Waterman 通常还会维护两个辅助矩阵:
- :表示以插入结束的得分;
- :表示以缺失结束的得分。
论文中说 BSW 计算三个矩阵 H、E、F,对应三种编辑类型:
- match:匹配;
- insertion:插入;
- deletion:缺失。
其中:
- 是碱基 和 之间的相似性得分;
- 表示子串 和 的相似性得分;
- 打分通常使用 affine-gap penalty,也就是“打开一个 gap 罚一次,延长 gap 再按长度罚”的机制。
一个典型的 Smith-Waterman affine-gap 递推形式大致是:
这里 是 gap opening 罚分, 是 gap extension 罚分。
论文 Figure 2a 展示的就是类似的目标函数。
3. 为什么叫“Banded”?
标准 Smith-Waterman 要填满整个 的 DP 表,复杂度是 。
但在实际 read alignment 中,真正合理的比对路径通常不会偏离主对角线太远。也就是说,如果 read 和参考序列大部分是对应的,那么插入和缺失的总数不会特别大。
于是 Banded Smith-Waterman 只计算主对角线附近的一条“带”,而不是整个矩阵。
论文中说:
BSW is applied with a maximum of insertions or deletions, illustrated as the region between black cells in Figure 2a.
意思是:只允许最多 个插入或缺失,因此只计算满足 的单元格。
Figure 2a 中的黑色格子就是这条带状区域。白色格子不计算,灰色格子是已经算过的,绿色格子是当前波前正在并行计算的。
这样做的好处是:
- 计算量从 降到大约 ;
- 内存访问也大幅减少;
- 更适合硬件并行加速。
4. 论文中 BSW 的具体特征
论文 Table 1 给出了 BSW 的特征:
| 特征 | 值 |
|---|---|
| 维度 | 2D DP 表 |
| 大小 | 约 |
| 依赖 | 最后 2 个 wavefront |
| 精度 | 8-bit / 16-bit 整数 |
解释一下:
- 2D DP 表:因为要同时沿 read 和 reference 两个方向递推;
- 约 :短读比对中,read 长度约 100,参考窗口约 60,所以表不大;
- 依赖最后 2 个 wavefront:DP 表中同一条反对角线上的单元格可以并行计算,因为它们只依赖前两个波前的数据,这为 systolic array 提供了并行性;
- 8-bit / 16-bit 整数:BSW 不需要浮点,整数运算就够。短序列常用 8-bit,长一点可能需要 16-bit。整数精度使硬件更简单、更省面积。
论文评估时,BSW 使用 8-bit SIMD,四个 DP 表映射到四个 SIMD lane,并行度很高。
5. GenDP 如何加速 BSW?
GenDP 把 BSW 的 2D DP 表映射到 PE 阵列上:
- 每一行映射到同一个 PE;
- 目标序列元素静态存在 PE 中;
- query 序列流经 PE;
- 每个单元格依赖左、上、左上三个邻居;
- 左边结果存在 PE 内,上方和对角线结果从上一个 PE 传过来;
- FIFO 连接首尾 PE,实现跨行依赖传递。
因为 BSW 的依赖模式很规则,带状区域又进一步缩小了计算范围,所以它非常适合用 systolic array 做波前并行。GenDP 还支持 8-bit SIMD,让四个 DP 表同时计算,提高吞吐。
6. 一句话理解 BSW
Banded Smith-Waterman 就是“只在对角线附近计算”的 Smith-Waterman 局部比对算法。
它允许少量插入、缺失和错配,用整数打分,在二维 DP 表上按波前并行推进,是短读测序 read alignment 中最核心的动态规划 kernel 之一。论文用它来代表规则、带状、整数精度的 DP 负载,并展示 GenDP 对这类负载的加速能力。