跳转至

metaSPAdes — 高质量宏基因组组装工具


一句话说明

metaSPAdes 是 SPAdes 的宏基因组模式,专门针对物种覆盖度不均匀的宏基因组数据优化组装算法,在组装连续性(N50)上通常优于 MEGAHIT,但内存需求更高。


安装与配置

# 方法1:conda 安装(推荐,metaSPAdes 包含在 SPAdes 里)
conda install -c bioconda spades  # 安装 SPAdes 即包含 metaSPAdes

# 方法2:预编译下载
wget https://github.com/ablab/spades/releases/download/v4.0.0/SPAdes-4.0.0-Linux.tar.gz
tar -xzf SPAdes-4.0.0-Linux.tar.gz

# 验证安装
metaspades.py --version  # 或 spades.py --meta --version
# 当前最新 v4.0.0

内存需求

  • 比 MEGAHIT 高 3-10 倍
  • 10GB 宏基因组数据约需 64-128GB RAM
  • 不适合在小内存服务器上运行

核心用法

基本组装

# 方法1:直接调用 metaspades.py
metaspades.py \
  -1 R1.fq.gz \                  # Read 1
  -2 R2.fq.gz \                  # Read 2
  -o metaspades_output \          # 输出目录
  -t 32 \                        # 32 线程
  -m 128                          # 最大内存 128GB

# 方法2:通过 spades.py --meta(等价)
spades.py --meta \
  -1 R1.fq.gz -2 R2.fq.gz \
  -o metaspades_output \
  -t 32 -m 128

# 主要输出文件
# metaspades_output/scaffolds.fasta — 最终脚手架序列
# metaspades_output/contigs.fasta — contig 序列

进阶用法

# 加入单端读段
metaspades.py \
  -1 R1.fq.gz -2 R2.fq.gz \
  -s unpaired.fq.gz \            # 单端/未配对读段
  -o output_with_se \
  -t 32 -m 128

# 混合组装(短读 + 长读)
metaspades.py \
  -1 R1.fq.gz -2 R2.fq.gz \
  --nanopore ont_reads.fq.gz \   # 加入 ONT 长读段
  -o hybrid_meta_output \
  -t 32 -m 256

# 自定义 k-mer 列表
metaspades.py \
  -1 R1.fq.gz -2 R2.fq.gz \
  -k 21,33,55,77,99,127 \        # 自定义 k-mer 值
  -o custom_k_output \
  -t 32 -m 128

# 从断点恢复
metaspades.py \
  -o metaspades_output \
  --restart-from last             # 从最后检查点恢复

# 只运行组装步骤(跳过纠错)
metaspades.py \
  -1 R1.fq.gz -2 R2.fq.gz \
  --only-assembler \              # 跳过纠错阶段(节省时间和内存)
  -o assembler_only_output \
  -t 32 -m 128

组装后处理

# 过滤短 contig
seqkit seq -m 1000 metaspades_output/scaffolds.fasta > scaffolds_1kb.fasta  # 保留 >=1kb

# 统计组装质量
quast metaspades_output/scaffolds.fasta \
  -o quast_report \
  --min-contig 1000               # 只统计 >=1kb 的 contig

# 读段回比对(binning 前必需步骤)
bwa-mem2 index scaffolds_1kb.fasta
bwa-mem2 mem -t 16 scaffolds_1kb.fasta R1.fq.gz R2.fq.gz \
  | samtools sort -@ 4 -o mapped.bam
samtools index mapped.bam

常见问题与踩坑

问题1:内存不够 killed

原因:metaSPAdes 对内存需求远高于 MEGAHIT
解决:加 --only-assembler 跳过纠错步骤可减少约 30% 内存;或改用 MEGAHIT

问题2:metaSPAdes vs MEGAHIT 选哪个

对比

指标metaSPAdesMEGAHIT
组装质量(N50)更高略低
内存需求高(64-256GB)低(16-64GB)
速度较慢快 2-5 倍
适用场景小中规模数据大规模数据

问题3:--meta 不能和 --careful 一起用

原因--careful 是为单一基因组设计的,与 --meta 冲突
解决:宏基因组只用 --meta,不加 --careful

问题4:k-mer 选择对结果影响大

说明:metaSPAdes 默认自动选择多个 k-mer 值并合并结果
建议:通常使用默认值即可,手动指定时确保最大 k-mer < 读段长度


速查卡片

命令/参数用途
metaspades.py -1 R1 -2 R2 -o out基本宏基因组组装
spades.py --meta等价调用方式
-t 32 -m 128线程数和内存上限
--only-assembler跳过纠错(省内存)
-k 21,33,55,77自定义 k-mer 列表
--nanopore reads.fq加入 ONT 长读段
-s unpaired.fq加入单端读段
--restart-from last从断点恢复
scaffolds.fasta主要输出文件
contigs.fastacontig 输出文件