🔬

细胞注释全流程解析

单细胞RNA测序细胞类型鉴定完整指南

深入讲解三种主流细胞注释方法:基于Marker基因的人工注释、CellMarker数据库查询、 SingleR自动注释。每种方法都有完整的实战代码和详细解读,助你快速掌握细胞注释技能!

⏱️ 阅读时间:25分钟 💻 代码示例:15+ 📊 难度:进阶
⚠️
免责声明: 本内容仅供医学学习参考,不作为临床诊断依据。 实际临床决策请结合患者具体情况和多学科意见。

为什么细胞注释如此重要?

细胞注释是单细胞RNA测序分析中最具挑战性的步骤之一。据统计,目前已发表并被证明可以实际应用的细胞注释工具就至少有30种。 选择合适的注释方法,准确鉴定细胞类型,对于后续的生物学差异分析至关重要。

基于Marker基因
数据库辅助查询
自动化R包工具
💡

注释方法概览

细胞注释方法主要分为两大类:(1)根据每个细胞的marker基因进行注释;(2)通过已知细胞类型的基因表达情况与未知细胞类型进行比对。 前者准确性高但耗时费力,后者自动化程度高但仍需人工验证。

准备工作:获取Marker基因

在开始细胞注释之前,我们需要先完成标准分析流程,获得每个细胞亚群的marker基因:

# 标准流程(完整版请参考:单细胞测序完整工作流)
library(dplyr)
library(Seurat)
library(patchwork)

# 假设已经完成质控、标准化、降维、聚类
# 现在开始寻找marker基因
pbmc.markers <- FindAllMarkers(pbmc)

# 筛选P值小于0.05的差异基因
all.markers <- pbmc.markers %>%
  subset(p_val < 0.05) %>%
  select(gene, everything())

# 选择每个亚群表达量最高的前10个基因
top10 <- all.markers %>%
  group_by(cluster) %>%
  top_n(n = 10, wt = avg_log2FC)

# 导出结果
write.csv(all.markers, "all.markers.csv", row.names = F)
write.csv(top10, "top10.csv", row.names = F)
📝

参数解读

  • p_val: 原始P值,小于0.05表示有统计学意义
  • avg_log2FC: 平均对数 fold change,值越大表示表达差异越显著
  • pct.1: 基因在该cluster中表达细胞的比例
  • pct.2: 基因在其他cluster中表达细胞的比例

方法一:基于Marker基因的人工注释

这是最传统也是最准确的细胞注释方法。通过查询文献和数据库,找到各细胞亚群的特异性marker基因, 然后结合生物学知识进行人工判断。

1 CellMarker数据库查询

CellMarker数据库收录了人的158个组织的467个细胞类型的13,605个Marker基因, 以及鼠的81个组织的389个细胞类型的9,148个Marker基因。

🏠 首页(Home)

提供人和小鼠的全局视图,可快速浏览组织类型

📖 浏览(Browse)

按组织-细胞类型层次展示,方便逐级查找

🔍 搜索(Search)

支持基因名或细胞类型搜索,功能最常用

⬇️ 下载(Download)

可下载完整注释表用于R语言批量处理

2 实际操作示例

假设我们分析的是PBMC(外周血单核细胞)数据,Cluster 0的Top10 marker基因为: CCR7, LDLRAP1, LDHB, LEF1, PRKCQ-AS1, PIK3IP1, MAL, NOSIP, CD3D, FHIT

🔬 查询流程

  1. 步骤1:在CellMarker数据库中搜索"CCR7",限定组织为"Blood"
  2. 步骤2:记录返回的细胞类型列表,如Naive CD4+ T cell、Naive CD8+ T cell等
  3. 步骤3:依次查询其他marker基因(LDLRAP1, LDHB, LEF1...)
  4. 步骤4:取多个基因查询结果的交集,找出最一致的细胞类型
  5. 步骤5:结合文献和领域知识,做出最终判断
⚠️

注意事项

细胞注释没有唯一正确答案。不同数据库、不同文献可能给出不同的注释结果。 例如,Cluster 0可能被注释为"Naive CD4+ T cell"或"Naive CD8+ T cell",这取决于你更关注哪个marker。 一个稳妥的做法是注释为更粗粒度的"Naive T cell"。

3 应用注释结果

# 定义新的细胞类型名称
new.cluster.ids <- c(
  "Naive CD4 T", "CD14+ Mono", "Memory CD4 T", "B",
  "CD8 T", "FCGR3A+ Mono", "NK", "DC", "Platelet"
)

# 将数字编号替换为细胞类型名称
names(new.cluster.ids) <- levels(pbmc)
pbmc <- RenameIdents(pbmc, new.cluster.ids)

# 可视化注释结果
DimPlot(pbmc, reduction = "umap", label = TRUE, pt.size = 0.5) +
  NoLegend()
💡

人工注释的优缺点

优点:准确性高,灵活性大,可以结合具体的生物学背景
缺点:耗时费力,主观性强,需要丰富的领域知识

方法二:SingleR自动注释

SingleR是基于参考数据集的自动化细胞注释工具,通过计算待注释细胞与已知细胞类型参考集的相关性来进行注释。 这种方法大大简化了细胞注释的流程,特别适合初学者。

SingleR原理简介

1

建立Marker基因集合

从参考数据集中提取各细胞类型的marker基因

2

计算相关性

计算测试数据与参考数据marker基因的相关性系数

3

细胞注释

根据相关性最高的参考细胞类型进行注释

4

结果诊断

通过可视化评估注释结果的可靠性

实战代码

# 安装必要的包(仅需运行一次)
if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("SingleR")
BiocManager::install("celldex")
install.packages("scRNAseq")

# 加载包
library(SingleR)
library(celldex)
library(Seurat)

步骤1:准备参考数据集

# celldex包提供了多个内置参考数据集
# HumanPrimaryCellAtlasData: 人类原细胞图谱
# BlueprintEncodeData: Blueprint/ENCODE项目数据
# MonacoImmuneData: 免疫细胞参考数据
# DatabaseImmuneCellExpressionData: DICE免疫细胞数据库

# 加载人类主要细胞 atlas(最常用)
hpca.se <- HumanPrimaryCellAtlasData()

# 查看参考数据集信息
hpca.se
# Assay with 19046 features and 19819 samples

步骤2:准备测试数据

# 读取已经完成聚类的Seurat对象
pbmc <- readRDS("pbmc3k_final.rds")

# 获取标准化后的表达矩阵
# SingleR需要使用标准化后的数据,而非原始count
pbmc.data <- GetAssayData(pbmc, slot = "data")

步骤3:运行SingleR注释

# 方法1:基于单细胞的注释(最准确但较慢)
pred <- SingleR(
  test = pbmc.data,
  ref = hpca.se,
  labels = hpca.se$label.main,
  assay.type.test = "logcounts"
)

# 方法2:基于细胞亚群的注释(更快)
pred <- SingleR(
  test = pbmc.data,
  ref = hpca.se,
  labels = hpca.se$label.main,
  assay.type.test = "logcounts",
  method = "cluster",
  clusters = pbmc$seurat_clusters
)

# 查看注释结果
table(pred$labels)

步骤4:将注释结果添加到Seurat对象

# 创建注释结果数据框
celltype <- data.frame(
  ClusterID = rownames(pred),
  celltype = pred$labels,
  stringsAsFactors = F
)

# 将注释添加到Seurat对象的metadata中
pbmc$SingleR_label <- "NA"
for(i in 1:nrow(celltype)) {
  pbmc[which(pbmc$seurat_clusters == celltype$ClusterID[i]), "SingleR_label"] <-
    celltype$celltype[i]
}

# 可视化注释结果
DimPlot(pbmc, group.by = "SingleR_label", label = TRUE,
          label.size = 5, reduction = "tsne")
💡

SingleR的优缺点

优点:自动化程度高,速度快,不需要手动选择marker基因
缺点:依赖于参考数据集的质量和覆盖范围,可能需要人工校验

三种注释方法对比

方法 准确性 速度 难度 适用场景
Marker基因+人工注释 ★★★★★ ★★☆☆☆ 困难 研究重点细胞类型,需要高精度
CellMarker数据库 ★★★★☆ ★★★☆☆ 中等 常见组织类型,有明确marker
SingleR自动注释 ★★★★☆ ★★★★★ 简单 大规模数据快速注释,初学者

细胞注释最佳实践

推荐做法

  • • 多种方法联合使用,互相验证
  • • 结合领域知识和文献报道
  • • 保留注释过程记录,便于追溯
  • • 对稀有细胞亚群进行重点验证
  • • 使用多个参考数据集进行SingleR注释

避免误区

  • • 不要过度依赖单一方法
  • • 不要忽视细胞的组织来源背景
  • • 不要盲目相信自动化工具结果
  • • 不要为了细分而细分(避免过度注释)
  • • 不要忽略质量控制对注释的影响

相关教程