BaizeGen 使用手册 手册版本 2026-11-09

体细胞变异检测#

本章介绍用 GATK Mutect2 流程检测体细胞 SNV 和 indel,支持肿瘤–正常配对(T/N)和仅肿瘤(tumor-only)两种模式。BaizeGen 的 mutect2 及其配套工具是 GATK 4.6.2 Mutect2 流程的移植,包括 FilterMutectCalls 的全部过滤器、读段方向偏好(F1R2)模型和样本污染估计。

一致性说明

体细胞流程按 GATK 的算法实现,结果与 GATK 高度一致,但不像胚系流程那样保证逐条记录相同。mutect2 -t N 与 -t 1、--device gpu 与 CPU 的输出逐字节相同。

肿瘤 BAM(+ 正常 BAM)
→
mutect2原始候选
--f1r2 读段方向计数
→
learnreadorientationmodel
getpileupsummaries
calculatecontamination
→
filtermutectcalls过滤
→
体细胞 VCFFILTER 列已填写

概述#

所需输入#

  • 肿瘤样本的 BAM,以及(配对模式下)同一个体正常样本的 BAM。BAM 需按坐标排序、标记重复并带索引,可按胚系流程的第 1、3 步生成。
  • 参考基因组 FASTA,需要 .fai 和 .dict。
  • 推荐的资源文件(bgzip 压缩并带 tabix 索引):
    • GERMLINE_RESOURCE:带 INFO/AF 的人群频率 VCF(如 gnomAD af-only),用作胚系变异先验。
    • PON:Panel of Normals,由一组正常样本得到的系统性假阳性位点。
    • COMMON_SNPS:带 INFO/AF 的常见双等位 SNP 位点,用于估计污染。

流程步骤#

  1. mutect2:检测原始体细胞候选变异,同时输出 F1R2 计数。
  2. learnreadorientationmodel:从 F1R2 计数学习读段方向偏好(如 FFPE、氧化损伤)的先验。
  3. getpileupsummaries + calculatecontamination:估计样本间污染比例。
  4. filtermutectcalls:综合以上结果过滤候选变异。

分步说明#

1. 检测原始候选变异#

肿瘤–正常配对:

baizegen-gpu mutect2 --device gpu -R REFERENCE \
    -I TUMOR_BAM -I NORMAL_BAM --normal-sample NORMAL_SAMPLE_NAME \
    --germline-resource GERMLINE_RESOURCE --panel-of-normals PON \
    --f1r2 F1R2_COUNTS -t NUMBER_THREADS -O UNFILTERED_VCF

仅肿瘤:

baizegen-gpu mutect2 --device gpu -R REFERENCE -I TUMOR_BAM \
    --germline-resource GERMLINE_RESOURCE --panel-of-normals PON \
    --f1r2 F1R2_COUNTS -t NUMBER_THREADS -O UNFILTERED_VCF
  • TUMOR_BAM、NORMAL_BAM:分别给出即可,无需事先合并,肿瘤在前。
  • NORMAL_SAMPLE_NAME:正常样本 BAM 读组中的 SM 名称。肿瘤样本名默认取另一个样本,也可以用 --tumor-sample 指定。
  • F1R2_COUNTS:F1R2 计数文件,供下一步使用。
  • UNFILTERED_VCF:原始候选 VCF(.vcf 或 .vcf.gz)。同时写出统计文件 UNFILTERED_VCF.stats,过滤时会自动读取。
  • 只分析部分区域时用 -L chr:start-end(可重复);外显子 / panel 数据建议按染色体或捕获区域限定。
  • CPU 版去掉 --device gpu。-t N 按 1 Mb 区块并行,峰值内存约为 N × 最深区块所需;内存紧张时减小 --chunk-size。

2. 学习读段方向偏好模型#

baizegen learnreadorientationmodel -I F1R2_COUNTS -O ORIENTATION_PRIORS

-I 可以重复,多个分区域运行的计数会被合并。

3. 估计样本污染#

baizegen getpileupsummaries -I TUMOR_BAM  -V COMMON_SNPS -O TUMOR_PILEUPS
baizegen getpileupsummaries -I NORMAL_BAM -V COMMON_SNPS -O NORMAL_PILEUPS    # 仅配对模式
baizegen calculatecontamination -I TUMOR_PILEUPS [-matched NORMAL_PILEUPS] \
    -O CONTAMINATION_TABLE [-segments SEGMENTS_TABLE]
  • TUMOR_PILEUPS、NORMAL_PILEUPS:常见 SNP 位点上的参考 / 变异 reads 计数表。
  • CONTAMINATION_TABLE:污染比例估计,供过滤使用。
  • -matched:用正常样本确定位点的基因型(配对模式推荐)。

4. 过滤#

baizegen filtermutectcalls -V UNFILTERED_VCF -R REFERENCE \
    --ob-priors ORIENTATION_PRIORS --contamination-table CONTAMINATION_TABLE \
    -O FILTERED_VCF
  • 输出 FILTERED_VCF 中通过过滤的记录 FILTER 为 PASS,其余记录标明未通过的过滤器(如 weak_evidence、germline、orientation、contamination、clustered_events、strand_bias、panel_of_normals 等)。
  • --ob-priors 启用读段方向过滤器,此时必须给 -R。
  • 统计文件默认读取 UNFILTERED_VCF.stats,也可以用 --stats 指定。

全部参数见体细胞变异工具参考。

BaizeGen 使用手册 · 手册版本 2026-11-09。命令行参数以所用版本的 baizegen <命令> --help 为准。