细胞注释:经典标记物

细胞注释:经典标记基因
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
资源
标记基因数据库
- CellMarker 2.0: http://bio-bigdata.hrbmu.edu.cn/CellMarker
- PanglaoDB: https://panglaodb.se
- Weizmann 3CA: https://www.weizmann.ac.il/sites/3CA/marker-genes
- Human Protein Atlas: https://www.proteinatlas.org
论文
另请参阅: