肿瘤体细胞突变检测流程¶
一句话说明¶
体细胞突变是肿瘤细胞后天获得的、不遗传给后代的突变,检测它们需要用肿瘤样本和配对正常样本对比,把肿瘤独有的突变从遗传背景中"挑"出来。
核心知识点¶
1. 体细胞突变 vs 胚系突变¶
- 胚系突变(germline):从父母遗传来的,全身每个细胞都有(白话:出生自带的)
- 体细胞突变(somatic):后天在某些细胞中发生的,只在肿瘤组织中存在(白话:肿瘤自己攒的)
- 检测关键:必须用 Tumor-Normal 配对分析,排除掉胚系变异
2. 标准分析流程¶
3. 关键工具¶
| 步骤 | 工具 | 说明 |
|---|---|---|
| 比对 | BWA-MEM2 | 快速比对到参考基因组 |
| 去重 | GATK MarkDuplicates | 标记PCR重复 |
| 突变检测 | Mutect2 (GATK) | 配对检测体细胞突变 |
| 过滤 | FilterMutectCalls | 过滤假阳性 |
| 注释 | Funcotator / VEP | 功能注释 |
4. 影响检测灵敏度的因素¶
- 肿瘤纯度:纯度越低,突变信号越弱(白话:肿瘤细胞太少,突变被正常细胞的信号淹没)
- 测序深度:WES 通常 100-200x,panel 需要 500-1000x
- 变异等位基因频率(VAF):VAF 越低越难检测,通常 >5% VAF 才可靠
实战代码¶
# === GATK Mutect2 体细胞突变检测完整流程 ===
# 0. 变量定义
REF="hg38.fa" # 参考基因组
TUMOR_BAM="tumor_sorted_dedup.bam" # 肿瘤样本BAM
NORMAL_BAM="normal_sorted_dedup.bam" # 配对正常样本BAM
PON="pon.vcf.gz" # Panel of Normals
GNOMAD="af-only-gnomad.hg38.vcf.gz" # gnomAD人群频率
# 1. Mutect2 检测体细胞突变
gatk Mutect2 \
-R $REF \ # 参考基因组
-I $TUMOR_BAM \ # 肿瘤BAM
-I $NORMAL_BAM \ # 正常BAM
-normal normal_sample_name \ # 正常样本名称
--germline-resource $GNOMAD \ # 人群频率过滤胚系变异
--panel-of-normals $PON \ # 正常人panel减少噪音
--f1r2-tar-gz f1r2.tar.gz \ # 方向偏差数据
-O raw_somatic.vcf.gz # 原始结果
# 2. 学习方向偏差模型(去除FFPE伪影)
gatk LearnReadOrientationModel \
-I f1r2.tar.gz \ # 方向偏差数据
-O orientation_model.tar.gz # 输出模型
# 3. 计算样本污染
gatk GetPileupSummaries \
-I $TUMOR_BAM \ # 肿瘤BAM
-V $GNOMAD \ # 人群频率
-L $GNOMAD \ # 限制区域
-O tumor_pileup.table # 输出pileup
gatk CalculateContamination \
-I tumor_pileup.table \ # 肿瘤pileup
-O contamination.table \ # 污染估计
--tumor-segmentation segments.table # 肿瘤分段
# 4. 过滤假阳性
gatk FilterMutectCalls \
-R $REF \ # 参考基因组
-V raw_somatic.vcf.gz \ # 原始VCF
--contamination-table contamination.table \ # 污染信息
--tumor-segmentation segments.table \ # 分段信息
--ob-priors orientation_model.tar.gz \ # 方向偏差模型
-O filtered_somatic.vcf.gz # 过滤后结果
# 5. 提取 PASS 的突变
bcftools view -f "PASS" \ # 只保留PASS
filtered_somatic.vcf.gz \ # 输入
-o final_somatic.vcf.gz # 最终结果
# 6. 功能注释(VEP)
vep --input_file final_somatic.vcf.gz \ # 输入VCF
--output_file annotated.vcf \ # 输出注释VCF
--cache \ # 使用本地缓存
--assembly GRCh38 \ # 基因组版本
--pick \ # 每个变异只选一个转录本
--vcf # VCF输出格式
面试常问点¶
★ 为什么体细胞突变检测需要配对正常样本?¶
参考答案:因为每个人都有大量的胚系变异(约 400-500 万个 SNP),如果只看肿瘤样本,无法区分哪些是遗传来的、哪些是肿瘤后天获得的。配对正常样本提供了个体的遗传背景,体细胞突变 = 肿瘤中有但正常组织中没有的变异。没有配对样本时可以用 tumor-only 模式,但假阳性率会高很多。
★ Panel of Normals (PoN) 是什么?¶
参考答案:PoN 是用一组正常样本(通常 40 个以上)调用出来的变异合集。它不是用来找真正的变异,而是收集技术噪音——比如测序平台特有的系统性错误、比对工具在特定区域的假阳性。在 Mutect2 中使用 PoN 可以显著减少这类技术伪影造成的假阳性。
★ FFPE 样本为什么需要特殊处理?¶
参考答案:FFPE(福尔马林固定石蜡包埋)是临床样本最常见的保存方式,但甲醛固定会导致 DNA 脱氨基(C→U→T),产生大量 C>T / G>A 假突变。Mutect2 通过 LearnReadOrientationModel 学习方向偏差模型来识别这类伪影——真正的突变在正向和反向读段中应该均匀出现,而 FFPE 伪影通常只出现在一个方向。
速查卡片¶
| 问题 | 答案 |
|---|---|
| 核心工具 | GATK Mutect2 |
| 配对分析 | Tumor vs Normal(必须) |
| WES 推荐深度 | Tumor 100-200x, Normal 50-80x |
| Panel 推荐深度 | 500-1000x |
| PoN 作用 | 去除技术噪音假阳性 |
| gnomAD 作用 | 过滤常见胚系变异 |
| FFPE 伪影 | C>T 方向偏差 |
| VAF | 变异等位基因频率 |
| 注释工具 | VEP / Funcotator |
| 其他检测工具 | Strelka2, VarScan2, MuSE |