美文网首页基因组生物信息基因组
canu - 三代测序组装工具

canu - 三代测序组装工具

作者: 白菜代码小推车 | 来源:发表于2018-09-19 21:44 被阅读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

    下载与安装

    安装要求

    • 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
    

    我用的OS系统,安装之后运行文件在
    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对三代测序进行基因组组装

    相关文章

      网友评论

        本文标题:canu - 三代测序组装工具

        本文链接:https://www.haomeiwen.com/subject/tnewnftx.html