Velvet拼接軟件

Velvet是處理從頭定序(de novo基因組組裝及短讀長序列比對的一個演算法包。這是使用德布魯因圖英語de Bruijn graph通過消除錯誤和化簡重複區域而來進行基因組序列組裝。[2] Geneious、MacVector英語MacVectorBioNumerics英語BioNumerics等商業軟件套件的內部也實現了Velvet。

Velvet
開發者
首次發佈2008
目前版本1.2.10
作業系統基於UNIX
語言C
類型生物資訊科學
許可協定GPL
網站http://www.ebi.ac.uk/~zerbino/velvet/

簡介

編輯

第二代定序儀 (NGS)的開發增加了很短讀長定序的成本效率。使用德布魯因圖來比對的方法符合實際需求,但進一步的開發需要解決錯誤和重複的問題。[3] 這促使歐洲生物資訊研究所的Daniel Zerbino和尤安·伯尼英語Ewan Birney在英國開發了Velvet。[4]

Velvet可以通過化簡和壓縮來快速操縱德布魯因圖,而不遺失圖的資訊,把不相交的路徑聚成單個節點。它通過首先使用合併序列的錯誤校正演算法消除了錯誤消除錯誤,並解決重讀。

將read和read pair組合讓Velvet解決小的重複並產生合理長度的重疊序列英語contig。Velvet的應用對雙端(定序的)原核生物數據和哺乳動物區域可以產生N50長度 50 kb 的重疊序列。

演算法

編輯

正如前文所述,Velvet使用德布魯因圖(de Bruijn圖)來組裝短的讀長序列。更具體地講,Velvet將從讀長序列得到的每個不同的k-mer表示為圖上的一個唯一的節點。如果兩個節點的k-mer有 k-1 個鹼基重疊,則兩個節點是相連的。換句話說,只有在節點A的k-mer的後 k-1 個鹼基與節點B的k-mer的前 k-1 個鹼基相同時,節點A和B之間才會有一條弧連接在一起。下圖顯示了Velvet生成的一個德布魯因圖:

 
圖1:雜湊化讀長序列和各自的de Bruijn圖範例

相同的過程也同時作用於所有k-mer的反向互補序列用來考慮相對的鏈上讀長序列重疊的情況。可以對圖進行一些最佳化,包括化簡以及消除錯誤。

化簡

編輯

節省主記憶體的一個簡單方法就是把不影響該圖生成的路徑下將融合節點,即當節點A只有一個指向節點B的出弧,而節點B又只有一個入弧時,這兩個節點可以融合。將他們和他們所有的資訊融合之後,就可以用一個節點表示兩個了。下圖說明了一開始的例子的簡化中的此過程。

 
圖2:簡化的de Bruijn圖

消除錯誤

編輯

圖中的錯誤有可能是由於定序過程引起的,或者也有可能是生物樣本包含一些錯誤(例如多型性)。 Velvet可以辨識三種錯誤:尖端、氣泡;還有錯誤的連接。

尖端

編輯

如果一個節點在它其中一端是未連接的,該節點儲存的資訊量小於2k,並且相對於其他路徑的重複度(建立這個圖時訪問該弧的次數)較低則將其視為尖端。一旦這些錯誤被清除了,這個圖就會再一次地簡化。

 
圖3:尖端的例子

氣泡

編輯

當兩條路徑在同一個節點開始和結束時產生氣泡。氣泡通常是由錯誤或生物變異引起的。使用旅遊巴士演算法(與戴克斯特拉演算法類似,是一種檢測最佳路徑並決定哪些應該被刪除的廣度優先搜尋)可以去除這些錯誤。一個簡單的例子如圖4所示。

 
圖4:去除氣泡的例子

接在圖1和2的後面,圖5也顯示了這個過程。

 
圖5:氣泡檢測實例

錯誤連接

編輯

錯誤連接是圖中不能生成正確路徑或不能建立任何可辨識結構。Velvet應用必須用戶定義的簡單的覆蓋率截止的旅遊巴士演算法清除了這些錯誤。

Velvet命令

編輯

Velvet提供工下列函數:

velveth
此命令幫助velvetg建立數據集(將讀長序列雜湊化),並包含每個序列含義的資訊。
velvetg
此命令從velveth得到的k-mer建立de Bruijn圖,並對整個圖執行化簡和錯誤更正。然後提取重疊片段。

在執行完velvetg之後,會生成一些檔案。最重要的是,重疊序列(contig)檔案中包含長度超過2k的重疊序列,其中k是velveth中用到的字長。

對於更多的細節和例子參見Velvet手冊頁面存檔備份,存於互聯網檔案館)。[5]

開發目的

編輯

目前的DNA定序技術,包括NGS,都限制在基因比任何讀長都長。通常NGS處理小於400 bp的短讀長片段,每個讀長的成本也比之前的第一代機器少很多。在高度並列化的操作下操作簡單,產量也高。[3]

但是由於短讀長包含的資訊少,為了重疊片段可以檢測,需要更高的組裝讀長覆蓋率。這反過來增加了定序的複雜度,並顯著增加了計算的要求。更多的讀長序列增大了重疊圖,使之更長、計算更困難了。由於重疊部分的減少,讀長序列之間的連接會更加不明顯,產生更高的誤差可能性。

為了克服這些問題,開發出了高效的動態定序程式,不僅成本效率高,還能解決錯誤和重複。開發Velvet演算法就是為了解決此問題,並在相對較短的計算時間內,使用相比其他拼接軟件更少的主記憶體,進行短讀長從頭定序序列比對。[6]

圖形介面

編輯

Velvet的一個主要缺點是使用命令列介面,但用戶(尤其是初學者)在對他們的數據實現的時候會遇到困難。[7] 2012年開發出了圖形介面來克服這個問題,並簡化Velvet的執行。

參見

編輯

參考文獻

編輯
  1. ^ Zerbino, D. R. Using the Velvetde novo Assembler for Short-Read Sequencing Technologies. Andreas D. Baxevanis (編). Using the Velvet de novo assembler for short-read sequencing technologies. 2010: Unit 11.5. ISBN 0471250953. PMC 2952100 . PMID 20836074. doi:10.1002/0471250953.bi1105s31. 
  2. ^ Zerbino, D. R.; Birney, E. (2008). 「Velvet: de novo assembly using very short reads」頁面存檔備份,存於互聯網檔案館). Retrieved 2013-10-18.
  3. ^ 3.0 3.1 Miller, J. R.; Koren, S; Sutton, G. Assembly algorithms for next-generation sequencing data. Genomics. 2010, 95 (6): 315–27. PMC 2874646 . PMID 20211242. doi:10.1016/j.ygeno.2010.03.001. 
  4. ^ Zerbino, D. R.; Birney, E. Velvet: Algorithms for de novo short read assembly using de Bruijn graphs. Genome Research. 2008, 18 (5): 821–829. PMC 2336801 . PMID 18349386. doi:10.1101/gr.074492.107. 
  5. ^ 「Velvet Manual」頁面存檔備份,存於互聯網檔案館) Retrieved 2013-10-18
  6. ^ Wenyu Zhang, Jiajia Chen, Yang Yang, Yifei Tang, Jing Shang, Bairong Shen. A Practical Comparison of De Novo Genome Assembly Software Tools for Next-Generation Sequencing Technologies. PLOS ONE. 2011-03-14, 6 (3): e17915 [2018-04-03]. ISSN 1932-6203. doi:10.1371/journal.pone.0017915. (原始內容存檔於2022-03-24) (英語). 
  7. ^ Powell, D. R.; Seemann, T. VAGUE: A graphical user interface for the Velvet assembler. Bioinformatics. 2013, 29 (2): 264–5. PMID 23162059. doi:10.1093/bioinformatics/bts664.