最近重新捡起coursera上的课了,这次准备好好学,把考试考了。。因此顺便记录一下学习过程。
ref: https://www.coursera.org/learn/sheng-wu-xin-xi-xue/home
biological question: how to determine the similarity between two sequences?
如何判断两条序列之间的相似度?
why is it important?
gap:insertion / deletion (indel)造成
gap penalty:open a gap = penalty d, extend a gap = penalty e. for a gap with length n:
G a p P e n a l t y = d + ( n ? 1 ) ? e GapPenalty = d + (n - 1) * e GapPenalty=d+(n?1)?e
final score
f i n a l S c o r e = ∑ S u b s t i t u t i o n S c o r e s + ( ? 1 ) ? ∑ G a p P e n a l t y finalScore=\sum{SubstitutionScores} + (-1) * \sum{GapPenalty} finalScore=∑SubstitutionScores+(?1)?∑GapPenalty
给定两个序列S1和S2,和一个打分函数f(已知substitutions和gaps),要求输出最佳比对,使得分最高。
NewBestAlignment=PreviousBest+LocalBest
对于一个残基来说,要么比对另一个残基,要么比对一个gap。
Dynamic Programming
比对两条序列x和y,F(i, j)是 x 1... i x_{1...i} x1...i?和 y 1... j y_{1...j} y1...j?之间的最佳比对的分数,s(A, B)是用B替换A的打分,d是gap罚分
F ( 0 , 0 ) = 0 F(0,0) = 0 F(0,0)=0
F ( i , j ) = m a x { F ( i ? 1 , j ? 1 ) + s ( x i , y j ) , m a t c h e d F ( i ? 1 , j ) + d , x i → g a p F ( i , j ? 1 ) + d , y j → g a p F(i,j)=max\left\{\begin{aligned}F(i-1,j-1)+s(x_i, y_j)&,matched\\F(i-1,j)+d,&x_i →gap\\F(i,j-1)+d,&y_j→gap \end{aligned}\right. F(i,j)=max? ? ??F(i?1,j?1)+s(xi?,yj?)F(i?1,j)+d,F(i,j?1)+d,?,matchedxi?→gapyj?→gap?
举例:
假设替换矩阵如下,gap penalty=-5,两条序列是AAG和AGC
A | C | G | T | |
---|---|---|---|---|
A | 2 | -7 | -5 | -7 |
C | -7 | 2 | -7 | -5 |
G | -5 | -7 | 2 | -7 |
T | -7 | -5 | -7 | 2 |
先填入表格,从左上那个0位开始,沿该行向右和向下
A | A | G | ||
---|---|---|---|---|
0 | →-5 | →-10 | →-15 | |
A | ↓-5 | ↘2 | ↘→-3 | →-8 |
G | ↓-10 | ↓-3 | ↘-3 | ↘-1 |
C | ↓-15 | ↓-8 | ↓-8 | ↓-6 |
填完表格之后从右下角回溯到0,就是-6↑-1,然后-3那里有两个方向可以达到,所以斜向和左边都要考虑,因此有这2种配对方式:
AAG-
-AGC
和
AAG-
A-GC
这就是global alignment(Needleman-Wunsch,O(nm))
Local alignment(Smith-Waterman) 在F(i,j)函数中引入了一个0,就是最大值可以取0。填表的话也是从左上的0开始向右向下.
A | A | G | ||
---|---|---|---|---|
0 | 0 | 0 | 0 | |
A | 0 | ↘2 | ↘2 | 0 |
G | 0 | 0 | 0 | ↘4 |
C | 0 | 0 | 0 | 0 |
回溯要从分数最高的地方开始,直到回到0,此时是最佳匹配,即AG-AG(注意一开始填表的0行和0列并不计入匹配)
然后从第二个最高分开始向上回溯,也是回到0,此时是第二好的匹配,就是A-A
Affine gap penalty的情况:d是open gap的罚分,e是延长一个gap的罚分。参考图片。