今天我们介绍一款用于三代长读长测序数据(如PacBio和纳米孔测序)的基因组de novo拼接工具 -- Flye,可用于进行小型细菌到哺乳动物基因组的组装。2019年04月01日,Flye发表于《Nature Biotechohnology》期刊上,题目为Assembly of long, error-prone reads using repeat graphs, 第一作者为当时在美国圣地亚戈加州大学Pavel A. Pevzner组里做博士后的Mikhail Kolmogorov博士(图1)。Mikhail Kolmogorov博士研究重点是计算生物学,包括算法、数学模型和工具,并且是长读长基因组组装工具Flye和metaFlye的首席开发人员,其现在就职于美国国家癌症研究所 (NIH-National Cancer Institute , Center for Cancer Research)。

准确的基因组组装常常受到重复区域的干扰。尽管单分子长读长测序数据比短读长数据能更好的解析基因组中的重复序列,但大多数长读长组装算法并不能提供构建最优组装所需的重复特征信息。这里,Mikhail Kolmogorov 提出了一种名为 Flye 的长读长组装算法。Flye 能在未知的重复图中生成任意路径(称为 disjointigs),并从这些含有错误的 disjointigs 中构建出准确的重复图。将Flye 与五种最先进的组装工具进行了对比测试,结果表明 Flye 生成的组装结果优于或相当于其他工具,并且运行速度快了一个数量级。与现有组装工具相比,Flye 生成的人类基因组组装在连续性方面(通过 NGA50 组装质量指标衡量)几乎提高了一倍(图2)。

一、软件介绍
Flye 是专为单分子测序数据(如 PacBio 和 ONT产生的序列)开发的 de novo(从头)组装工具。它适用于各种类型的数据集,从小型细菌项目到大规模哺乳动物基因组的组装。该工具包是一个完整的组装流程:从原始的 PacBio / ONT 序列出发,最终输出经过纠错的contigs序列(图3)。此外,Flye 还提供了专门用于宏基因组组装的模式。
目前,Flye 对二倍体基因组的组装会输出合并(collapsed)的组装结果。如果希望获得phased单倍型,可以在组装完成后使用 HapDup 工具进行处理。如果你正在使用 Flye 或 metaFlye 来组装异质性的细菌基因组或宏基因组数据,可以考虑使用 strainy 来识别和定量异质性,从而揭示被合并(collapsed)的菌株信息。

二、软件安装
Flye: https://github.com/mikolmogorov/Flye
版本:v2.9.6 (2025.05)
#conda一键安装部署
$ conda install -c bioconda flye
# v2.9.6
#安装完毕后,调用主程序查看帮助
$ flye -h
三、软件使用
输入的测序数据可以是 FASTA 或 FASTQ 格式,支持未压缩或以 .gz 格式压缩的文件。目前,Flye 支持以下类型的读长:PacBio(CLR、HiFi、纠错后的)和 ONT(Oxford Nanopore Technologies) 下机序列reads(常规、高质量、纠错后的)。预期的错误率如下:
PacBio CLR / 常规 ONT:< 20%
高质量 ONT:< 5%
纠错后的序列:< 3%
PacBio HiFi:< 1%
请注意,Flye 主要是为未经过纠错的原始序列(reads)设计的,你可以指定多个文件(以空格分隔)。目前不支持混合不同类型的读长。使用 --meta 选项可以启用宏基因组或覆盖度不均的样本组装模式。
为了降低大型基因组组装时的内存消耗,可以使用部分最长的reads来进行初步 disjointig(非重叠片段)组装,方法是同时指定 --asm-coverage 和 --genome-size 选项。一般来说,40x 的测序覆盖度就足以生成质量较好的 disjointigs。此外,也可以使用 --polish-target 选项将 Flye 的纠错(polisher)功能作为独立工具运行。
使用示例:
1. E. coli P6-C4 PacBio data
#下载示例数据
$ wget https://zenodo.org/record/1172816/files/E.coli_PacBio_40x.fasta
#实际使用
$ flye --pacbio-raw E.coli_PacBio_40x.fasta --out-dir out_pacbio --threads 4 --genome-size 4.6m --iterations 5
参数说明:
- --pacbio-raw: 传入pacbio的原始数据(CLR)
- --out-dir:输出结果存放路径
- --threads:线程数
- --genome-size 是预估的基因组大小,本示例 4.6m 意为 4.6Mb
- --iterations 纠错次数可以改到5,默认是1
2. E. coli Oxford Nanopore Technologies data
#下载示例数据
$ wget https://zenodo.org/record/1172816/files/Loman_E.coli_MAP006-1_2D_50x.fasta
#实际使用
$ flye --nano-raw Loman_E.coli_MAP006-1_2D_50x.fasta --out-dir out_nano --threads 4 --genome-size 4.6m --iterations 5
参数说明:
- --nano-raw: 传入nanopore的原始数据
- --out-dir:输出结果存放路径
- --threads:线程数
- --genome-size 是预估的基因组大小,本示例 4.6m 意为 4.6Mb
- --iterations 纠错次数可以改到5,默认是1
对于模式的选择需要根据数据类型:
Oxford Nanopore(ONT)
对于 R10 测序数据,请使用
--nano-hq,预期错误率为 <3%。对于使用 Guppy 5+ 进行碱基识别的 R9 测序数据,请使用
--nano-hq--read-error 0.05,预期错误率为 <5%。对于较早期的 ONT 数据(例如 R7 或旧版 R9 化学试剂),请使用
--nano-raw,预期错误率为 10-15%。如果你使用其他方法(如 Canu)对 ONT 读长进行了纠错,请使用
--nano-corr。
PacBio
对于常规的 PacBio CLR 数据,默认模式是
--pacbio-raw,适用于多种数据集(如 P5C3/P6C4/Sequel),预期错误率为 13-15%。对于 PacBio HiFi 数据,请使用
--pacbio-hifi模式。默认错误率为 0.001,适用于默认的 CCS 算法设置(如 ≥3 次聚合酶读取)。你也可以使用--read-error参数手动调整错误率。如果你拥有通过其他工具(如 Canu)纠错后的 PacBio 序列,请使用
--pacbio-corr。
四、输出结果
🧬 assembly.fasta
最终组装结果,包含 contigs以及可能存在的 scaffolds。
🔁 assembly_graph.{gfa|gv}
最终重复图(repeat graph),文件格式为 GFA 或 Graphviz(gv)。
📋 assembly_info.txt
提供 contig 的额外信息(如长度、覆盖度等)。
每个 contig 通常由一个唯一图边(graph edge)形成。如果可能,Flye 会将 contig 向两端未解析的重复序列延伸,因此 contig 完整包含了图边(ID 相同),但可能比该边更长。这种关系类似于 OLC 组装工具中 unitig 和 contig 的关系。如果某个重复图边没有被“扩展”后的 contigs 覆盖,Flye也会将其输出到 assembly.fasta 中。
📑 assembly_info.txt文件结构,这是一个以制表符分隔的表格,列内容如下:
Contig/scaffold ID:contig 或 scaffold 的名称
Length:长度(bp)
Coverage:覆盖度
Is circular (Y/N):是否为环状,Y 为是,N 为否
Is repetitive (Y/N):是否为重复序列,Y 为是
Multiplicity:拷贝数(基于覆盖度计算)
Alternative group:替代单倍型所属的分组 ID
Graph path:对应于该 contig 或 scaffold 的图路径
scaffold 中的 gap 用 ?? 符号标记
图的终端节点用 * 表示
五、帮助文档
flye (--pacbio-raw | --pacbio-corr | --pacbio-hifi | --nano-raw | \
--nano-corr | --nano-hq) 输入文件1 [输入文件2 ...] \
--out-dir 输出目录 [其他可选参数]
--pacbio-raw <文件>:PacBio 原始 CLR 数据(<20% 错误率)
--pacbio-corr <文件>:使用其他工具(如 Canu)纠错后的 PacBio 数据(<3% 错误率)
--pacbio-hifi <文件>:PacBio 高保真 HiFi 数据(<1% 错误率)
--nano-raw <文件>:常规 ONT 数据(如 Guppy5 之前,<20% 错误率)
--nano-corr <文件>:使用其他工具纠错后的 ONT 数据(<3% 错误率)
--nano-hq <文件>:高质量 ONT 数据(如 Guppy5+ SUP 或 Q20,<5% 错误率)
-g, --genome-size <大小>:估计基因组大小,如 5m(5 Mb)或 2.6g(2.6 Gb)
-t, --threads <整数>:并行运行的线程数(默认:1)
-i, --iterations <整数>:纠错迭代次数(默认:1)
-m, --min-overlap <整数>:最小序列重叠长度(默认自动估计)
--asm-coverage <整数>:用于初步 disjointig 组装的最大覆盖深度(节省内存用)
--read-error <小数>:设置序列错误率(例如 0.05 表示 5%)
--extra-params <参数列表>:以逗号分隔的额外配置参数
--meta:启用宏基因组组装 / 非均一覆盖样本组装模式
--keep-haplotypes:保留多个单倍型,不进行折叠
--no-alt-contigs:不输出代表可选单倍型的 contigs
--scaffold:启用 scaffold 功能(默认关闭)
--polish-target <文件>:对指定序列运行 Flye 的纠错(可独立运行)
--resume:从上次中断的地方继续运行
--resume-from <阶段名>:从指定阶段开始运行
--stop-after <阶段名>:在指定阶段完成后停止运行
--debug:输出调试信息
-v, --version:显示程序版本
-h, --help:显示帮助信息并退出
--subassemblies:旧版高质量 contig 输入(已弃用)
--trestle:已弃用模块
--hifi-error:已弃用,请用 --read-error 替代
--plasmids:已弃用,仅用于向后兼容
参考文献
1.https://github.com/mikolmogorov/Flye
- Kolmogorov, M., Yuan, J., Lin, Y., & Pevzner, P. A. (2019). Assembly of long, error-prone reads using repeat graphs. Nature biotechnology, 37(5), 540-546.
