脚本更新---实现visium数据的空间距离分析2

作者,Evil Genius

这一篇我们要更新一下我们的脚本,在文章中脚本更新----实现visium数据的空间距离分析中提到了针对visium对两种细胞类型的距离度量计算,由于时间限制并没有很完善,这一篇我们来完整的补充一下。

首先大家要考虑一下数据结构的问题,Seurat的V4和V5结构是不一样的,所有脚本在运行的时候要学会抽取信息。

其中坐标信息的变化,其中V4结构在

spatial_coords <- seurat_obj@images$spatial@coordinates

####或者
spatial_coords <- seurat_obj@images[[slice]]@coordinates

数据格式如下,坐标信息包含六列,分析的时候默认采用scale后的坐标

V5结构不同,坐标在

spatial_coords <- seurat_obj@images$slice1@boundaries$centroids@coords
head(spatial_coords)

还有点与点的单位距离

seurat_obj@images$slice1@boundaries$centroids@radius
130.0574

V5结构的10X HD数据坐标也在相同的位置

可以看到V5结构的空间坐标只有两列。

那么在对不同结构分析空间距离的时候,就需要进行针对性的代码分析。

library(Seurat)
library(SeuratData)
library(tibble)
library(ggplot2)
library(patchwork)
library(dplyr)
library(Rmagic)
library(reticulate)
source("citeseq_function.R")
dataspat <- readRDS("data/spatial/HCC1T.rds")
第一步,单细胞空间联合,这个就不做了,R版本用RCTD做一下就行,拿到解卷积后的矩阵,存放在meta.data下面。
第二步,中性粒细胞与肿瘤的距离分析(大家自己的项目要选择自己的目标细胞类型)。

首先获取目标细胞,这里比如取中性粒细胞的坐标(定义细胞含量大于0.9),大家看这个代码就知道单细胞空间联合后的矩阵放在了meta.data下面,针对V4、V5要抽取对应的位置。

info <- dataspat@meta.data
 <- rownames(info)[info$Neutrophil > 
                          quantile(info$Neutrophil, probs = c(0.9))]

那么接下来获取肿瘤细胞(第二种标签)的坐标,这里的ident就是形态学注释的结果,标注这里是肿瘤区域

select2 <- rownames(info)[info$ident == "tumor"]

这个地方就开始有了不一样的内容,就像图中的那样,select1在肿瘤区域内,距离是0,相邻距离就是1,隔了一个spot,距离就是2,以此类推,spot_distance是一个自定义函数,放在最后,这里注意如果距离为0,在代码上会显示select1和select2有重复。

dist <- spot_distance(dataspat = dataspat,
                      select1 = select1,
                      select2 = select2)

到这就获得了两种标签的距离矩阵信息

注意这里获得了任意两个spot之间的距离(包括自己与自己),我们首先要抽取目标spot的矩阵。

接下来我们要判断距离信息,正常情况我们想知道每个中性粒细胞距离肿瘤区域的距离信息,就要取每个中性粒spot到肿瘤区域的最短距离,也就是最小值。

input <- do.call(rbind, lapply(colnames(dist), function(i){
  data.frame(id = i, dist = min(dist[,i]))
}))

拿到这个就需要绘图了,就是图I,这时候还是单线图,表征两种标签的距离信息。

plot <- ggplot(input, aes(y=dist,x=number))+
  geom_smooth(span = 1,  method = "loess", se = TRUE) +
  theme_bw() + 
  theme(panel.grid = element_blank(),
        axis.text = element_text(colour = "black", size = 15),
        axis.title = element_text(colour = "black", size = 15),
        panel.border = element_rect(fill = NA, color = "black", linewidth = 1))

图I的另一条先是针对目标基因的变化图,这个就跟大家前面的分析相关了,画图代码是一样的。

最后来更新source的脚本,由于坐标位置的差异,大家需要针对自己的数据格式做修改,首先第一步就是拿到坐标,整理成两列,x,y,行名是barcode,下面是个示例(V5).

还有 22% 的精彩内容
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
支付 ¥100.00 继续阅读
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容