VAMB — 基于变分自编码器的深度学习宏基因组 binning 工具
一句话说明
VAMB 使用变分自编码器(VAE)将 contig 的 k-mer 组成和覆盖度编码到低维空间,再通过聚类生成高质量 MAG,在大型宏基因组数据上表现优异。
安装与配置
# VAMB v5 推荐用 pip 安装(bioconda 版本过旧)
# 创建专用 Python 环境
conda create -n vamb python=3.11 -y
conda activate vamb
# 安装 PyTorch(CPU版本,如有 GPU 则安装对应 CUDA 版本)
pip install torch --index-url https://download.pytorch.org/whl/cpu
# 安装 VAMB v5(当前最新 v5.0.4)
pip install vamb
# 验证安装
vamb --version # 应显示 5.0.4 或更高
python -c "import vamb; print(vamb.__version__)" # Python API 验证
核心用法
第一步:准备组装文件和 BAM 文件
# VAMB 需要:
# 1. 组装 fasta(所有样本共组装或单样本)
# 2. 每个样本对应的 BAM 文件(已排序并建索引)
# 示例:3 个样本比对到共组装结果
bwa index coassembly.fa # 建索引
for s in S1 S2 S3; do
bwa mem -t 16 coassembly.fa ${s}_R1.fq.gz ${s}_R2.fq.gz \
| samtools sort -@ 8 -o ${s}.bam # 比对并排序
samtools index ${s}.bam # 建索引
done
第二步:运行 VAMB(经典模式)
# VAMB 经典模式:VAE + DBSCAN 聚类
# --outdir:输出目录(会自动创建)
# --fasta:输入组装 fasta
# --bamfiles:输入 BAM 文件列表
# -o:输出 bin 文件分隔符
# --minfasta:输出 bin 的最小大小(bp)
mkdir -p vamb_out
vamb \
--outdir vamb_out/ \
--fasta coassembly.fa \
--bamfiles S1.bam S2.bam S3.bam \
-o C \
--minfasta 500000 \
-p 16 # 进程数(CPU 核心数)
第三步:VAMB 多拆分模式(大型数据集推荐)
# VAMB v5 引入 TaxVAMB(整合分类信息)和 SemiBin2 集成
# 对于大型数据集(>100 样本),使用多拆分策略
vamb \
--outdir vamb_out/ \
--fasta coassembly.fa \
--bamfiles *.bam \
-o C \
--minfasta 200000 \
--mincontiglength 2000 \ # 最短 contig 过滤
--epochs 500 \ # 训练轮数
--batchsize 256 \ # 批次大小
-p 16
参数详解
| 参数 | 说明 | 默认值 |
|---|
--outdir | 输出目录 | 必填 |
--fasta | 组装 fasta 文件 | 必填 |
--bamfiles | BAM 文件列表 | 必填 |
-o | bin 命名分隔符 | C |
--minfasta | 最小 bin 大小(bp) | 200000 |
--mincontiglength | 最短 contig(bp) | 2000 |
--epochs | VAE 训练轮数 | 500 |
--batchsize | 批次大小 | 256 |
-p | 进程数 | 8 |
--cuda | 使用 GPU 加速 | 关闭 |
实战案例
# 场景:肠道宏基因组多样本 binning(有 GPU)
# GPU 模式安装
pip install torch --index-url https://download.pytorch.org/whl/cu118
# 运行(GPU 加速,速度提升 5-10 倍)
vamb \
--outdir vamb_results/ \
--fasta megahit_coassembly.fa \
--bamfiles sample*.bam \
-o C \
--minfasta 500000 \
--mincontiglength 2000 \
--epochs 500 \
--batchsize 512 \ # GPU 显存充足可用更大 batch
--cuda \ # 启用 GPU
-p 32
# 查看结果
ls vamb_results/bins/*.fna | wc -l # 统计 bin 数量
# 结果文件说明:
# clusters.tsv:聚类结果(contig → bin 映射)
# latent.npy:VAE 编码的低维表示
# bins/:各 bin 的 fasta 文件
常见报错与解决
| 报错信息 | 原因 | 解决方法 |
|---|
CUDA out of memory | GPU 显存不足 | 减小 --batchsize |
No bins produced | contig 过滤太严 | 降低 --minfasta 和 --mincontiglength |
BAM file not sorted | BAM 未排序 | samtools sort 重新排序 |
torch not found | PyTorch 未安装 | pip install torch |
| 训练损失不收敛 | 数据质量差或 epochs 不足 | 增加 --epochs,检查数据 |
速查表
# 安装(pip 方式)
pip install torch vamb
# 基础运行
vamb --outdir out/ --fasta assembly.fa --bamfiles *.bam -o C --minfasta 200000
# GPU 加速运行
vamb --outdir out/ --fasta assembly.fa --bamfiles *.bam -o C --cuda --batchsize 512
# 查看 bin 质量(结合 CheckM2)
checkm2 predict --input vamb_results/bins/ --output checkm2_out/ --threads 16