单细胞细胞周期与基因集评分
基因集评分把一组功能相关基因的表达汇总成每个细胞的一个分数,用来量化增殖、缺氧、干性、铜死亡、衰老等通路或状态在单个细胞中的强弱。细胞周期评分是其中最常用的一种:基于 S 期和 G2/M 期标志基因计算两个分数,并推断每个细胞所处的周期阶段,既用于生物学解读,也用于判断是否需要回归细胞周期的影响。常用方法有 Seurat 的 AddModuleScore 与 CellCycleScoring、Scanpy 的 score_genes 与 score_genes_cell_cycle,以及基于基因排序的 UCell 和 AUCell。不同方法对测序深度、基因集大小和数据集组成的敏感程度不同,结论需要结合方法特点解读。
什么时候用
- 判断聚类或 UMAP 结构是否被细胞周期主导,决定是否回归
- 比较肿瘤细胞亚群的增殖活性,识别处于循环中的恶性细胞
- 用铜死亡、铁死亡等自定义基因集给细胞打分并比较组间差异
- 在 UMAP 上展示通路活性梯度,辅助细胞状态注释
- 为轨迹分析或差异分析准备细胞状态协变量
不适合的情况
- 把不同数据集或不同标准化方式得到的分数直接比大小,数值不可比
- 用只有两三个基因的基因集打分,单个基因的 dropout 会主导结果
- 把每个细胞当独立样本检验组间差异,P 值会被细胞数严重夸大
需要准备的数据
- 标准化后的表达矩阵
- Seurat 对象或 h5ad;AddModuleScore 使用标准化后的表达,UCell 基于每个细胞内的基因排序
- 基因集
- 细胞周期可用 Seurat 内置的 cc.genes.updated.2019;通路基因集来自 MSigDB 或文献,命名需与数据一致
- 细胞元数据
- 细胞类型、样本和分组信息,用于分层比较;样本编号用于样本级汇总统计
- 物种信息
- 小鼠等非人物种需把人类基因集做同源基因转换,不能只把基因名改成首字母大写
分析步骤
- 1
整理基因集
统一基因符号版本和物种,统计基因集中有多少基因在数据中检出并有一定表达。检出比例很低时,分数主要由少数基因决定,应考虑换用更合适的基因集。
- 2
计算细胞周期分数
Seurat 用 CellCycleScoring 输入 S 期和 G2/M 期基因,得到 S.Score、G2M.Score 和 Phase;Scanpy 用 score_genes_cell_cycle。两个分数都低的细胞被标为 G1,其中也包括真正的静息细胞。
- 3
判断周期影响
在 PCA 或 UMAP 上按 Phase 和分数着色,看主要成分或某些簇是否按周期阶段分开。只有当周期效应掩盖了细胞类型结构时,才需要考虑回归。
- 4
选择回归策略
要完全去除周期影响,可回归 S.Score 和 G2M.Score;要保留增殖与非增殖细胞的区别、只去除周期内部阶段差异,可回归两者之差。分化体系中常选择后者。
- 5
计算通路分数
AddModuleScore 用基因集平均表达减去表达水平匹配的随机对照基因均值;UCell 基于基因在细胞内的排序计算 Mann-Whitney U 统计量,分数范围在 0 到 1 之间。
- 6
可视化与组间比较
在 UMAP、小提琴图或箱线图上按细胞类型和分组展示分数。组间比较以样本为单位,例如先取每个样本中目标细胞类型的分数中位数,再做检验。
- 7
稳健性检查
用至少两种方法打分,或去掉贡献最大的单个基因后重算,结论方向一致才可靠;同时检查分数与每个细胞检出基因数的相关性,排除质量驱动。
关键参数与决策
对照基因与分箱(AddModuleScore)
默认按平均表达把基因分成 24 个箱(nbin),每个目标基因从同箱抽取对照基因,ctrl 默认 100。基因集很大或数据检出基因少时,对照与目标基因会重叠,分数被压缩。
UCell 的 maxRank
只考虑每个细胞表达排序前若干位的基因,默认 1500。基因集主要由中低表达基因组成时可适当提高;设得过高,分数对测序深度会更敏感。
基因集大小
常用基因集包含十几到上百个基因。基因太少分数噪音大,太多则不同功能混在一起、信号被稀释,可先按文献或共表达拆分成子集分别打分。
周期回归方式
回归全部周期分数会同时去掉增殖信息,回归差值则保留增殖与静息的差异。研究增殖本身或肿瘤恶性程度时,通常不应回归细胞周期。
组间统计单位
应以样本为生物学重复,先在样本内汇总再比较,或用混合效应模型把样本作为随机效应。以细胞为单位的检验只适合描述,不能作为组间结论。
常见错误
- 人类基因集直接用于小鼠数据:大小写转换后仍有不少基因无对应或对应错误,分数只基于少数基因计算,结果失真。
- 在回归周期后的数据上计算增殖分数:回归削弱了周期相关信号,再比较增殖时组间差异会被人为压低。
- 跨数据集比较 AddModuleScore:分数依赖数据集内的对照基因和表达分布,换数据集或标准化方式后,同一细胞类型的分数可能完全不同。
- 把 Phase 标签当作精确的周期阶段:评分只基于少量标志基因,G1 与静息难以区分,S 与 G2/M 交界细胞的分配不稳定,只适合宏观判断。
- 只报告平均分数差异:差异很小但因细胞数多而显著,应同时报告效应量和每个样本的分布,并说明分数只有相对含义。
- 分数与检出基因数强相关却未处理:说明分数主要反映细胞质量或深度,应换用基于排序的方法或在比较中控制质量指标。
结果怎么看
细胞周期 UMAP
按 Phase 或 S.Score、G2M.Score 着色。循环细胞聚成独立簇,说明周期是主要变异来源之一;如果它们只在各细胞类型内部局部聚集,一般不必强行回归。
S 与 G2M 分数散点图
每个点是一个细胞,横纵轴为两种分数。理想情况下 G1 细胞位于原点附近,S 期和 G2/M 期细胞各沿一条轴展开;所有细胞挤成一团,说明周期基因表达弱或数据深度不足。
基因集分数小提琴图
按细胞类型或分组展示分数分布。要看中位数和分布形状,而不只是均值;若某组分数偏高仅来自少数离群细胞,结论应谨慎。
样本级比较图
每个点代表一个样本中目标细胞类型的分数中位数,按组展示并做检验。细胞级显著而样本级不显著时,差异可能只来自个别样本。
基因贡献热图
展示基因集中每个基因在不同细胞群的表达。如果分数差异只由一两个基因驱动,结论更接近单基因表达差异,而不是通路整体活性的改变。
和相近方法怎么选
AddModuleScore 与 UCell
AddModuleScore 用表达匹配的对照基因做背景校正,结果依赖整个数据集的组成;UCell 只用每个细胞内部的排序,单个细胞的分数不随其他细胞变化,更适合合并多数据集或分批计算。
UCell 与 AUCell
两者都基于细胞内的基因排序。AUCell 计算基因集在排序靠前部分的恢复曲线下面积,常配合阈值判断细胞是否激活该基因集;UCell 输出连续分数,基于 Mann-Whitney U 统计量。
单细胞打分与 GSEA、GSVA
GSEA 基于差异排序检验基因集在组间的富集,GSVA、ssGSEA 多用于批量或伪批量样本。需要每个细胞的分数时用单细胞打分;比较组间通路整体变化时,伪批量加 GSEA 更稳健。
细胞周期评分与轨迹分析
周期评分基于标志基因快速给出阶段标签;轨迹或伪时间分析从全转录组推断连续过程。只需评估周期影响时打分足够,研究周期动态则需要专门的周期伪时间方法。
常见问题
AddModuleScore 分数为什么会是负数
分数等于基因集平均表达减去对照基因平均表达,负值表示该细胞中基因集表达低于表达水平相近的随机基因,并不表示通路被抑制到某个绝对程度。分数只在同一数据集的细胞之间比较才有意义。
单细胞分析要不要回归细胞周期
先看周期是否主导了降维和聚类。如果循环细胞被单独聚成一群,干扰了细胞类型识别,可以回归;如果研究增殖或分化过程中的周期退出,回归会去掉重要信号,可改为回归 S 与 G2M 分数之差。
小鼠数据怎么做细胞周期评分
需要把人类 S 期和 G2/M 期基因通过同源关系映射为小鼠基因,常用 biomaRt 等资源完成转换。转换后检查基因在数据中的检出数量,丢失过多时分数会不稳定。
基因集评分结果怎么做统计检验
应以样本为单位比较,例如计算每个样本中目标细胞类型的分数中位数,再用 Wilcoxon 检验或 t 检验比较组间,也可用混合效应模型。直接对成千上万个细胞做检验会得到虚高的显著性。
AddModuleScore 和 UCell 选哪个
单个数据集内部比较时两者都可以;需要合并多个批次或数据集,或担心细胞组成变化影响背景时,UCell 的排序方法更稳定。重要结论建议用两种方法交叉确认。
在 Codar 里怎么做
在 Codar 里说明数据和要评分的基因集后,会确认物种、基因命名、细胞类型和样本分组,读取本地 Seurat 或 h5ad 对象,或下载公开单细胞数据;随后计算 S 期与 G2/M 期分数和周期阶段,评估周期对聚类的影响,按指定基因集计算细胞状态分数并以样本为单位比较组间差异,交付 UMAP 与小提琴图、分数表、统计结果、分析报告和可复现脚本。
我有肺腺癌单细胞数据的 Seurat 对象,想给上皮细胞做铜死亡基因集评分和细胞周期评分,比较肿瘤与癌旁样本差异
