pacbio及nanopore基因组拼接

2022-05-23 11:34:34 浏览数 (4)

背景

前面说的是二代 三代混合拼接,这次主要说的三代基因组拼接。

一、pacbio 测序基因组拼接

Pacbio 测序数据与 nanopore 测序数据均为长读长测序,且二者数据质量类似,因此很多软件同时支持 pacbio 与 nanopore 数据,例如 canu,flye,wtdbg,miniasm,smartdenovo等软件均同时支持两种数据。但需注意如果 pacbio 测序为 hifi reads 模式,需要指定该模式。

二、nanopore 测序基因组拼接

2.1 nanopore 数据处理

利用Nanopore测序拼接的优势

1、超长读长,解决重复序列问题;

2、超长读长解决相位问题;

3、超高通量测序,单张芯片最大可产出300G以上数据;

代码语言:javascript复制
#激活nanoplot环境
conda activate nanoplot

#NanoPlot质控
echo "NanoPlot --fastq /share/home/xiehs/05.assembly/data/nanopore.fastq.gz -o nanoplot -t 12" > nano.sh
#过滤数据
echo "filtlong --min_length 1000 --min_mean_q 80 /share/home/xiehs/05.assembly/data/nanopore.fastq.gz |  gzip >clean.filtlong.fq.gz" > filtlong.sh
#过滤完质控
echo "NanoPlot --fastq /share/home/xiehs/05.assembly/40.nanopore/nanoplot/clean.filtlong.fq.gz -o clean -t 12" > nano.sh

2.2 flye 拼接基因组

flye 原来叫做 abruijn,是一款适合单分子测序的拼接软件,那么显然就是适合 Pacbio 与nanopore。flye 适合拼接多种数据集,从小的细菌基因组到很大的哺乳动物基因组。flye 其实也是一个完整的拼接流程,首先原始测序数据作为输入,最后就可以直接输出经过纠错校正的基因组序列,同时,flye 也有一个独立的模块可以用来拼接宏基因组。

软件官网:https://github.com/fenderglass/Flye

软件安装:软件的安装并不复杂,可以直接使用 conda 进行安装,也可以执行编译。

代码语言:javascript复制
#利用 bioconda 安装
conda install -y flye

使用案例

就像它的名字一样,flye 使用起来也非常简单。直接输入 pacbio 或者 ont 的测序数据即可,可以是 fasta 格式,也可以是 fastq 格式文件,支持压缩格式。可以是原始数据,也可以是纠错后的数据。

代码语言:javascript复制
echo "flye --nano-raw /share/home/xiehs/05.assembly/40.nanopore/nanoplot/clean.filtlong.fq.gz -g 5.5m -t 12 -o flye_clean > flye_clean.log" > flye_clean.sh

常用选项参数:

--pacbio-raw :输入原始 pacbio 数据

--pacbio-corr :输入纠错后的 pacbio 数据

--nano-raw:输入原始 nanopore 数据

--nano-corr :输入原始 nanopore 数据

--genome-size:预估基因组大小,用于评估覆盖深度

--out-dir:输出结果文件路径

--threads:cpu 线程数据

--iterations:纠错迭代次数

--min-overlap:最小 overlap 连接大小

--meta: 拼接宏基因组数据

--plasmids: 拼接质粒数据

输出结果

最后结果目录中有三个文件比较重要。

1、assembly.fasta :最终拼接得到的基因组序列,fasta 格式。

2、assembly_graph.{gfa|gv} :拼接过程中用到的 repeat graph。

3、assembly_info.txt:拼接结果统计信息,也可以自己单独使用 seqkit 工具统计。

总结

1、软件使用简单;

2、自带纠错功能;

3、可以拼接宏基因组和质粒;

2.3 canu 拼接基因组

canu 是一款流行的三代测序数据拼接软件,适用于 Pacbio 与 nanopore 测序数据。canu 软件其实具有悠久的历史,虽然只发表于 2017 年,但其源于著名的 Celera Assembler。CeleraAssembler 主要用于一代测序,现在 celera Assembler 不再更新。canu 延续了 celera Assembler工具的组装原理,专门用于三代长读长以及高错误率较高的测序的结果进行组装。采用 Overlap-Layout-Consensus,也就是得到序列与序列之间的交叠进行的组装。但是,canu软件的缺点是非常消耗资源,拼接比较耗时,默认会开启所有 CPU。

文档:https://canu.readthedocs.io/en/latest/

canu 拼接主要分为三大步骤:纠错,修建 read,拼接。可以单独运行一个步骤,也可以同时运行三个步骤。

第一步:纠错(correct)

将 read"堆叠"到一起进行修正,一般三代测序的错误以多一个碱基或者少一个碱基为主,因为单分子测序有时候可能测两个碱基的时候信号连到一起了或者有时候对同一个碱基测了多次导致这种错误。另外也有单个碱基差异的情况。

第二步:修剪(trim)

使用 overlap 确定 read 哪些区域是高质量区域,哪些区域质量较低需要修整。最后保留单个最高质量的序列块,例如

第三步:组装(assemble)

序列组装时根据一致的 overlap 对序列进行编排(layout), 最后得到 contig

代码语言:javascript复制
echo "canu -d canu -p canu genomeSize=5.4m maxThreads=12 -nanopore-raw /share/home/xiehs/05.assembly/40.nanopore/nanoplot/clean.filtlong.fq.gz" > canu.sh

选项参数:

-p:输出前缀

-d:输出结果目录

-nanopore-raw:输入的为没有纠错过的nanopore 数据

-num_threads:CPU 线程数

genomeSize:设置预估的基因组大小,这用于让 Canu 估计测序深度,宏基因组不好估计

maxThreads:设置运行的最大线程数;

rawErrorRate:用来设置两个未纠错 read 之间最大期望差异碱基数;

correctedErrorRate:则是设置纠错后 read 之间最大期望差异碱基数,这个参数需要在组装时多次调整;

minReadLength:表示只使用大于阈值的序列

minOverlapLength:表示 Overlap 的最小长度。提高 minReadLength 可以提高运行速度,增加 minOverlapLength 可以降低假阳性的 overlap。

总结:

1、有纠错步骤;

2、部分基因组拼接效果比较好;

3、默认会占用所有 CPU,非常耗时;

4、有些数据无法拼接出结果。

2.4 wtdbg2 拼接

wtdbg2 是阮珏写的另外一个拼接软件,可以用于 PacBio 或 Oxford Nanopore Technologies (ONT)数据拼接的软件,该软件无需纠错直接进行拼接,然后生成一致性序列。wtdbg2 运行速度比 canu 和 falcon 都要快很多。能够拼接人全基因组序列,甚至 32Gb 的蝾螈基因组,同时产生高度精确的组装结果。

wtdbg2 与 smartdenovo 算法不同。在拼接过程中,wtdbg2 首先将 reads 切割成 1024bp 片段,然后将相似的片段合并成一个点,得到的图称为模糊 Bruijn 图(FBG),类似于 De Bruijn图,但允许不匹配与空白,并在无法继续连接 k-mers 时保存读取路径。wtdbg2 使用的 FBG算法与大多数长片段拼接软件不同。

代码语言:javascript复制
echo "wtdbg2.pl -t 12 -x ont -g 5.4m -o wtdbg2/wtdbg2 /share/home/xiehs/05.assembly/40.nanopore/nanoplot/clean.filtlong.fq.gz" > wdbtg2.sh

后面可以用quast对以上拼接后的结果进行比较。

写在最后:有时间我们会努力更新的。大家互动交流可以前去论坛,地址在下面,复制去浏览器即可访问,弥补下公众号没有留言功能的缺憾。

代码语言:javascript复制
bioinfoer.com

有些板块也可以预设为大家日常趣事的分享等,欢迎大家来提建议。

1 人点赞