NECAT: Nanopore数据的高效组装工具

2024-06-23 20:18

本文主要是介绍NECAT: Nanopore数据的高效组装工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NECAT是肖传乐老师团队开发的一个针对Nanopore数据组装的软件,目前该工具尚未发表,除了https://github.com/xiaochuanle/NECAT有软件的介绍外,暂时没有中文资料介绍NECAT的使用。

太长不看的结论: Nanopore的组装推荐用下NECAT。组装之后是先用MEDAKA做一遍三代polish,然后用NextPolish默认参数做二代polish。

这篇将会以一篇发表在Nature Communication上的拟南芥nanopore数据介绍如何使用NECAT进行组装,运行在CentOS Linux release 7.3.1611 (Core),64G为内存, 20线程(Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz),下面是正文。

软件安装

NECAT可以在https://github.com/xiaochuanle/NECAT/releases/页面获取最新的软件下载地址,这里下载的是0.01版本。

wget https://github.com/xiaochuanle/NECAT/releases/download/v0.01/necat_20190307_linux_amd64.tar.gz
tar xzvf necat_20190307_linux_amd64.tar.gz
export PATH=$PATH:$(pwd)/NECAT/Linux-amd64/bin

目前0.01版本不支持gz文件作为输入,但后续版本应该会支持。

实战

第一步: 新建一个分析项目

mkdir NECAT && cd NECAT

以发表在NC上的拟南芥数据为例, 下载该数据

# 三代测序
wget ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR217/003/ERR2173373/ERR2173373.fastq.gz
seqkit seqkit fq2fa ERR2173373.fastq.gz | gzip -c > ERR2173373.fasta

第二步: 创建配置文件

necat.pl config ath_config.txt 

配置文件中,主要修改如下几个参数

PROJECT=athaliana #项目名
ONT_READ_LIST=read_list.txt #read所在路径文件
GENOME_SIZE=120000000 #基因组大小
THREADS=20 # 线程数
MIN_READ_LENGTH=3000 # 最短的read长度
CNS_OUTPUT_COVERAGE=45 # 用于组装的深度

参数中还有一个,NUM_ITER=2,它并非是简单的重复2次纠错,它的每一轮的校正目的其实不同,第一轮的优先级是敏感度(senstitive), 第二轮之后主要追求速度(fast)。

除了上面的配置参数外,其他参数可以不需要修改,使用默认的值即可。需要修改的话,参考最后的参数说明部分。

第三步: 序列纠错

necat.pl correct ath_config.txt &

纠错后的reads在athaliana/1-consensus/cns_final.fasta

cns_finla.fasta的统计信息会输出在屏幕中, 或者自己用fsa_rd_stat也能得到同样的结果

Count: 206342
Tatal: 3102480870
Max: 112992
Min: 1010
N25: 31940
L25: 18989
N50: 21879
L50: 48506
N75: 13444
L75: 93215

此外我还用time获取了运行时间,纠错花了大概一个小时。

real    55m31.451s
user    815m32.801s
sys     7m55.039s

第四步: contig组装

necat.pl assemble ath_config.txt &

结果在athaliana/4-fsa/contigs.fasta

关于contigs.fata统计信息会输出在屏幕上,同样用fsa_rd_stat 也可以。

Count: 162
Tatal: 122293198
Max: 14562810
Min: 1214
N25: 13052494
L25: 3
N50: 9503368
L50: 5
N75: 4919866
L75: 10

时间用了75分钟

real    74m53.127s
user    1308m29.534s
sys     12m5.032s

第五步: contig搭桥

necat.pl bridge ath_config.txt

结果在athaliana/6-bridge_contigs/bridged_contigs.fasta

Count: 127
Tatal: 121978724
Max: 14562810
Min: 2217
N25: 13193939
L25: 3
N50: 11146374
L50: 5
N75: 5690371
L75: 9

从N50和N75可以看出这一步会提高组装的连续性。

组装结果polish

对Nanopore组装结果进行polish的常用软件有下面3个

  • Medaka
  • nanopolish
  • racon

由于拟南芥的基因组比较小,我分别用了Medaka和racon对输出结果进行polish(因为没有原始信号数据,因此nanopolish用不了),代码如下

Medaka

NPROC=20
BASECALLS=ERR2173373.fasta
DRAFT=athaliana/6-bridge_contigs/bridged_contigs.fasta
OUTDIR=medaka_consensus
medaka_consensus -i ${BASECALLS} -d ${DRAFT} -o ${OUTDIR} -t ${NPROC} -m r941_min_high

三轮Racon:

gzip -dc ERR2173373.fastq.gz  > ERR2173373.fastq
minimap2 -t 20 ${DRAFT} ERR2173373.fastq > round_1.paf 
racon -t 20 ERR2173373.fastq round_1.paf ${DRAFT} > racon_round1.fasta
minimap2 -t 20 racon_round1.fasta ERR2173373.fastq > round_2.paf 
racon -t 20 ERR2173373.fastq round_2.paf racon_round1.fasta> racon_round2.fasta
minimap2 -t 20 racon_round2.fasta ERR2173373.fastq > round_3.paf
racon -t 20 ERR2173373.fastq round_3.paf racon_round2.fasta> racon_round3.fasta

在后续评估质量的时候,我发现单纯用三代polish的结果还不是很好,因此我用他们提供的二代测序,用NextPolish对NECAT的结果进行polish。

# 二代测序
prefetch ERR2173372
fasterq-dump -O  . ERR2173372

run.cfg内容如下, 其中sgs.fofn记录的就是解压后的ERR2173372_1.fastq和ERR2173372_2.fastq的路径

[General]                
job_type = local  
job_prefix = nextPolish  
task = 1212 
rewrite = no 
rerun = 3
parallel_jobs =  8  
multithread_jobs = 20 
genome = input.fasta 
genome_size = auto 
workdir = ./nextpolish 
polish_options = -p {multithread_jobs}
[sgs_option]             
sgs_fofn = ./sgs.fofn 
sgs_options = -max_depth 100 -bwa

我考虑了两种情况,一种是直接用二代polish,另一种是三代polish之后接二代polish。

结果评估

计算时间上,我之前用Canu跑了相同的数据,设置原始错误率0.5,纠错后错误率为0.144,用3个节点(每个节点12个线程),运行了3天时间,但是NECAT只需要3个小时左右就能完成相同的分析,这个速度差异实在是太明显了。

用Minimap2 + dotPlotly绘制CANU,NECAT和拟南芥参考基因组的共线性图

minimap2 -t 20 -x asm5 Athaliana.fa NECAT.fa > NECAT.paf
pafCoordsDotPlotly.R  -i NECAT.paf -o NECAT  -l -p 10 -k 5
minimap2 -t 20 -x asm5 Athaliana.fa CANU.fa > CANU.paf
pafCoordsDotPlotly.R  -i CANU.paf -o CANU  -l -p 10 -k 5

NECAT的结果

2013053-94524c7fff345aac.png
NECAT

CANU的结果

2013053-a635e6036d1d2cf8.png
CANU

NECAT和CANU都和参考基因组有着良好的共线性,但是NECAT的连续性更好,几乎成一条直线。

之后,我使用了QUAST来评估Canu,NECAT初步组装,NECAT用Medaka, nanopolish和racon纠错的结果(MD: MEDAKA, RC: RACON, NP:NextPolish)。

quast.py -t 100 --output-dir athaliana --circos \CANU.fa \NECAT.fa \NECAT_MD.fa \NECAT_MD_NP.fa \NECAT_NP.fa \NECAT_RC.fa \NECAT_RC_NP.fa \-r Athaliana.fa  \-g TAIR10_GFF3_genes.gff &

一些描述基本信息

CANU        N50 = 4875070,  L50 = 7, Total length = 114689024, GC % = 36.09 
NECAT       N50 = 11146374, L50 = 5, Total length = 121978724, GC % = 36.50
NECAT_MD    N50 = 11216803, L50 = 5, Total length = 122101599, GC % = 36.54
NECAT_MD_NP N50 = 11405151, L50 = 5, Total length = 124142955, GC % = 36.30
NECAT_NP    N50 = 11399084, L50 = 5, Total length = 124735066, GC % = 36.36
NECAT_RC    N50 = 11212098, L50 = 5, Total length = 122519370, GC % = 36.4
NECAT_RC_NP N50 = 11406553, L50 = 5, Total length = 124618502, GC % = 36.34

在BUSCO完整度上, 以embryophyta_odb10作为物种数据库, 其中ONTmin_IT4是发表的文章里的结果, Athalina则是拟南芥的参考基因组,我们以它们的BUSCO值作为参照。

Athalina     : C:98.6%[S:98.0%,D:0.6%],F:0.4%, M:1.0%, n:1375
ONTmin_IT4   : C:98.4%[S:97.7%,D:0.7%],F:0.7%, M:0.9%, n:1375
CANU         : C:22.9%[S:22.8%,D:0.1%],F:20.2%,M:56.9%,n:1375
NECAT        : C:36.6%[S:36.6%,D:0.0%],F:22.9%,M:40.5%,n:1375
NECAT_MEDAKA : C:53.6%[S:53.2%,D:0.4%],F:21.0%,M:25.4%,n:1375
NECAT_RACON  : C:45.3%[S:45.2%,D:0.1%],F:23.1%,M:31.6%,n:1375

二代Polish后的BUSCO结果如下(MD: MEDAKA, RC: RACON, NP:NextPolish):

Athalina   : C:98.6%[S:98.0%,D:0.6%],F:0.4%,M:1.0%,n:1375
ONTmin_IT4 : C:98.4%[S:97.7%,D:0.7%],F:0.7%,M:0.9%,n:1375
NECAT_NP   : C:98.6%[S:97.9%,D:0.7%],F:0.4%,M:1.0%,n:1375   
NECAT_MD_NP: C:98.7%[S:98.0%,D:0.7%],F:0.4%,M:0.9%,n:1375
NECAT_RC_NP: C:98.5%[S:97.8%,D:0.7%],F:0.4%,M:1.1%,n:1375

从以上这些数据,你可以得到以下几个洞见:

  • 在Nanopore的组装上,NECAT效果优于Canu,无论是连续性还是N50上
  • MEDAKA三代polish效果好于RACON。在速度上,MEDAKA比三遍RACON都慢,并且MEDAKA会将一些可能的错误组装给打断
  • Nanopore的数据用NECAT组装后似乎用NextPolish进行polish后就行,但是由于物种比较小,可能不具有代表性。

结论: Nanopore的组装建议用NECAT。组装之后是先用MEDAKA做一遍三代polish,然后用NextPolish默认参数做二代polish。

配置文件补充

这部分对配置文件做一点简单补充。

下面这些参数相对简单,不需要过多解释,按照自己需求修改

  • CLEANUP: 运行完是否清理临时文件,默认是0,表示不清理
  • USE_GRID: 是否使用多节点, 默认是false
  • GRID_NODE: 使用多少个节点,默认是0,当USE_GRID为true时,按照自己实际情况设置

以下的参数则是需要根据到具体的软件中去查看具体含义,需要和软件开发者讨论

  • OVLP_FAST_OPTIONS: 第二轮纠错时, 传给oc2pmov
  • OVLP_SENSITIVE_OPTIONS: 第一轮纠错时, 传给oc2pmov
  • CNS_FAST_OPTIONS: 第二轮纠错时,传给oc2cns
  • CNS_SENSITIVE_OPTIONS: 第一轮纠错时,传给oc2cns
  • TRIM_OVLP_OPTIONS: 传给oc2asmpm
  • ASM_OVLP_OPTIONS: 传给oc2asmpm
  • FSA_OL_FILTER_OPTIONS: 参数传给fsa_ol_filter
  • FSA_ASSEMBLE_OPTIONS: 参数传给fsa_assemble
  • FSA_CTG_BRIDGE_OPTIONS: 参数传给fsa_ctg_bridge

参考资料

  • https://github.com/xiaochuanle/NECAT

这篇关于NECAT: Nanopore数据的高效组装工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088170

相关文章

揭秘未来艺术:AI绘画工具全面介绍

📑前言 随着科技的飞速发展,人工智能(AI)已经逐渐渗透到我们生活的方方面面。在艺术创作领域,AI技术同样展现出了其独特的魅力。今天,我们就来一起探索这个神秘而引人入胜的领域,深入了解AI绘画工具的奥秘及其为艺术创作带来的革命性变革。 一、AI绘画工具的崛起 1.1 颠覆传统绘画模式 在过去,绘画是艺术家们通过手中的画笔,蘸取颜料,在画布上自由挥洒的创造性过程。然而,随着AI绘画工

墨刀原型工具-小白入门篇

墨刀原型工具-小白入门篇 简介 随着互联网的发展和用户体验的重要性越来越受到重视,原型设计逐渐成为了产品设计中的重要环节。墨刀作为一款原型设计工具,以其简洁、易用的特点,受到了很多设计师的喜爱。本文将介绍墨刀原型工具的基本使用方法,以帮助小白快速上手。 第一章:认识墨刀原型工具 1.1 什么是墨刀原型工具 墨刀是一款基于Web的原型设计工具,可以帮助设计师快速创建交互原型,并且可以与团队

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

【服务器运维】MySQL数据存储至数据盘

查看磁盘及分区 [root@MySQL tmp]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical)

Windows/macOS/Linux 安装 Redis 和 Redis Desktop Manager 可视化工具

本文所有安装都在macOS High Sierra 10.13.4进行,Windows安装相对容易些,Linux安装与macOS类似,文中会做区分讲解 1. Redis安装 1.下载Redis https://redis.io/download 把下载的源码更名为redis-4.0.9-source,我喜欢跟maven、Tomcat放在一起,就放到/Users/zhan/Documents

SQL Server中,查询数据库中有多少个表,以及数据库其余类型数据统计查询

sqlserver查询数据库中有多少个表 sql server 数表:select count(1) from sysobjects where xtype='U'数视图:select count(1) from sysobjects where xtype='V'数存储过程select count(1) from sysobjects where xtype='P' SE

OpenCompass:大模型测评工具

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模型问答项目问答性能评估方法大模型数据侧总结大模型token等基本概念及参数和内存的关系大模型应用开发-华为大模型生态规划从零开始的LLaMA-Factor

数据时代的数字企业

1.写在前面 讨论数据治理在数字企业中的影响和必要性,并介绍数据治理的核心内容和实践方法。作者强调了数据质量、数据安全、数据隐私和数据合规等方面是数据治理的核心内容,并介绍了具体的实践措施和案例分析。企业需要重视这些方面以实现数字化转型和业务增长。 数字化转型行业小伙伴可以加入我的星球,初衷成为各位数字化转型参考库,星球内容每周更新 个人工作经验资料全部放在这里,包含数据治理、数据要

简鹿文件批量重命名:一款文件批量改名高手都在用的工具

作为 IT 行业的搬砖民工,互联网的数据量爆炸性增长,文件管理成为了一项日益重要的任务。"简鹿文件批量重命名"应运而生,旨在为用户提供一个高效、灵活的解决方案,以应对繁琐的文件命名、排序、创建及属性修改等挑战。 这款软件凭借其一键式操作、强大的自定义规则导入、以及全面的批量处理能力,极大地简化了文件管理流程,尤其适合处理大量文件的个人用户及企业环境,是提高工作效率、保持文件系统整洁的得力助手

如何在Java中处理JSON数据?

如何在Java中处理JSON数据? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨在Java中如何处理JSON数据。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,在现代应用程序中被广泛使用。Java通过多种库和API提供了处理JSON的能力,我们将深入了解其用法和最佳