canu - 三代測序組裝工具

canu - 三代測序組裝工具

本文大部分參考來自于大神hoptop - 「三代組裝」使用Canu對三代測序進行基因組組裝的簡書,在此說明一下。

最近由于需要組裝三代的數據,跟著hoptop大神的簡書做了一遍,想記錄下來。

關于

看到官網的說明,canu是一個用JAVA語言寫的三代數據組裝工具。canu源于celera Assembler,現在celera Assembler不在更新。canu專門用于三代這種錯誤率較高的測序的結果進行組裝。

celera Assembler當年2001年組裝人類基因組,結合文特爾的鳥槍測序法(WGS),它的Overlap Layout Consensus的組裝策略,攻克了基因組學研究上的第一座高峰。

再到后來,出現二代測序。基于Celera Assembler,研究人員適應三代測序數據形成了Hierarchical Genome Assembly Process(HGAP)的先糾錯再組裝的策略

canu延續了celera Assembler工具的組裝原理,采用Overlap-Layout-Consensus,也就是得到序列與序列之間的交疊進行的組裝。

測序組裝策略.png

下載與安裝

安裝要求

  • Perl 5.12.0
  • Java SE 8
  • GCC 4.5 (for compilation only); GCC 6 recommended
  • macOS 10.10 Yosemite (for macOS/Darwin binaries only)
  • gnuplot 5.2 (optional, for generating diagnostic graphs)

一般都會有上述的工具,除了gnuplot可能缺少,安裝方法見參考-三代測序數據分析軟件Canu的安裝和使用(連載1)里面的說明。
或者直接

brew install gnuplot

如果沒有安裝也可以直接跳過,這里不是必須這個工具。

安裝

tar -xzvf canu-1.3.tar.gz
cd canu-1.3/src
make -j 5
  • 方式2 : 命令行下載
cd ~/Applications/biosoft/
git clone https://github.com/marbl/canu.git
cd canu/src
make -j 5

我用的Mac系統,安裝之后運行文件在
path/to/caun/Darwin-amd64/bin/canu

其他

安裝之后其實在path/to/caun/Darwin-amd64/bin/文件夾里面還有很多其他工具
具體的每一個工具的用法可以參考官方文檔

像一些fastq的操作用具比如fastqSamplefastqAnalyzefastqSimulate

不過主要的還是canu啦。

里面的參數并不完整,還有全局參數是在canu使用過程中都可以使用的。在后面會說明全局參數。

組裝流程

流程圖

canu-pipeline.png

解釋

這里也是根據大神hoptop的簡書然后加上一點自己的理解,可能有錯誤,望能諒解。當然啦,步驟不可能這么簡單。

  • 綠色塊:糾錯(correct)
    將read"堆垛"到一起進行修正,一般三代測序的錯誤以多一個堿基或者少一個堿基為主,因為單分子測序有時候可能測兩個堿基的時候信號連到一起了或者有時候對同一個堿基測了多次導致這種錯誤。另外也有單個堿基差異的情況。
  read1:   ATGACGTGATCGTAGCTGATCGTCGTTGGGAA
  read2:       CGTGATCGTAGCTGATCGTCG TGGGAAACAG
  read3:           ATCGTAGCTGATCGTCG TGGGAAACAGATGA
  read4:               TAGCTGATCGTCG TGGGAAACAGATGAATG
                                    ^
                                    |
                                 差別位點

少數服從多數

  read1:   ATGACGTGATCGTAGCTGATCGTCGTGGGAA
  read2:       CGTGATCGTAGCTGATCGTCGTGGGAAACAG
  read3:           ATCGTAGCTGATCGTCGTGGGAAACAGATGA
  read4:               TAGCTGATCGTCGTGGGAAACAGATGAATG
  • 紅色塊:修剪(trim)

    其中部分的方式是:

    使用overlap確定read哪些區域是高質量區域,哪些區域質量較低需要修整。最后保留單個最高質量的序列塊,例如

  read1:   ATGACGTGATCGTAGCTGATCGTCGTGGGAA
  read2:       CGTGATCGTAGCTGATCGTCGTGGGAAACAG
  read3:           ATCGTAGCTGATCGTCGTGGGAAACAGATGA
  read4:               TAGCTGATCGTCGTGGGAAACAGATGAATG
           |_________|     
             低質量區   

去掉低質量區

  read1:   GTAGCTGATCGTCGTGGGAA
  read2:   GTAGCTGATCGTCGTGGGAAACAG
  read3:   GTAGCTGATCGTCGTGGGAAACAGATGA
  read4:    TAGCTGATCGTCGTGGGAAACAGATGAATG
  • 紫色塊:組裝(assemble)

    序列組裝時根據一致的overlap對序列進行編排(layout), 最后得到contig

---------------
        ----------------
                     --------------
    |          |           |
    v          v           v
-----------------------------------

開始使用

參數說明

全局設置參數

Canu Parameter Reference

  • genomeSize設置預估的基因組大小,這用于讓Canu估計測序深度;
  • maxThreads設置運行的最大線程數;
  • rawErrorRate用來設置兩個未糾錯read之間最大期望差異堿基數;
  • correctedErrorRate則是設置糾錯后read之間最大期望差異堿基數,這個參數需要在 組裝 時多次調整;
  • minReadLength表示只使用大于閾值的序列
  • minOverlapLength表示Overlap的最小長度。提高minReadLength可以提高運行速度,增加minOverlapLength可以降低假陽性的overlap。

前期準備

下載三代數據之類的。這里我是用的自己的數據就不展示了。

mkdir raw
cp /path/to/data/* ./raw

canu把之前的二代測序組裝的類似的那些步驟直接整合成一個工具里面。這里直接運行一下試一試。

有意思的是,在每一步完成之后會有一個
Bye.
感覺作者優點皮啊~~哈哈 :-O

第一步:糾正錯誤

由于三代測序過程中是單分子進行測序的,不像二代那樣經過PCR擴增階段得到較多的序列簇進行測序,所以抗延遲與超前的影響較大,錯誤率超過二代。

Nanopore納米孔測序.png

PacBio SMRT測序原理.jpg

三代的錯誤因為是隨機的,所以可以根據read交疊關系"堆垛"到一起然后進行單堿基的錯誤糾正。覆蓋倍數越多,越能提供更多可靠的信息,對應修正堿基越有利。

但是期間查閱資料發現,有一篇文章說

Nanopore錯誤率具有偏好性,包含indel、單堿基錯配等錯誤類型,且存在系統誤差。在高GC含量區域、同聚物區域和串聯重復區域錯誤率大大增加。

在另外一篇文章中

2015年《Nature》上發表的一篇打造 “白金級”人類參考基因組的文章,這篇文章基于 PacBio 單分子實時測序技術,對CHM1樣本進行全基因組測序,在堿基水平發現了26079個結構變異,其中超過22000個均為新發現的結構變異。并且,可驗證率高達97%。另外,針對插入和缺失的結構變異,其檢測數量和靈敏度會隨著PacBio測序覆蓋度的增加而有所提升。同時,我們還可以注意到,在10X覆蓋度時,10854 個插入變異已經可以達到83%的檢測靈敏度,以及7692個缺失變異也足以達到90.5% 的檢測靈敏度了。

這里個人的愚見,就是Nanopore這里如果采用這種修正方式的話某些堿基會不會變成錯誤堿基?

# -p 輸出文件的前綴,必須指定
# -d 輸出文件夾
# Threads 線程數
# gnuplotTested 檢測是否有gnuplot程序,gnuplotTested=true 可以跳過檢查
# gnuplotImageFormat 用gnuplot生成的圖片格式
# genomeSize 估計的基因組大小
# minReadLength read長度小于這個值將不會被用來組裝
# corOutCoverage
# -pacbio-raw 原始測序文件
mkdir clean
path/to/caun/Darwin-amd64/bin/canu -correct \
  -p Magnolia \
  -d ./clean \
  merylThreads=5 \
  gnuplotTested=true \
  genomeSize=1m \
  minReadLength=2000 \
  minOverlapLength=500 \
  corOutCoverage=120 \
  corMinCoverage=2 \
  -pacbio-raw ./raw/Magnolia.fasta

第二步:修剪read

PacBio測序峰圖.jpg

與二代一樣,每次測得的堿基也是通過不同信號的占比來得到對應的堿基。所以質量值也是有高有低。同樣的影響它的是四種顏色占據的比例根據公式計算得到的質量值。這里移除掉

# -pacbio-corrected read經過糾正后的文件
mkdir trim
path/to/caun/Darwin-amd64/bin/canu -trim \
        -p trim -d ./trim \
        maxThreads=8 \
        gnuplotTested=true \
        genomeSize=1m \
        minReadLength=2000 \
        minOverlapLength=500 \
        -pacbio-corrected ./clean/clean.correctedReads.fasta.gz

第三步:組裝

# 這里需要調整錯誤率
# correctedErrorRate : 兩個read交疊部分的差異程度的忍受程度,降低此值可以減少運行時間,如果覆蓋率高的話,建議降低這個值。
path/to/caun/Darwin-amd64/bin/canu -assemble \
    -p assemble -d assemble \
    maxThreads=20 gnuplotTested=true \
    genomeSize=120m\
    correctedErrorRate=0.050 \
    -pacbio-corrected ./trim/trim.trimmedReads.fasta.gz

參考

引用

說明:文中的部分引用來自于hoptop - 使用Canu對三代測序進行基因組組裝;代碼也是來自hoptop - 使用Canu對三代測序進行基因組組裝

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

推薦閱讀更多精彩內容