Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >单细胞转录组|单细胞数据分析中细胞类型的智能识别与注释

单细胞转录组|单细胞数据分析中细胞类型的智能识别与注释

作者头像
天意生信云
发布于 2025-03-06 13:53:06
发布于 2025-03-06 13:53:06
29102
代码可运行
举报
运行总次数:2
代码可运行

前面的文章我们介绍过单细胞基于python手动注释的方法,本篇基于Seurat学习自动注释和手动注释。

自动注释

不同于手工注释的标注方法,自动注释通过算法和已有标注的基因表达谱进行推断,能够快速、系统的识别出数据中的细胞群体。

SingleR

SingleR是一种基于参考数据集的自动注释方法,常用于单细胞RNA测序数据的细胞类型注释。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(Seurat)
library(SingleR)
library(celldex)


# 提取Seurat对象的归一化表达矩阵
expression_matrix <- GetAssayData(seurat_object, slot="data")
# 使用celldex包提供的小鼠参考数据集,我使用的数据集下载自10x官网小鼠脑。
reference_data <- celldex::MouseRNAseqData()
#celldex包也提供人的参考数据集

# 运行 SingleR 注释
labels <- colData(reference_data)$label.main
singleR_results <- SingleR(test = expression_matrix, ref = reference_data, labels = labels)

#singleR_results <- SingleR(test = expression_matrix, ref = reference_data)
# 查看SingleR的注释结果
head(singleR_results)

# 将注释结果添加到Seurat对象中
seurat_object$SingleR_labels <- singleR_results$labels
# 可视化结果(例如使用UMAPpdf("result/Dimplot_celltype_singelR.pdf", width = 50, height = 10)
DimPlot(seurat_object, group.by = "SingleR_labels", label = TRUE)
dev.off()

GPTcelltype(天意改版)

GPTcelltype通过OpenAI GPT模型在Seurat管道中或使用自定义基因列表对细胞类型进行注释。

代码语言:javascript
代码运行次数:1
运行
AI代码解释
复制
library(dplyr)
library(Seurat)
library(patchwork)
library(ggplot2)

# 读取 Seurat 对象,这里是去除双胞,整合处理之后的rds文件
seurat_object <- readRDS("integration_Normal_Harmony.rds")

# 进行差异表达分析,找出每个聚类的标记基因
markers <- FindAllMarkers(seurat_object, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)

# 查看前几行标记基因
head(markers)
#填写API
Sys.setenv(OPENAI_API_KEY = 'bb56b20d26cb6292d86e676')
Sys.setenv(OPENAI_API_BASE_URL = "https://gpt-apeeoai.cv1")
#加载包#Load packages
library(GPTCelltype)
library(openai)

# Run gptcelltype function
res <- gptcelltype(markers, tissuename = 'mouse__cluster_celltype', model = 'gpt-4')

# 添加到原来的对象中
seurat_object@meta.data$celltype <- as.factor(res[as.character(Idents(seurat_object))])

# Visualize the result using DimPlot
pdf("result/Dimplot_celltype.pdf", width = 50, height = 10)
DimPlot(seurat_object, pt.size = 1,group.by = 'celltype')
dev.off()

TransferData

Seurat V5 中的 TransferData 用于在单细胞 RNA-seq 数据集之间进行细胞类型注释、数据整合、交叉数据集分析,以及其他多模态数据集之间的信息转移。它的核心原理是通过找到参考数据集和目标数据集之间的共同特征或结构(锚点,anchors),将参考数据集中的信息(如细胞类型、基因表达等)转移到目标数据集中。

TransferData 通常与 FindTransferAnchors 配合使用。FindTransferAnchors 负责识别两个数据集之间的锚点,TransferData 则负责通过这些锚点将参考数据中的信息传递到目标数据集。选择参考数据集:首先,你需要一个带有已知注释(例如细胞类型)的参考数据集。目标数据集:这是你希望注释或整合的目标数据集。找到锚点:使用 FindTransferAnchors 函数找到两个数据集之间的共同结构。转移注释:使用 TransferData 函数将参考数据中的注释信息(如细胞类型或其他特征)传递到目标数据集中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 准备待注释数据,确保数据只有一个 layers。
seob <- JoinLayers(seob, assay = "RNA")

# 准备参考数据集
## 1. 查看可用数据集
library(SeuratData)
AvailableData() -> temp

## 2. 安装数据集
## InstallData("pbmc3k")
## install.packages("pbmc3k.SeuratData_3.1.4.tar.gz", repos = NULL, type = "source")

## 3. 加载数据集
pbmc3k <- LoadData("pbmc3k")

## 4. 更新到 V5 格式
pbmc3k <- UpdateSeuratObject(pbmc3k)

# 处理参考数据集
library(tidyverse)
pbmc3k <- SCTransform(object = pbmc3k) %>%
             RunPCA(verbose = FALSE) %>%
             RunUMAP(dims = 1:30, verbose = FALSE)

# 自动注释
## 找到锚点:是在两个数据集中找到相似的细胞,计算它们的相似性锚点。
anchors <- FindTransferAnchors(
  reference = pbmc3k,  # 参考数据集
  query = seob,          # 目标数据集
  normalization.method = "SCT",  # SCTransform 标准化
  reference.reduction = "pca",
  dims = 1:30             # 使用 PCA 的前 30 个主成分
)

## 传递注释:将参考数据集中的细胞类型注释转移到目标数据集中
transfer <- TransferData(
  anchorset = anchors,
  refdata = pbmc3k$seurat_annotations, # 参考数据集中的细胞类型注释
  dims = 1:30)

## 添加注释
seob <- AddMetaData(
  seob, 
  metadata = transfer, 
  col.name = "predicted.id")

# 可视化
DimPlot(seob, 
        reduction = "umap", 
        group.by  = c("seurat_clusters", "predicted.id"),
        label = T)

手动注释

要手动注释细胞群体,首先需要根据已知的标记基因(marker genes)来确定不同群体的类型。通常来说,手动注释方法需要依据以下步骤:

1.查找候选标记基因(marker genes)

在进行细胞群体注释时,标记基因的选择非常重要。可以通过几种方式找到相关的候选基因:

  • 文献查阅:根据所研究的物种和细胞类型,查阅相关文献。大部分细胞类型和亚群都有已知的标记基因。
  • 公共数据库例如 Mouse Genome Informatics (MGI)Human Protein Atlas,以及一些特定的基因集如 ImmGen(免疫细胞标记基因集)等。
  • Seurat 中的 Differential Expression:使用 Seurat 自带的功能来识别每个簇的标记基因。

2.从 Seurat 对象中识别标记基因

可以使用 Seurat 来对不同群体进行差异表达分析,并找到每个群体的标记基因。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(Seurat)

# 读取 Seurat 对象
#我用的已经处理好的数据
seurat_object <- readRDS("result/integration_Normal_Harmony.rds")

# 进行差异表达分析,找出每个聚类的标记基因
markers <- FindAllMarkers(seurat_object, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)

# 查看前几行标记基因
head(markers)

#每个簇中选择前10差异表达基因表达量最高的
top2 <- markers %>% group_by(cluster) %>% top_n(n=2,wt=avg_log2FC)
g=unique(top2$gene)
DoHeatmap(seurat_object, features = g) + NoLegend()+
  scale_fill_gradientn(colors = c("#2fa1dd", "white", "#f87669"))

DotPlot(seurat_object,features=g,cols="RdYlBu")+
  RotatedAxis()

此代码将输出每个聚类的标记基因。可以根据这些标记基因,结合已有的文献或数据库知识,来手动注释这些细胞群。

3.通过已知标记基因手动注释

一旦得到每个簇的标记基因,就可以通过以下步骤手动注释:

  • 获取每个簇的 top marker genes:找到每个聚类的 top markers 基因。
  • 根据文献或者数据库:通过文献或数据库对这些 marker genes 进行分类,判断该簇对应的细胞类型。
  • 在 Seurat 中添加注释:将注释添加到 Seurat 对象的元数据中。

例如:

代码语言:javascript
代码运行次数:1
运行
AI代码解释
复制
# 假设已经找到了相关的细胞类型标记
seurat_object$cell_type <- ifelse(seurat_object$seurat_clusters == 0, "T cells",
                                  ifelse(seurat_object$seurat_clusters == 1, "B cells", "Other"))

# 可以为每个群体命名
table(seurat_object$cell_type)

4.可视化注释结果

在聚类的图上显示手动注释的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 可视化手动注释结果
DimPlot(seurat_object, group.by = "cell_type")

5.注释细胞群体

根据标记基因分析结果和文献查找,你可以对细胞簇进行具体的细胞类型注释。例如,如果某些簇的标记基因对应的是小鼠的特定免疫细胞类型或其他细胞类型,可以将这些群体命名为“T细胞”,“B细胞”,“巨噬细胞”等。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BioOmics 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一些辅助划分单细胞亚型的工具
我们前面Bcells输入了6个基因,有一个不在该数据集features中,感觉计算AUC类似计算一个分数,后面就要找分数显著阈值
生信菜鸟团
2023/09/19
7070
一些辅助划分单细胞亚型的工具
Seurat软件学习6-多模型参考映射的方法
Seurat软件学习1-多个模型得数据进行整合:https://cloud.tencent.com/developer/article/2130078
小胡子刺猬的生信学习123
2022/10/29
7540
Seurat软件学习6-多模型参考映射的方法
单细胞分析:多模态 reference mapping (1)
本文[1]介绍了如何在Seurat软件中将查询数据集与经过注释的参考数据集进行匹配。以一个实例来说,我们把10X Genomics公司早期发布的一个包含2700个外周血单核细胞(PBMC)的单细胞RNA测序(scRNA-seq)数据集,与我们最近创建的一个使用228种抗体测量的、包含162,000个PBMC的CITE-seq参考数据集进行匹配。这个例子用来说明,在参考数据集的帮助下进行的有监督分析,是如何帮助我们识别那些仅通过无监督分析难以发现的细胞状态。在另一个例子中,我们展示了如何将来自不同个体的人类骨髓细胞(Human BMNC)的人类细胞图谱(Human Cell Atlas)数据集,有序地映射到一个统一的参考框架上。
数据科学工厂
2024/05/07
2640
单细胞分析:多模态 reference mapping (1)
单细胞工具箱|singleR-单细胞类型自动注释
cellMarker(http://biocc.hrbmu.edu.cn/CellMarker/),
生信补给站
2021/11/11
4.9K0
单细胞工具箱|singleR-单细胞类型自动注释
单细胞转录组整合分析——seurat包
该包于去年新推出了整合功能。文章19年6月份发表于cell杂志,原文题目为:Comprehensive Integration of Single-Cell Data 被引量超过300次
生信菜鸟团
2020/03/30
2.1K0
单细胞转录组|scATAC-seq 数据整合
本文在此展示了如何将多个源自人类外周血单核细胞的单细胞染色质数据集进行整合。其中一个数据集是通过10x Genomics的多组学技术获得的,它涵盖了每个细胞的DNA可及性和基因表达数据。另一个数据集则是通过10x Genomics的单细胞ATAC测序(scATAC-seq)技术得到的,仅包含DNA可及性信息。
数据科学工厂
2024/12/30
1400
单细胞转录组|scATAC-seq 数据整合
单细胞分析|整合 scRNA-seq 和 scATAC-seq 数据
单细胞转录组学极大地提升了对细胞状态进行分类的能力,但要深入理解生物学现象,不能仅仅停留在对细胞群的简单列举上。随着新方法的不断涌现,用于测量细胞的不同状态,一个关键的挑战是如何将这些数据集整合起来,以便更全面地理解细胞的特性和功能。
数据科学工厂
2024/04/28
6420
单细胞分析|整合 scRNA-seq 和 scATAC-seq 数据
单细胞转录组高级分析一:多样本合并与批次校正
实际的科研项目中不可能只有一个样本,多样本的单细胞数据如何合并在一起,是否需要校正批次效应呢?先上一张图说明多样本scRNA数据的批次效应:
生信技能树jimmy
2020/09/04
38.6K8
单细胞转录组高级分析一:多样本合并与批次校正
Seurat4.0系列教程16:多模式参考映射注释细胞
此教程介绍了将查询数据集映射到参考数据集的过程。在此示例中,我们映射了 10X Genomics的(2,700 个PBMC)的scRNA-seq 数据集,到我们最近发表的 CITE-seq 参考的 162,000 PBMC,使用了 228 种抗体[1]。我们选择这个例子来演示由参考数据集指导的监督分析如何有助于列举在无监督的分析中[2]难以找到的细胞状态。在第二个例子中,我们演示了如何从不同个体中人类的BMNC数据集进行连续映射到一致的参考集中。
生信技能树jimmy
2021/07/27
2K0
还在为细胞类型注释困扰?快试试 mLLMCelltype !
细胞类型注释是单细胞数据分析中的关键步骤。目前注释方法依赖于人工,手动将每个细胞簇中高表达的基因与文献中的经典细胞类型标记基因进行比对。这一流程及其耗时,而且需要专业的生物知识。随着测序成本的下降,当数据集规模扩大到数百万个来自不同组织的细胞,手动注释的方法已变得难以实现。
数据科学工厂
2025/04/27
2370
还在为细胞类型注释困扰?快试试 mLLMCelltype !
Seurat 4.0 || 单细胞PBMC多模态参考数据集
Seurat 4.0 ||您的单细胞数据分析工具箱上新啦 Seurat 4.0 ||单细胞多模态数据整合算法WNN Seurat 4.0 || 分析scRNA和膜蛋白数据 Seurat 4.0 || WNN整合scRNA和scATAC数据
生信技能树jimmy
2020/11/09
3K1
Seurat 4.0 || 单细胞PBMC多模态参考数据集
使用Seurat基于scRNA-seq分析scATAC-seq
Seurat 3.X版本能够整合scRNA-seq和scATAC-seq, 主要体现在:
生信技能树jimmy
2020/03/30
2.3K0
跟着小鱼头学单细胞测序-单细胞注释实践指南
如何识别细胞类型和状态并最终创建带注释的细胞图谱是单细胞研究中的一个重难点,之前给大家介绍过相关的思路分析,这次给大家打来详细的代码解析,希望对大家的实操有所助益。
作图丫
2022/03/29
3.7K0
使用singleR基于自建数据库来自动化注释单细胞转录组亚群
但是因为singleR的数据库资源陈旧而且很有限,满足不了日益增长的单细胞应用,后面我们都是主推第一层次降维聚类分群后的人工命名,通常我们拿到了肿瘤相关的单细胞转录组的表达量矩阵后的第一层次降维聚类分群通常是:
生信技能树
2024/04/13
1.2K0
使用singleR基于自建数据库来自动化注释单细胞转录组亚群
单细胞热图我要整整齐齐
我们以大家熟知的pbmc3k数据集为例。大家先安装这个数据集对应的包,并且对它进行降维聚类分群,参考前面的例子:人人都能学会的单细胞聚类分群注释 ,而且每个亚群找高表达量基因,都存储为Rdata文件。标准代码是:
生信技能树
2022/07/26
2.6K0
单细胞热图我要整整齐齐
Seurat4.0系列教程15:映射和注释查询数据集
在此教程中,我们首先构建一个整合的参考集,然后演示如何利用此参考集来注释新的查询数据集。生成参考集可以参考该文[1]中详细流程。生成后,此参考集可用于通过细胞类型标签转移和将查询细胞投影到参考集 UMAP 等任务来分析其他查询数据集。值得注意的是,这不需要校正基础原始查询数据,因此,如果提供高质量的参考集,则可以成为高效的策略。
生信技能树jimmy
2022/01/10
1.7K0
Seurat4.0系列教程15:映射和注释查询数据集
基于Seurat的TransferData函数自动化迁移单细胞转录组亚群的注释信息
这个GSE206528的单细胞转录组数据集,很容易构建成为Seurat对象。仍然是走常规的单细胞转录组降维聚类分群代码,可以看 链接: https://pan.baidu.com/s/1bIBG9RciAzDhkTKKA7hEfQ?pwd=y4eh ,基本上大家只需要读入表达量矩阵文件到r里面就可以使用Seurat包做全部的流程。批量读取它的9个文件的代码如下所示:
生信技能树
2024/04/13
8130
基于Seurat的TransferData函数自动化迁移单细胞转录组亚群的注释信息
单细胞测序—GSE218208(流程简化)
上一篇帖子学习记录了Seurat官方给出的分析流程单细胞测序—基础分析流程,本篇文章以GSE218208为例,记录下实际的单细胞分析流程,更为简便,其与官方给出的流程略有不同。
sheldor没耳朵
2024/07/30
3260
单细胞测序—GSE218208(流程简化)
单细胞分析十八般武艺8:Garnett
单细胞初级8讲和高级分析8讲 单细胞分析十八般武艺1:harmony 单细胞分析十八般武艺2:LIGER 单细胞分析十八般武艺3:fastMNN 单细胞分析十八般武艺4:velocyto 单细胞分析十八般武艺5:monocle3 单细胞分析十八般武艺6:NicheNet 单细胞分析十八般武艺7:CellChat
生信技能树jimmy
2021/04/29
2.7K0
单细胞分析十八般武艺8:Garnett
Seurat4.0系列教程14:整合scRNA-seq and scATAC-seq数据
单细胞转录学改变了我们描述细胞状态的能力,但深入的生物学解释需要的不仅仅是分群。随着测量不同细胞模式的新方法的出现,一个关键的分析挑战是整合这些数据集,以更好地了解细胞身份和功能。例如,用户可以在同一生物系统上执行 scRNA-seq 和 scATAC-seq 实验,并一致地用同一组细胞类型标签对两个数据集进行注释。这种分析尤其具有挑战性,因为 scATAC-seq 数据集难以注释,单细胞分辨率收集的基因组数据很少,而且 scRNA-seq 数据中缺乏可解释的基因标记。
生信技能树jimmy
2022/01/10
3.4K1
Seurat4.0系列教程14:整合scRNA-seq and scATAC-seq数据
推荐阅读
相关推荐
一些辅助划分单细胞亚型的工具
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验