3. 第3章

3.1 为什么WES也能做CNV?

很多人以为全外显子组测序只适合找点突变,CNV 得靠芯片或 WGS。

其实不是这样。

WES 在捕获目标区域时,测序深度和拷贝数之间有个近似线性关系。说白了,一个区域如果发生了重复,比对到该区域的 reads 数就会比正常样本高出一截;如果发生了缺失,深度就会明显掉下去。你想想看,这本质上和芯片的信号强度是一个道理——只不过信号源从荧光强度变成了 read 计数。

我记得刚接触这个方向时,有个临床样本的 WES 数据在 MECP2 外显子区域深度异常低。起初我以为是捕获失败,后来换了两个分析工具跑了一遍,确认是一个半合子缺失。拿 qPCR 一验证,果然没错。那次之后,我就养成了一个习惯:每个 WES 样本都会顺手跑一下 CNV 分析。

当然,WES-CNV 有它的硬伤——只能看到捕获区域内的拷贝数变化。内含子、启动子、基因间区一概看不见。而且探针密度低的区域,分辨率会急剧下降。所以它不是万能的,但用好了确实能多捞不少信息。

3.2 WES-CNV 分析核心流程

我个人习惯把 WES-CNV 的分析拆成五个步骤。每一步都有坑,踩过才知道怎么绕。

  1. 深度提取:从 BAM 文件里捞出每个目标区域的原始 read 计数。工具有 samtools depth、GATK DepthOfCoverage,也可以用工具自带的提取模块。
  2. 归一化:这一步是灵魂。GC 含量、捕获效率、文库大小、批次效应……各种偏差都得校正。不做归一化直接跑,你会得到一堆假阳性。
  3. 分段检测:用 HMM 或 CBS 算法扫描整个外显子组,找出深度发生连续变化的区间。XHMM 用 HMM,CODEX2 用泊松模型,思路不同但目标一致。
  4. CNV 呼叫:根据分段结果给每个区间打分,判断是 duplication 还是 deletion,并估算拷贝数。
  5. 过滤与注释:去掉低质量、探针稀疏、重复区域和常见多态性位点。剩下的用 ACMG 标准做临床注释。

DECoN 是我最早用的 WES-CNV 工具,它对单样本分析比较友好。一个典型的工作流大概长这样:

library(DECoN)

bam_list <- "samples.bam.list"
bed_file <- "target_regions.hg38.bed"
fasta_file <- "hg38.fa"

results <- DECoN(
  bam_file_list = bam_list,
  bed_file = bed_file,
  fasta = fasta_file,
  output_dir = "./decon_output"
)

head(results$CNV_calls)

我的建议是,跑完后一定要看 BED 区域的覆盖度分布。如果一个样本的 median depth 比其他样本低太多,那它很可能是个 outlier,直接放进分析会污染整个队列。

3.3 WGS-CNV 分析的优势

WGS 做 CNV 的好处很直观——全基因组全覆盖,没有捕获偏好。

  • 断点精度高:WGS 的 reads 是连续分布的,CNV 的断点可以精确定位到单碱基级别。这对判断 tandem duplication 还是 inverted duplication 非常关键。
  • 可检测小 CNV:在 30× 深度下,WGS 能稳定检出 1–5 kb 的 CNV,而 WES 受探针间隔限制,通常只能看到 3 个以上连续外显子的变化。
  • 多种信号互补:read depth、paired-end 不一致、split-read、B-allele frequency……WGS 可以把这些信号综合起来,假阳性率比单一信号低很多。

工具方面,CNVnator 纯用 read depth,DELLY 和 Manta 用 paired-end + split-read,Lumpy 可以整合多种信号。我个人习惯先跑 CNVnator 做初筛,再用 Manta 做精修。

3.4 WES vs WGS:关键参数对比

选择哪种技术,不只取决于预算。下面这个表是我在实际项目中总结的参考维度:

对比维度 WES-CNV WGS-CNV
覆盖区域 仅外显子及侧翼 ±50 bp 整个基因组
分辨率下限 3–5 个连续外显子(≈ 1–2 kb) 1–5 kb(30×);可低至 500 bp(60×)
断点精度 ± 一个外显子 ± 1–2 个碱基
批次效应敏感度 高(捕获批次、试剂批次) 低
单样本分析 困难,需要队列做归一化 可行,可借助公共参考
计算资源 低(仅外显子区域) 高(30–40 GB RAM,多核)
每样本测序成本 低 高(约 3–5 倍 WES)

核心原则:如果只关注已知疾病基因的编码区 CNV,WES 够用。如果需要探索非编码区域、检测小 CNV 或精确定位断点,WGS 是更好的选择。

WES vs WGS:CNV 检测流程对比 WES-CNV 路径 捕获区域测序数据 区域深度提取 GC偏差归一化 HMM分段检测 CNV呼叫与过滤 WGS-CNV 路径 全基因组测序数据 全基因组深度统计 全局归一化 断点检测分析 CNV呼叫与精修 临床 CNV 解读与报告

3.5 实战避坑指南

做 CNV 分析这些年,我踩过的坑可以列一长串。有几个特别典型的,写出来希望你能绕开。

批次效应是 WES-CNV 的头号敌人。不同捕获批次、不同试剂盒、不同测序 run 之间,深度分布可以差 20–30%。如果不做严格校正,这些差异会被误检测为 CNV。我经历过一次:同一个样本在两个批次里跑出了完全相反的 CNV 结果——一个叫 duplication,一个叫 deletion。最后发现就是批次效应在作祟。

避坑要诀:

  • 尽量把病例和对照在同一个批次里处理和测序。
  • 使用 CODEX2 或 DECoN 内置的 PCA 归一化,把批次主成分回归掉。
  • 跑完 CNV 呼叫后,用 IGV 手动看深度分布——假阳性在可视化层面通常很显眼。

对照样本的选择:WES-CNV 分析至少需要 20 个对照样本。对照最好来自同一捕获批次,测序深度相近。如果对照不足,可以借用公开数据集(如 1000 Genomes WES),但要小心平台差异。

还有一个容易被忽视的点——性别染色体。男性样本的 X 染色体深度天然是女性的一半,如果不做性别归一化,X 染色体上会跑出大量假阳性缺失。我记得第一次跑队列时没注意这个,结果 X 染色体上冒出来几十个 CNV,当时还以为是发现了什么新热点……后来发现纯粹是性别没校正。

最后,验证策略不能省。WES-CNV 的阳性预测值一般在 60–80%,所以临床报告前建议用 qPCR、MLPA 或 digital PCR 做正交验证。尤其是那些落在重复区域或低复杂区的 CNV,假阳性概率更高。