10X空間轉錄組數據分析之細胞的空間依賴性

作者,追風少年i

hello,大家好,周五了,馬上大家就可以過一個美好的禮拜天了,不過現在還是工作的時間,今天分享一個分析細胞類型空間依賴性的代碼,分析的結果如下圖所示:

圖片.png

談起空間依賴性,其實跟生態位、細胞“單元”的意思差不多,就是某些細胞類型通常會聚集在一起,其實之前分享了很多空間共定位的文章,放在這里,供大家參考。

10X空間轉錄組時空基因細胞動態(共定位)繪圖

10X空間轉錄組分析之細胞的空間連接性

10X空間轉錄組分析之空間模式與共定位

首先呢,我們需要思考一個問題,我們要計算細胞的空間共定位或者叫依賴性,距離怎么判定??是必須在同一個spot里面,還是一個spot涵蓋周圍的spot或者更遠??這種認知一方面需要我們對組織的結構有一個清楚的認知,另一方面,就需要通過生信手段的方法來輔助分析了。

分析前準備

  • 單細胞空間聯合分析的結果矩陣(Seurat、cell2location結果均可)

好了,開始分享示例代碼

library(tidyverse)
library(Seurat)
library(mistyR)
source("misty_utilities.R")  ####source腳本的代碼放在了最下面

future::plan(future::multisession)
需要source的腳本misty_utilities.R代碼我放在了最后面。

定義共定位的分析函數

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)
}

這個函數主要用來定義如何界定共定位的距離,在這里我設定了main就是點內,每個點周圍的2層spot為點間(juxta),第三種情況就是更遠的范圍,設置為外圍的5層spot(para),關于點內,點間,和other的定義,之前說過,如下圖,所不同的是外圍幾層的設定,當然名稱大家可以改成自己喜歡的方式。

18814178-6f5c7e72a3e0a35a.png

好了,我們要繼續代碼了

slide <- readRDS(rds)  ###讀取單細胞空間聯合分析的rds,這里的rds包含了單細胞空間聯合分析的結果

####如果rds里面沒有包含單細胞空間聯合分析的結果,那么可以將分析的結果導入進去,方法如下

####anno  = read.csv(sp_sc.csv,header = T,row.names = 1 ,check.names = F)
####library(matrix)

####slide@assays$SCT@data = as(anno,"dgCMatrix")

####assay  = 'SCT'

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)  ###輸出目錄大家自己設定

分析到這里,基本上分析過程就結束了,文件如下,這里我選用了幾種細胞類型

圖片.png

這些文件包含了每種細胞類型在三種條件下細胞空間依賴性的結果,感興趣的大家可以分析看看,接下來我們要進行可視化。

文件里面的有些結果大家要認真對待一下,其中R2代表了absolute percentage,RMSE指均方根誤差。

好了,開始可視化

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()

在得到的圖片summary_plots.pdf里面就有了我們想要的分析結果,我們來看一下

intra情況下細胞之間的依賴情況

圖片.png

圖片.png

包含外圍2層spot的情況下細胞的空間依賴性

圖片.png

圖片.png

包含外圍5層spot情況下細胞的空間依賴性

圖片.png

圖片.png

可見隨著距離的遠近細胞之間共定位的情況會發生變化,其實點內和點間是我們關注的重點,結果的解讀就留給大家做自己的課題的時候認真思考吧。

我們延伸一下,可以看到通路分析的空間供定位

圖片.png

最后,附上source腳本misty_utilities.R代碼

還有 56% 的精彩內容
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
支付 ¥20.00 繼續閱讀

推薦閱讀更多精彩內容