1. 程式人生 > >De novo RNA-Seq Assembly Using De Bruijn Graphs

De novo RNA-Seq Assembly Using De Bruijn Graphs

De novo RNA-Seq Assembly Using De Bruijn Graphs  2017-06-12 09:42:47     59     0     0

在說基因組的拼接之前,可以考慮如下的一個問題:

假設有一摞報紙被炸成了碎片,如何利用這些碎片拼接成一份完整的資訊瞭解那天發生的大事?

這個問題的難點在於:必定有一部分的資訊因為爆炸而消失不見,也不能簡單的把報紙粘起來,因為報紙不止一份,所以我們必須從大量包含了重複內容的碎片來重構一份完整的報紙。

 

 

傳統的基因租測序流程大致如下:

取目標樣本的一些組織(其中包含了數百萬的細胞,具有相同的基因組) -> 將這些dna打斷成一定長度的碎片(獲得的片段成為read) -> 使用測序儀測得read的鹼基序列

所以,在我們要進行後續的分析前,我們需要先要將這些 reads 拼接以還原我們需要的基因組資訊。

 

 

與剛才的報紙問題相似,但是基因組拼接的增加了以下難點:

  • DNA是雙鏈,所以對於一個給定的read 我們無法知道他是來於DNA的其中一鏈,還是來自於它的互補鏈
  • 測序儀測序錯誤
  • 獲得的reads中可能沒有覆蓋到基因組的所有片段,所以無法重構該片段

 

這個問題看起來很複雜,顯得無從入手,我們可以將其分解為一個個的小問題,並且將其抽象成一個可以明確表達的問題,逐個解決。

 

從k-mers重構字串

我們假設測序獲得的read長度相等,而且沒有測序錯誤,也不用考慮重複問題,就簡單的考慮如何將 k-mers (k為read長度,)拼接成一個原始的字串

 

模擬k-mer的生成

輸入:整數k,字串                           

 

 

輸出:k-mers(經過排序)                  

 

 

在瞭解了k-mer是什麼後,我們反過來利用k-mers來還原一個字串

很明顯這個字串應該以TAA開頭,因為沒有3-mers以TA結尾

以AA開頭的3-mers只有AAT

而以AT開頭的 3-mers只有ATG

重複以上過程,我們還原了原始的字串

 

下面考慮一個更復雜的例子

 

 

我們還是從TAA開始

到此為止一切順利,但是以ATG後面以TG開頭的 3-mers 共有3個 TGC, TGG, TGT

 

 

換成TGC後似乎已經還原了原始字串,但是到此為止只使用了14個 3-mers,忽略了GGG,使得這個字串比原始字串少了一個字元G

 

上面的例子中ATG重複了3次,導致了我們有三個選擇TGC,TGG,TGT來延續ATG。當有數百萬個reads時,因為重複帶來的計算困難將更為嚴重。

 

可以將基因組的拼接類比為Triazzle(Triazzle是一種拼圖遊戲,雖然只有16塊拼圖,但是並沒有看起來那麼容易)

 

回到剛才的問題