最近拿到了nanopore的数据,尝试对其组装。目前用的是Canu,预计2个月内才能走完第一波分析,速度实在感人,所以翻了翻文献,找找组装方法。
目前Nanopore卖点主要是两个角度:第一是Nanopore的读长长,某些情况下能够达到单条上M,但是这种情况可遇而不可求,很多时候只存在于宣传册上。另一个则是Nanpore便宜,这样就能够保证测序深度,从而提高组装质量。
但是Nanopore也有一个劣势,那就是它的错误谱(error profile)和PacBio不一样,并非随机,而是主要集中在homopolymer。因此PacBio在纠错之后的准确率可以高达99%,但是Nanopore达不到该水平。这个问题就导致了Nanopore在组装时候会消耗更多的计算资源。比如说Canu在文档里提到,它将Nanopore纠错后的错误率从原来的0.144下调到0.12,速度提高了5-10倍。
Decrease the default maximum error rate allowed when finding overlaps in corrected Nanopore reads from 14.4% to 12.0%. With the over-occurring kmer changes mentioned previously, run times for finding overlaps in Nanopore reads should decrease by 5 to 10 fold.
PacBio的纠错后错误率默认设置是0.045,那么相对速度可能就是Nanopore的30倍。换句话说,同样的数据量,PacBio装1天,可能Nanopore就要一个月。很多基因组大一点,根本就不敢用Canu。
We also tried to use Canu41 but could not get to the final assembly stage owing to the high computational requirements.
这里总结下我看文献找到的一些组装策略,一般我们可以都尝试下,然后选择结果参数最好的作为最终版本
方案1: 不纠错直接组装。输入数据分为两种情况,一种是用所有的原始数据(包括长度过滤2K/5K以下),一种则是选择最长的30X, 40X作为输入。
- miniasm: https://github.com/lh3/miniasm
- WTDBG2: https://github.com/ruanjue/wtdbg2
- SMARTdenovo: https://github.com/ruanjue/smartdenovo
-
RA: https://github.com/lbcb-sci/ra,个人对这个工具极其失望,运行速度慢,内存管理差,中断之后会删除所有中间文件。 - Flye: - https://github.com/fenderglass/Flye
注: 不纠错直接组装得到的contig,需要先进行三代自纠错,才能用二代纠错,否则比对率会比较低。
方案2: 纠错后组装,然后挑选所有数据或者最长的30X, 40X作为输入。可供选择的纠错工具如下
- NextDenovo: https://github.com/Nextomics/NextDenovo
- Canu: https://github.com/marbl/canu
- MECAT: https://github.com/xiaochuanle/MECAT
- NECAT: https://github.com/xiaochuanle/NECAT
注: NECAT, Canu可以从头跑到尾,其中NECAT是MECAT的继任者,专门处理Nanopore组装。
由于Canu的参数选择会明显的影响到运行速度,因此在Canu官方FAQ里对不同Nanopore版本参数组装进行了介绍
- Nanopore R7 1D和低相似度reads: 这种数据目前已经不存在了,所以不在此处讨论。
-
Nanopore R7 2D和 Nanopore R9 1D: 如果数据覆盖度和错误率比较高的话,需要调整参数
overlapper=mhap utgReAlign=true
. 对于大基因组会降低连续性。 -
Nanopore R9 2D: 调整纠错后的错误率.
correctedErrorRate=0.105
-
Nanopore R9.4: 这应该是目前公司的交付结果,原始数据错误已经有很高提升,纠错后的错误率也比较低。如果基因组的覆盖度超过30X,那么设置如下参数
corMhapOptions=--threshold 0.8 --ordered-sketch-size 1000 --ordered-kmer-size 14' correctedErrorRate=0.105
可以提高运行速度。
由于现在的三代测序价格低了,因此之前那种低深度测序,然后用二代进行raw read纠错的方法,或者混合组装的方法,就不讨论了。
欢迎在评论区补充工具