【TOP生物信息】使用Seurat包自带的方法进行单细胞类型注释

news2025/1/12 1:56:54

扫码关注下方公粽号,回复推文合集,获取400页单细胞学习资源!

在这里插入图片描述

本文共计1318字,阅读大约需要4分钟,目录如下:

  • 方法简介
  • 演示数据来源
  • 代码演示
  • 小结
  • 代码参考
  • 往期单细胞系统教程

单细胞自动注释细胞类型的软件和方法十分繁多,早在2021年便有文章《Automatic cell type identification methods for single-cell RNA sequencing》汇总比较了不同单细胞注释软件之间的优劣。

图片

本次推文带来其中一种方法的演示,来自大家已经非常熟悉的Seurat包所自带的单细胞注释方法。

方法简介

该方法首次于2018年发表在Nature Biotechnology,题为《Integrating single-cell transcriptomic data across different conditions, technologies, and species》。作者首先通过典型关联分析(Canonical Correlation Analysis,CCA)的方法矫正不同样本间因为非生物因素造成的批次效应(考虑到文章发表较早,CCA容易出现过度矫正的可能及大样本合并的耗时太长等问题,在自己的数据进行实际操作时使用harmony或者其他方法合并亦可)来生成参考数据集。而后通过细胞类型标签对比及投射的方法获取验证数据集的单细胞类型及UMAP信息

简单解释一下就是准备好已知数据集去注释未知数据集,并且将未知数据集细胞的UMAP信息与已知数据集进行映射匹配,使得两组数据的同一种细胞类型在UMAP图中处于大概同一位置。

演示数据来源

本次为了方便大家获取数据,沿用原文作者使用的4例存储在R包SeuratData中的人类胰岛单细胞测序数据:CelSeq (GSE81076), CelSeq2 (GSE85241), Fluidigm C1 (GSE86469),和SMART-Seq2 (E-MTAB-5061)。

代码演示

###加载R包
library(Seurat)
library(SeuratData)
library(ggplot2)
library(cowplot)
library(patchwork)
###下载示例数据
InstallData("panc8")
###提取示例数据集
data("panc8")
pancreas.list <- SplitObject(panc8, split.by = "tech")
pancreas.list <- pancreas.list[c("celseq", "celseq2", "fluidigmc1", "smartseq2")]
###对list里的数据进行标准化并查找高变基因
for (i in 1:length(pancreas.list)) {
    pancreas.list[[i]] <- NormalizeData(pancreas.list[[i]], verbose = FALSE)
    pancreas.list[[i]] <- FindVariableFeatures(pancreas.list[[i]], selection.method = "vst", nfeatures = 2000,
        verbose = FALSE)
}
###使用CCA的方法整合其中3例数据作为参考数据集
reference.list <- pancreas.list[c("celseq", "celseq2", "smartseq2")]
###识别锚点
pancreas.anchors <- FindIntegrationAnchors(object.list = reference.list, dims = 1:30)
###利用识别到的锚点对参考数据集进行整合消除批次效应
pancreas.integrated <- IntegrateData(anchorset = pancreas.anchors, dims = 1:30)
DefaultAssay(pancreas.integrated) <- "integrated"
###对参考数据集进行归一化,PCA及UMAP降维
pancreas.integrated <- ScaleData(pancreas.integrated, verbose = FALSE)
pancreas.integrated <- RunPCA(pancreas.integrated, npcs = 30, verbose = FALSE)
pancreas.integrated <- RunUMAP(pancreas.integrated, reduction = "pca", dims = 1:30, verbose = FALSE)
###查看参考数据集不同数据及不同细胞分布情况
DimPlot(pancreas.integrated, reduction = "umap", group.by = "tech") |
DimPlot(pancreas.integrated, reduction = "umap", group.by = "celltype", label = TRUE, repel = TRUE) + NoLegend()

左图参考数据集经CCA合并后已基本消除不同测序方法的批次效应,右图不同细胞类型区分明显

图片

###调用验证数据集
pancreas.query <- pancreas.list[["fluidigmc1"]]
###查找参考数据集及验证数据集之间的锚点
pancreas.anchors <- FindTransferAnchors(reference = pancreas.integrated, query = pancreas.query,dims = 1:30, reference.reduction = "pca")
###通过TransferData()函数预测验证数据集细胞类型
predictions <- TransferData(anchorset = pancreas.anchors, refdata = pancreas.integrated$celltype,dims = 1:30)
###添加预测细胞类型信息
pancreas.query <- AddMetaData(pancreas.query, metadata = predictions)
###验证预测细胞类型准确性
pancreas.query$prediction.match <- pancreas.query$predicted.id == pancreas.query$celltype
table(pancreas.query$prediction.match)
### FALSE  TRUE 
###    21   617
###超过96%的细胞预测准确

接下来作者又通过典型marker基因的方法对预测细胞类型的准确性进行判断

VlnPlot(pancreas.query, c("REG1A", "PPY", "SST", "GHRL", "VWF", "SOX10"), group.by = "predicted.id")

图片

Seurat v4版本中,还添加了一项新的功能,就是可以通过MapQuery()函数统一参考数据集和验证数据集细胞的UMAP信息,大家看完图片展示就比较容易理解这一函数的作用了

###统一参考数据集和验证数据集UMAP信息
pancreas.integrated <- RunUMAP(pancreas.integrated, dims = 1:30, reduction = "pca", return.model = TRUE)
pancreas.query <- MapQuery(anchorset = pancreas.anchors, reference = pancreas.integrated, query = pancreas.query,refdata = list(celltype = "celltype"), reference.reduction = "pca", reduction.model = "umap")
###绘制参考数据集及验证数据集UMAP图
DimPlot(pancreas.integrated, reduction = "umap", group.by = "celltype", label = TRUE, label.size = 3, repel = TRUE) + NoLegend() + ggtitle("Reference annotations") | DimPlot(pancreas.query, reduction = "ref.umap", group.by = "predicted.celltype", label = TRUE, label.size = 3, repel = TRUE) + NoLegend() + ggtitle("Query transferred labels")

左右图分别为参考数据集和验证数据集UMAP图

图片

小结

使用Seurat自带注释方法的人相对来说较少,不过还是可以作为一个参考,用合适的方法做出符合预期的结果,叙述好一个生物学故事才是单细胞数据分析与挖掘最为重要的地方,在小编看来单细胞的注释还是自动注释工具结合人工marker基因注释才能够对一些稀有细胞亚群进行较为准确的注释。

本次的分享到此结束,写作不易,如果觉得对您有所帮助,麻烦点个赞吧!感谢!

代码参考

代码参考:https://satijalab.org/seurat/articles/integration_mapping.html


往期单细胞系统教程

单细胞分析实录(1): 认识Cell Hashing

单细胞分析实录(2): 使用Cell Ranger得到表达矩阵

单细胞分析实录(3): Cell Hashing数据拆分

单细胞分析实录(4): doublet检测

单细胞分析实录(5): Seurat标准流程

单细胞分析实录(6): 去除批次效应/整合数据

单细胞分析实录(7): 差异表达分析/细胞类型注释

推荐几个细胞注释网站

如何批量查询marker基因(对应的蛋白)会不会在膜上表达?

单细胞分析实录(8): 展示marker基因的4种图形(一)

单细胞分析实录(9): 展示marker基因的4种图形(二)

单细胞分析实录(10): 消除细胞周期的影响

单细胞分析实录(11): inferCNV的基本用法

单细胞分析实录(12): 如何推断肿瘤细胞

单细胞分析实录(13): inferCNV结合UPhyloplot2分析肿瘤进化

单细胞分析实录(14): 细胞类型注释的另一种思路 — CellID

单细胞分析实录(15): 基于monocle2的拟时序分析

单细胞分析实录(16): 非负矩阵分解(NMF)检测细胞异质性

单细胞分析实录(17): 非负矩阵分解(NMF)代码演示

单细胞分析实录(18): 基于CellPhoneDB的细胞通讯分析及可视化 (上篇)

单细胞分析实录(19): 基于CellPhoneDB的细胞通讯分析及可视化 (下篇)

一个对接CellPhoneDB的R包

【代码更新】单细胞分析实录(20): 将多个样本的CNV定位到染色体臂,并画热图

【代码更新】单细胞分析实录(21): 非负矩阵分解(NMF)的R代码实现,只需两步,啥图都有

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/580263.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试真题B卷 Java 实现【查字典】,附详细解题思路

一、题目描述 输入一个单词前缀和一个字典&#xff0c;输出包含该前缀的单词。 二、输入描述 单词前缀字典长度字典。 字典是一个有序单词数组。 输入输出都是小写。 三、输出描述 所有包含该前缀的单词&#xff0c;多个单词换行输出。 若没有则返回-1。 四、解题思路…

Java的包:提高代码可维护性和可扩展性的神器

&#x1f9d1;‍&#x1f4bb;CSDN主页&#xff1a;夏志121的主页 &#x1f4cb;专栏地址&#xff1a;Java基础进阶核心技术专栏 目录 &#x1f354; 一、包名 &#x1f9c6; 二、类的导入 &#x1f958; 三、静态导入 &#x1f958; 四、在包中增加类 &#x1f371; 五、…

腾讯云服务器地域有什么不同?地域怎么选?

腾讯云服务器地域有什么区别&#xff1f;怎么选择比较好&#xff1f;地域选择就近原则&#xff0c;距离地域越近网络延迟越低&#xff0c;速度越快。关于地域的选择还有很多因素&#xff0c;地域节点选择还要考虑到网络延迟速度方面、内网连接、是否需要备案、不同地域价格因素…

Docker环境下将已运行的容器打包成新的镜像并运行在另一个服务器上的Docker容器中

1、 查看当前运行的容器 1.1、使用root账户登录进入Linux系统中&#xff0c;键入docker ps命令。 2、打包容器为镜像包 2.1、正在运行的容器一行中CONTAINER ID一列下面的字符串就是容器id&#xff0c;复制想要打包的容器ID并执行docker commit 容器id 容器新名称 例如&…

Spring Boot集成Seata利用AT模式分布式事务示例 | Spring Cloud 53

一、前言 通过以下系列章节&#xff1a; docker-compose 实现Seata Server高可用部署 | Spring Cloud 51 Seata AT 模式理论学习、事务隔离及部分源码解析 | Spring Cloud 52 我们对Seata及其AT事务模式有了基础的了解&#xff0c;今天我们通过搭建Spring Boot集成Seata示例…

组合总和--纯垃圾内容别看,浪费时间

1题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选…

[电脑使用技巧]Windows 11安装安卓手机APP

如果你的电脑已经运行Windows 11,经常在电脑和手机来复制内容&#xff0c;那我们为什么不在Windows 上实现安卓APP的应用呢&#xff1f;其实操作真的非常简单&#xff0c;我们接下来给大家分享下如何实现在Windows 11的系统上安装的app。只要按照下面的步骤逐个完成你就可以开启…

ffmpeg编译成wasm

最近在看ffmpeg的源码 https://ffmpeg.xianwaizhiyin.net/ffplay/ https://crifan.github.io/media_process_ffmpeg/website/audio_process/ 做个可运行的例子 代码在找了一堆&#xff0c;可用的版本放在这 https://github.com/killinux/ffmpeg_wasm_demo 先把ffmpeg 编译成 …

50 Projects 50 Days - Scroll Animation 学习记录

项目地址 Scroll Animation 展示效果 Scroll Animation 实现思路 HTML结构比较简单&#xff0c;就是10个盒子元素。当鼠标滚动时&#xff0c;盒子分别从左右移动过来。 思路上最开始想到的是给每一个盒子标记一个序号&#xff0c;滚动屏幕后&#xff0c;计算已经划动屏幕的…

C++ - 非类型模版参数和模版的特化

目录 非类型模版参数 模版的特化 函数模版特化 类模版特化 全特化 半特化(偏特化) 参数更进一步的限制 非类型模版参数 在之前学过的例子来看&#xff0c;我们使用模版&#xff0c;它们的参数都是类型模版&#xff0c;根据类型来决定实例化 而模版其实还有一种参数&…

通过Python的pdfplumber库提取pdf中表格数据

文章目录 前言一、pdfplumber库是什么&#xff1f;二、安装pdfplumber库三、查看pdfplumber库版本四、提取pdf中表格数据1.引入库2.定义pdf文件路径3.打开pdf文件4.获取pdf文件中的页数5.遍历每一页6.获取当前页内容7.提取表格数据8.输出表格数据9.效果 总结 前言 大家好&#…

聊聊美剧202306

刚把《黄石》系列看完&#xff0c;决定写点最近看的美剧&#xff0c;总共十一部&#xff0c;小评一下&#xff0c;写点东西~ 《黄石》 《黄石》已经到第五季了&#xff0c;看样子还得继续拍。刚开始看《黄石》的时候&#xff0c;确实有种陷进去的感觉&#xff0c;很美很宏伟的电…

leetcode 264.丑数

题目描述跳转去leetcode 给你一个整数 n &#xff0c;请你找出并返回第 n 个 丑数 。 丑数 就是只包含质因数 2、3 和/或 5 的正整数。 来源&#xff1a;leecode&#xff1a;https://leetcode.cn/problems/ugly-number-ii/ 解法1&#xff0c; 动态规划 定义一个数组用来记录前…

VMware Workstation 安装 AlmaLinux 9.2

VMware Workstation 安装 AlmaLinux 9.2 AlmaLinux 9.2 镜像下载AlmaLinux 9.2 安装创建新用户配置免密 sudo 到 root 用户配置 ssh key 登录挂载新磁盘 AlmaLinux 9.2 镜像下载 访问 https://mirrors.almalinux.org/isos.html 下载安装镜像&#xff0c; AlmaLinux 9.2 安装 …

K8s进阶7——Sysdig、Falco、审计日志

文章目录 一、分析容器系统调用&#xff1a;Sysdig1.1. 安装1.2 常用参数1.3 采集分析1.4 示例1.4.1 查看某进程系统调用事件1.4.2 查看建立TCP连接事件1.4.3 查看某目录下打开的文件描述符1.4.4 查看容器的系统调用 1.5 Chisels工具1.5.1 网络类1.5.2 硬盘类1.5.3 cpu类1.5.4 …

新型智慧园区解决方案之园区通行管理设计

智慧园区作为现代化城市化建设的重要组成部分&#xff0c;已经成为未来城市的重要发展方向。在智慧园区的建设中&#xff0c;通行管理是一个十分重要的问题。为了解决这一问题&#xff0c;我们需要进行一系列的设计和方案的制定。 一、园区交通规划设计 园区交通规划设计是通…

IIS总线介绍

IIS是飞利浦在1986年定义(1996年修订)的数字音频传输标准&#xff0c;用于数字音频数据在系统内器件之间传输&#xff0c;例如编解码器CODEC、DSP、数字输入/输出接口、ADC、DAC和数字滤波器等。其与IC无关联。 IIS总线的信号&#xff1a; BCLK&#xff0c;串行时钟也叫位时钟…

以太坊 – 部署智能合约到Ganache

目录 1. Ganache本地区块链 1.1 主界面 1.2 设置 2. 开发智能合约 2.1 初始化项目 2.2 添加package.json文件 2.3 添加智能合约源文件 2.4 编译项目 3. 部署智能合约到Ganache 3.1 更新配置文件 3.2 创建迁移脚本 3.3 执行迁移命令 1. Ganache本地区块链 首先启动…

springboot配置Swagger3.0

springboot配置Swagger3.0 1、pom加入依赖 我们创建一个SpringBoot项目&#xff0c;引入 swagger3 依赖 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version>…

任正非:ChatGPT对我们的机会是什么,内部讲话实录!

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 我新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 为感谢全国火花奖获奖者对于产业界及科学界做出的重大贡献&#xff0c;华为组织了与部分获奖老师与专家的座谈会。座谈会上&…