用于局部DNA比对的并行Smith - Waterman算法
1. 局部DNA比对的基础计算
在进行局部DNA比对时,需要逐行从左到右,或者逐列从上到下计算数组A。计算完成后,根据特定方程绘制箭头,以指示最大值的来源。例如,最佳局部比对的得分值可能出现在A[5, 4]和A[8, 6]处。
获取两个序列之间的最优局部比对的步骤如下:
1. 从数组A中的最大值开始。
2. 沿着该元素的箭头方向前进,直到遇到没有箭头的元素或值为0的元素。
3. 每使用一个箭头,就得到比对的一列。其中,从元素A[i, j]出发的向西箭头表示序列s中的空位与t[j]匹配;向北箭头表示s[i]与序列t中的空位匹配;向西北箭头表示s[i]与t[j]匹配。
4. 计算完数组A后,按照箭头从右向左构建最优局部比对。
2. 降低SW算法的空间复杂度
为了获取局部比对,采用了一种使用两个线性数组的Smith - Waterman算法变体。由于对于长序列,二维数组的内存开销过大,该算法通过模拟二维数组的填充过程,仅使用内存中的两行来计算元素A[i, j],其空间复杂度为线性O(n),时间复杂度仍为O(n²)。具体操作步骤如下:
1. 初始化其中一个线性数组为零。
2. 使用Smith - Waterman算法,每次使用序列s的一个字符,从第一个线性数组得到第二个线性数组的每个元素。
3. 当计算的得分达到开启阈值时,将当前坐标保存到包含候选比对的数据结构alignments中。
4. 当得分降至关闭阈值以下时,将当前坐标保存到同一数据结构中,并认为该比对结束。
超级会员免费看
订阅专栏 解锁全文
22

被折叠的 条评论
为什么被折叠?



