细胞注释:经典标记物

· Analysis Notes

细胞注释:经典标记物

细胞注释:经典标记基因

细胞注释:经典标记基因

TL;DR: 使用公认的标记基因对单细胞聚类进行注释。本指南提供了主要细胞类型(免疫细胞、上皮细胞、基质细胞)的精选标记基因列表,包含分层注释级别以及用于验证的 R 代码。


什么是经典标记基因?

经典标记基因 是指具有经过充分文献记载、细胞类型特异性表达模式的基因。它们是手动注释的黄金标准,因为:

  • ✅ 经过多项研究的实验验证
  • ✅ 高特异性(交叉反应性最小)
  • ✅ 易于解释(二元存在/不存在或梯度)
  • ✅ 跨技术平台适用(scRNA-seq、空间转录组、流式细胞术)

何时使用经典标记基因

场景 经典标记基因 其他方法
标准组织(PBMC、肿瘤、脑组织) ✅ 首选 参考映射
新型细胞类型 ⚠️ 有限 基于 AI 的注释
质量控制/验证 ✅ 始终适用 -
跨研究比较 ✅ 一致性高 -

分层注释策略

按照 3 个级别 进行注释,分辨率逐级提高:

级别 1:主要谱系

首先区分大类:

谱系 关键标记基因 替代标记基因
上皮细胞 EPCAM KRT8, KRT18, CDH1
免疫细胞 PTPRC (CD45) -
内皮细胞 VWF, PECAM1 (CD31) CDH5, KDR
成纤维细胞 DCN, COL1A1 VIM, FN1
平滑肌细胞 ACTA2, MYH11 TAGLN, CNN1

级别 2:细胞类型家族

细化每个谱系:

上皮细胞亚型

细胞类型 标记基因
管腔上皮细胞 KRT8, KRT18, KLK3 (PSA), ACPP
基底上皮细胞 KRT5, KRT14, TP63
神经内分泌细胞 SYP, CHGA, ENO2, ASCL1

基质细胞亚型

细胞类型 标记基因
内皮细胞 VWF, SELE, PECAM1, CLDN5, PLVAP
壁细胞(周细胞) RGS5, ACTA2, PDGFRB
间皮细胞 KRT19, MSLN, CALB2
增殖细胞 STMN1, TOP2A, MKI67
成纤维细胞 COL1A1, DCN, LUM
胶质细胞 GPM6B, S100B, CDH19

免疫细胞亚型

细胞类型 标记基因
T 细胞 CD3D, CD3E, CD4, CD8A
NK 细胞 ITGAM, IL2RB, KLRB1, KLRK1, NCR1
B 细胞 CD19, MS4A1 (CD20)
树突状细胞 CD209A, XCR1, ITGAX, HLA-DRA
髓系细胞 CD14, FCGR1, ADGRE1, CSF1R, LY6C2, S100A8
肥大细胞 TPSAB1, FCER1A

级别 3:功能亚型

精细分类:

T 细胞亚型

亚型 标记基因
CD8+ T 细胞 CD8A, CCR7, CD28, IFNG, GZMB
CD4+ T 细胞 CD4, CXCR3, CCR4, CCR3, CCR6, CCR10, CXCR5, ICOS
调节性 T 细胞 IL2RA, FOXP3, CTLA4, IL7R
γδ T 细胞 TRGV2, IL23R, IL17A, RORC
NKT 细胞 NKG7, KLRB1C, IL4

B 细胞亚型

亚型 标记基因
初始 B 细胞 IGHM, IGHD, CCR7, SELL
浆细胞 JCHAIN, IGHG, IGKC

髓系细胞亚型

亚型 标记基因
中性粒细胞 CSF3R, S100A8, S100A9, SIGLECF
单核细胞 CD14, CSF1R, VCAN
巨噬细胞 C1QB, C1QA, APOE
cDC1 CLEC9A, XCR1, BATF3
cDC2 ITGAM, SIRPA, CLEC10A, IRF4, CCR7
pDC LY6D, IRF8, TCF4, DNTT, IL7R

R 语言中的实际注释操作

步骤 1:使用 DotPlot 可视化标记基因

library(Seurat)

# 定义标记基因集
immune_markers <- list(
  T_cells = c("CD3D", "CD3E", "CD3G"),
  B_cells = c("CD19", "MS4A1", "CD79A"),
  Myeloid = c("CD14", "FCGR1A", "CSF1R"),
  NK_cells = c("NKG7", "KLRB1", "NCAM1")
)

# 点图
DotPlot(pbmc, features = unlist(immune_markers), group.by = "seurat_clusters") +
  RotatedAxis()

步骤 2:分配细胞类型

# 查看带有标记基因表达的 UMAP
FeaturePlot(pbmc, features = c("CD3D", "CD14", "MS4A1", "NKG7"))

# 基于标记基因表达进行手动注释
new.cluster.ids <- c(
  "0" = "CD14 Mono",
  "1" = "CD4 T",
  "2" = "CD8 T",
  "3" = "B cell",
  "4" = "NK",
  "5" = "CD16 Mono",
  "6" = "DC"
)

pbmc$celltype <- new.cluster.ids[as.character(pbmc$seurat_clusters)]

步骤 3:验证注释

# 检查标记基因特异性
VlnPlot(pbmc, features = c("CD3D", "CD14", "MS4A1"), 
        group.by = "celltype", pt.size = 0)

# 用于空间验证的特征图
FeaturePlot(pbmc, features = "CD3D", split.by = "celltype")

# 比例检查(应与预期的生物学特性相符)
table(pbmc$celltype)

全面的标记基因参考

人类免疫细胞

# 人类数据的精选列表
myeloid_subtypes <- list(
  general_myeloid = c("PTPRC", "ITGAM", "CD33", "HLA-DRA", "CSF1R", "SPI1"),
  monocytes = c("CD14", "FCGR3A", "CCR2", "CX3CR1", "VCAN"),
  classical_DC = c("CLEC9A", "XCR1", "BATF3", "IRF8", "THBD", "CADM1"),
  plasmacytoid_DC = c("IL3RA", "CLEC4C", "TCF4", "IRF7", "LILRA4", "GZMB"),
  MDSCs = c("CD33", "ITGAM", "S100A8", "S100A9", "ARG1", "STAT3"),
  neutrophils = c("ELANE", "MPO", "FCGR3B", "CXCR2", "S100A8"),
  M1_macrophages = c("CD80", "CD86", "STAT1", "IRF5", "IL1B", "TNF"),
  M2_macrophages = c("CD163", "MRC1", "MS4A4A", "TGFB1", "IL10", "VEGFA"),
  TAMs = c("CD68", "CD163", "MRC1", "VEGFA", "TREM2", "SPP1", "MAF")
)

lymphoid_subtypes <- list(
  T_cells_general = c("PTPRC", "CD3D", "CD3E", "CD3G", "TRAC", "IL7R"),
  CD4_T_cells = c("CD4", "IL7R", "CCR7"),
  CD8_T_cells = c("CD8A", "CD8B", "GZMA", "GZMB", "PRF1"),
  Tregs = c("FOXP3", "IL2RA", "CTLA4", "TNFRSF18"),
  Th1_cells = c("TBX21", "IFNG", "IL2", "CXCR3"),
  Th2_cells = c("GATA3", "IL4", "IL5", "IL13", "CCR4"),
  Th17_cells = c("RORC", "IL17A", "IL17F", "IL23R"),
  NK_cells = c("NCAM1", "FCGR3A", "KLRB1", "KLRD1", "GZMB", "PRF1"),
  B_cells = c("CD19", "MS4A1", "CD79A", "CD79B", "IGHM"),
  plasma_cells = c("SDC1", "IGHG1", "MZB1", "XBP1", "PRDM1")
)

stromal_subtypes <- list(
  fibroblasts = c("COL1A1", "COL1A2", "VIM", "FN1", "DCN"),
  myofibroblasts = c("ACTA2", "TAGLN", "MYL9", "MYLK", "TPM1"),
  CAFs = c("FAP", "ACTA2", "PDGFRA", "PDGFRB", "POSTN", "TGFB1"),
  endothelial_cells = c("PECAM1", "CDH5", "VWF", "KDR", "FLT1"),
  pericytes = c("CSPG4", "PDGFRB", "ACTA2", "RGS5", "MCAM"),
  MSCs = c("THY1", "ENG", "NT5E", "VCAM1", "ITGAV", "ALCAM")
)

epithelial_subtypes <- list(
  general_epithelial = c("EPCAM", "KRT8", "KRT18", "CDH1"),
  luminal_epithelial = c("KRT8", "KRT18", "KRT19", "ESR1", "PGR"),
  basal_epithelial = c("KRT5", "KRT14", "TP63", "EGFR"),
  progenitor_cells = c("ALDH1A1", "CD44", "ITGA6", "ITGB1"),
  neuroendocrine = c("CHGA", "SYP", "NCAM1", "ENO2"),
  EMT = c("CDH2", "VIM", "SNAI1", "SNAI2", "TWIST1", "ZEB1")
)

T 细胞状态标记基因

t_cell_state_markers <- c(
  # 初始/记忆
  "CCR7", "SELL",  # 初始
  "CD44",          # 记忆
  
  # 活化
  "CD69", "CD25",  # 早期活化
  "IFNG", "GZMB", "PRF1",  # 效应
  
  # 耗竭
  "PDCD1",  # PD-1
  "CTLA4", "LAG3", "HAVCR2",  # 耗竭标记基因
  
  # 组织驻留
  "ITGAE", "ITGA1",  # CD103, CD49a
  
  # 干性
  "TCF7", "LEF1"
)

# 可视化 T 细胞状态
DotPlot(pbmc, features = t_cell_state_markers, group.by = "seurat_clusters") +
  RotatedAxis()

系统性注释工作流程

1. 创建标记基因面板

# 合并所有标记基因
all_markers <- c(
  unlist(myeloid_subtypes),
  unlist(lymphoid_subtypes),
  unlist(stromal_subtypes),
  unlist(epithelial_subtypes)
) %>% unique()

# 筛选表达的基因
expressed <- rownames(pbmc)[rowSums(GetAssayData(pbmc) > 0) > ncol(pbmc) * 0.01]
markers_to_plot <- intersect(all_markers, expressed)

2. 生成诊断图

# 按谱系绘制点图
DotPlot(pbmc, features = unique(unlist(myeloid_subtypes))) +
  ggtitle("Myeloid Markers") +
  RotatedAxis()

DotPlot(pbmc, features = unique(unlist(lymphoid_subtypes))) +
  ggtitle("Lymphoid Markers") +
  RotatedAxis()

# 顶部标记基因的热图
DoHeatmap(subset(pbmc, downsample = 100), 
          features = markers_to_plot, 
          group.by = "seurat_clusters", 
          size = 3)

3. 迭代细化

# 对存在问题的聚类进行子集化以进行重新聚类
cluster_5 <- subset(pbmc, subset = seurat_clusters == 5)
cluster_5 <- FindNeighbors(cluster_5)
cluster_5 <- FindClusters(cluster_5, resolution = 0.5)

# 使用更精细的标记基因检查
DotPlot(cluster_5, features = c("CD4", "CD8A", "FOXP3", "IL2RA"))

验证策略

1. 标记基因特异性检查

# 应在目标类型中高表达,在其他类型中低表达
VlnPlot(pbmc, features = "CD3D", group.by = "celltype", pt.size = 0)

2. 比例合理性检查

# 与预期的生物学特性进行比较
table(pbmc$celltype) / ncol(pbmc)

# PBMC 预期比例:
# T 细胞: 40-60%
# B 细胞: 5-15%
# 单核细胞: 10-30%
# NK 细胞: 5-15%

3. 与 FindAllMarkers 结果交叉参考

# 寻找聚类特异性标记基因
markers <- FindAllMarkers(pbmc, only.pos = TRUE, min.pct = 0.25)

# 顶部标记基因是否与您的注释匹配?
top_markers <- markers %>%
  group_by(cluster) %>%
  slice_max(n = 5, order_by = avg_log2FC)

故障排除

没有清晰的标记基因表达

原因: 细胞质量差或双细胞
解决方法:

# 更严格的质量控制
pbmc <- subset(pbmc, subset = nFeature_RNA > 500 & percent.mt < 10)

# 去除双细胞
library(scDblFinder)
pbmc <- scDblFinder(pbmc)
pbmc <- subset(pbmc, subset = scDblFinder.class == "singlet")

模糊的聚类(多个谱系)

原因: 分辨率低或双细胞
解决方法:

# 提高分辨率
pbmc <- FindClusters(pbmc, resolution = 0.8)

# 或者拆分模糊的聚类
VlnPlot(pbmc, features = c("EPCAM", "PTPRC"), split.by = "seurat_clusters")

未检测到标记基因

原因: 基因丢失或物种/命名错误
解决方法:

# 检查基因是否存在
"CD3D" %in% rownames(pbmc)  # 人类
"Cd3d" %in% rownames(pbmc)  # 小鼠

# 使用替代标记基因
# CD3D → CD3E, CD3G
# MS4A1 → CD79A

资源

标记基因数据库

论文


另请参阅:

Cell Annotation