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
,也就是得到序列與序列之間的交疊進行的組裝。
下載與安裝
安裝要求
- 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
如果沒有安裝也可以直接跳過,這里不是必須這個工具。
安裝
- 方式1 : 瀏覽器打來下面網站
https://github.com/marbl/canu/releases
下載Source code并上傳到服務器上
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的操作用具比如fastqSample、fastqAnalyze、fastqSimulate
不過主要的還是canu
啦。
里面的參數并不完整,還有全局參數是在canu使用過程中都可以使用的。在后面會說明全局參數。
組裝流程
流程圖
解釋
這里也是根據大神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
-----------------------------------
開始使用
參數說明
全局設置參數
genomeSize
設置預估的基因組大小,這用于讓Canu估計測序深度;maxThreads
設置運行的最大線程數;rawErrorRate
用來設置兩個未糾錯read之間最大期望差異堿基數;correctedErrorRate
則是設置糾錯后read之間最大期望差異堿基數,這個參數需要在 組裝 時多次調整;minReadLength
表示只使用大于閾值的序列minOverlapLength
表示Overlap的最小長度。提高minReadLength可以提高運行速度,增加minOverlapLength可以降低假陽性的overlap。
前期準備
下載三代數據之類的。這里我是用的自己的數據就不展示了。
mkdir raw
cp /path/to/data/* ./raw
canu把之前的二代測序組裝的類似的那些步驟直接整合成一個工具里面。這里直接運行一下試一試。
有意思的是,在每一步完成之后會有一個
Bye.
感覺作者優點皮啊~~哈哈 :-O
第一步:糾正錯誤
由于三代測序過程中是單分子進行測序的,不像二代那樣經過PCR擴增階段得到較多的序列簇進行測序,所以抗延遲與超前的影響較大,錯誤率超過二代。
三代的錯誤因為是隨機的,所以可以根據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-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對三代測序進行基因組組裝
- 測序40年——漫談組裝
- 三代測序數據分析軟件Canu的安裝和使用(連載1)
- 三代組裝軟件canu學習筆記
- 《Real-time DNA sequencing from single polymerase molecules》
- 《Mapping and phasing of structural variation in patient genomes using nanopore sequencing》
- 《Resolving the complexity of the human genome using single-molecule sequencing》
- Celera Assembler Theory
引用
說明:文中的部分引用來自于hoptop - 使用Canu對三代測序進行基因組組裝;代碼也是來自hoptop - 使用Canu對三代測序進行基因組組裝