跳转至

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 文件必填
--bamfilesBAM 文件列表必填
-obin 命名分隔符C
--minfasta最小 bin 大小(bp)200000
--mincontiglength最短 contig(bp)2000
--epochsVAE 训练轮数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 memoryGPU 显存不足减小 --batchsize
No bins producedcontig 过滤太严降低 --minfasta--mincontiglength
BAM file not sortedBAM 未排序samtools sort 重新排序
torch not foundPyTorch 未安装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