第 5 章从 reads 到数据
体细胞突变检测
有了肿瘤和正常两份 BAM,体细胞突变检测要回答的是:在每个位点上,肿瘤里多出来的那个碱基,是肿瘤获得的突变、遗传来的胚系变异,还是实验和测序留下的假象?GATK 的 Mutect2 先找出候选,再用一系列过滤把假象剔掉。
在一个位点上数 reads
把覆盖同一位点的 reads 竖着叠起来,就是 pileup。数出其中带变异碱基的支持 reads,除以总 reads 数,就得到 VAF。肿瘤和正常并排看,三种情况一目了然:
- 两边都约 50%(或都约 100%):胚系变异。
- 肿瘤中有、正常中几乎没有:体细胞突变候选。
- 只有寥寥几条 reads 支持,而且都朝同一个方向、都挤在 read 末端,或者都是低质量碱基:多半是假象。
Mutect2 以肿瘤–正常配对模式运行。它先找出可能有变异的活跃区域,在区域内对 reads 做局部组装,得到候选单倍型,再分别评估这个变异在肿瘤中存在的证据,以及它在正常样本中是否也存在。两份辅助资源帮它排除胚系变异和常见假象:
- 正常样本集(PoN):用同一试剂盒、同一流程处理的一批正常样本,在其中反复出现的位点多半是技术假象。
- 胚系人群频率库(如 gnomAD):人群中常见的变异更可能是胚系。正常样本测得浅时,这个先验尤其重要。
预期 VAF 与过滤:哪些是假象
在示意组件里调整纯度、深度和突变状态。正常样本里始终没有 alt reads;克隆性杂合突变在肿瘤中的期望 VAF 约为纯度 / 2,只存在于一半肿瘤细胞的亚克隆突变再减半。所以 VAF 15% 既可能是纯度 30% 的克隆性突变,也可能是纯度 60% 时的亚克隆突变,单看 VAF 分不出来。深度越浅,本次抽样看到的 VAF 离期望值越远。“两个拷贝(LOH)”这一项展示了杂合性丢失:带突变的那一份被保留下来,VAF 升到约等于纯度。更一般的拷贝数改变会让体细胞突变高于或低于纯度 / 2,也会让胚系杂合位点在肿瘤中偏离 50%。
Mutect2 之后,最佳实践还有三步:
- LearnReadOrientationModel:利用 Mutect2 运行时收集的 F1R2/F2R1 计数,学习读段方向偏好,识别 FFPE 脱氨(C>T)和 8-oxoG 氧化(G>T)造成的假象。
- CalculateContamination:以 GetPileupSummaries 在常见胚系 SNP 上的统计为输入,估计样本中混入他人 DNA 的比例,即交叉污染。
- FilterMutectCalls:综合前两步的结果,再检查链偏好、支持 reads 是否太少、比对质量、变异是否总在 read 末端、是否与 PoN 或正常样本重合等,给每个候选标上 PASS 或具体的过滤原因。
常见误区
- 把 VCF 里每一行都当作突变。 只有 FILTER 为 PASS 的才通过了过滤,没通过的行仍然留在文件里。
- 借用别的平台的 PoN。 PoN 记录的是特定试剂盒和流程的系统假象,换了试剂盒就失去大部分作用。
- 把人群频率当成 VAF。 gnomAD 的频率描述人群,VAF 描述一个样本里的 reads,两者含义完全不同。
- 低 VAF 一律删除。 硬性的 VAF 下限会删掉低纯度样本和亚克隆里的真实突变,应先看方向偏好、支持 reads 和样本纯度。