注释与 MAF 文件
FilterMutectCalls 输出的 VCF 只告诉你“某条染色体的某个位置由 C 变成了 T”。要知道它落在哪个基因、改变了哪个氨基酸,需要注释。注释后的结果再整理成 MAF:每行一个突变的表格,后面所有的队列分析都从它开始。
从位点到蛋白:变异的后果
编码外显子中每三个碱基组成一个密码子,对应一个氨基酸。一个变异可能:
- 换成另一个氨基酸:错义(missense);
- 变成终止密码子,使蛋白提前截短:无义(nonsense);
- 不改变氨基酸:同义(silent);
- 插入或缺失的碱基数不是 3 的倍数,下游阅读框全部错位:移码(frameshift);是 3 的倍数则为框内插入或缺失(in-frame);
- 落在外显子边界的剪接供体或受体位点,可能打乱剪接:剪接位点(splice site)。
VEP 逐个转录本给出每个变异的后果,还可以加入人群频率等信息。一个基因常有多个转录本,同一个变异在不同转录本上的蛋白坐标可能不同。vcf2maf 调用 VEP 之后,为每个变异选定一个转录本(默认偏向典型转录本)写进 MAF。
一张 MAF 表
MAF(Mutation Annotation Format)是制表符分隔的文本,每行是一个样本中的一个变异。上面的组件读入的是 maftools 自带的真实 TCGA-LAML MAF,可以按基因和类型筛选。读表时先认识这几列:
| 列 | 含义 |
|---|---|
| Hugo_Symbol | 基因名 |
| Chromosome、Start_Position | 位置(这份数据为 GRCh37) |
| Reference_Allele、Tumor_Seq_Allele2 | 参考碱基与肿瘤中的变异碱基 |
| Variant_Classification | 后果分类,如 Missense_Mutation、Frame_Shift_Ins |
| Variant_Type | SNP、INS、DEL 等 |
| Tumor_Sample_Barcode | 样本编号 |
不同来源的 MAF 列名并不完全一致:GDC 的 MAF 用 HGVSp_Short 记录蛋白改变,用 t_ref_count / t_alt_count 记录 reads 数;这份较早的 LAML MAF 把蛋白改变放在 Protein_Change 列,VAF 放在 i_TumorVAF_WU 列。
从 MAF 到 maftools 对象
maftools 的 read.maf 读入 MAF,并按样本和基因汇总。它默认只把 9 类改变蛋白的变异计为非同义突变:错义、无义、移码插入和缺失、框内插入和缺失、剪接位点、起始密码子突变、终止密码子丢失。Silent、UTR、内含子等另行保存,不进入 oncoplot 和 TMB。临床表也在这一步接上,后面的富集和生存分析都要用到它。
在 LAML 中,MAF 里有 193 个样本,临床表有 200 行。MAF 只列出有突变记录的样本,多出来的这几个并不是“缺失数据”,第 11 章会讲它们在生存分析中该怎样算。
常见误区
- 混用不同转录本的蛋白坐标。 同一个突变在两篇文章里位置不同,往往是转录本不同,而不是两个不同的突变。
- 非同义的口径不一致。 把 Silent 算进去,或者漏掉剪接位点,都会改变突变频率和 TMB,跨研究比较前先确认口径。
- 以为 MAF 包含了全部测序样本。 没有任何突变的已测序样本不会出现在 MAF 里,样本总数要从样本清单或临床表另外记录。