跳转至

肿瘤驱动基因鉴定


一句话说明

肿瘤基因组里有成千上万个突变,但大部分是"搭车客"(passenger),真正驱动肿瘤发生发展的"驾驶员"(driver)基因只有少数几个,鉴定它们是精准治疗的基础。


核心知识点

1. 驱动基因 vs 乘客突变

  • Driver(驱动突变):直接促进肿瘤发生、生长或转移的突变(白话:引发火灾的火柴)
  • Passenger(乘客突变):肿瘤发展过程中随机积累的、无功能意义的突变(白话:火灾现场被烧毁的家具,是结果不是原因)
  • 典型肿瘤:2-8 个驱动突变 + 数千个乘客突变

2. 驱动基因鉴定方法

方法原理代表工具
频率法某基因突变频率显著高于背景MutSigCV, MuSiC
功能影响法突变对蛋白功能的影响评分OncodriveFML, CHASM
聚集法突变在蛋白结构上聚集(hotspot)OncodriveCLUSTL, e-Driver
网络法突变富集在特定通路/网络NetSig, DriverNet
机器学习法综合多种特征预测DriverML, MOAT

3. 关键数据库

  • COSMIC:最全的肿瘤体细胞突变数据库
  • OncoKB:临床可操作的肿瘤基因注释(MSK 维护)
  • CIViC:社区驱动的临床变异注释
  • CGC(Cancer Gene Census):已确认的癌基因/抑癌基因列表
  • IntOGen:系统性驱动基因鉴定结果

4. 驱动基因的两种类型

  • 癌基因(Oncogene):功能获得性突变激活(白话:油门踩到底)
  • 特征:热点突变、同一密码子反复突变
  • 例子:KRAS G12D, BRAF V600E, EGFR L858R
  • 抑癌基因(Tumor Suppressor):功能丧失性突变失活(白话:刹车坏了)
  • 特征:截断突变分散分布、纯合缺失、LOH
  • 例子:TP53, RB1, PTEN

实战代码

# === 使用 MutSigCV 鉴定驱动基因 ===

# 1. 准备输入文件(MAF 格式)
# MAF 文件包含所有样本的突变信息
# 通常从 Mutect2 → VEP → maf_tools 转换

# 2. 运行 MutSigCV(MATLAB 版本)
# MutSigCV 需要三个输入:突变文件、覆盖度文件、协变量文件
matlab -nodisplay -r \
  "MutSigCV('mutations.maf', 'coverage.txt', \
   'covariates.txt', 'mutsig_output')"

# === 使用 dNdScv(R包,更现代的方法) ===
# === dNdScv:基于 dN/dS 的驱动基因鉴定 ===
library(dndscv)                        # 加载dNdScv包

# 1. 准备输入数据(最少4列)
# sampleID, chr, pos, ref, alt
mutations <- read.table(               # 读取突变文件
  "somatic_mutations.txt",             # 突变文件
  header = TRUE                        # 有表头
)

# 2. 运行 dNdScv
result <- dndscv(                      # 运行分析
  mutations,                           # 突变数据
  refdb = "hg38",                      # 参考基因组版本
  max_muts_per_gene_per_sample = 3,    # 每样本每基因最多3个突变
  max_coding_muts_per_sample = 5000    # 每样本最多编码突变数
)

# 3. 查看显著驱动基因(q值<0.1)
sig_genes <- result$sel_cv             # 基因选择结果
sig_drivers <- sig_genes[
  sig_genes$qallsubs_cv < 0.1,        # 全局q值<0.1
]
print(sig_drivers[, c("gene_name",     # 打印基因名
                       "n_syn",         # 同义突变数
                       "n_mis",         # 错义突变数
                       "n_non",         # 无义突变数
                       "wmis_cv",       # 错义dN/dS
                       "wnon_cv",       # 无义dN/dS
                       "qallsubs_cv")]) # q值

# 4. 判断驱动类型(癌基因 vs 抑癌基因)
for (i in 1:nrow(sig_drivers)) {       # 遍历每个驱动基因
  gene <- sig_drivers$gene_name[i]     # 基因名
  wmis <- sig_drivers$wmis_cv[i]       # 错义dN/dS
  wnon <- sig_drivers$wnon_cv[i]      # 无义dN/dS

  if (wmis > 1 & wnon <= 1) {         # 错义高、无义不高
    cat(gene, "→ 可能是癌基因\n")      # 功能获得型
  } else if (wnon > 1) {              # 无义突变显著
    cat(gene, "→ 可能是抑癌基因\n")    # 功能丧失型
  }
}
# 使用 OncoKB API 注释驱动突变的临床意义
import requests                        # HTTP请求库
import pandas as pd                    # 数据处理

def annotate_oncokb(mutations_df, token):
    """用 OncoKB 注释突变的临床可操作性"""
    url = "https://www.oncokb.org/api/v1/annotate/mutations/byProteinChange"
    headers = {"Authorization": f"Bearer {token}"}  # API密钥

    results = []                       # 存储注释结果
    for _, row in mutations_df.iterrows():  # 遍历突变
        params = {
            "hugoSymbol": row["gene"],     # 基因名
            "alteration": row["protein_change"],  # 蛋白变化
            "tumorType": row["cancer_type"],      # 癌种
        }
        resp = requests.get(url, headers=headers, params=params)
        if resp.status_code == 200:    # 请求成功
            data = resp.json()
            results.append({
                "gene": row["gene"],
                "mutation": row["protein_change"],
                "oncogenic": data.get("oncogenic", ""),      # 是否致癌
                "level": data.get("highestSensitiveLevel", ""),  # 最高证据等级
                "drugs": data.get("treatments", [])           # 对应药物
            })
    return pd.DataFrame(results)       # 返回注释表

# 使用示例
# result = annotate_oncokb(mutations, "YOUR_ONCOKB_TOKEN")

面试常问点

★ 怎么区分驱动突变和乘客突变?

参考答案:主要看三个维度:(1) 频率——驱动突变在大量肿瘤样本中反复出现(如 BRAF V600E 在 ~50% 黑色素瘤中出现),乘客突变是随机的;(2) 功能影响——驱动突变通常影响蛋白关键功能域,改变蛋白活性;(3) 正选择信号——驱动突变的非同义/同义比(dN/dS)显著 >1,说明受到正选择。工具如 MutSigCV 和 dNdScv 就是通过统计方法综合判断。

★ dN/dS 比值在驱动基因鉴定中的作用?

参考答案:dN/dS 是非同义突变率(dN)与同义突变率(dS)的比值。同义突变不改变蛋白序列,被认为是中性的(作为背景突变率)。如果一个基因的 dN/dS > 1,说明非同义突变频率超过预期,受到了正选择——这是驱动基因的标志。如果 dN/dS ≈ 1,说明中性进化(乘客基因)。如果 dN/dS < 1,说明受到负选择(对细胞有害的突变被淘汰了)。


速查卡片

问题答案
驱动基因直接促进肿瘤发展的关键基因
乘客突变随机积累、无功能意义
典型驱动突变数2-8 个/肿瘤
频率法工具MutSigCV, MuSiC
dN/dS 方法dNdScv
临床注释库OncoKB, CIViC
癌基因特征热点突变、功能获得
抑癌基因特征截断突变分散、功能丧失
常见驱动基因TP53, KRAS, EGFR, BRAF, PIK3CA
MAF 格式Mutation Annotation Format