一文詳解基因組denovo組裝原理和實戰

關于更多生物醫療大數據分析工具和軟件的介紹和使用請看六點了官網[1]。


目錄

1、基因組組裝

2、基于De-Bruijn Graph的組裝算法

3、SOAPdenovo的安裝和使用說明:安裝、說明、配置、運行

4、SOAPdenovo案例實戰:數據下載、配置、運行、輸出

寫在前面

大家好,這是我們六點了給大家介紹生物信息大數據分析 基因組數據分析系列文章第一篇。我們會持續為大家分享關于生物醫療大數據處理相關的知識和案例,希望幫助大家更好地進行自己項目中生物醫療健康大數據處理工作。本篇文章主要四部分來為大家介紹基因組的denovo的知識和以及詳細應用案例。①基因組組裝、 ②基于De-Bruijn Graph的組裝算法、 ③SOAPdenovo的安裝和使用說明:安裝、說明、配置、運行,以及 ④SOAPdenovo案例實戰:數據下載、配置、運行、輸出。

1. 基因組組裝

基因組組裝 (Genome assembly)是生物信息學領域的核心問題, 想要深入研究一個生物體,獲得參考基因組是第一步也是必須的一步。基因組組裝是將原始的下機序列還原成DNA序列片段、以至于整個物種全基因組序列的過程。

基因組組裝是基因組分析的關鍵,對物種起源與進化,挖掘功能基因進而研究疾病發生和發展具有重大意義。

然而由于目前市面上廣為應用的二代測序技術獲得的測序序列一般都較短,因此如何通過短片段組裝成完整的基因組成了亟待解決的問題。

基因組組裝可分為基于參考基因組的組裝(Mapping assembly)和從頭組裝(denovo assembly)。兩者主要的區別在于是否存在已知的基因組參考序列作為參照。本文我們主要介紹的是denovo組裝,即不依賴任何基因組參考序列相關信息而進行的序列組裝。目前,應用于主流的基因組denovo組裝的算法主要有兩個[1]:OLC方法 (Overlap-Layout-Consensus)和 DBG方法 (De-Bruijn Graph)[2]。

而DBG方法的核心思想是將序列拼接問題轉化為人們所熟知的歐拉圖(Euler Graph)問題[3]。

DBG方法內存消耗相對較低,運算速度快,且準確率高。

目前主流的基因組裝算法都是基于DBG方法改進設計的。

2.基于De-Bruijn Graph的組裝算法

前面我們說到基因組denovo組裝兩種方法,下面主要展開說說基于De-Bruijn Graph的組裝算法的基本原理。此處,就以目前使用比較廣泛,由華大基因團隊開發的SOAPdenovo[4]為例。軟件的參考文獻[5]有興趣可以在參考資料看一下讀讀。

A:基因組DNA打斷成小的片段,進行建庫和雙端測序。150~500bp的進行直接雙端測序,長的片段2-10kb的則先進行環化再進行雙端測序。

B:組裝的核心部分,進行De-Bruijn Graph的構建。構建De-Bruijn圖的第一步是將測序read k-mer化,而所謂的k-mer是指將reads分成包含k個堿基的字符串,即拿一個k長度的窗口在整個read上1個堿基一個堿基的滑動,每次滑動窗口內部都會產生一個k大小的序列,即為一個k-mer,因此一般長短為m的reads可以分成m-k+1個k-mers。其中k一定是奇數,如果是偶數遇到回文序列可能會產生完全相同的k-mers。我們將k-mers作為圖的節點,如果兩個節點有 K-1個共同重疊子集,就把兩個節點連接在一起,這樣就會形成De-Bruijn Graph,可以看到該圖可以很好地展現出序列的順序信息。

C:進行圖結構的精簡。盡管前面步驟已經初步構建出圖形,但是實際上由于測序錯誤,重復,雜合等原因,圖上會出現很多類似翼尖(tips)、氣泡(bubbles)等問題,因此還需要進一步簡化。此處簡化主要包含四個方面:1)去除tips(可能為測序錯誤導致的);2)去除低覆蓋度的路徑;3)解開微小重復的區域(可以通過read穿過來解決)4)合并bubbles氣泡區(可能為測序錯誤,重復或者雜合導致的)。

D: 拆分出contig。在重復的節點處剪斷,輸出contigs。

E: 構建scaffolds。重新用reads和contigs進行比對,使用paired-end信息來把單一的contigs連接成scaffolds。1)paired reads 比對到contigs上,使臨近的contig建立連接;3)paired-end信息的不同插入片段被用來一步步從短到長的建立scaffold.

F: 最終是把多個scaffold組裝成無GAP的基因組序列。

3.SOAPdenovo的安裝和使用說明

3.1安裝

SOAPdenovo目前已更新到SOAPdenovo2,github[6]鏈接:https://github.com/aquaskyline/SOAPdenovo2。

直接下載二進制[7](https://sourceforge.net/projects/soapdenovo2/files/SOAPdenovo2/)

mac鏈接: <https://sourceforge.net/projects/soapdenovo2/files/SOAPdenovo2/bin/r240/SOAPdenovo2-bin-r240-mac.tgz/download>linux鏈接: <https://sourceforge.net/projects/soapdenovo2/files/SOAPdenovo2/bin/r240/SOAPdenovo2-bin-LINUX-generic-r240.tgz/download>

源代碼安裝:

wget <https://github.com/aquaskyline/SOAPdenovo2/archive/refs/tags/r242.zip>unzip r242.zipcd SOAPdenovo2-r242make

安裝完可以看到SOAPdenovo-127mer,SOAPdenovo-63mer兩個執行文件。63mer代表支持的kmer最大長度為63,127mer代表支持的kmer最大長度為127,除了支持的kmer長度不同外,其他用法完全相同。

3.2使用說明

SOAPdenovo由于計算量相對較大,對電腦的配置有一定的要求,官網對運行配置的說明:SOAPdenovo 的適用目標是大型植物和動物基因組,盡管它也適用于細菌和真菌基因組。它運行在至少 5G 物理內存的 64 位 Linux 系統上。對于像人類這樣的大基因組,大約需要 150 GB 的內存。運行SOAPdenovo-63mer即可看到SOAPdenovo主要包含了以下6個子命令:

1. pregraph? ? ? ? construct kmer-graph # 2. sparse_pregraph construct sparse kmer-graph 3. contig? ? ? ? ? eliminate errors and output contigs 4. map? ? ? ? ? ? map reads to contigs 5. scaff? ? ? ? ? construct scaffolds 6. all? ? ? ? ? ? do pregraph-contig-map-scaff in tur

其中,1-5分別表示組裝的4個步驟(1,2是兩種構圖方式,二選一),all則用于一次執行以上的4個步驟。實際應用中,可以使用SOAPdenovo all 一步式跑完,也可以分成4步單獨去跑。

3.3. 軟件運行前準備工作-配置文件

soapdenovo需要一個配置文件config_file,里面給定輸入文件和一些參數設置。

下面是配置文件的示例和說明:

max_rd_len=100# 全局配置參數:如果序列大于該長度,會被切成該長度,然后在分析[LIB]#每個文庫的配置以[LIB]開頭avg_ins=200#文庫插入片段的平均長度,在實際設置時,可以參考文庫size分布圖,取峰值即可reverse_seq=0#是否需要將序列反向互補,對于pair-end數據,不需要反向互補,設置為0;對于mate-pair數據,需要反向互補,設置為1asm_flags=3#1表示只組裝contig. 2表示只組裝scaffold,3表示同時組裝contig和scaffold,4表示只補gaprd_len_cutoff=100#序列長度閾值,作用和max_rd_len相同,大于該長度的序列會被切除到該長度rank=1#設置不同文庫數據的優先級順序,取值范圍為整數,rank值相同的多個文庫,在組裝scaffold時,會同時使用。pair_num_cutoff=3# contig或者scaffold之前的最小overlap個數,對于pair-end數據,默認值為3;對于mate-paird數據,默認值為5map_len=32#比對長度的最小閾值,對于pair-end數據,默認值為32;對于mate-pair數據,默認值為35q1=fastq1_read_1.fq# read1的序列文件q2=fastq1_read_2.fq# read2的序列文件

3.4. 軟件運行

拆分式:

#step1:SOAPdenovo-63mer pregraph -s config_file -K 63 -R -o graph_prefix 1>pregraph.log 2>pregraph.err#ORSOAPdenovo-63mer sparse_pregraph -s config_file -K 63 -z 5000000000 -R -o graph_prefix 1>pregraph.log 2>pregraph.err#step2:SOAPdenovo-63mer contig -g graph_prefix -R 1>contig.log 2>contig.err#step3:SOAPdenovo-63mer map -s config_file -g graph_prefix 1>map.log 2>map.err#step4:SOAPdenovo-63mer scaff -g graph_prefix -F 1>scaff.log 2>scaff.err

一步式:

SOAPdenovo-63mer all -s config_file -K 63 -R -o graph_prefix 1>ass.log 2>ass.err

輸出文件:運行完會有不少的文件生成,其中后綴分別為contig和scafSeq即為對應組裝結果,分別對應contig和scaffold的結果。

4. SOAPdenovo實戰

下面我們找個NA12878樣本的測序數據,具體來實踐一下吧。

4.1 數據下載

下載測序數據:

wget http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/WGS/NA12878.WGS-100K_1.fastq.gzwget http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/WGS/NA12878.WGS-100K_2.fastq.gz

4.2 準備配置文件

vi config_file, 填入以下內容:

max_rd_len=100[LIB]avg_ins=200reverse_seq=0asm_flags=3rd_len_cutoff=100rank=1q1=NA12878.WGS-100K_1.fastq.gzq2=NA12878.WGS-100K_2.fastq.gz

4.3 運行命令

此處我們將程序運行的標準輸出和標準錯誤都分別重定向到對應的log和err文件中了。一步式運行:

SOAPdenovo-63mer all -s config_file -K 63 -R -o graph_prefix 1>ass.log 2>ass.err

四步單獨運行:

SOAPdenovo-63mer pregraph -s config_file -K 63 -R -o graph_prefix 1>pregraph.log 2>pregraph.errSOAPdenovo-63mer contig -g graph_prefix -R 1>contig.log 2>contig.errSOAPdenovo2-r242/SOAPdenovo-63mer map -s config_file -g graph_prefix 1>map.log 2>map.errSOAPdenovo2-r242/SOAPdenovo-63mer scaff -g graph_prefix -F 1>scaff.log 2>scaff.err

4.4 輸出結果

此處我們的測試數據做了截取,因此可以非常快速的跑完,具體的結果如下圖所示,可以看到生成了不少的中間結果文件,其中組裝出來的contig和scafford結果即圖上圈出來的兩個文件:

*.contig:contig序列文件,fasta格式;

*.scafSeq:scaffold序列文件,contig之間的gap用N填充 。

*.log和*.err是運行的日志,里面包含很多的統計信息,如N50,N90,contig/Scaffold等信息。

*.scaf:包括scaffold中contig的詳細信息;在scaffold行中包括scaffold名字、contig長度和該scaffold長度。在contig行包括contig名字、contig在scaffold上的起始位置、正反鏈、長度和contig間的鏈接信息

*.links:contig間的pair-end連接信息

*.readOnContig:reads在contig上的位置。

4.5?從sixoclock下載soapdenovo2

此外,六點了官網基于CWL (common workflow language) 對SOAPdenovo2軟件進行了封裝,通過我們開發的`sixbox` 軟件可以快速進行軟件的運行。對sixbox不了解可以通過六點了官網了解下。下面是具體的運行步驟如下:

1)下載cwl 源碼

sixbox pull cad377c5-1a22-4a60-b761-d6e95e0d806b 或 在六點了官網上下載soapdenovo2.cwl

2)下載數據

wgethttp://www.sixoclock.net/resources/data/NGS/Homo_sapiens/WGS/NA12878.WGS-100K_1.fastq.gzwgethttp://www.sixoclock.net/resources/data/NGS/Homo_sapiens/WGS/NA12878.WGS-100K_2.fastq.gz

3)使用sixbox生成參數模板文件(YAML) , 并配置yaml文件

sixboxrun --make-template ./soapdenovo2.cwl > soapdenovo2.job.yamlvim soapdenovo2.job.yaml# 編輯參數配置文件,替換或設置參數以實現個性化分析

不熟悉的,可以直接粘貼下方示例內容到soapdenovo2.job.yaml

q1:? # array oftype"File"(optional)-class: Filepath: NA12878.WGS-100K_1.fastq.gzq2:? # array oftype"File"-class: Filepath: NA12878.WGS-100K_2.fastq.gzo: graph_prefix? #defaultvalue oftype"string".K:63#defaultvalue oftype"int". (optional)R:true#defaultvalue oftype"boolean".rank:-1# array oftype"int"(optional)rd_len_cutoff:-100# array oftype"int"(optional)asm_flags:-3# array oftype"int"(optional)reverse_seq:-0# array oftype"int"(optional)avg_ins:-200# array oftype"int"(optional)max_rd_len:200#defaultvalue oftype"int". (optional)all:true#type"boolean"

4)使用sixbox運行

sixboxrun ./soapdenovo2.cwl ./soapdenovo2.job.yaml#或者指定輸出目錄sixboxrun --outdir /home/path ./soapdenovo2.cwl ./soapdenovo2.job.yaml

運行結束即可看到當前目錄或者指定的輸出目錄輸出對應的SOAPdenovo 組裝的結果文件。

至此,SOAPdenovo的實戰體驗基本就結束了。

以上為我們給大家帶來的基因組denovo的基本原理知識,以及在平臺上運行經典的SOAPdenovo的詳細操作過程。也歡迎大家去我們六點了官網看我們放上去的SOAPdenovo2的CWL流程工具。

如果對生物醫療健康大數據相關內容感興趣也可以持續關注我們。想要探索更多的軟件流程或者知識文檔,可以到六點了官網查看。

References

[1]六點了官網:http://www.sixoclock.net

[2]OLC方法 (Overlap-Layout-Consensus)和 DBG方法 (De-Bruijn Graph):https://zh.wikipedia.org/wiki/%E5%BA%8F%E5%88%97%E7%B5%84%E8%A3%9D

[3]歐拉圖(Euler Graph)問題:https://baike.baidu.com/item/歐拉圖/2587300

[4]SOAPdenovo:https://github.com/aquaskyline/SOAPdenovo2

[5]參考文獻:http://www.genome.org/cgi/doi/10.1101/gr.097261.109

[6]github:https://github.com/aquaskyline/SOAPdenovo2

[7]二進制:https://sourceforge.net/projects/soapdenovo2/files/SOAPdenovo2/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內容