雙序列比對算法(Needleman-Wunsch和Smith-Waterman)

比較兩條序列的相似性,不可能用眼睛去比較。因此,序列比對法是序列比對的標準方法。
這篇文章主要講科學家使用動態規劃算法,運用特定的算法找出兩個或多個序列之間產生最大相似度得分的空格插入和序列排列方案。
例如:將測序獲得的reads比對到參考基因組時,如何將攜帶變異的reads,通過空格插入序列排列而 mapping到正確的參考序列?

1. 序列比較相關的指標

描述序列相似的兩個指標:

  • 一致度:如果兩個序列(蛋白質或核酸)長度相同,那麼它們的一致度定義爲它們對應位置上相同的殘基(一個字母,氨基酸或鹼基)的數目佔總長度的百分數。
  • 相似度:如果兩個序列(蛋白質或核酸)長度相同,那麼它們的相似度定義爲它們對應位置上相似的殘基與相同的殘基的數目和佔總長度的百分數。(殘基兩兩相似的量化關係被替換記分矩陣所定義)

替換記分矩陣:反映殘基之間相互替換率的矩陣,它描述了殘基兩兩相似的量化關係。(分爲DNA替換記分矩陣和蛋白質替換記分矩陣,這裏只記錄了DNA替換記分矩陣)

2. DNA序列的替換記分矩陣

3種常見的DNA序列的替換記分矩陣

    1. 等價矩陣:最簡單的替換記分矩陣,其中,相同核苷酸之間的匹配得分爲1,不同核苷酸間的替換得分爲0。由於不含有鹼基的理化信息和不區別對待不同的替換,在實際的序列比較中較少使用。
    1. 轉換-顛換矩陣:核酸的鹼基按照環結構特徵被劃分爲兩類,一類是嘌呤(腺嘌呤A、鳥嘌呤G),它們有兩個環;另一類是嘧啶(胞嘧啶C、胸腺嘧啶T),它們只有一個環。如果DNA鹼基的替換保持環數不變,則爲轉換,如A-->G、C-->T;如果環數發生變化,則爲顛換,如A-->C、T--> G。在進化過程中,轉換髮生的頻率遠比顛換高。爲了反映這一情況,通常該矩陣中 “轉換” 的得分爲 -1,而 “顛換” 的得分爲 -5.
    1. BLAST矩陣:經過大量實際比對發現,如果令被比對的兩個核苷酸相同時得分爲+5,反之爲-4,則比對效果較好。這個矩陣廣泛地被DNA序列比較所採用。

3. 序列比對法的概念

序列比對(alignment): 也叫對位排列、聯配、對齊等。運用特定的算法找出兩個或多個序列之間產生最大相似度得分的空格插入和序列排列方案。

舉例理解:
序列s和t的比對:把s和t這兩個字符串上下排列起來,在某些位置插入空格(空位,gap),然後依次比較它們在每一個位置上字符的匹配情況,從而找出使這兩條序列產生最大相似度得分的排列方式和空格插入方式。

3.1 全局比對和局部比對

雙序列比對:比較兩條序列(根據算法不同分位全局比對和局部比對)

  • 全局比對:用於比較兩個長度近似的序列
  • 局部比對:用於比較一長一短兩條序列

3.2 空位罰分體系

存在意義:補償插入和缺失對序列相似性的影響
目前常用的空位罰分體系有兩種:

  • liner penalty
    -- 1個gap罰b
    -- n個空位罰 n*b
  • affine penalty(更符合進化原理)
    -- 空位引入(gap open penalty)罰分大
    -- 空位延伸(gap extension penalty)罰分小

4. Needleman-Wunsch算法

1970年,Saul Needleman 和 Christian Wunsch兩人首先將 動態規劃算法 應用於兩條序列的全局比對,這個算法後稱爲Needleman-Wunsch算法。
對於以下兩條序列:
序列p: ACGTC(在得分矩陣中橫向排列)
序列q: AATC(在得分矩陣中縱向排列)

得分矩陣(0,0)處的值固定爲0,參考 替換記分矩陣 完善序列比對的得分矩陣


追溯箭頭就是紅色部分(從右下角到左上角)
其他任何一種插入空位的比對結果,得分都不會超過21分,因爲我們在得分矩陣的創建過程中,每一步都是在上一步最優的情況下得出的當前最優結果。

因此,序列p和序列q產生最大相似度得分的空格插入和序列排列方案爲:
序列p:ACGTC
序列q:A - ATC


5. Smith-Waterman算法

與Needleman-Wunsch算法的全局比對十分類似,Smith-Waterman算法作爲局部比對的算法,只是在篩選最大值是增加了常量0。
也就是說,如果最優比對到達某個位置的時候,它的得分小於0,此時最好開始一個新的局部比對,而不是在原有比對基礎上繼續延伸。



局部比對的結果不是在右下角,而是在整個矩陣中找最大值,最大值纔是局部比對的最大得分。箭頭的追溯也是從剛剛找到的最大值追溯到沒有箭頭爲止。


如何計算 一致度相似度
如果兩個序列長度相同:
一致度=(一致字符的個數 / 全局比對長度)*100%
相似度=(一致及相似的字符的個數 / 全局比對長度)*100%
如果兩個序列長度不同:
一致度=(一致字符的個數 / 全局比對長度)*100%
相似度= (一致及相似的字符的個數 / 全局比對長度)*100%
attention⚠️: 無論兩個序列長度是否相同,都要先做雙序列全局比對,然後根據比對結果及比對長度計算它們的一致度和相似度。

Smith-Waterman算法的優勢:

  • 尋找兩條序列中局部保守的結構域
  • 兩條長度差異較大的序列的比對
  • 兩條整體相似度不高的序列中的保守位點
  • 兩條序列重疊區域的尋找
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章