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

Published on 2026-07-25 10:35
Author: wuj
70 views

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