体细胞变异检测#
本章介绍用 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
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 位点,用于估计污染。
- GERMLINE_RESOURCE:带
流程步骤#
mutect2:检测原始体细胞候选变异,同时输出 F1R2 计数。learnreadorientationmodel:从 F1R2 计数学习读段方向偏好(如 FFPE、氧化损伤)的先验。getpileupsummaries+calculatecontamination:估计样本间污染比例。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指定。
全部参数见体细胞变异工具参考。