基因组生物信息基因组

canu - 三代测序组装工具

2018-09-19  本文已影响180人  白菜代码小推车

canu - 三代测序组装工具

本文大部分参考或者来自于大神hoptop的简书,在此说明一下。最近由于需要组装三代的数据,跟着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

下载与安装

安装要求

一般都会有上述的工具,除了gnuplot可能缺少,安装方法见参考-三代测序数据分析软件Canu的安装和使用(连载1)里面的说明。
或者直接

brew install gnuplot

如果没有安装也可以直接跳过,这里不是必须这个工具。

安装

tar -xzvf canu-1.3.tar.gz
cd canu-1.3/src
make -j 5
cd ~/Applications/biosoft/
git clone https://github.com/marbl/canu.git
cd canu/src
make -j 5

我用的OS系统,安装之后运行文件在
path/to/caun/Darwin-amd64/bin/canu

其他

安装之后其实在path/to/caun/Darwin-amd64/bin/文件夹里面还有很多其他工具
具体的每一个工具的用法可以参考官方文档

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

不过主要的还是canu啦。

里面的参数并不完整,还有全局参数是在canu使用过程中都可以使用的。在后面会说明全局参数。

组装流程

流程图

canu-pipeline.png

解释

这里也是根据大神hoptop的简书然后加上一点自己的理解,可能有错误,望能谅解。当然啦,步骤不可能这么简单。

  read1:   ATGACGTGATCGTAGCTGATCGTCGTTGGGAA
  read2:       CGTGATCGTAGCTGATCGTCG TGGGAAACAG
  read3:           ATCGTAGCTGATCGTCG TGGGAAACAGATGA
  read4:               TAGCTGATCGTCG TGGGAAACAGATGAATG
                                    ^
                                    |
                                 差别位点

少数服从多数

  read1:   ATGACGTGATCGTAGCTGATCGTCGTGGGAA
  read2:       CGTGATCGTAGCTGATCGTCGTGGGAAACAG
  read3:           ATCGTAGCTGATCGTCGTGGGAAACAGATGA
  read4:               TAGCTGATCGTCGTGGGAAACAGATGAATG
  read1:   ATGACGTGATCGTAGCTGATCGTCGTGGGAA
  read2:       CGTGATCGTAGCTGATCGTCGTGGGAAACAG
  read3:           ATCGTAGCTGATCGTCGTGGGAAACAGATGA
  read4:               TAGCTGATCGTCGTGGGAAACAGATGAATG
           |_________|     
             低质量区   

去掉低质量区

  read1:   GTAGCTGATCGTCGTGGGAA
  read2:   GTAGCTGATCGTCGTGGGAAACAG
  read3:   GTAGCTGATCGTCGTGGGAAACAGATGA
  read4:    TAGCTGATCGTCGTGGGAAACAGATGAATG
---------------
        ----------------
                     --------------
    |          |           |
    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对三代测序进行基因组组装

上一篇下一篇

猜你喜欢

热点阅读