10X空间转录组之空间共定位的一点思考和代码

作者,Evil Genius

在之前的分享中,分享了空间共定位的实现方法,但是今天回看文章的时候,又有了一点新的体会,看来温故而知新,实时温习很有作用。

我们来看看文章Spatial multi-omic map of human myocardial infarction, 2022年8月发表于nature,文章很多的代码都很经典,包括单细胞空间处理全分析代码,我放在了最后,大家可以随意拿走。

我们来看看文章对空间细胞类型共定位的运用
首先第一次的运用,是所有细胞类型之间的定位关系,识别细胞类型之间的空间生态位。

注意这里是细胞类型的整体定位,我们来看一下文章的介绍

evaluated three different neighbourhood area sizes using MISTy: (1) the importance of cell-type abundances within a spot (colocalization), (2) in the local neighbourhood (radius of 1 spot), and (3) in an extended neighbourhood that expanded to a radius of 15 spots. We observed that endothelial cells were the most predictive of the abundance of vSMCs, pericytes, adipocytes and cardiomyocytes within all spots, probably reflecting dependencies between cell types of the vasculature

初步的结论是淋巴细胞和髓细胞在免疫细胞浸润和炎症区表现出很强的依赖性(similarly captured by cell-type niche 5)。值得注意的是,观察到骨髓细胞和成纤维细胞之间存在很强的依赖性,它们在生态位4中高度共富集,这与巨噬细胞在成纤维细胞激活中和成纤维细胞在巨噬细胞吸引中所起的关键作用一致。在邻近和延伸的相邻SPOT之间,观察到与心脏血管相关的细胞(vSMCs,内皮细胞,周细胞和成纤维细胞)之间的依赖性更强,表明心肌血管网络主导心脏组织结构组织。

当然这里文章也说了一下,这是整体的情况,在不同的疾病条件下显然不可能是所有的某种细胞都发生了状态转变。所以在后续的分析中全部分析的是细胞亚群的生态位分析。
包括CMs细胞
Endo细胞
Fib
免疫细胞
也就是在整体的情况下,初步分析细胞类型的共定位情况,然后后续再分析不同疾病条件下细胞类型亚群的分布,每种亚群其实代表了不同的疾病状态转变,这种状态的转变,也会带来生态位的变化,这种空间排布的变化,解释了疾病的发生状态。
最后将整理好的共定位代码分享给大家MISTy,最后放上文章的所有代码
library(argparse)
library(tidyverse)
library(Seurat)
library(mistyR)
source("misty_utilities.R") 

parser = ArgumentParser()
parser$add_argument("--rds", help="rds file,sc and sp joint",required =T)
parser$add_argument("--outdir", help="outdir,Absolute path",required =T)
args <- parser$parse_args()

rds = args$rds
outdir = args$outdir


future::plan(future::multisession)


run_colocalization <- function(slide, 
                               assay, 
                               useful_features, 
                               out_label, 
                               misty_out_alias = outdir) {  ###输出目录大家自己制定
   
  # Define assay of each view ---------------
  view_assays <- list("main" = assay,
                      "juxta" = assay,
                      "para" = assay)
  # Define features of each view ------------
  view_features <- list("main" = useful_features, 
                        "juxta" = useful_features,
                        "para" = useful_features)
  # Define spatial context of each view -----
  view_types <- list("main" = "intra", 
                     "juxta" = "juxta",
                     "para" = "para")
  # Define additional parameters (l in case of paraview,
  # n of neighbors in case of juxta) --------
  view_params <- list("main" = NULL, 
                      "juxta" = 2,
                      "para" = 5)
  
  misty_out <- paste0(misty_out_alias, 
                      out_label, "_", assay)
  
  run_misty_seurat(visium.slide = slide,
                   view.assays = view_assays,
                   view.features = view_features,
                   view.types = view_types,
                   view.params = view_params,
                   spot.ids = NULL,
                   out.alias = misty_out)
  
  return(misty_out)
}


slide <- readRDS(rds) 

DefaultAssay(slide) <- 'predictions'

useful_features <- rownames(slide)   ####也可以自我设定感兴趣的细胞类型

useful_features <- useful_features[! useful_features %in% "prolif"]

mout <- run_colocalization(slide = slide,
                     useful_features = useful_features,
                     out_label = slide_id,
                     assay = assay,
                     misty_out_alias = outdir)


misty_res_slide <- collect_results(mout)
  
  plot_folder <- paste0(mout, "/plots")
  
  system(paste0("mkdir ", plot_folder))
  
  pdf(file = paste0(plot_folder, "/", slide_id, "_", "summary_plots.pdf"))
  
  mistyR::plot_improvement_stats(misty_res_slide)
  mistyR::plot_view_contributions(misty_res_slide)
  
  mistyR::plot_interaction_heatmap(misty_res_slide, "intra", cutoff = 0)
  mistyR::plot_interaction_communities(misty_res_slide, "intra", cutoff = 0.5)
  
  mistyR::plot_interaction_heatmap(misty_res_slide, "juxta_2", cutoff = 0)
  mistyR::plot_interaction_communities(misty_res_slide, "juxta_2", cutoff = 0.5)
  
  mistyR::plot_interaction_heatmap(misty_res_slide, "para_5", cutoff = 0)
  mistyR::plot_interaction_communities(misty_res_slide, "para_5", cutoff = 0.5)
  
  dev.off()
source代码如下(misty_utilities.R):
还有 59% 的精彩内容
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
支付 ¥50.00 继续阅读
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容