Unicycler 二+三代混合组装使用指南

Unicycler 简介
Unicycler 是一款专门为细菌基因组设计的混合组装工具。它支持三种输入模式:
- 仅 Illumina 短读长序列:作为 SPAdes 的优化器运行
- 仅(PacBio/Nanopore)三代长读长序列:运行 miniasm + Racon 流程
- Illumina + 三代长读(最佳模式):进行混合组装,获得高质量、完整的细菌基因组序列
其组装的核心策略是:先用 SPAdes 基于 Illumina 数据构建高精度的组装图,再利用三代长读长跨越重复区域,解决短读序列组装中难以处理的重复序列问题,最终生成闭环的基因组序列。对于细菌基因组的完整图(complete genome)构建,Unicycler 是目前最易用、最稳定的工具之一。
Unicycler 支持 Linux 和 macOS 系统,依赖 Python 3.6+ 以及 SPAdes、Racon、Pilon、Bowtie2、Samtools、Minimap2 等外部工具。推荐通过 Conda 进行一键安装,可自动解决所有依赖关系。
为什么选择 Unicycler?
- 无需额外工具(如 Circlator)即可实现复制子环化。
- 能够处理含多个质粒的基因组。
- 混合组装中可接受任意深度和质量的 long reads(10× 以上可能足以完成基因组)。
- 生成组装图(GFA 格式),可用 Bandage 可视化。
- 极低的 misassembly 率。
- 可应对高重复基因组(如 Shigella)。
- 使用简单:单条命令即可运行,通常无需调整参数。
系统要求
- Linux 或 macOS
- Python 3.4 或更高版本
- 支持 C++14 的 C++ 编译器(GCC 4.9.1+ 或 Clang 3.5+)
- SPAdes (spades.py) 短读或混合组装必需
- Racon (racon) 长读或混合组装必需
- Pilon (pilon*.jar) 最终抛光推荐(可用 --no_pilon 关闭)
- Java 使用 Pilon 时必需
- Bowtie2 短读比对使用 Pilon 时必需
- Samtools SAM/BAM 处理 使用 Pilon 时必需
- BLAST+ (makeblastdb, tblastn) 环状序列旋转 默认启用(可用 --no_rotate 关闭)
- 可选工具: Bandage(可视化组装图,强烈推荐)
Unicycler 默认这些工具已在 $PATH 中。如果不在,可使用相应选项指定路径(如 --spades_path、--samtools_path 等)。
Unicycler 的安装
方法一:从源码安装(推荐,获取最新版本)
git clone https://github.com/rrwick/Unicycler.git
cd Unicycler
python3 setup.py install
说明:
- 如遇权限问题,可加 sudo 或以 --user 参数安装:python3 setup.py install --user
- 如需特定版本,请从 Releases 页面(https://github.com/rrwick/Unicycler/releases)下载源码
- 指定安装位置:python3 setup.py install --prefix=$HOME/.local
方法二:使用 Conda 安装(最简单)
# 创建并激活环境
conda create -n unicycler -c conda-forge -c bioconda unicycler
conda activate unicycler
# 验证安装
unicycler --help
Unicycler 的用法
Step 0:数据准备与质控
Unicycler 需要同时输入二代(Illumina)和三代(Nanopore/PacBio)测序数据。
- Illumina数据: 双端测序文件,通常为 _R1.fastq.gz 和 _R2.fastq.gz
- Nanopore或PacBio数据: 长读长文件,通常为 *.fastq.gz
质控建议(非必需,但推荐): # Illumina 数据质控(使用 fastp) fastp -i raw_R1.fq.gz -I raw_R2.fq.gz -o clean_R1.fq.gz -O clean_R2.fq.gz --detect_adapter_for_pe
# Nanopore 数据质控(使用 Filtlong,保留 95% 高质量数据)
filtlong --min_length 1000 --keep_percent 95 raw_ont.fastq.gz > ont_clean.fastq
重要提示:
- 如测序公司已提供质控后数据(文件名含 clean、pass 等),可直接跳过此步。
- 文件路径避免使用中文字符,否则 SPAdes 可能无法正常读取。
Step 1:运行 Unicycler 混合组装
unicycler \
-1 reads_data/R1.fq.gz \
-2 reads_data/R2.fq.gz \
-l reads_data/ont.fq.gz \
-o hybrid_assembly \
--mode normal \
--threads 16
参数说明:
- -1 / -2 Illumina 双端测序的 R1 和 R2 文件
- -l Nanopore/PacBio 长读长文件(FASTQ 或 FASTA)
- -o 输出目录(会自动创建)
- --mode 组装模式:conservative、normal(默认)、bold
- --threads 使用的 CPU 线程数(默认 8)
其他常用参数:
- --no_correct 跳过 SPAdes 短读纠错(降低内存消耗)
- --min_fasta_length 输出序列的最小长度(默认 100,可过滤过短 contig)
- --keep 文件保留级别(0=仅最终文件,1=保留关键中间图,2=保留 SAM 文件加速重跑,3=保留所有调试文件)
- --linear_seqs 预期线性(非环状)序列的数量(默认 0,即所有序列预期为环状)
- --vcf 生成 VCF 文件(将短读比对到最终组装)
Step 2:组装过程监控
Unicycler 运行时会输出详细的日志信息,主要包括以下几个阶段:
- SPAdes read error correction:对 Illumina 短读进行纠错(最耗时)
- SPAdes assemblies:使用多个 k-mer 进行短读组装,自动选择最优结果
- miniasm assembly:将短读 contig 与长读进行混合组装
- Racon polishing:使用长读对混合组装结果进行抛光
- Pilon polishing:使用 Illumina 短读进行最终碱基校正
整个组装过程通常需要 4~8 小时(取决于数据量和服务器性能)。
Step 3:结果解读
组装完成后,输出目录下会产生以下关键文件:
- assembly.fasta 最终基因组序列(最重要!)
- assembly.gfa 组装图文件(可用 Bandage 可视化)
- unicycler.log 完整运行日志
质量评估: 查看日志末尾的组装统计信息:
grep -A 10 "Bridged assembly graph" hybrid_assembly/unicycler.log
输出示例:
Component Segments Links Length N50 Longest segment Status
total 5 5 3,856,506 3,070,429 3,070,429
1 1 1 3,070,429 3,070,429 3,070,429 complete
2 1 1 302,227 302,227 302,227 complete
3 1 1 233,337 233,337 233,337 complete
4 1 1 195,322 195,322 195,322 complete
5 1 1 55,191 55,191 55,191 complete
解读:
- Status: complete:该序列为环状闭环(起点和终点相连)
- Segments: 1:该复制子由单条 contig 组成,无碎片
- 总长度:符合预期基因组大小(细菌通常 3~6 Mb)
- N50:越大越好,表示组装连续性好
在上例中,5 条序列全部闭环,最大的一条(3.07 Mb)为染色体,其余 4 条(302K、233K、195K、55K)根据深度推测可能为质粒。
运行模式详解:Conservative、Normal 和 Bold
Unicycler 提供三种运行模式,可通过 --mode 参数指定:
- Conservative: 最不易产生完整组装,但 misassembly 风险极低
- Normal: 平衡选项,适合大多数情况
- Bold: 最易产生完整基因组,但 misassembly 风险相对较高

如研究中组装的结构准确性至关重要,建议使用 conservative;如果你希望获得完整的基因组,即使可能包含一两个错误,则使用 bold。
完整参数列表
以下为 Unicycler 所有高级选项,可通过 unicycler --help_all 查看完整说明。
SPAdes 组装相关
- --spades_path SPAdes 可执行文件路径
- --no_correct 跳过 SPAdes 纠错步骤
- --min_kmer_frac 最低 k-mer 大小(占读长比例)
- --max_kmer_frac 最高 k-mer 大小(占读长比例)
- --kmers 精确指定 k-mer 列表(逗号分隔,如 22,33,44)
- --kmer_count k-mer 步数
- --depth_filter 过滤低于染色体深度此分数的 contig
- --largest_component 仅保留组装图的最大连通分量
- --spades_tmp_dir 指定 SPAdes 临时目录
miniasm+Racon 组装相关
- --no_miniasm 跳过 miniasm+Racon 桥接
- --racon_path Racon 可执行文件路径
- --existing_long_read_assembly 使用外部预组装 GFA 文件,跳过 miniasm/Racon
环状序列旋转相关
- --no_rotate 不旋转环状复制子
- --start_genes 起始基因 FASTA 文件
- --start_gene_id 起始基因 BLAST 最低一致性(%)
- --start_gene_cov 起始基因 BLAST 最低覆盖度(%)
- --makeblastdb_path makeblastdb 可执行文件路径
- --tblastn_path tblastn 可执行文件路径
Pilon 抛光相关
- --no_pilon 不使用 Pilon 抛光
- --bowtie2_path bowtie2 可执行文件路径
- --bowtie2_build_path bowtie2-build 可执行文件路径
- --samtools_path samtools samtools 可执行文件路径
- --pilon_path Pilon 可执行文件或 JAR 文件路径
- --java_path j Java 可执行文件路径
- --min_polish_size 短于此长度的 contig 不进行 Pilon 抛光(bp)
VCF 输出相关6.5 VCF 输出相关
- --bcftools_path bcftools 可执行文件路径
图清理相关
- --min_component_size 小于此大小的图组件将被移除(bp)
- --min_dead_end_size 小于此大小的死端将被移除(bp)
长读比对相关
- --contamination 已知污染序列 FASTA 文件
- --scores 比对得分:匹配、错配、gap 开启、gap 延伸
- --low_score 低质量比对阈值,低于此值的比对被视为不可靠
补充说明
- Unicycler 默认会使用所有可用的依赖工具,若缺少某工具,相应步骤会被跳过或报错。
- 运行时间受长读数量、基因组复杂度和线程数影响,从数小时到十余小时不等。
- 若需定制起始基因用于旋转,可使用 --start_genes 提供自定义基因 FASTA 文件。
- 若已知长读中有污染,使用 --contamination 可有效过滤。
图片摘自:Unicycler