单细胞 | label transfer with Seurat4(未知细胞映射到注释好的细胞图谱)

news2024/11/25 21:22:32

场景:把新的细胞比对到已经注释过的细胞集合上,获取映射后的细胞标签,UMP坐标。
准备:

  • 一个分析好的单细胞图谱数据集,作为reference数据集。
  • 一个新的单细胞counts矩阵,记为 query数据集。

主要分为两个步骤:1.获取分类标签,2.获取UMAP坐标。

1. R语言代码

library(Seurat)

#1. load data ====
pbmc=readRDS("~/data/scScripts/backup/data/pbmc3k_final.rds")
DimPlot(pbmc, label=T)


# 获取细胞子集:CD3很高的细胞
FeaturePlot(pbmc, features = c("CD3D", "CD3E", "CD3G"))
VlnPlot(pbmc, features = c("CD3D", "CD3E", "CD3G"), pt.size = 0)
small0=subset(pbmc, CD3D>3)
pbmc #2638 #as refer, 已知细胞图谱
small0 #228 #as query, 未知细胞

# 未知数据,没有标签
small=CreateSeuratObject(small0@assays$RNA@counts)
#标准化
small=NormalizeData(small)



#2. find anchor ----
anchors <- FindTransferAnchors(reference = pbmc, query = small,
                               dims = 1:10, reference.reduction = "pca")
# Retained 1070 anchors

# get predicted ID
predictions <- TransferData(anchorset = anchors, refdata = pbmc$seurat_clusters,
                            dims = 1:10)
# add metadata
small <- AddMetaData(small, metadata = predictions)
small
table(small$predicted.id)
#  0   1   4 
#104  58  66 
#DimPlot(small, label=T)




#3. UMAP projection----
pbmc2 <- RunUMAP(pbmc, dims = 1:10, reduction = "pca", return.model = TRUE)
pbmc2$celltype=Idents(pbmc2)

DimPlot(pbmc2, label=T)
small <- MapQuery(anchorset = anchors, reference = pbmc2, query = small,
                       #refdata = list(seurat_clusters = "seurat_clusters"),  #可以映射多个标签
                       refdata = list(seurat_clusters = "seurat_clusters", celltype="celltype"), 
                       reference.reduction = "pca", 
                       reduction.model = "umap")
# MapQuery() is a wrapper around three functions: TransferData(), IntegrateEmbeddings(), and ProjectUMAP().

p1 <- DimPlot(pbmc2, reduction = "umap", group.by = "seurat_clusters", label = TRUE, label.size = 3,
              repel = TRUE) + NoLegend() + ggtitle("Reference")
p2 <- DimPlot(small, reduction = "ref.umap", group.by = "predicted.id", label = TRUE,
              label.size = 3, repel = TRUE) + NoLegend() + ggtitle("Query of small")+
  xlim(-7,12)+ ylim(-7,12)
p1 + p2

q1 <- DimPlot(pbmc2, reduction = "umap", group.by = "celltype", label = TRUE, label.size = 3,
              repel = TRUE) + NoLegend() + ggtitle("Reference")
q2 <- DimPlot(small, reduction = "ref.umap", group.by = "predicted.celltype", label = TRUE,
              label.size = 3, repel = TRUE) + NoLegend() + ggtitle("Query of small")+
  xlim(-7,12)+ ylim(-7,12)
q1+q2

#结果的一致性比较
rs=table(small0$seurat_clusters, small$predicted.id)
rs[which(rowSums(rs)!=0),]
#   0  1  4
#0 97  1  0
#1  5 56  0
#4  2  1 64
#6  0  0  2
# 左侧是原始标签,顶部是预测的标签

2. 效果图

在这里插入图片描述

图2:
在这里插入图片描述

这样,就把未知细胞映射到已经注释好的细胞图谱中了。
除了映射 seurat_cluster 外,还能映射 celltype等自定义metadata。

refer

  • https://satijalab.org/seurat/articles/multimodal_reference_mapping.html
  • https://satijalab.org/seurat/articles/covid_sctmapping

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

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

相关文章

在浏览器从输入URL到页面加载完成都经历了什么/一个完整的URL解析过程详细介绍

一、简述在浏览器从输入URL到页面加载完成都经历了什么 浏览器地址栏输入url地址&#xff0c;首先要在客户端上进行url解析 浏览器会首先查看自身的缓存&#xff0c;如果浏览器缓存中有对应的解析记录&#xff0c;直接返回结果 如果浏览器没有缓存&#xff0c;电脑会查看本地操…

Selenium+Unittest自动化测试框架实战(框架源码都给你)

目录 前言 项目框架 首先管理时间 !/usr/bin/env python3 -- coding:utf-8 -- 配置文件 conf.py config.ini# 读取配置文件 记录操作日志 简单理解POM模型 管理页面元素 封装Selenium基类 创建页面对象 熟悉unittest测试框架 编写测试用例 执行用例 生成测试报…

qemu-ARM篇——ARM 栈帧(一)

ARM 栈帧 本系列均已 corter-A7(armv7-a) 为例 在 ARM 中&#xff0c;通常为满减栈&#xff08;Full Descending FD&#xff09;, 也就是说&#xff0c;堆栈指针指向堆栈内存中最后一个填充的位置&#xff0c;并且随着每个新数据项被压入堆栈而递减。 栈的本质 要理解栈的本…

前端CSS学习(三)

1、盒子模型 盒子的概念1、页面中的每一个标签&#xff0c;都可看做是一 个“盒子” &#xff0c;通过盒子的视角更方便的进行布局2、浏览器在渲染 (显示)网页时&#xff0c;会将网页中的元素看做是一个个的矩形区域&#xff0c;我们也形象的称之为盒子CSS中规定每个盒子分别由…

BESV博世蔚发布2023全新款折叠e-bike —— F3,在中国自行车展会上大放异彩

BESV博世蔚身为跨界智慧出行的专家&#xff0c;今年在国内最大规模的中国国际自行车展上发布了其最新的e-bike折叠车款---VOTANI F3。拥有纯正荷兰血统的VOTANI系列车款&#xff0c;在设计外观上沿袭了欧风的极简主义和时尚设计&#xff0c;并搭配上折叠系统更易于携带和收纳。…

AnyStock JS Crack,AnyStock JS功能

AnyStock JS Crack,AnyStock JS功能 添加了新的技术指标-除了已经支持的几十个指标外&#xff0c;股票图表现在还提供了三个新的开箱即用技术指标&#xff1a; Aroon振荡器-通过从Aroon Up中减去Aroon Down&#xff0c;可以很容易地测量趋势的强度。 加权移动平均线(WMA)-通过更…

D-遗迹探险

牛客小白月赛 72 D 题目链接 链接&#xff1a;https://ac.nowcoder.com/acm/contest/56825/D 来源&#xff1a;牛客网 示例1 输入 3 3 1 2 3 4 5 6 7 8 9 2 2 1 1 3 3 3 1 1 1 3 3 1输出 58 41题解&#xff1a; 如果先不考虑传送门&#xff0c;这题就是一道简单dp 设状态 …

【后端随笔】mysql操作语句记录

sql语句不区分大小写 show bases&#xff1b; --号注释 /**/多行注释 DDL定义 DML删改 DQL查询 DCL权限控制语言 1、DDL操作数据库 &#xff08;1&#xff09;查询 SHOW DATABASES; (2)创建 CREATE DATABASES;//创建数据库 CREATE DATABASES IF NOT EXISTS 数据库名称&#xff…

stata学习笔记①stata基础介绍

文章目录 一、为什么要学stata二、软件基本解释1.软件界面2.导入示例数据3.认识几个重要的功能符号 三、数据的基本观测四、统计性描述1.codebook 数据字典使用2.summarize 五、图像初步探索1.histogram 直方图2.graph box /hbox 箱线图3.vioplot小提琴图 一、为什么要学stata …

JavaWeb:过滤器 Filter、监听器 Listener

文章目录 JavaWeb - 04一、Filter1. 概述2. 实现步骤3. 运行结果 二、Filter 应用&#xff1a;实现权限拦截1. 登录步骤2. 添加的过滤器部分3. 运行结果4. 总结 三、监听器注意&#xff1a; JavaWeb - 04 一、Filter 1. 概述 Filter&#xff1a;过滤器&#xff0c;可以用来过…

有用的知识又增加了:为何无法编译某些  WWDC 官方视频中的代码?

概览 作为 Apple 开发者而言&#xff0c;每期 WWDC 官方视频无疑是我们日常必看的内容。 不过&#xff0c;小伙伴们是否发现视频中有些示例代码在我们自己测试时却无法编译这一尴尬的情况呢&#xff1f; 在本篇博文中&#xff0c;我们将通过一则非常简单的示例来向大家展示为…

【Matlab】基于遗传算法的列车发车时刻(发车间隔)优化

【Matlab】基于遗传算法的列车发车时刻&#xff08;发车间隔&#xff09;优化 一、模型介绍&#xff08;一&#xff09;引言&#xff08;二&#xff09;符号定义&#xff08;三&#xff09;目标函数(四&#xff09;约束条件4.1到达乘客数量4.2乘客进站限制4.3乘客总数量&#x…

Kyligence Zen产品体验-从人找数据到数据找人

目录 前言&#xff1a; 一、什么是Kyligence Zen&#xff1f; 1、个人总结 2、官方简介 二、1分钟打开新世界大门 个人总结&#xff1a; 1、注册 2、验证登录 三、上手初体验 1、快速上手&#xff08;入门&#xff09; 2、定制化应用 四、实战体验 综述&#xff1a; 1、卡…

java transient关键字 JSON序列化问题

今天做项目的时候&#xff0c;遇到了一个奇怪的事情看图&#xff1a; 在这个JSONObject中是有这个object对象的&#xff0c;但是我输出的的却没有这个对象&#xff0c;这是怎么回事&#xff1f; 这样不明显我换一个方式去输出 我在查看了代码之后发现了我的ResponseStatus这…

数据结构-查找-树形结构(二叉排序树、二叉平衡树、红黑树、B树、B+树)查找

目录 一、二叉排序树(BST) 查询 插入 构造二叉排序树 *删除 *查找效率分析 二、二叉平衡树 *插入数据保持平衡 LL ​编辑 RR LR RL 结 *查找效率分析 删除 三、红黑树 *插入 *删除 四、B树 *插入 *删除 五、B树 一、二叉排序树(BST) 定义&#xff1a;二叉排序…

python的opencv操作记录(13)-增强之直方图均衡化

文章目录 直方图增强基本逻辑-均衡化calcHist && equalizeHistcalcHistequalizeHist 自适应直方图均衡化 前段时间忙活深度网络和android的东西去了&#xff0c;好久没讲讲传统图像处理了&#xff0c;这一篇继续来说说opencv中的传统图像处理部分——图像增强之直方图增…

【谷粒商城之订单服务-RabbitMQ延时队列】

本笔记内容为尚硅谷谷粒商城订单服务锁库存事务最终一致性部分 目录 一、RabbitMQ延时队列 二、具体实现 1、 创建上述队列和路由组件 2、解锁库存 解锁库存的两种情况 1、当订单业务提交后回滚 2、订单取消解锁库存 三、关闭订单 四、消息丢失、挤压、重复等解决方案…

c++ 继承与派生

继承就是在原有类的基础上产生新类&#xff0c;从而减少了代码重复的必要 格式&#xff1a; class A{}; class B:继承方式 A{}; 在c继承中&#xff0c;有以下几点注意 (1)基类的构造函数与析构函数不能被继承 (2)派生类对基类成员的继承没有选择权&#xff0c;不能选择继承…

c++ 常用总结(三)

1.设计模式 GitHub - FengJungle/DesignPattern: Design pattern demo code &#xff08;一&#xff09; ① 简单工厂模式 再不学简单工厂模式&#xff0c;就真的要去工厂搬砖啦~_冯Jungle的博客-CSDN博客 通过以下的例子可见&#xff0c;只需要提供产品名称作为参数&…