单细胞空间转录组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…

使用枚举来实现策略模式

使用很多if else的场景 public void save(String type,Object data){if("db".equals(type)){saveInDb(data);}else if("file".equals(type)){saveInFile(data);}else if("oss".equals(type)){saveInOss(data);}}使用枚举来解决 public enum Save…

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("…

C/C++面试八股

引用&#xff1a; C面经(简洁版)-CSDN博客 正文&#xff1a; 1. const 和 volatile 的区别&#xff1f; 2. const 和 volatile 可以共用么&#xff1f;

零基础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 页面需要针对该操作做出…

YoloV10改进策略:主干网络改进|DeBiFormer,可变形双级路由注意力|全网首发

摘要 在目标检测领域,YoloV10以其高效和准确的性能而闻名。然而,为了进一步提升其检测能力,我们引入了DeBiFormer作为YoloV10的主干网络。这个主干网络的计算量比较大,不过,上篇双级路由注意力的论文受到很大的关注,所以我也将这篇论文中的主干网络用来改进YoloV10,卡多…

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

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

商​汤​二​面

1. 请尽可能详细地说明&#xff0c;根据React Router的思想&#xff0c;如何使用History API实现History Router的PWA&#xff1f;请详细说明如何监听url的改变。 React Router 是一个用于在 React 应用中实现导航和路由的库。它允许你根据 URL 的变化来渲染不同的组件。结合 …

python编译问题 当你编译第一个python程序时可能出现如下错误

python编译问题 当你编译第一个python程序时可能出现如下错误 若出现如下错误&#xff1a; E:\p\venv\Scripts\python.exe E:/p/venv/d.py File “E:/p/venv/d.py”, line 5SyntaxError: Non-ASCII character ‘\xe7’ in file E:/p/venv/d.py on line 5, but no encoding d…

代码随想录算法训练营第十一天|383. 赎金信, 15. 三数之和

文档讲解&#xff1a;代码随想录 难度&#xff1a;easy 383. 赎金信 力扣题目链接(opens new window) 给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串&#xff0c;判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成&#xf…

算法Day-2

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

Adobe Illustrator如何在图片快速插入latex公式

Adobe Illustrator没法直接输入latex公式&#xff0c;也没有公式的字体 解决&#xff1a; 1.装插件&#xff1a;latex2ai&#xff08;我装不上&#xff09; 2.latex公式编辑网站&#xff08;图片识别公式多了要收费&#xff09;或者其他latex公式网站&#xff0c;公式打完保…

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

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

23种设计模式具体实现方法

提示&#xff1a;文章 文章目录 前言一、背景二、设计模式1、代理模式2、适配器模式2.1 总结 三、3.1 总结 前言 前期疑问&#xff1a; 本文目标&#xff1a; 一、背景 最近 二、设计模式 1、代理模式 参考的这篇文章&#xff0c;代理模式(Proxy) 同时这篇文章还引用了另…

动态规划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和目标端口号 应用层去识别报文的开始和结束