跳转至

单细胞衰老评分

一句话概述

利用SenMayo、CellAge、p16/p21等衰老相关基因集对单细胞RNA-seq数据进行衰老评分,鉴定衰老细胞(senescent cells)及其在组织微环境中的分布和功能影响。


核心知识点总览

知识点关键内容重要程度
细胞衰老标志物p16/p21/SA-β-gal/SASP基因集⭐⭐⭐⭐⭐
SenMayo基因集125基因的综合衰老打分⭐⭐⭐⭐⭐
CellAge数据库已验证的衰老促进/抑制基因⭐⭐⭐⭐
打分方法AUCell/AddModuleScore/ssGSEA/UCell⭐⭐⭐⭐
SASP因子衰老相关分泌表型评估⭐⭐⭐⭐
衰老与TME衰老细胞对肿瘤微环境的影响⭐⭐⭐
多类型衰老OIS/RS/DIS不同诱因的特征⭐⭐⭐
Senolytic靶点衰老清除药物靶标评估⭐⭐⭐

各步骤详解

第一步:细胞衰老的生物学基础

白话解释: 细胞衰老(cellular senescence)是细胞永久退出增殖周期但不死亡的状态。衰老细胞有几个关键特征:表达p16/p21细胞周期抑制因子、分泌大量炎症因子(SASP)、形态变大变扁。它们虽然不分裂了,但通过SASP深刻影响周围细胞和组织微环境。

技术细节: 衰老类型: - 复制性衰老(RS):端粒缩短触发 - 癌基因诱导的衰老(OIS):如RAS突变激活 - DNA损伤诱导的衰老(DIS):化疗/放疗后 - 治疗诱导的衰老(TIS):药物触发

核心分子标志: - 细胞周期停滞:CDKN2A(p16), CDKN1A(p21), TP53, RB1 - SASP:IL6, IL8(CXCL8), CCL2, MMP3, IGFBP7, SERPINE1 - 抗凋亡:BCL2, BCL-XL(BCL2L1) - DNA损伤反应:γH2AX(H2AFX), 53BP1(TP53BP1)

# 衰老标志物基因集定义
senescence_markers <- list(
  cell_cycle_arrest = c("CDKN2A", "CDKN1A", "CDKN2B", "TP53", "RB1"),
  SASP_core = c("IL6", "CXCL8", "CCL2", "MMP3", "MMP1", "IGFBP7",
                "SERPINE1", "IL1A", "IL1B", "CXCL1", "CXCL2"),
  anti_apoptosis = c("BCL2", "BCL2L1", "MCL1", "BIRC5"),
  DDR = c("H2AFX", "TP53BP1", "ATM", "ATR", "CHEK1", "CHEK2")
)

第二步:衰老基因集资源

白话解释: 多个已发表的基因集可用于衰老评分。最常用的是SenMayo(2022年发表,125个基因,基于转录组meta分析)、CellAge数据库(经实验验证的衰老基因列表)和各种SASP基因集。

技术细节:

# === 衰老基因集加载 ===

# 1. SenMayo基因集(Saul et al., 2022, Nature Communications)
# 125个在多种衰老模型中一致上调的基因(原文125个,此处去除重复别名PIGF/PGF后为124个)
senmayo_genes <- c(
  "ACVR1B", "ANG", "ANGPT1", "ANGPTL4", "AREG", "AXL", "BEX3",
  "BMP2", "BMP6", "C3", "CCL1", "CCL13", "CCL16", "CCL2", "CCL20",
  "CCL24", "CCL26", "CCL3", "CCL3L1", "CCL4", "CCL5", "CCL7", "CCL8",
  "CD55", "CD9", "CSF1", "CSF2", "CSF2RB", "CST4", "CTSB", "CTSD",
  "CXCL1", "CXCL10", "CXCL12", "CXCL13", "CXCL14", "CXCL16", "CXCL2",
  "CXCL3", "CXCL8", "DKK1", "EDN1", "EGF", "EGFR", "EREG", "ESM1",
  "ETS2", "FAS", "FGF1", "FGF2", "FGF7", "GDF15", "GEM", "GMFG",
  "HGF", "HMGB1", "ICAM1", "ICAM3", "IGF1", "IGFBP1", "IGFBP2",
  "IGFBP3", "IGFBP4", "IGFBP5", "IGFBP6", "IGFBP7", "IL10", "IL13",
  "IL15", "IL18", "IL1A", "IL1B", "IL2", "IL32", "IL6", "IL6ST",
  "IL7", "INHA", "INHBA", "IQGAP2", "ITGA2", "ITPKA", "JUN", "KITLG",
  "LCP1", "MIF", "MMP1", "MMP10", "MMP12", "MMP13", "MMP14", "MMP2",
  "MMP3", "MMP9", "NAP1L4", "NRG1", "PAPPA", "PECAM1", "PGF",
  "PLAUR", "PLAT", "PLAU", "PTBP1", "PTGES", "RPS6KA5",
  "SCAMP4", "SELPLG", "SEMA3F", "SERPINE1", "SERPINE2", "SERPINB2",
  "SPP1", "SPX", "TIMP2", "TNF", "TNFRSF10C", "TNFRSF11B",
  "TNFRSF1A", "TNFRSF1B", "TUBGCP2", "VEGFA", "VEGFC", "VGF", "WNT16"
)

# 2. CellAge数据库(genomics.senescence.info/cells)
# 下载并筛选
cellage_genes <- read.csv("cellage_genes.csv")
cellage_promote <- cellage_genes$gene[cellage_genes$type == "promotes_senescence"]
cellage_inhibit <- cellage_genes$gene[cellage_genes$type == "inhibits_senescence"]

# 3. p16/p21核心衰老通路基因
p16_p21_pathway <- c("CDKN2A", "CDKN1A", "TP53", "MDM2", "RB1",
                      "E2F1", "CCND1", "CDK4", "CDK6", "CCNE1")

第三步:单细胞衰老评分方法

白话解释: 给每个单细胞计算一个"衰老分数",反映该细胞表达衰老相关基因的程度。就像给学生打分一样——衰老基因表达越高,分数越高,该细胞越可能处于衰老状态。常用方法有Seurat的AddModuleScore、AUCell、UCell等。

技术细节:

# === 衰老评分方法 ===
library(Seurat)
library(UCell)
library(AUCell)

# 方法1:Seurat AddModuleScore
seurat_obj <- AddModuleScore(
  seurat_obj,
  features = list(SenMayo = senmayo_genes),
  name = "SenMayo_Score"
)
# 结果存在 seurat_obj$SenMayo_Score1

# 方法2:UCell(更鲁棒,基于排名)
signatures <- list(
  SenMayo = senmayo_genes,
  SASP = senescence_markers$SASP_core,
  CellCycleArrest = senescence_markers$cell_cycle_arrest
)
seurat_obj <- AddModuleScore_UCell(seurat_obj, features = signatures)
# 结果存在 seurat_obj$SenMayo_UCell 等

# 方法3:AUCell
# 更适合稀疏单细胞数据
expr_matrix <- GetAssayData(seurat_obj, slot = "data")
cells_rankings <- AUCell_buildRankings(expr_matrix, nCores = 8)
cells_AUC <- AUCell_calcAUC(signatures, cells_rankings, aucMaxRank = 500)
auc_scores <- getAUC(cells_AUC)
seurat_obj$SenMayo_AUCell <- auc_scores["SenMayo", ]

# 方法4:ssGSEA (GSVA包)
# 注意:GSVA >= 1.50 已废弃旧API,需使用ssgseaParam()新接口
library(GSVA)
ssgsea_param <- ssgseaParam(as.matrix(expr_matrix), signatures)
ssgsea_scores <- gsva(ssgsea_param)
seurat_obj$SenMayo_ssGSEA <- ssgsea_scores["SenMayo", colnames(seurat_obj)]

# 可视化衰老评分
FeaturePlot(seurat_obj, features = "SenMayo_Score1",
            cols = c("lightgrey", "red"), min.cutoff = "q10")
VlnPlot(seurat_obj, features = "SenMayo_Score1", group.by = "celltype")

第四步:鉴定衰老细胞

白话解释: 评分之后,需要设定阈值来判断哪些细胞是"衰老的"。可以用统计方法(如高于均值+2SD),也可以结合多个指标(如SenMayo高 + p21高 + 增殖标志物低)进行综合判断。

技术细节:

# === 衰老细胞鉴定 ===

# 策略1:单一评分阈值
threshold <- mean(seurat_obj$SenMayo_Score1) + 2 * sd(seurat_obj$SenMayo_Score1)
seurat_obj$is_senescent <- seurat_obj$SenMayo_Score1 > threshold

# 策略2:多指标综合判断
# 衰老细胞应该:SenMayo高 + 增殖低 + p21高
seurat_obj <- CellCycleScoring(seurat_obj, s.features = cc.genes$s.genes,
                                g2m.features = cc.genes$g2m.genes)
seurat_obj$proliferation_score <- seurat_obj$S.Score + seurat_obj$G2M.Score

# 综合条件
seurat_obj$senescent_multi <- (
  seurat_obj$SenMayo_Score1 > quantile(seurat_obj$SenMayo_Score1, 0.9) &
  seurat_obj$proliferation_score < quantile(seurat_obj$proliferation_score, 0.25) &
  GetAssayData(seurat_obj, layer = "data")["CDKN1A", ] > 0.5  # p21表达阳性(Seurat v5用layer参数)
)

# 统计各细胞类型的衰老比例
senescent_prop <- seurat_obj@meta.data %>%
  group_by(celltype) %>%
  summarise(
    n_total = n(),
    n_senescent = sum(senescent_multi),
    pct_senescent = n_senescent / n_total * 100
  ) %>%
  arrange(desc(pct_senescent))
print(senescent_prop)

# 可视化
DimPlot(seurat_obj, group.by = "senescent_multi",
        cols = c("grey90", "red"), order = TRUE)

第五步:SASP评估与微环境影响

白话解释: 衰老细胞最重要的功能影响是通过SASP(衰老相关分泌表型)——分泌大量炎症因子、趋化因子和基质金属蛋白酶。评估SASP可以预测衰老细胞对周围组织微环境的影响。

技术细节:

# === SASP分析 ===

# SASP评分
sasp_genes <- c("IL6", "CXCL8", "CCL2", "MMP3", "MMP1", "IGFBP7",
                "SERPINE1", "IL1A", "IL1B", "CXCL1", "CXCL2", "CXCL3",
                "TNF", "CSF2", "GDF15", "VEGFA", "HGF", "FGF2")

seurat_obj <- AddModuleScore(seurat_obj, features = list(SASP = sasp_genes),
                              name = "SASP_Score")

# 比较衰老vs非衰老细胞的SASP
VlnPlot(seurat_obj, features = "SASP_Score1",
        group.by = "is_senescent", cols = c("grey", "red"))
wilcox.test(seurat_obj$SASP_Score1[seurat_obj$is_senescent],
            seurat_obj$SASP_Score1[!seurat_obj$is_senescent])

# 衰老细胞与免疫细胞的通讯分析(结合CellChat)
# 衰老细胞的SASP因子作为配体,免疫细胞上的受体
# 参见123_单细胞细胞通讯分析.md

# === 衰老细胞的细胞类型特征 ===
# 不同细胞类型的衰老表现不同
# 找衰老细胞vs同类型非衰老细胞的差异基因
senescent_de <- list()
for (ct in unique(seurat_obj$celltype)) {
  ct_cells <- subset(seurat_obj, celltype == ct)
  if (sum(ct_cells$is_senescent) < 10) next

  Idents(ct_cells) <- "is_senescent"
  markers <- FindMarkers(ct_cells, ident.1 = TRUE, ident.2 = FALSE,
                          min.pct = 0.1, logfc.threshold = 0.25)
  senescent_de[[ct]] <- markers
}

第六步:与临床表型和预后关联

白话解释: 衰老细胞的丰度与肿瘤患者的预后、治疗反应可能相关。可以将单细胞衰老评分汇总到bulk水平(使用反卷积或平均评分),然后与TCGA等大队列的临床数据做关联分析。

技术细节:

# === 衰老评分与临床关联(Bulk RNA-seq层面)===
library(GSVA)
library(survival)

# 对TCGA bulk数据计算衰老评分
tcga_expr <- read.csv("TCGA_BRCA_tpm.csv", row.names = 1)
tcga_clinical <- read.csv("TCGA_BRCA_clinical.csv")

# ssGSEA打分(GSVA >= 1.50 新API)
ssgsea_param <- ssgseaParam(as.matrix(log2(tcga_expr + 1)),
                             list(SenMayo = senmayo_genes))
tcga_scores <- gsva(ssgsea_param)

tcga_clinical$senmayo_score <- tcga_scores["SenMayo", tcga_clinical$sample_id]

# 生存分析
tcga_clinical$sen_group <- ifelse(tcga_clinical$senmayo_score > 
                                    median(tcga_clinical$senmayo_score),
                                  "High_Senescence", "Low_Senescence")

fit <- survfit(Surv(OS_time, OS_status) ~ sen_group, data = tcga_clinical)
ggsurvplot(fit, data = tcga_clinical, pval = TRUE, risk.table = TRUE,
           title = "SenMayo Score and Overall Survival")

# Cox回归
cox_fit <- coxph(Surv(OS_time, OS_status) ~ senmayo_score + age + stage,
                  data = tcga_clinical)
summary(cox_fit)

第七步:Senolytic药物靶点评估

白话解释: Senolytic药物专门杀死衰老细胞(如Dasatinib+Quercetin, Navitoclax/ABT-263, Fisetin)。通过分析衰老细胞中抗凋亡基因(BCL2家族)和其他Senolytic靶点的表达,可以预测哪种Senolytic药物对特定衰老细胞群体最有效。

技术细节:

# === Senolytic靶点分析 ===

# Senolytic药物靶点基因
senolytic_targets <- list(
  Navitoclax_ABT263 = c("BCL2", "BCL2L1", "BCL2L2"),  # BCL-2/BCL-xL抑制
  Dasatinib = c("SRC", "EFNB1", "EFNB3"),  # 酪氨酸激酶
  Quercetin = c("PIK3CA", "PIK3CB", "SERPINE1"),  # PI3K/PAI-1
  Fisetin = c("BCL2L1", "MCL1", "CCND1"),  # 多靶点
  FOXO4_DRI = c("FOXO4", "TP53")  # FOXO4-p53互作
)

# 评估各靶点在衰老细胞中的表达
senescent_cells <- subset(seurat_obj, is_senescent == TRUE)
nonsenescent_cells <- subset(seurat_obj, is_senescent == FALSE)

for (drug in names(senolytic_targets)) {
  targets <- senolytic_targets[[drug]]
  targets_present <- targets[targets %in% rownames(seurat_obj)]

  sen_expr <- rowMeans(GetAssayData(senescent_cells)[targets_present, ])
  nonsen_expr <- rowMeans(GetAssayData(nonsenescent_cells)[targets_present, ])

  cat(sprintf("%s targets - Senescent: %.3f, Non-senescent: %.3f, Ratio: %.2f\n",
              drug, mean(sen_expr), mean(nonsen_expr), mean(sen_expr)/mean(nonsen_expr)))
}

实战命令速查

# 快速衰老评分
library(Seurat); library(UCell)
seurat_obj <- AddModuleScore_UCell(seurat_obj, features=list(SenMayo=senmayo_genes))
FeaturePlot(seurat_obj, "SenMayo_UCell", cols=c("grey","red"))
VlnPlot(seurat_obj, "SenMayo_UCell", group.by="celltype")

面试常问点

Q1: 为什么不能只用p16或p21来标记衰老细胞?

A: p16(CDKN2A)和p21(CDKN1A)虽是经典衰老标志,但不足以单独定义衰老:(1) p21在DNA损伤修复中也短暂上调(非衰老状态);(2) p16在某些衰老类型中不高表达(如OIS早期主要依赖p21);(3) 这些基因在scRNA-seq中检测率低(dropout)。需要多基因集(如SenMayo 125基因)综合评分才更可靠。

Q2: AddModuleScore和AUCell/UCell的区别?

A: AddModuleScore计算基因集平均表达减去随机背景基因均值,受高表达基因主导。AUCell基于AUC(Area Under Curve of recovery curve),考虑排名信息,对dropout更鲁棒。UCell类似AUCell但使用Mann-Whitney U统计量,计算更快。稀疏单细胞数据推荐AUCell/UCell。

Q3: 衰老细胞在肿瘤微环境中是促癌还是抑癌?

A: 双面作用:(1) 抑癌面——衰老是阻止受损细胞增殖的保护机制(如OIS阻止癌前病变进展);(2) 促癌面——SASP中的炎症因子促进慢性炎症、血管生成、免疫抑制,加速肿瘤进展。效果取决于衰老细胞的比例、持续时间和SASP组分。短暂衰老保护性,慢性积累促癌。

Q4: 如何验证scRNA-seq推断的衰老细胞?

A: (1) SA-β-gal染色(组织学验证);(2) p16/p21免疫组化确认蛋白水平表达;(3) γH2AX foci检测DNA损伤灶;(4) BrdU/Ki67确认增殖停滞;(5) SASP因子的ELISA/蛋白芯片验证。单细胞水平可用FISH+IHC联合验证。

Q5: 不同衰老诱因(OIS/RS/DIS)的转录特征有何区别?

A: 虽有共同核心特征(p21上调、增殖基因下调),但SASP组分差异大:OIS的SASP偏炎症(IL6/IL8为主),RS偏ECM重塑(IGFBP/MMP),DIS强调DDR信号(γH2AX高)。SenMayo虽是综合集,某些特定衰老类型的基因可能不在其中。对特定研究可选择诱因特异的基因集。


易错点

1. 将增殖暂停与真正衰老混淆

静息(quiescence/G0)和衰老都是不增殖的,但静息可逆、衰老不可逆。仅凭增殖标志物低不能确认衰老,需要同时有SASP和DDR标志。

2. 过度依赖单一基因集

SenMayo虽广泛使用,但其衍生自成纤维细胞为主的体外实验。对上皮细胞、免疫细胞等特定类型的衰老,可能需要补充组织特异性基因集。

3. dropout导致p16/p21检测不到

CDKN2A和CDKN1A在scRNA-seq中检测率很低(高dropout),这不代表细胞不衰老。应使用多基因打分代替单基因检测。

4. 混淆SASP基因的来源

SASP因子(如IL6, CCL2)也可由活化的免疫细胞高表达。不能仅凭SASP基因高就判断为衰老——需要在同一细胞中同时看到衰老诱导(p21/p53)和SASP。

5. 阈值设定的任意性

没有一个"正确"的衰老评分阈值。建议:(1) 报告敏感性分析;(2) 结合多个指标;(3) 与组织学验证对照;(4) 使用连续评分而非二元分类做下游关联分析。


补充知识

衰老相关数据库

  • CellAge (genomics.senescence.info/cells):实验验证的衰老基因
  • SeneQuest:衰老基因集和通路
  • HAGR(Human Ageing Genomic Resources):衰老基因组资源

衰老研究热点方向

  • 衰老细胞图谱(Senescence Cell Atlas)
  • 空间转录组定位衰老细胞
  • 衰老细胞与免疫清除(immunosurveillance)
  • Senolytic临床试验的生物标志物

引用推荐

  • SenMayo: Saul et al., Nature Communications, 2022
  • CellAge: Avelar et al., Genome Biology, 2020
  • Senescence review: Gorgoulis et al., Cell, 2019
  • SASP: Coppé et al., PLoS Biology, 2008