跳转至

肿瘤基因组拷贝数变异 CNV


一句话说明

肿瘤基因组经常出现某些区域拷贝数异常增多(扩增)或减少(缺失),这些拷贝数变异(CNV)可以激活癌基因或失活抑癌基因,是肿瘤分析中仅次于突变检测的第二大分析内容。


核心知识点

1. 基本概念

  • CNV(Copy Number Variation):基因组某区域的拷贝数偏离正常二倍体的状态
  • 扩增(amplification):拷贝数增加,如 HER2 扩增(白话:某个基因的"印刷份数"多了)
  • 缺失(deletion):拷贝数减少,纯合缺失 = 两份都丢了
  • LOH(杂合性丢失):一条同源染色体的区域丢失,只剩另一条
  • CN-LOH:拷贝数中性的 LOH(一条丢了但另一条复制了,总数不变)

2. 肿瘤 CNV 检测的特殊性

  • 肿瘤纯度影响信号强度(纯度低 → CNV 信号弱)
  • 倍性影响基线(四倍体肿瘤的"正常"是 4 不是 2)
  • 亚克隆 CNV:不是所有肿瘤细胞都有相同的 CNV
  • 需要配对正常样本或 Panel of Normals 校正

3. 检测方法与工具

数据类型工具特点
WGSGATK CNV, CNVnator, Control-FREEC全基因组分辨率
WESCNVkit, FACETS, Sequenza外显子区域
PanelPureCN, CNVkit (panel模式)靶向区域
SNP arrayASCAT, PennCNV经典方法

4. 临床重要的 CNV 事件

  • HER2/ERBB2 扩增:乳腺癌靶向治疗(曲妥珠单抗)
  • MYC/MYCN 扩增:多种癌症的不良预后因素
  • CDKN2A 纯合缺失:细胞周期调控丧失
  • EGFR 扩增:胶质母细胞瘤、肺癌
  • 染色体臂级缺失:如 1p/19q 共缺失(少突胶质细胞瘤分子标志)

实战代码

# === CNVkit:WES 肿瘤拷贝数分析(最常用) ===

# 1. 构建参考(用正常样本集合)
cnvkit.py batch \
  tumor.bam \                          # 肿瘤BAM
  --normal normal1.bam normal2.bam \   # 正常样本BAM(多个更好)
  --targets target.bed \               # 外显子靶区域
  --fasta hg38.fa \                    # 参考基因组
  --output-reference normal_ref.cnn \  # 输出参考文件
  --output-dir cnvkit_results/ \       # 输出目录
  --diagram --scatter                  # 生成图表

# 分步运行版本:
# 2. 计算覆盖度
cnvkit.py coverage tumor.bam target.bed -o tumor.targetcoverage.cnn   # 靶区域覆盖
cnvkit.py coverage tumor.bam antitarget.bed -o tumor.antitargetcoverage.cnn  # 非靶区域

# 3. 拷贝数分段(segmentation)
cnvkit.py segment tumor.cnr \          # 输入log2比值
  -o tumor.cns \                       # 输出分段结果
  --method cbs                         # CBS分段算法

# 4. 识别基因级别 CNV
cnvkit.py genemetrics tumor.cnr \      # 基因级别分析
  -s tumor.cns \                       # 分段结果
  -t 0.4 \                            # log2阈值(扩增)
  -m 5 \                              # 最少探针数
  > gene_cnv.txt                       # 输出

# 5. 绘制全基因组散点图
cnvkit.py scatter tumor.cnr \          # log2散点图
  -s tumor.cns \                       # 分段叠加
  -o scatter.pdf                       # 输出PDF

# 6. 绘制染色体图
cnvkit.py diagram tumor.cnr \          # 染色体图
  -s tumor.cns \                       # 分段叠加
  -o diagram.pdf                       # 输出PDF

# 7. 导出分段结果(整数拷贝数)
cnvkit.py call tumor.cns \             # 调用整数拷贝数
  --purity 0.7 \                       # 肿瘤纯度(从FACETS等获得)
  --ploidy 2 \                         # 肿瘤倍性
  -o tumor.call.cns                    # 输出调用结果
# 解析 CNVkit 结果,找临床重要基因的 CNV
import pandas as pd                    # 数据处理

# 读取基因级别 CNV 结果
gene_cnv = pd.read_csv("gene_cnv.txt", sep="\t")

# 定义临床重要基因列表
clinical_genes = {
    "amplification": ["ERBB2", "MYC", "MYCN", "EGFR", "CDK4",
                       "MDM2", "FGFR1", "MET", "CCND1"],
    "deletion": ["CDKN2A", "CDKN2B", "RB1", "PTEN", "TP53",
                  "BRCA1", "BRCA2", "ATM"]
}

print("=== 临床重要基因拷贝数变异 ===")

# 检查扩增(log2 > 0.58 约等于拷贝数 >= 3)
for gene in clinical_genes["amplification"]:
    row = gene_cnv[gene_cnv["gene"] == gene]  # 查找基因
    if not row.empty:                  # 如果找到了
        log2 = row.iloc[0]["log2"]     # 获取log2值
        cn = row.iloc[0].get("cn", 2 * 2**log2)  # 拷贝数
        if log2 > 0.58:               # 扩增阈值
            print(f"  ★ {gene} 扩增: log2={log2:.2f}, CN≈{cn:.1f}")

# 检查缺失(log2 < -1.0 约等于纯合缺失)
for gene in clinical_genes["deletion"]:
    row = gene_cnv[gene_cnv["gene"] == gene]
    if not row.empty:
        log2 = row.iloc[0]["log2"]
        if log2 < -1.0:               # 纯合缺失阈值
            print(f"  ★ {gene} 纯合缺失: log2={log2:.2f}")
        elif log2 < -0.4:             # 杂合缺失阈值
            print(f"  △ {gene} 杂合缺失: log2={log2:.2f}")

面试常问点

★ 肿瘤 CNV 检测和胚系 CNV 检测有什么区别?

参考答案:三个主要区别:(1) 肿瘤 CNV 需要考虑纯度——肿瘤纯度 50% 时,一个拷贝缺失的信号会被稀释一半;(2) 肿瘤可能不是二倍体,需要估计倍性来确定基线;(3) 肿瘤有亚克隆结构,不同细胞群可能有不同的 CNV,导致信号是连续的而非离散的。工具方面,胚系 CNV 用 GATK gCNV、CNVnator 等,肿瘤 CNV 用 CNVkit、FACETS、ASCAT 等专门处理纯度/倍性的工具。

★ log2 ratio 和拷贝数是什么关系?

参考答案:log2 ratio = log2(肿瘤覆盖度 / 正常覆盖度)。在纯度 100% 的二倍体肿瘤中:拷贝数 2(正常)→ log2=0;拷贝数 1(杂合缺失)→ log2=-1;拷贝数 0(纯合缺失)→ log2=-∞;拷贝数 3(单拷贝增加)→ log2=0.58;拷贝数 4→ log2=1。但实际肿瘤纯度 <100% 时信号会被稀释,需要用纯度校正后才能得到真实拷贝数。


速查卡片

问题答案
CNV 定义基因组区域拷贝数偏离正常
常用工具(WES)CNVkit, FACETS
常用工具(WGS)Control-FREEC, GATK CNV
分段算法CBS (Circular Binary Segmentation)
log2=0正常拷贝数(2)
log2=1拷贝数翻倍(4)
log2=-1杂合缺失(1)
临床重要扩增HER2, MYC, EGFR
临床重要缺失CDKN2A, RB1, PTEN
纯度校正必须,否则信号被稀释