lyao222lll的个人博客分享 http://blog.sciencenet.cn/u/lyao222lll

博文

三代测序基因组组装工具NextDenovo

已有 2212 次阅读 2019-11-4 21:55 |个人分类:Software/Pipeline/Script|系统分类:科研笔记| _生信工具, _基因组组装

三代测序基因组组装工具NextDenovo

 

NextDenovo是用于三代测序readsTGS reads)的基于字符串图(string graph)的基因组从头组装程序。NextDenovo包含两个核心模块:NextCorrectNextGraphNextCorrect用于校正具有大约15%测序错误的TGS readsNextGraph使用校正后的reads进行基因组组装;此外还包含了一些其它实用程序。与Canu等早期流行的三代组装工具相比,NextDenovo所需的计算资源大大减少,效率更高。

 


NextDenovo安装及使用



安装


NextDenovogithub链接:https://github.com/Nextomics/NextDenovo

根据github中的说明,下载后的即是已编译好的二进制版,可直接使用,无需安装。目前最新版是v2.1-beta.0

#下载程序
cd ~/software
wget https://github.com/Nextomics/NextDenovo/releases/download/v2.1-beta.0/NextDenovo.tgz
tar -vxzf NextDenovo.tgz

#添加可执行权限
cd NextDenovo
chmod -R 755 *

#添加至环境变量
export PATH=~/software/NextDenovo/:$PATH
export PATH=~/software/NextDenovo/bin/:$PATH

#这时候没什么问题的话就可直接使用了
#软件运行需要python2.7,提示缺少模块时安装即可;但不支持python3
nextDenovo -h

1.png

 

测试组装


NextDenovo的优势主要体现在大型基因组的组装上,按官方的描述,就是时间短,效率高,占用资源少以及实现了超长contigs的装配。

当然这里咱也就是简单地试一下软件使用,没必要真的就找个大基因组来个组装测评(毕竟,网上也很多测评报告供我们参考)。所以,随便找个单染色体无质粒的细菌小基因组先把软件跑通了再说。后面哪天真正的用到组装大基因组的时候,也就知道该怎么用了,而且适时肯定也是会尝试多种工具拼接,组装效果优劣的比较到时也知道了。

NextDenovo既可用于PacBio数据也可用于Nanopore数据。但官方提到,NextDenovoNanopore数据的组装中会更有优势。

那么接下来使用某细菌基因组的Nanopore数据,测试NextDenovo使用。

 

测试使用的Nanopore数据下载自SRASRR10074455):

https://www.ncbi.nlm.nih.gov/sra?term=SAMN12698632

我也保存在网盘中:

https://pan.baidu.com/s/1sCtbbvGW8hxe40p1R11DKQ

 

编辑配置文件

首先就是准备配置文件。

#创建路径,编辑 config 文件
mkdir nextdenovo && cd nextdenovo
vi run.cfg.txt

#config 格式可参考https://github.com/Nextomics/NextDenovo/blob/master/doc/OPTION.md

例如在这里,对于我们的测试物种,config配置文件“run.cfg.txt”编辑如下。编辑完成后,关闭保存config配置文件。这里并未展示所有的配置选项,比方说多节点这种(超大型基因组才考虑的),其它更细节部分还请参阅官方文档。此外,参数填写需视数据而定,比方说这里我的基因组是细菌,如果是个植物的基因组就不建议像下面这样填。

[General]
job_type = local
job_prefix = Paenibacillus_sp.R4
task = all
rewrite = yes
deltmp = yes
rerun = 3
parallel_jobs = 1
input_type = raw
input_fofn = ./input.fofn.txt
workdir = ./

[correct_option]
read_cutoff = 300
seed_cutoff = 3k
sort_options = -m 1g -t 4 -k 50
minimap2_options_raw = -x ava-ont -t 4
correction_options = -p 4

[assemble_option]
random_round = 10
minimap2_options_cns = -x ava-ont -t 4 -k17 -w17
nextgraph_options = -a 1

 

General,一般设置:

job_type:运行环境,可选localsgepbs

job_prefix:作业名称,随便起个;

task:任务类型,可选all(全部执行)、correct(仅执行reads校正)、graph(仅执行组装);

rewrite:是否覆盖原结果路径;

deltmp:是否删除中间文件;

rerun:重新运行未完成的作业,直到完成或达到${rerun}循环,0=否;

parallel_jobs:并行运行的任务数;

input_type;输入数据类型,可选raw(原始reads)、corrected(已经校正后的reads);

workdir:工作路径,示例直接使用“./”指定输出在当前路径了;

input_fofn:指定一个文本文件,文件中写入输入数据(测序readsfastq或解压前的fastq.gz都能识别)的路径,多数据时一个路径占一行,input.fofn.txt如下示例(原始的SRR10074455_1.fastq太大,我从原始数据中截了一些出来,cut后的数据共取了原fastq文件的前80W行):

~/data/Paenibacillus_sp.R4/SRR10074455_1.cut.fastq

如果是多个fastq文件,逐行排列,例如:

~/data/Paenibacillus_sp.R4/SRR10074455_1.cut1.fastq
~/data/Paenibacillus_sp.R4/SRR10074455_1.cut2.fastq
~/data/Paenibacillus_sp.R4/SRR10074455_1.cut3.fastq


correct_optionreads校正参数,传递给子模块NextCorrect用于reads纠错:

read_cutoff:过滤长度低于该设定阈值的reads

seed_cutoff;选择长度大于该设定值以上的reads来校正;

sort_options:根据与给定seed的匹配数对冗余重叠进行排序和删除,传递给子程序ovl_sort执行,详见ovl_sort -h

minimap2_options_raw:用于寻找原始reads和校正后reads之间重叠,传递给子程序minimap2执行,详见minimap2-nd -h

correction_options:纠错程序的一些参数设置,详见原帮助文档。

 

assemble_option,组装参数,传递给子模块NextGraph用于reads纠错后的组装过程:

random_round:随机组装参数的数量,会基于每一随机参数做一次组装,避免默认参数效果不好;

minimap2_options_cns:寻找纠错后的reads之间的重叠,传递给子程序minimap2执行,详见minimap2-nd -h

nextgraph_options:组装程序的一些参数设置,详见原帮助文档。

 

程序运行,reads校正和基因组组装

然后执行NextDenovo主程序,自动运行就可以了。关于NextDenovoreads校正和组装算法之类的,大家有兴趣可自行了解,反正我看不懂……

#reads 纠错和组装自动执行
nextDenovo run.cfg.txt

中间看结果的时候,是很让我惊讶的。大约40分钟左右吧,看了一下程序运行到哪儿了,结果发现居然结束了。能设置线程的环节,我都设置的4线程,也就是说,就当是在4线程下运行NextDenovo,这个示例数据细菌基因组Nanopore数据(cut后的)也就半小时就完成reads纠错+组装的全部过程了。

而先前使用NECAT组装相同的数据的时候,reads纠错+组装在4线程下用了2小时多一点,差距如此明显吗?仔细比较了一下,发现NextDenovoreads纠错前后,剩余的总数据量不多了(远小于NECAT数据量),可能是我先前对两种软件的中间参数设置的不合理,也或许NextDenovo的纠错算法就是那么高效。

 

对于NextDenovo最终的组装序列,可见:

03.ctg_graph/01.ctg_graph.sh.work/ctg_graph00/nextgraph.assembly.contig.fasta”。

#查看组装得到的基因组 fasta 文件
less 03.ctg_graph/01.ctg_graph.sh.work/ctg_graph00/nextgraph.assembly.contig.fasta

2.png

 

再继续来个小评估

先不管上面提到的短时间内运行完到底是不是我参数设置的不合理的问题,反正对于这个测试数据来说,最后倒也也没咋影响组装效果。得到了1条细菌染色体级别的contig序列,无其它contigs碎片,而恰好该测试用的细菌也仅有一条染色体(环状染色体序列),无质粒(先前NECAT组装测试时得知的)。

然后,和先前使用相同数据的NECAT的组装结果作了个MUMmer共线性,查看染色体是否组装完整了。

mkdir mummer && cd mummer
ln -s ../03.ctg_graph/01.ctg_graph.sh.work/ctg_graph00/nextgraph.assembly.contig.fasta nextdenovo.fasta
 
#mummer 共线性分析,以 nextdenovo.fasta 为参考
nucmer --mum -p nextdenovo nextdenovo.fasta necat_cut.fasta
delta-filter -m nextdenovo.delta > nextdenovo.filter
show-coords -T -r -l nextdenovo.filter > nextdenovo.coords
mummerplot --postscript -p nextdenovo nextdenovo.delta
ps2pdf nextdenovo.ps nextdenovo.pdf
 
#注:necat_cut.fasta 来自之前的 NECAT 组装

3.png

4.png

注:图示序列1,为本次NextDenovo的拼接序列;序列2,为先前NECAT的拼接序列。

可知本次拼接,所得到的contig已经将这个细菌的染色体序列拼接完全了。但是不是恰到好处的环状染色体序列的那种,而是多出来一截。可知尾端多出来的这一截,和首端的序列是一致的,需要截掉。

在前文介绍NECAT时出现过同样的现象,当时也演示过一次怎样处理,这里如法炮制。同样地,对于这条基因组规模的contig,可以作个自身的blast比对;或者截取首尾1000bp左右的区域后,再和基因组比对。据此找到冗余的区域,将多出的部分截掉即可。

#取5’ 端 1000bp 序列,和基因组 blast比对
#这里借助 samtools 工具实现序列截取
samtools faidx nextdenovo.fasta
samtools faidx nextdenovo.fasta ctg000000:1-1000 > tmp.fasta
 
#blast比对
makeblastdb -in tmp.fasta -dbtype nucl
blastn -db tmp.fasta -query nextdenovo.fasta -out blast.txt -outfmt 6 -evalue 1e-5
less -S blast.txt

5.png

#去除多余的序列,保留合适的部分,这里借助 samtools 工具实现
samtools faidx nextdenovo.fasta ctg000000:1-8970333 > nextdenovo_cut.fasta
 
#再次执行 MUMmer
nucmer --mum -p nextdenovo nextdenovo_cut.fasta necat_cut.fasta
delta-filter -m nextdenovo.delta > nextdenovo.filter
show-coords -T -r -l nextdenovo.filter > nextdenovo.coords
 
#这次这个细菌染色体就恰好环化好了
less -S nextdenovo.coords

6.png

 

然后,如果要问为什么同样的Nanopore数据,两个组装软件(这里的NextDenovo,还有先前的NECAT)的拼接结果尚有区别(比方说,总长不一致;共线性分析中,也存在很多小区域不是很一致),这是肯定的,由于测序错误的存在,每一种组装软件都不能保证拼接时碱基完全无误。即使前面有reads纠错环节,但也不能保证所有碱基都校正完全。

NextDenovo组装后,每碱基的错误率约为97-98%。通常,基因组组装后的polish环节也是必需要做的,无论哪种组装软件后都要经历这一步,进一步识别基因组中的错误碱基进行校正,使基因组更可靠。polish后,不同软件的拼接结果应该就一致了。NextDenovo的开发者同样提供了工具NextPolish,可用于三代测序基因组polish

 



http://blog.sciencenet.cn/blog-3406804-1204832.html

上一篇:三代测序基因组组装工具MECAT2/NECAT
下一篇:Illumina、PacBio和Nanopore的基因组polish

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2020-8-12 19:07

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部