肿瘤克隆结构与进化分析(PyClone)
一个肿瘤并不是均一的细胞团,而是由携带不同突变组合的多个细胞群体(克隆)组成,这种瘤内异质性与耐药、转移和复发密切相关。克隆进化分析的核心是把每个体细胞突变的变异等位基因频率(VAF)结合肿瘤纯度和局部拷贝数,换算成携带该突变的癌细胞比例(CCF),再把 CCF 相近的突变聚为一簇:CCF 接近 1 的簇是所有癌细胞共有的主干事件,其余为亚克隆。PyClone 及其变分推断版本 PyClone-VI 是常用的聚类工具,可联合处理同一病人的多区域或多时间点样本。在聚类基础上再用 ClonEvol、PhyloWGS 等推断进化树,并结合亚克隆拷贝数和全基因组加倍(WGD)的时序判断事件先后。典型数据是肿瘤与正常配对的 WES、WGS 或高深度靶向测序。
什么时候用
- 多区域取材的同一肿瘤,区分主干突变与区域特异的分支突变
- 治疗前后或原发灶与转移灶配对,追踪哪个亚克隆在扩张
- 判断某个驱动突变是克隆性还是亚克隆性,评估靶点覆盖范围
- 推断全基因组加倍发生在关键驱动突变之前还是之后
- 在队列中计算亚克隆数量等异质性指标,再与临床分组比较
不适合的情况
- 没有配对正常或深度很低的数据,VAF 抖动太大,无法稳定换算 CCF
- 肿瘤纯度很低的样本,亚克隆信号与测序噪声难以区分
- 想从单个样本还原唯一确定的进化树,单样本常有多种同样合理的拓扑
需要准备的数据
- 体细胞突变计数
- 每个突变在各样本中的 ref 与 alt reads 数;多样本需对全部位点逐样本重新计数,含 alt 为 0 的位点
- 等位基因特异拷贝数
- 突变所在片段的 major 与 minor 拷贝数,可来自 FACETS、ASCAT 或 Battenberg,坐标版本与突变一致
- 肿瘤纯度
- 每个样本一个纯度值,最好与拷贝数来自同一次拟合,避免两套互相矛盾的估计
- 样本关系信息
- 注明样本所属病人、取材部位和时间点,用于多样本联合聚类、进化树和鱼图的排序
分析步骤
- 1
筛选突变集
从配对调用结果中保留高质量 SNV,去掉低深度、低比对质量、重复序列和 panel of normals 中出现的位点。插入缺失的 VAF 受比对影响大,通常不纳入聚类。多样本时取并集位点在每个样本中重新计数。
- 2
获取拷贝数与纯度
用等位基因特异工具估计纯度、倍性和片段拷贝数,把每个突变映射到所在片段。自查方法:二倍体且无 LOH 区域的克隆性杂合突变,VAF 应接近纯度的一半,偏差很大时先检查纯度拟合。
- 3
换算 CCF
在纯度 p、肿瘤局部总拷贝数 N 和突变拷贝数 m 已知时,CCF = VAF × [p × N + 2 × (1 − p)] ÷ (p × m)。扩增区的 m 不确定,PyClone 系列会对可能的突变拷贝数做概率处理,而非固定取 1。
- 4
运行聚类
用 PyClone-VI 对同一病人的所有样本联合聚类,设定足够大的簇数上限和多次随机重启,取证据下界最高的结果。联合聚类能利用 CCF 在样本间的共变,把单样本中重叠的簇分开。
- 5
亚克隆拷贝数与 WGD
检查拷贝数是否存在非整数状态,Battenberg 等工具可把片段拆成两种克隆拷贝数。在 WGD 样本中,拷贝数为 2 的突变发生在加倍之前,为 1 的多在之后,据此可估计加倍的相对时间。
- 6
构建进化树
用 ClonEvol 等工具按「子簇 CCF 之和不超过父簇」的规则推断父子关系,多样本要在每个样本中都满足。若存在多棵满足约束的树,应全部报告,不要只挑一棵讲故事。
- 7
标注与解读
把已知驱动基因、拷贝数事件和突变特征标到各簇上,判断哪些驱动属于主干,哪些是治疗后新出现的分支。再结合时间点画鱼图,展示各克隆比例的变化。
关键参数与决策
簇数上限
PyClone-VI 通过 -c 设置最大簇数,模型会让多余的簇变空,官方示例使用较大的上限。上限设得太小会把不同亚克隆强行合并,宁可偏大。
计数分布
-d 可选 binomial 或 beta-binomial。真实测序计数常有过度离散,beta-binomial 能减少把噪声拆成多个虚假小簇;深度均匀的高质量数据两者差别不大。
随机重启次数
变分推断容易停在局部最优,-r 设置多次随机重启后取最优解。可以比较不同重启的结果,簇的划分如果差别很大,说明数据本身不足以支撑精细结构。
突变纳入标准
常设最低总深度和最低 alt reads 数,并剔除拷贝数复杂或高度扩增区的突变。标准太宽会引入噪声簇,太严则亚克隆突变数量不足,建议报告纳入标准。
建树容差
CCF 估计本身有误差,ClonEvol 等工具允许和规则存在一定偏离。容差太严可能找不到任何树,太松会得到大量候选树,需要结合多样本信息取舍。
常见错误
- 直接用 VAF 聚类而不校正拷贝数:扩增或 LOH 区的克隆突变 VAF 会偏离预期,被误判为亚克隆,或与真正的亚克隆混在一起。
- 多样本只用各自调用出的突变:某样本未检出可能只是深度不够,当成缺失会制造出虚假的样本特异分支,应强制计数后再判断。
- 把只含少量突变的低 CCF 小簇当作独立亚克隆:WES 对低频突变灵敏度有限,这类簇常是检测下限附近的噪声或中性积累的尾部。
- 纯度估计有偏:纯度偏低会使大量突变 CCF 大于 1,偏高会把克隆突变整体压低成亚克隆,聚类结果随之全部偏移。
- 单样本得出「分支进化」或「线性进化」结论:同一组 CCF 常对应多种拓扑,没有多区域或多时间点数据时应只描述克隆组成。
- 把 CCF 当作克隆的细胞比例直接加总:CCF 描述的是携带某突变的细胞占比,嵌套克隆之间存在包含关系,不能简单相加。
结果怎么看
CCF 分布图与样本间散点图
单样本看 CCF 密度曲线的峰,多样本看两两散点上的点群。主干簇应在所有样本中接近 1;主干簇中心明显低于 1 时,多半是纯度高估或拷贝数映射错误。
聚类结果表
列出每个突变的簇编号、各样本 CCF 及归属概率,并汇总每簇的突变数和平均 CCF。归属概率低或突变数很少的簇不宜用于核心结论。
克隆进化树
节点为克隆,边上标注新获得的驱动事件,根节点是主干克隆。看驱动基因落在主干还是分支;若树的拓扑在不同候选间变化很大,应说明不确定性。
鱼图
横轴为时间点或取材顺序,色块宽度表示各克隆比例,嵌套表示亲子关系。用于展示治疗后哪些克隆被清除、哪些扩张,色块变化需与 CCF 数值一致。
WGD 时序与亚克隆拷贝数图
展示加倍区域中不同突变拷贝数的比例和亚克隆片段位置。加倍前突变占比越高,说明加倍发生得越晚;亚克隆片段较多时,相关突变的 CCF 估计误差也会变大。
和相近方法怎么选
PyClone 与 PyClone-VI
原版 PyClone 用 MCMC 采样,突变数多或样本多时耗时很长,使用 YAML 配置;PyClone-VI 用变分推断,速度快得多,输入为一张 tsv 表,更适合 WGS 规模的突变数。新项目通常直接用 PyClone-VI。
PyClone-VI 与 SciClone、PhyloWGS
SciClone 主要使用拷贝数中性区域的突变,适合拷贝数较简单的肿瘤;PhyloWGS 在聚类的同时推断进化树,并能利用拷贝数事件。只需聚类再单独建树时 PyClone-VI 加 ClonEvol 较灵活。
批量测序推断与单细胞 DNA 测序
批量测序只能通过 CCF 间接推断哪些突变共存,嵌套关系依赖数学约束;单细胞 DNA 测序可直接观察同一细胞内的突变组合,但成本高、等位基因脱扣多。两者常互相验证。
克隆进化分析与肿瘤拷贝数分析
拷贝数分析回答哪些区域扩增或缺失、纯度和倍性是多少;克隆进化分析以这些结果为输入,进一步回答突变属于哪个克隆、事件先后顺序如何。前者是后者的前置步骤。
常见问题
PyClone-VI 的输入文件需要哪些列?
一张 tsv 表,每行是一个突变在一个样本中的记录,主要列为 mutation_id、sample_id、ref_counts、alt_counts、normal_cn、major_cn、minor_cn 和 tumour_content。同一突变在多个样本中各占一行。
算出来的 CCF 大于 1 怎么办?
少量突变略大于 1 属于抽样误差,可截断为 1。若大量突变明显大于 1,通常是纯度被低估、拷贝数映射错误,或突变实际处在扩增拷贝上而按单拷贝计算,应先回头检查纯度和拷贝数。
WES 数据能做克隆进化分析吗?
可以做,但分辨率受深度限制。常规深度的 WES 能较好区分主干克隆和比例较高的亚克隆,低比例亚克隆容易漏检或混入噪声。需要更细结构时,可对候选位点做高深度靶向验证测序。
主干突变和分支突变怎么区分?
在所有区域或时间点中 CCF 都接近 1 的突变属于主干,是最早获得、所有癌细胞共有的事件;只在部分样本中出现或 CCF 明显小于 1 的属于分支。单样本中只能区分克隆性与亚克隆性,无法确认区域特异性。
怎么判断全基因组加倍发生在驱动突变之前还是之后?
看驱动突变在加倍区域的拷贝数:如果突变出现在两份拷贝上,说明它在加倍前就已存在;只在一份拷贝上则多发生在加倍之后。需要可靠的纯度和等位基因特异拷贝数作为前提。
在 Codar 里怎么做
在 Codar 里提供体细胞突变结果和拷贝数、纯度结果,或配对测序数据,并说明样本的病人、部位和时间关系。Codar 确认方案后,把突变 VAF 换算为 CCF 并做克隆结构聚类,推断进化树;同时分析亚克隆拷贝数,判断是否发生全基因组加倍及其相对时序。交付 CCF 分布图、聚类结果表、进化树、鱼图、报告和可复现脚本。
我有 6 例肝癌各 3 个区域的 WES 突变和 FACETS 结果,帮我用 PyClone-VI 推断克隆结构和进化树,并判断 WGD 发生时间