相互对应
上面的碱基对应空位
下面的碱基对应空位
经过这么一分析,我们发现这恰好符合动态规划的使用要求,能拆分成重叠子问题,能因为局部最优的选择决定全局最优。于是下面的两种算法就使用了动态规划的算法,分别进行序列的全局比对和局部比对,这两个出现在上个世纪的算法,在如今也是非常经典,多数序列比对算法都是根据这两个算法改进而来的。
全局比对:N-W算法(Needleman-Wunsch)
我们根据比对问题的性质和动态规划的原理,给出以下公式:
这里用F(i,j)表示第一条序列X从第1位到第i位、第二条序列Y从第1位到第j位为止最好的比对分数。我们看一下,第一项表示Xi比对到Yj,也就是两个残基对在了一起。 那么,第二项则表示Xi对应到一个空位,所以前面的F,也就是F(i-1,j);那么第三项是什么意思呢?我们可以很简单地推出来。 它表示呢,yj对应到一个空位。 你看到前面的F是F(i,j-1)。
注意:这里并没有考虑gap opening和gap extending,将他们平等对待,统一罚分d=-5
我们先将F(i,0)和F(0,j)进行填充
接下来就是通过公式填满动态规划矩阵,并且记录路径
填满后,根据之前记录的路径,从右下角一直回溯到左上角
最后得到的并不一定是唯一解,可能有两条甚至更多的路径,他们都是最优的比对。
局部比对:S-W算法(Smith-Waterman)
S-W算法是在前面的N-W算法上进行了局部优化,让我们更容易发现局部最优的比对。
以下为文献原图:
我们可以看到算法的公式中,只是比前面的全局比对多了一个0。通过对全局比对公式迭代算法的一个简单调整, 来引入了一个分数的“止损”下限, Smith-Waterman算法实质上提供了在差异过大区域之后“重启”比对的能力。从而可以有效地发现局部水平上的相似性。
还有一个修改就是回溯的方式,Smith-Waterman算法不再固定从右下角到左上角进行回溯,而是选择动态规划矩阵中最大的得分单元格开始回溯。原文章是这么体现的:
算法复杂度(Work)
我们的工作就是填充规划矩阵,那么,对于两条长度分别为m和n的序列,需要填写的格子总数是mn个。 假定每次操作需要常数时间c, 那么总共需要的时间就正比于mn,也即大O(mn)。 由此可以看出,Needleman-Wunsch算法将时间代价由穷举法的指数时间下降到了平方时间, 有效降低了时间复杂度。
考虑gap opening 和gap extending
如果需要考虑gap opening和gap extending,我们要用到计算机中的有限状态机的方法。
这里就不做进一步的讨论。给出北京大学生物信息学公开课的PPT截图:
打分矩阵的选择(Scoring matrix)
DNA序列比对的替换打分矩阵等价矩阵(unitary matrix),实际使用较少。
转换-颠换矩阵(transition-transversion matrix),嘌呤到嘌呤或者嘧啶到嘧啶的替换称为转换(transition),嘌呤到嘧啶或者相反的替换叫做颠换(transversion),认为现实中转换比颠换容易,转换的得分要比颠换的得分高一些。
BLAST矩阵,广泛被使用。
蛋白质序列比对的替换矩阵等价矩阵
遗传密码矩阵(genetic code matrix,GCM),很少被使用
疏水性矩阵(hydrophobic matrix)该矩阵物理意义明确,有一定的理化性质依据,适用于偏重蛋白质功能方面的序列比对。
PAM矩阵,PAM-n矩阵常用。
BLOSUM矩阵(BLOck Substitution Matrix),BLOSUM-n矩阵常用。
对于PAM-n矩阵,n越小表示氨基酸变异的可能性越小,高相似序列之间的比对应该选用n值小的矩阵,低相似序列的比对应该选用n值大的矩阵。例如,PAM-250用于约20%相同的序列之间的比对。对于BLOSUM-n矩阵,n越小则表示氨基酸相似的可能性越小,高相似的序列之间比对应该选用n值大的矩阵,低相似的序列之间比对应该选用n值小的矩阵。例如,BLOSUM-62用来比较62%相似度的序列,BLOSUM-80用来比较80%左右相似的序列。
参考文章(Reference)