BWA-MEM2 — 下一代短读段高速比对工具¶
一句话说明¶
BWA-MEM2 是 BWA-MEM 的加速版本,利用 SIMD 指令集(AVX-512/AVX2/SSE)将短读段比对速度提升 2-3 倍,输出结果与 BWA-MEM 完全兼容。
安装与配置¶
# 方法1:conda 安装(推荐,自动处理依赖)
conda install -c bioconda bwa-mem2 # 从 bioconda 频道安装 bwa-mem2
# 方法2:源码编译安装(需要支持 AVX2 的 CPU)
git clone --recursive https://github.com/bwa-mem2/bwa-mem2 # 克隆仓库(含子模块)
cd bwa-mem2 # 进入目录
make # 编译,自动检测 CPU 指令集
# 验证安装
bwa-mem2 version # 查看版本,当前最新 2.3(2025年)
环境要求¶
- CPU 需支持 SSE4.1 以上指令集(2010 年后的 CPU 基本都支持)
- 索引构建需要约 参考基因组大小 × 8 的内存(人类基因组约 24GB)
核心用法¶
构建索引¶
# 为参考基因组构建索引(只需一次,耗时约 10-15 分钟)
bwa-mem2 index ref.fa # ref.fa 是参考基因组 FASTA 文件
# 会生成 .0123 .amb .ann .bwt.2bit.64 .pac 等索引文件
基本比对(双端测序)¶
# 标准双端比对流程
bwa-mem2 mem \
-t 16 \ # 使用 16 个线程加速
-R '@RG\tID:sample1\tSM:sample1\tPL:ILLUMINA' \ # 添加 read group 信息(GATK 必需)
ref.fa \ # 参考基因组(已建索引)
reads_R1.fq.gz \ # 正向读段(Read 1)
reads_R2.fq.gz \ # 反向读段(Read 2)
| samtools sort -@ 8 -o aligned.bam # 管道排序并输出 BAM 文件
进阶用法¶
# 比对 + 排序 + 标记重复 一步完成
bwa-mem2 mem -t 16 -R '@RG\tID:S1\tSM:S1\tPL:ILLUMINA' ref.fa R1.fq.gz R2.fq.gz \
| samtools fixmate -m -@ 4 - - \ # 填充 mate 信息(标记重复前置步骤)
| samtools sort -@ 4 - \ # 按坐标排序
| samtools markdup -@ 4 - final.bam # 标记 PCR 重复读段
samtools index final.bam # 为 BAM 文件建索引(后续分析必需)
# 单端测序比对(只有一个 FASTQ 文件)
bwa-mem2 mem -t 16 ref.fa reads.fq.gz | samtools sort -o se_aligned.bam
常见问题与踩坑¶
问题1:索引构建时内存不足(killed / MemoryError)¶
原因:人类基因组索引需要约 24GB 内存
解决:在大内存节点上运行,或使用 bwa-mem2 index -p prefix ref.fa 指定输出前缀,确认磁盘空间充足
问题2:输出结果与 BWA-MEM 不完全一致¶
原因:浮点运算精度差异导致极少数读段的 MAPQ 可能略有不同
解决:这是正常现象,不影响下游分析。需要 100% 一致时用原版 BWA-MEM
问题3:运行速度没有明显提升¶
原因:CPU 不支持 AVX2/AVX-512 指令集
解决:lscpu | grep avx 检查 CPU 支持情况,至少需要 SSE4.1
问题4:Read Group 格式错误导致 GATK 报错¶
原因:-R 参数中缺少必要字段或格式不对
解决:确保包含 ID、SM、PL 三个必需字段,用 \t 分隔
速查卡片¶
| 命令 | 用途 |
|---|---|
bwa-mem2 index ref.fa | 构建参考基因组索引 |
bwa-mem2 mem -t 16 ref.fa R1.fq R2.fq | 双端比对 |
bwa-mem2 mem -t 16 ref.fa reads.fq | 单端比对 |
-R '@RG\tID:xx\tSM:xx\tPL:ILLUMINA' | 添加 Read Group |
-M | 标记短 split hit 为次要比对(Picard 兼容) |
-k 19 | 最小种子长度(默认 19) |
-w 100 | band width(默认 100) |
-A 1 -B 4 -O 6 -E 1 | 匹配/错配/开 gap/延伸 gap 罚分 |