单细胞空间转录组RCTD去卷积分析学习和整理

RCTD(Robust Cell Type Decomposition),是一种用于将单细胞RNA测序数据中的细胞类型注释转移到空间转录组学数据上的方法。RCTD 通过整合单细胞和空间转录组学数据,能够较为精确地为空间点(spots)分配细胞类型或细胞类型的混合,以便更好地理解空间组织结构中的基因表达情况。

RCTD提供三种模式:

  1. Doublet mode: 该模式为每个测序点分配1-2种细胞类型,推荐用于具有高空间分辨率的技术,如Slide-seq和MERFISH;

  2. Full mode: 该模式为每个测序点分配任意数量的细胞类型,推荐用于空间分辨率较低的技术,如100微米分辨率的Visium;

  3. Multi mode: 这是doublet mode的扩展版本,能够在每个测序点发现超过两种细胞类型,是全模式的替代选项。

每一种都有不同的应用场景,官网提示大多数都可以用Doublet mode

分析步骤
1.导入
rm(list = ls())
library(spacexr)
library(Matrix)
library(Seurat)
library(qs)
library(BiocParallel)
register(MulticoreParam(workers = 8, progressbar = TRUE)) # 10x Visium
sce_s <- Load10X_Spatial(data.dir = "./RawData/GSE6716963/",filename = "GSM6716963_19G081_filtered_feature_bc_matrix.h5")# reference
sc_dataset <- qread("sc_dataset.qs")
2.数据预处理
# 过滤
sce_s <- subset(sce_s, nCount_Spatial > 5000)
sce_s <- subset(sce_s, nCount_Spatial < 35000)
# 归一化/找高变/ScaleData
sce_s <- NormalizeData(sce_s)
sce_s <- FindVariableFeatures(sce_s)
sce_s <- ScaleData(sce_s)
# PCA/UMAP
sce_s <- RunPCA(sce_s)
sce_s <- RunUMAP(sce_s, reduction = "pca", dims = 1:50)
# FindNeihbors/Cluster
sce_s <- FindNeighbors(sce_s, reduction = "pca", dims=1:50)
sce_s <- FindClusters(sce_s, resolution = 0.5, verbose = FALSE)Idents(sce_s) <- sce_s$Spatial_snn_res.0.5
all.markers <- FindAllMarkers(sce_s, only.pos = T)
head(all.markers)# reference处理##################
# reference细胞数量少一点,多了就好慢
ref <- subset(sc_dataset,downsample = 2000)
ref <- SCTransform(sc_dataset,ncells = 3000, verbose = FALSE) %>%RunPCA(verbose = FALSE) %>%RunUMAP(dims = 1:30)# 建议大家都不要用特殊符号
# R语言不喜欢这些特殊符号
a <- ref@meta.data
a$celltype <- sub("/","_",a$celltype)
ref@meta.data <- aDimPlot(ref, group.by = "celltype", label = TRUE)
3.RCTD分析

input数据准备

# 如果抽样之后的细胞数太少(25个?)需要去除
ref <- subset(ref,celltype !="C3"&celltype !="C5")# extract information to pass to the RCTD Reference function
counts <- ref[["RNA"]]$counts # 官网使用counts
cluster <- as.factor(ref$celltype)
cluster <- droplevels(cluster) # 如果去除了某些celltype
names(cluster) <- colnames(ref)
nUMI <- ref$nCount_RNA 
names(nUMI) <- colnames(ref)
reference <- Reference(counts, cluster, nUMI)# set up query with the RCTD function SpatialRNA
counts <- sce_s[["Spatial"]]@counts
coords <- GetTissueCoordinates(sce_s)
colnames(coords) <- c("x", "y")
coords[is.na(colnames(coords))] <- NULL
query <- SpatialRNA(coords, counts, colSums(counts))

RCTD-deconvolution

RCTD <- create.RCTD(query, reference, max_cores = 8)
RCTD <- run.RCTD(RCTD, doublet_mode = "doublet")
qsave(RCTD,"RCTD.qs")sce_s <- AddMetaData(sce_s, metadata = RCTD@results$results_df)
# 通常关注这个SPOT丰度最高
p1 <- SpatialDimPlot(sce_s, group.by = "first_type") 
# SPOT丰度第二高
p2 <- SpatialDimPlot(sce_s, group.by = "second_type")
p1+p2

4.RCTD结果可视化
barcodes <- colnames(RCTD@spatialRNA@counts)
weights <- RCTD@results$weights
norm_weights <- normalize_weights(weights)# observe weight values
celltypes <- c('pericyte_SMC', 'endothelial cells','mast cells')
print(head(norm_weights[,celltypes])) 
head(norm_weights)# plot
p <- plot_puck_continuous(RCTD@spatialRNA,barcodes,norm_weights[,'pericyte_SMC'],ylimit=c(0,0.5),title='plotofDentateweights',size=4.5,alpha=0.8);p
ggsave("Spaital_weights.pdf",width=8,height=6,plot=p,bg="white")

STdeconvolve绘制

library(STdeconvolve)
library(ggplot2)
library(ggsci)
packageVersion("STdeconvolve")m <- as.matrix(norm_weights)
p <- coordsplt <- vizAllTopics(theta = m,pos = p,topicOrder=seq(ncol(m)),topicCols=rainbow(ncol(m)),groups = NA,group_cols = NA,r = 3, # size of scatterpies; adjust depending on the coordinates of the pixelslwd = 0.3,showLegend = TRUE,plotTitle = "scatterpies")## function returns a `ggplot2` object, so other aesthetics can be added on:
plt <- plt + ggplot2::guides(fill=ggplot2::guide_legend(ncol=2));plt
ggsave("Spaital_scatterpies.pdf", width=9, height=6, plot=plt, bg="white")

参考资料:
  1. Robust decomposition of cell type mixtures in spatial transcriptomics. Nat Biotechnol. 2022 Apr;40(4):517-526

  2. RCTD-Seirat:https://satijalab.org/seurat/articles/spatial_vignette.html#working-with-multiple-slices-in-seurat

  3. github:https://github.com/dmcable/spacexr/tree/master/vignettes

  4. 单细胞天地:https://mp.weixin.qq.com/s/r78K4tm44VqV2FsIoS71Cg

  5. 朴素的科研打工仔:https://mp.weixin.qq.com/s/jmNw8yxqV3IsMeLAIJpubg

  6. 单细胞空间交响乐:https://mp.weixin.qq.com/s/y8gfRA91IaHt-svFKdhuHA

单细胞空转分析流程

既往推文:

单细胞空间转录组分析流程学习(一):https://mp.weixin.qq.com/s/E4WuPokBOxKRbBF6CEB5aA

单细胞空间转录组分析流程学习(二): https://mp.weixin.qq.com/s/8AFeq50Dc91cI_6jdQZfFg

单细胞空间转录组分析流程学习python版(三): https://mp.weixin.qq.com/s/wt4nVi8pTFwQMNN8Ipj_mA

:若对内容有疑惑或者有发现明确错误的朋友,请联系后台(欢迎交流)。更多内容可关注公众号:生信方舟

- END -

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

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

相关文章

LabVIEW风机滚动轴承监测系统

矿井主通风机作为矿井中最重要的通风设备&#xff0c;一旦出现故障&#xff0c;不仅会影响矿井内的空气质量&#xff0c;还可能引发安全事故。研究表明&#xff0c;通风机中约30%的故障是由轴承问题引起的。因此&#xff0c;能够实时监控矿井主通风机轴承状态的系统&#xff0c…

CSS网页布局(重塑网页布局)

一、实现两列布局 许多网站有一些特点&#xff0c;如页面顶部放置一个大的导航或广告条&#xff0c;右侧是链接或图片&#xff0c;左侧放置主要内容&#xff0c;页面底部放置版权信息等 一般情况&#xff0c;此类网页布局的两列都有固定的宽度&#xff0c;而且从内容上很容易区…

学习java第九天 简单小项目

今天简单写了小项目 import java.math.*; import java.util.*; public class Project_array{// data 拿到外面 封装的方法 共享同一个变量// static 静态上下文只能直接访问静态的变量// 一旦加上static 代表当前的变量全局共享一份static Record[] data {new Record("…

零基础Java第八期:一维数组(1)

目录 一、 一维数组的基本概念 1.1. 什么是数组 1.2. 数组的创建及初始化 1.3. 数组的使用 二、数组是引用类型 2.1. 初始JVM的内存分布 2.2. 基本类型变量与引用类型变量 2.3. 引用变量的理解 2.4. null 三、数组的应用场景 3.1. 作为函数的参数 3.2. 作为函数的返…

你可能需要的多文档页面交互方案

前言 欢迎关注同名公众号《熊的猫》&#xff0c;文章会同步更新&#xff01; 在日常工作中&#xff0c;面对不同的需求场景&#xff0c;你可能会遇到需要进行多文档页面间交互的实现&#xff0c;例如在 A 页面跳转到 B 页面进行某些操作后&#xff0c;A 页面需要针对该操作做出…

成本决定未来——AIGC 下半场,高成本阻碍发展,我们该怎么办?

你好&#xff0c;我是三桥君 你最近有没有觉得工作中用到的那些 AI 工具好像越来越便宜了呢&#xff1f;这可不是偶然哦。 今天&#xff0c;三桥君就来聊聊为啥 AIGC 的下半场成本这么重要&#xff1f; 你想想看&#xff0c;咱平时工作已经够累了&#xff0c;要是再加上用那些贵…

算法Day-2

27. 移除元素 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k&#xff0c;要通过此题&#xff0c;您需要执行以下操作&am…

zotero下载、安装、翻译和显示无法安装插件“%S”的解决办法

文章目录 zotero下载和安装和翻译还有插件英文翻译软件遇到的问题 zotero下载和安装和翻译还有插件 Zotero从入门到精通第一期–如何省心省力翻译科研文献&#xff0c;这里面主要是使用小牛翻译的过程&#xff0c;输入产品密匙需要加入个人的账号密码进行sign in 英文翻译软件…

动态规划17:123. 买卖股票的最佳时机 III

动态规划解题步骤&#xff1a; 1.确定状态表示&#xff1a;dp[i]是什么 2.确定状态转移方程&#xff1a;dp[i]等于什么 3.初始化&#xff1a;确保状态转移方程不越界 4.确定填表顺序&#xff1a;根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接&#xff1a;123.…

递归神经网络(RNN)简介

递归神经网络简介 在本文中,我们将介绍神经网络的一种新的变体,即递归神经网络,也称为 (RNN),当数据是连续的时,如时间序列数据和文本数据,它比简单的神经网络效果更好。 什么是递归神经网络 (RNN)? 循环神经网络 (RNN) 是一种神经网络,其中上一步的输出作为当前…

Quarto ppt模板制作与Rstudio git连接

本篇记录下当前ppt演示中比较流行的quarto document使用情况以及Rstudio与git相连接的一些实操。 1 Quarto ppt模板制作 1.1 Quarto简介&#xff08;来自Kimi&#xff09; Quarto 是一个由 RStudio 的母公司 Posit 团队开发的开源科学和技术出版系统&#xff0c;它建立在 Pan…

计算机网络——传输层服务

传输层会给段加上目标ip和目标端口号 应用层去识别报文的开始和结束

upload-labs靶场Pass-01

upload-labs靶场Pass-01 分析 查看提示&#xff0c;提示如下 查看源码 function checkFile() {var file document.getElementsByName(upload_file)[0].value;if (file null || file "") {alert("请选择要上传的文件!");return false;}//定义允许上传…

Java-类与对象-下篇

关于类与对象&#xff0c;内容较多&#xff0c;我们分为两篇进行讲解&#xff1a; &#x1f4da; Java-类与对象-上篇&#xff1a;————<传送门:Java-类与对象-上篇-CSDN博客> &#x1f4d5; 面向对象的概念 &#x1f4d5; 类的定义格式 &#x1f4d5; 类的使用 …

ubuntu 安装nginx

sudo apt-get update sudo apt-get install nginx sudo nginx -vsudo systemctl status nginx sudo systemctl start nginx sudo systemctl stop nginx sudo systemctl restart nginx#浏览器输入&#xff1a;http://192.168.31.181/#查看文件结构 cd /etc/nginx sudo cp nginx.…

Java 类和对象详解(下)

个人主页&#xff1a;鲤鱼王打挺-CSDN博客 目录 &#x1f497;前言&#xff1a; &#x1f4af;一.static关键字 1. 为什么要使用static 2. static 修饰成员变量&#xff1a; 3. static 修饰成员方法&#xff1a; ​编辑 4. 静态代码块 5.静态导入包 &#x1f4af;二.…

Wi-Fi安全性入门(基于ESP-IDF-v4.4)

主要参考资料&#xff1a; Wi-Fi 安全性: https://docs.espressif.com/projects/esp-idf/zh_CN/release-v4.4/esp32/api-guides/wifi-security.html 目录 1.ESP32 Wi-Fi 安全功能1.1 受保护的管理帧 (PMF)1.2 第三代 Wi-Fi 访问保护 (WPA3-Personal) 1.ESP32 Wi-Fi 安全功能 支…

linux系统之jar启动脚本

编辑linux启动脚本 执行 vi run_blog 按i 进入编辑&#xff0c;复制以下代码&#xff0c;并根据当前环境修改三个参数。以下是详细完整脚本代码&#xff1a; #!/bin/bash# 配置部分 JAR_PATH"/path/to/your/app.jar" # 替换为你的 JAR 文件的实际路径 L…

Gin框架操作指南07:路由与中间件

官方文档地址&#xff08;中文&#xff09;&#xff1a;https://gin-gonic.com/zh-cn/docs/ 注&#xff1a;本教程采用工作区机制&#xff0c;所以一个项目下载了Gin框架&#xff0c;其余项目就无需重复下载&#xff0c;想了解的读者可阅读第一节&#xff1a;Gin操作指南&#…

【JVM】内存模型

文章目录 内存模型的基本概念案例 程序计数器栈Java虚拟机栈局部变量表栈帧中局部变量表的实际状态栈帧中存放的数据有哪些 操作数栈帧数据 本地方法栈 堆堆空间是如何进行管理的? 方法区静态变量存储 直接内存直接内存的作用 内存模型的基本概念 在前面的学习中,我们知道了字…