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阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容