DNA比對演算法 BWT

2021-08-01 05:05:23 字數 1906 閱讀 5556

bwt演算法,實質上是字首樹的一種實現。那麼什麼是字首樹呢?

回到頂部

對於問題p in s?如果s=rpq,那麼p為s字首rp的乙個字尾。

於是,為了判斷p in s 是否成立,我們找到s的所有字首,然後逐一判斷p是不是它們的字尾。為了加快效率,我們將所有的字首建成一顆樹,這棵樹便是字首樹。下面,我們舉例說明字首樹的建立過程和如何使用字首樹進行模式匹配。

字首樹的建立

假設s='acaacg',p='aac',那麼我們首先找到s的所有字首,如下

於是,我們將這些字首翻轉過來,然後建立為一顆字典樹,如下圖

模式匹配p=

′aac

′p=′aac′,令p

′=ca

ap′=caa

(即p的翻轉)。顯然,現在只需進行一次樹的搜尋,即可完成匹配。

如果在判斷p in s 的同時,還需要得到p 在s 中的位置,那麼只需在建樹的時候,將每個字元的索引加上,例如

當然,也可以不儲存索引,每次模式匹配結束時,沿著當前節點走下去,一直到為s[0]。

在節點中新增數字,有其他用處,詳見我的另一篇博文廣義字尾樹的簡介。

評價我們可以看到,相對於常規的匹配演算法,字首樹時間複雜度比較小,但占用空間較大。下面要說的bwt演算法,就是解決這個問題的。

回到頂部

仍然,以s='acaacg'為例。

令s1=s+'′=

′aca

acg′=′acaacg

';迴圈左移s1 6次,得到s2,s3,s4,s5,s6,s7;

對s1到s7按字典序排序(\字元

的字典序

最小),

取每個串

的最後一

個字元,

連成乙個

序列′g

c字元的字典序最小),取每個串的最後乙個字元,連成乙個序列′gc

aaac'。於是為bwt(s)='gc$aaac'。

也許,到這裡,你還不清楚bwt變換和字首樹,有什麼關係。那就接著往下看吧。

回到頂部

我們已經知道bwt(s)='gcaa

ac′,

對bwt

(s)中

的字元進

行排序得

到s′=

′aaac′,對bwt(s)中的字元進行排序得到s′=′

aaaccg',得到下圖形式的矩陣。

這個矩陣看起來,有些規律,但是又很奇怪。下面通過復原s的過程,我們來理解以下這個矩陣。

復原s這個過程用語言描述比較麻煩,直接看圖

按照圖中(1)到(7)步,我們即可得到'$gcaaca',於是s='acaacg'。

其中,斜線表示是,我們找到最後一列的某個符號,然後跳至這個符號在第一列的位置。比如,在第(3)步中,最後一列為第2個c,我們跳到第一行中第2個c的位置。

模式匹配

p='aac',令p′

=′ca

a′p′=′caa′

,選取c作為起點,由於s中有兩個c,因此有兩種可能 的匹配。

從第乙個c出發

從第二個c出發

因此,在方案2得到p',因此p in s是正確的。

幾個問題

問題一:如何得到某個符號,在本列中是第幾個?

顯然,我們可以使用乙個陣列來儲存。例如,對於'$gcaaca',陣列a=[1,1,1,1,2,2,3]。

$ g c a a c a

[1,1,1,1,2,2,3]

但是,還有一種省空間的辦法。我們只儲存串'$gcaaca'中某些字元的位置,這些字元我們稱為checkpoint。

問題二:如何得到模式p在s中的位置?

匹配模式串之後,繼續執行,直至$,但是這樣比較耗時。

另一種辦法,在bwt串中記錄相應的偏移。這種辦法空間開銷比較大,也可以採取類似於checkpoint的方法,記錄部分的偏移。

藍橋杯 DNA比對

脫氧核糖核酸即常說的dna,是一類帶有遺傳資訊的生物大分子。它由4種主要的脫氧核苷酸 damp dgmp dcmt和dtmp 通過磷酸二酯鍵連線而成。這4種核苷酸可以分別記為 a g c t。dna攜帶的遺傳資訊可以用形如 aggtcgactcca.的串來表示。dna在轉錄複製的過程中可能會發生隨機...

BWT表的雙端匹配演算法

先對reference取反 gcaga 再對取反後的 reference顛倒位置 agacg reference 右移 cgtctagacg gcgtctagac cgcgtctaga acgcgtctag gacgcgtcta agacgcgtct tagacgcgtc ctagacgcgt tc...

BWT壓縮演算法及FM搜尋演算法詳解

bwt壓縮演算法其經典地位無可撼動,思想真是個奇妙的東西,廢話不多說,讓我們來看看她的奇妙之處吧。假設有一串字串s acaacg 長度為6,如果直接對此串進行壓縮,可能是a 1,c 1,a 2,c 1,g 1,對於更長的串,由於其隨機性,使得同乙個字母的大量重複更多,因此我們需要一種更好的辦法,既能...