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 选哪个¶
对比:
| 指标 | metaSPAdes | MEGAHIT |
|---|---|---|
| 组装质量(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.fasta | contig 输出文件 |