我正在尝试使用仿射间隙惩罚函数来实现用于局部序列比对的 Smith-Waterman 算法。我想我了解如何启动和计算计算对齐分数所需的矩阵,但对如何回溯以找到对齐方式一无所知。要生成所需的 3 个矩阵,我有以下代码
for j in range(1, len2):
for i in range(1, len1):
fxOpen = F[i][j-1] + gap
xExtend = Ix[i][j-1] + extend
Ix[i][j] = max(fxOpen, xExtend)
fyOpen = F[i-1][j] + gap
yExtend = Iy[i-1][j] + extend
Iy[i][j] = max(fyOpen, yExtend)
matchScore = (F[i-1][j-1] + simMatrixDict[seq1[i-1]+seq2[j-1]])
xScore = Ix[i-1][j-1] + simMatrixDict[seq1[i-1]+seq2[j-1]]
yScore = Iy[i-1][j-1] + simMatrixDict[seq1[i-1]+seq2[j-1]]
F[i][j] = max(0, matchScore, xScore, yScore)
我不确定是否需要单个矩阵进行回溯,还是只需要 1 个?任何关于如何从 F 中的最高分数追溯的澄清将不胜感激。