基因組組裝算法

基因組組裝算法

目前,構建Graph的主流方法有3種,Overlap-Layout-Consensus(Celera Assembler、PBcR),de Bruijn Graph(SOAPdenovo ) 和 String Graph(Falcon)。


相關文獻

 

前言


基因組組裝的基本思路:無論是一代sanger、二代短reads、三代長Pacbio,我們得到的測序數據相較於整個基因組而言仍然是極小的;我們的任務就是將這些小片段連接起來;序列之間的聯繫因爲重複序列的存在變得非常複雜,通過overlap我們最終都會構建Graph,所有的算法都會從Graph中得到最優路徑,從而得到最初的contig

1 OLC算法

適用於reads讀長較大的測序數據,如一代和三代的reads。

主要分爲三步:(1)Overlap:,對所有reads進行兩兩比對,找到片段間的重疊信息;(2)Layout:根據得到的重疊信息將存在的重疊片段建立一種組合關係,形成重疊羣,即Contig;(3)根據構成Contig的片段的原始質量數據,在重疊羣中尋找一條質量最重的序列路徑,並獲得與路徑對應的序列,即Consensus。

OLC算法最初成功的用於Sange測序數據的組裝,比如Celera Assembler,Phrap,Newbler等均採用該算法進行拼接組裝。

2 DBG算法

適用於reads比較短的測序數據,二代數據。缺點:難以對重複序列區域進行分析,更依賴於建庫。

首先將reads打斷成長度爲K的核酸片段,即Kmer,在利用Kmer間的overlap關係構建DBG,再通過DBG得到基因組序列。

DBG算法最早應用於如細菌類小的基因組的組裝上,直到李瑞強等(2010)開發SOAPdenovo 算法,成功的組裝了採用二代測序的黃瓜及熊貓的基因組,DBG算法開始普遍運用。

  image 
假設我們獲得的reads是20bp,圖1a中,生成6個片段,每個片段長度(L)是10bp,至少重疊長度(O)爲5bp,然後各個片段建立OLC圖。圖1b的Kmer爲5,建立DBG圖。

DBG算法相比於OLC的優勢是什麼?

由於二代測序得到的reads長度較短,包含的信息量較少,因此完成基因組拼接需要較高的覆蓋度。OLC算法適用於讀長較長的序列組裝,通過構成的OLC圖尋找Consensus sequence的過程,實際上是哈密頓通路尋找的問題,算法非常複雜。

若採用OLC算法,會大大增加拼接的複雜性以及運算量。而採用DBG算法,通過K-1的overlap關係,構建DBG圖,通過尋找歐拉路徑得到Contig序列,從算法的角度極大的簡化了組裝的難度。

講完算法,我們以目前應用廣泛的 SOAPdenovo 軟件爲例來介紹組裝過程

SOAPdenovo軟件的組裝過程

(1)通過Kmer之間K-1的overlap關係構建contig(重疊羣),如圖2:

image

(2)利用pair-end信息,將無overlap關係的contigs搭建成scaffold(腳手架),如圖3:

image

1數據糾錯

要得到一個有較高準確性的基因組圖譜,首先對測序得到的數據進行處理:

image 
將reads逐bp打斷成長度爲K的連續核酸序列,如上圖a所示,若這條reads中間由於測序錯誤有一個錯誤的鹼基,那麼在得到的Kmer中,也會有一些錯誤Kmer或者低頻Kmer。

繪製Kmer頻數分佈圖時,如上圖b所示,Error free代表沒有測序錯誤的Kmer頻數分佈,Error rate1%代表有1%錯誤率的Kmer頻數分佈。

錯誤Kmer對後續組裝會產生很大的困擾,因此,在構建DBG圖之前,需要先對數據進行糾錯。糾錯的兩種方法:

(1)基於Read間的比對,通過多序列比對,通過概率模型區分測序錯誤引起的錯誤Kmer。這種方法糾錯準確,但需要消耗較大的計算資源。如ALLPATH-LG,ECHO等糾錯軟件都基於這種方法。

(2)通過Kmer頻數圖譜進行區分,這類軟件如SOAPdenovo,Euler等。

2構建Contig

根據Kmer之間的overlap關係進行連接,如下圖所示:

image 
reads(read1:AGATCTTGTTATT;read2:GTTATTGATCTCC)逐bp的打斷成長度爲5bp的Kmer,根據Kmer間的overlap關係進行連接。可以看到兩條reads中 GATCT 和 GTTATT 是兩個重複的片段,在構建De Bruijn圖中,會形成如上圖的泡狀結構以及多個分支的情況,面對這種很複雜的圖,如何才能找到那一條正確的路徑呢?

(1)對De Bruijn圖進行化簡

簡化De Bruijn圖需要去掉無法繼續連接的分支、低覆蓋度的分支,並且利用序列信息化簡重複序列在De Bruijn圖的分叉通路,對於少量的雜合位點,採用隨機選擇策略,合併雜合位點。通常需要考慮如下幾種情況:

image  
(2)得到一個簡化的De Bruijn圖後,仍然會因有很多分叉位點無法確定真正的連接關係,因此接下來在每個分叉位點將序列截斷,得到了最初contigs。

  image 
留給大家一個思考題:根據上述步驟,我們看下圖4中複雜的De Bruijn示意圖,可以得到什麼樣的contigs呢?(答案見文末)

3構建scaffold

將測序得到的reads比對回得到的contigs,利用reads之間的連接關係和插入片段大小信息,將contigs組裝成scaffolds。

image

4補洞

得到的scaffold中間會有較多的gap,爲了使組裝的序列更完整,需再次利用測序的雙末端數據之間的配對關係連接contigs,並利用測序數據與已經組裝的contig之間的覆蓋關係對contig之間空隙進行補洞,延長contigs,補洞後的contigs長度相比補洞之前一般增加2-7倍。

  image 
以上就是SOAPdenovo組裝的基本過程,看明白了嗎?

“揭開組裝的神祕面紗下篇”敬請期待~

參考文獻

  1. Li RQ, Zhu HM, Ruan J, et al. Denovo assembly of human genomes with massively parallel short readsequencing. Genome Res. 2010, 20(2), 265-72.

  2. Li ZY, Chen YX, Mu DS, et alComparison of the two majorclasses of assembly algorithms: overlap-layout-consensus andde-bruijn-graph. Brief Funct Genomics. 2012, 11(1), 25-37

image

 

3 string graph算法

有利於組裝散列重複序列。

string graph中的節點是長度不一的序列,這些序列是由overlapping reads生成,需要設置一個最小overlap大小。

 轉載自: https://www.cnblogs.com/leezx/p/5590159.html

發佈了84 篇原創文章 · 獲贊 197 · 訪問量 161萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章