1. 程式人生 > >經典:基因組測序資料從頭拼接或組裝演算法的原理

經典:基因組測序資料從頭拼接或組裝演算法的原理

 


基因組測序資料的拼接/組裝 (圖片來源:google)    

每一個物種的參考基因組序列(reference genome)的產生都要先通過測序的方法,獲得基因組的測序讀段(reads),然後再進行從頭拼接或組裝(英文名稱為do novo genome assembly),最後還原測序物種的各條染色體的序列,即ATGC四種鹼基的排列順序。

 

之所以要進行基因組拼接,是因為現在的測序技術還只能測較短的序列,無法直接獲取一整條染色體的序列。如一代測序(Sanger測序)一般可測1kb左右的序列;二代測序(next-generation sequencing),一般可測50~500bp;三代測序雖然可測100kb甚至更長的序列,但現在三代測序技術還不是很成熟,還有較高的測序錯誤率。(歡迎關注微信公眾號:AIPuFuBio,和使用生物資訊學平臺AIPuFu:www.aipufu.com)

 

基因組測序資料的從頭組裝過程,可簡單描述為:reads---->contig---->scaffold---->chromosome,具體如下所示:


基因組序列從頭組裝示意圖(圖片來源:Guo et al. Genomics, 2017)。   首先基因組測序產生reads,然後對reads進行組裝產生長片段Contigs,再確定Contig的方向和順序,組裝產生更長的片段Scaffolds,最後再組裝連線Scaffold得到完整的染色體序列。

 

接下來,給大家依次介紹一下上圖從頭拼接中涉及到的兩個概念:contig和scaffold。

Contig是由多個reads通過組裝而形成的長片段。由於測序讀段較短、基因組序列通常含有較多重複序列、而且還有測序錯誤等原因,除了簡單的基因組序列外,大部分物種的基因組序列組裝都會先產生很多contig,無法一次獲得完整的染色體序列。

Scaffold為多條contig序列連線形成更長片段,這些contig方向和順序已經確定,且contig間未知序列(一般用NNNN表示)的長度也獲知。

 

Scaffold的獲得一般主要通過雙端測序(如paired-end sequecing或mate-pair sequencing)來確定contig的順序和方向,以及contig之間的間隔距離,具體如下示意圖所示。


由reads組裝產生contig,再由contig連線形成scaffold的示意圖 (圖片來源:google)  

 

基因組測序資料的從頭組裝的核心演算法主要可以分為以下幾大類:

1、基於貪心演算法(greedy-extention);

2、基於Overlap-Layout-Consensus(OLC);

3、基於de Bruijn Graph;

4、以上兩種或多種演算法的組合;

5、其他型別。

 

具體如下圖所示:


基因組從頭組裝演算法分類及代表性軟體發表的時間(圖片來源:Zhanget al. PlosOne, 2011)

其中最經典的兩類為:

1)Overlap-Layout-Consensus(OLC)演算法,基於OLC演算法的組裝軟體主要是針對長測序讀段(如Sanger測序、454測序等)設計的;

2)de Bruijn Graph演算法,基於de Bruijn Graph的組裝軟體則主要是針對二代測序產生的短讀段資料設計。

 

具體如下所示:

1)Overlap-Layout-Consensus(OLC)演算法


Overlap-Layout-Consensus(OLC)演算法的示意圖(圖片來源:Ayling et al. Briefings in Bioinformatics, 2019)

 

2)de Bruijn Graph演算法


de Bruijn Graph演算法的示意圖(圖片來源:Ayling et al. Briefings in Bioinformatics, 2019)

 

現在主流的是二代測序技術,因此再給大家詳細介紹一下專門針對二代測序資料開發的基於de Bruijn Graph的從頭拼接方法。

 

其中一個非常著名的軟體就是Velvet,是基於de Bruijn Graph設計的經典代表,其演算法示意圖如下:


Velvet從頭組裝軟體的演算法設計示意圖( 圖片來源:Zerbinoet al. 2008, Genome Research)。其中紅色鹼基為測序錯誤或SNP位點。

 

Velvet的組裝原理,主要可分為這幾個步驟:

1)首先把所有測序讀段(reads)都分割為更小的片段k-mer;


Reads產生k-mer的過程示意圖。這裡k為7,假如read的長度為n,則總共可產生n-1個k-mer。

2)把每個k-mer作為一個節點,然後判斷k-mer之間是否有k-1鹼基的重疊,如果有則作為兩個不同的節點連線起來。依次這樣連線所有可連線的k-mer就形成了Velvet從頭組裝軟體演算法設計示意圖中第2步的de Bruijn Graph;

3)依次合併相鄰的k-mer,因為相鄰的k-mer有k-1個鹼基的重疊,就可進一步簡化de Bruijn Graph形成Velvet從頭組裝軟體演算法設計示意圖中第3步的簡化後的圖;

4)使用一系列演算法消除由測序錯誤而形成的tips(具體如Velvet從頭組裝軟體的演算法設計示意圖中所示),併合並bubbles(兩條或多條路徑序列,一般由SNP造成,如Velvet從頭組裝軟體的演算法設計示意圖);

5)最後拼接得到Contig序列。

 

值得注意的是,Velvet從頭組裝軟體演算法設計示意圖中最後一步拼接產生了迴文序列,主要是由於原始序列中含有迴文,如果k取為偶數(圖中k=4)就容易在組裝中形成這種現象。

為了有效的避免拼接中產生迴文序列,一般k取為奇數。

 

那麼基於基因組測序資料的從頭拼接軟體,那些具有較好的效能呢?


不同從頭組裝軟體在拼接C.elegans、Yeast、E.coli、Swinepox基因組時的準確性和覆蓋度比較( 圖片來源:Zhanget al. PlosOne, 2011)

 

從上圖中可以看出,Velvet和SOAPdenovo在拼接C.elegans、Yeast、E.coli、Swinepox的基因組序列時,相對於其他軟體,組裝結果更準確(A:Percentage of correctly mapped contigs)且拼接出來的序列能更完整的覆蓋原基因組序列(B:Genome Coverage)。

 

大部分處理測序資料的軟體都是由國外開發的,其中這裡提到的SOAPdenovo為華大基因開發的從頭拼接軟體。

 

​今天就給大家介紹到這裡。更多精彩,可見大型免費綜合生物資訊學資源和工具平臺AIPuFu:www.aipufu.com,關注微信公眾號:AIPuFuBio。

 

希望今天的內容對大家有用,會持續更新經典內容,歡迎留言~~!

&n