跳转至

Bowtie2 — 经典短读段比对工具


一句话说明

Bowtie2 是基于 FM 索引的短读段比对工具,内存占用低(约 3.5GB 比对人类基因组),常用于 ChIP-seq、ATAC-seq、宏基因组等不需要剪接比对的场景。


安装与配置

# 方法1:conda 安装(推荐)
conda install -c bioconda bowtie2  # 从 bioconda 安装

# 方法2:直接下载
wget https://github.com/BenLangmead/bowtie2/releases/download/v2.5.4/bowtie2-2.5.4-linux-x86_64.zip
unzip bowtie2-2.5.4-linux-x86_64.zip  # 解压即用

# 验证安装
bowtie2 --version  # 当前最新 2.5.4(2024年)

核心用法

构建索引

# 构建 Bowtie2 索引
bowtie2-build \
  --threads 16 \     # 使用 16 线程加速
  ref.fa \           # 参考基因组 FASTA
  bt2_index          # 索引前缀名
# 生成 .1.bt2 .2.bt2 .3.bt2 .4.bt2 .rev.1.bt2 .rev.2.bt2 六个文件

基本比对

# 双端比对(ChIP-seq / ATAC-seq 常用)
bowtie2 \
  -p 16 \                     # 16 线程
  --very-sensitive \           # 高灵敏度预设(推荐)
  -x bt2_index \               # 索引前缀
  -1 R1.fq.gz \                # Read 1
  -2 R2.fq.gz \                # Read 2
  | samtools sort -@ 4 -o aligned.bam  # 排序输出 BAM

samtools index aligned.bam     # 建 BAM 索引

# 单端比对
bowtie2 -p 16 --very-sensitive -x bt2_index -U reads.fq.gz \
  | samtools sort -o se_aligned.bam

进阶用法

# 宏基因组 — 去除宿主 DNA(保留未比对的读段)
bowtie2 -p 16 \
  -x human_index \             # 人类基因组索引
  -1 R1.fq.gz -2 R2.fq.gz \
  --un-conc-gz unmapped_%.fq.gz \  # 未比对读段输出(即非宿主读段)
  -S /dev/null                 # 不保存比对结果(只需要未比对读段)

# ChIP-seq — 只保留唯一比对
bowtie2 -p 16 \
  -x bt2_index \
  -1 R1.fq.gz -2 R2.fq.gz \
  --no-mixed \                 # 不尝试单独比对一端
  --no-discordant \            # 不报告不一致的配对
  | samtools view -bS -q 30 - \  # 过滤 MAPQ < 30 的低质量比对
  | samtools sort -o chip_filtered.bam

# 本地比对模式(允许读段两端 soft-clip)
bowtie2 -p 16 --very-sensitive-local \
  -x bt2_index \
  -1 R1.fq.gz -2 R2.fq.gz \
  | samtools sort -o local_aligned.bam

# 设置插入片段范围(根据文库实际情况)
bowtie2 -p 16 \
  -x bt2_index \
  -1 R1.fq.gz -2 R2.fq.gz \
  -I 100 \                     # 最小插入片段长度
  -X 700 \                     # 最大插入片段长度
  | samtools sort -o sized.bam

常见问题与踩坑

问题1:比对率很低

原因:默认 end-to-end 模式要求整条读段比对,接头残留或低质量尾部会导致失败
解决:先做质控(fastp/Trim Galore),或使用 --very-sensitive-local 允许 soft-clip

问题2:end-to-end 和 local 模式的区别

说明:end-to-end(默认)要求整条读段比对;local 允许两端被裁剪
选择:质控充分用 end-to-end,有接头残留或融合序列用 local

问题3:插入片段大小估计不准

原因:默认 -X 500 可能不适合你的文库
解决:先用 FastQC 或 Picard 检查实际插入片段分布,然后设置 -I-X

问题4:Bowtie2 vs BWA-MEM 怎么选

建议:全基因组变异检测用 BWA-MEM/BWA-MEM2;ChIP-seq/ATAC-seq/去宿主用 Bowtie2


速查卡片

命令/参数用途
bowtie2-build ref.fa prefix构建索引
bowtie2 -x idx -1 R1 -2 R2双端比对
bowtie2 -x idx -U reads单端比对
--very-sensitive高灵敏度(end-to-end)
--very-sensitive-local高灵敏度(local)
--un-conc-gz输出未比对读段(去宿主)
-I 100 -X 700设置插入片段范围
--no-mixed --no-discordant严格配对模式
-k 10每条读段最多报告 10 个比对
--met-file metrics.txt输出比对统计