全基因组 | 三代长读长基因组组装 -- Canu

今天我们介绍一款用于三代长读长测序数据(如PacBio和纳米孔测序)的基因组de novo拼接工具 -- Canu,既适用于小基因组又适用于大基因组的组装,最早是为了应对低碱基质量(high-noise)的数据(如来自PacBio RSII/Sequel, ONT-MinION)。2017年3月15日,Canu发表于《Genome Biology》期刊上,题目为Canu: scalable and accurate long-read assembly via adaptive k-mer weighting and repeat separation,第一作者为美国国家人类基因组研究所(NHGRI)基因组信息学部门的Sergey Koren博士(图1)。他在基因组组装和单分子测序算法领域具有深厚的研究背景,开发了 CanuHiCanu等基因组组装软件,广泛应用于从微生物到人类的各种基因组组装项目。此外,他们还在 Telomere-to-Telomere(T2T)项目中担任领导角色(共1第2位),完成了首个完整(T2T)的人类基因组序列。

图1.Koren_Sergey博士

长读长的单分子测序技术彻底革新了从头基因组组装(de novo assembly)的方法,并使得构建参考级别质量(reference-quality)的基因组成为可能。然而,由于这类技术的错误率相对较高,高效而准确地组装大型重复序列和高度相似的单倍型(haplotypes)依然面临挑战。

在此,提出 Canu来应对这些问题。CanuCelera Assembler的继任者,专门为高噪声(high-noise)的单分子测序数据设计Canu引入了对 纳米孔测序(nanopore sequencing)的支持,将所需测序深度减半,并在提高组装连续性的同时,相比 Celera Assembler 8.2 将大型基因组的运行时间缩短了一个数量级。

这些进步得益于一系列新的重叠与组装算法的引入,包括:

  • 一种基于 tf-idf加权的 MinHash 的自适应重叠策略;

  • 一种稀疏的组装图构建方法,可避免将diverged的重复序列和单倍型误判为同一序列而错误地合并。

Canu 可以稳定地组装完整的微生物基因组,并使用 Pacific Biosciences(PacBio)或 Oxford Nanopore 技术近乎完整地组装真核染色体。在人的和果蝇(Drosophila melanogaster)的 PacBio 数据集中,Canu 实现了 contig NG50 超过 21 Mbp 的优异性能。对于无法用线性序列表示的组装结构,Canu 提供了基于图的组装结果输出,采用图形碎片组装格式(graphical fragment assembly,GFA),便于进一步分析或与其他分型(phasing)和搭架(scaffolding)技术整合使用(图2)。

图2. Canu文章摘要

一、软件介绍

Canu能利用测序错误率较高的三代测序数据(早期PacBio CLR或ONT)进行基因组de novo组装。从Canu (v1.9)开始,也支持PacBio HiFi数据的组装。Canu的组装准确度高、参数完备,能得到较好的基因组组装结果。相应地,资源消耗较多,较其它组装工具而言运行会稍慢(如Flye)。
Canu对原始数据的组装分为三个阶段四个步骤 (图3):
1. 矫正 (Correction)

  • 调用 MHAP工具 (MinHash alignment process) 对高噪声 (high-noise) 的序列进行比对,寻找序列之间的重叠;
  • 根据比对结果将序列进行聚类,生成一致性 (consensus) 序列,从而对测序数据进行矫正.

2. 修剪 (Trim)

  • 采用重叠修剪 (overlap-based trim) 的方法,将测序序列中不产生重叠的部分去除.

3.组装 (Assembly)

  • 使用矫正和修剪后的序列,进行基于OLC算法的组装,生成contigs.

相关知识:
目前,广泛使用的基因组组装算法有两种:OLC算法 (Overlap-Layout-Consensus) 和DBG算法 (De-Bruijn-Graph)。通俗地说,OLC适用于reads读长较长的数据 (三代测序),是在测序reads之间找overlap和连接路径;DBG适用于reads读长较短的数据 (二代数据),是对测序reads取kmer,在kmer之间找overlap和连接路径。

图3.Canu分析流程

二、软件安装

Canu: https://github.com/marbl/canu
版本:v2.3(2024.12.18)

#conda一键安装部署
$ conda install  -c bioconda canu
# v2.3

#安装完毕后,调用主程序查看帮助
$ canu -h

三、软件使用

输入序列支持FASTAFASTQ格式,既可以是未压缩的,也可以是使用 .gz.bz2.xz压缩的。注意,不支持 .zip格式。

Canu可以恢复未完成的组装任务,支持在系统中断或其他异常终止后继续运行。每次重新启动Canu时,它会检查组装目录中的文件,以决定接下来的操作。例如,如果除了两个重叠计算任务之外其他都已完成,Canu只会计算这两个尚未完成的任务。为了获得最佳效果,请不要在重启之间更改Canu的参数设置。

Canu会自动检测可用的计算资源,并根据组装规模进行自我调整,尽可能充分并合理地利用所有可用资源。也可以用maxMemorymaxThreads参数来设置。

使用示例:

PacBio测序数据 (CLR模式)

$ canu -p ecoli -d test genomeSize=4.8m -pacbio pacbio.fastq

Continuous Long Reads (CLR)测序模式是最早PacBio RS II/Sequel 主要的测序模式,错误率相对较高。

Nanopore测序数据

$ canu -p ecoli -d test genomeSize=4.8m maxInputCoverage=100 -nanopore nanopore.fastq

PacBio测序数据 (HiFi)

$ canu -p asm -d ecoli_hifi genomeSize=4.8m -pacbio-hifi ecoli.fastq
参数说明
  • -p:组装输出文件前缀
  • -d:组装文件输出文件夹
  • genomeSize=4.8m:指定待组装基因组的大小。这里设置为 4.8m,表示预估的基因组大小为 4,800,000 个碱基对。
  • -pacbio-raw:指使用pacbio CLR 原始数据
  • -nanopore-raw:指使用nanopore 原始数据
  • -pacbio-hifi:指使用pacbio-hifi reads进行组装
  • rawErrorRate:未纠错read之间允许的最大差异碱基数,默认 PacBio reads为0.300, Nanopore reads为0.500
  • correctedErrorRate:纠错后read之间允许的最大差异碱基数,默认 PacBio reads为0.045, Nanopore reads为0.144
  • corOutCoverage:用于纠错的数据最小coverage,默认是40x
  • minReadLength:使用长度大于该阈值的reads,默认为1000
  • minOverlapLength:最小overlap的长度,默认为500
  • maxThreads:设置运行的最大线程数

四、输出结果

Canu运行后生成的全部结果在输出目录里,内容如下(图4):

CorrectionTrimmingUnitigging文件夹里存放了纠错、修剪和组装的过程文件,主要结果文件包括:

🧬 ecoli.contigs.fasta:最终的组装contigs.

📋 ecoli.report:记录整个Canu运行过程及结果.

🔁 ecoli.correctedReads.fasta.gz:纠错后的reads.

📑 ecoli.trimmedReads.fasta.gz:修剪后的reads.

图4.Canu输出结果

五、帮助文档

canu [-version] [-citation] \
     [-haplotype | -correct | -trim | -assemble | -trim-assemble] \
     [-s <组装参数文件>] \
     -p <组装前缀> \
     -d <组装目录> \
     genomeSize=<数值>[g|m|k] \
     [其他选项] \
     [-haplotype{名称} illumina.fastq.gz] \
     [-corrected] \
     [-trimmed] \
     [-pacbio |
      -nanopore |
      -pacbio-hifi] 文件1 文件2 ...


-haplotype   生成单倍型特异的reads
-correct     生成纠错后的reads
-trim       生成修剪后的reads
-assemble    进行组装
-trim-assemble 先修剪后组装

genomeSize 应为目标样本的单倍体基因组大小的最佳估计。主要用于评估 reads 的覆盖度,而不是作为期望的组装大小,支持小数。

useGrid=string  指定是否使用集群:true 表示使用集群,false 表示本地运行,remote 表示配置集群但不提交任务。

rawErrorRate=fraction-error  原始未纠错 reads 的允许差异比。低质量 reads 可设为较大值。默认值为:PacBio:0.300   Nanopore:0.500

correctedErrorRate=fraction-error  纠错后 reads 的允许差异比。对于覆盖度较低或具有生物差异的数据,稍微提高此值有益。默认值为:PacBio:0.045   Nanopore:0.144

gridOptions=string  提交任务时传给集群的命令字符串,例如设置最长运行时间。不建议用于设置内存限制,Canu 会自动处理内存分配。

minReadLength=number  忽略长度小于该值的 reads。默认:1000

minOverlapLength=number  忽略长度小于该值的 reads 重叠。默认:500

使用 -haplotype{名称} 指定单倍型,并在其后跟任意数量的 Illumina 单倍型特异性 reads 文件。{名称} 为自定义名称,仅限字母和数字。


测序平台:
-pacbio   PacBio 数据
-nanopore  Nanopore 数据
-pacbio-hifi 高保真 PacBio 数据

参考文献

1.Koren S, Walenz BP, Berlin K, Miller JR, Phillippy AM. Canu: scalable and accurate long-read assembly via adaptive k-mer weighting and repeat separation. Genome Research. (2017)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容