10X空间转录组同型细胞网络绘制(cell degree)

2023-07-23  本文已影响0人  单细胞空间交响乐

作者,Evil Genius

什么是细胞“网络”?细胞在空间位置上不是随机出现的,细胞在空间上的定位受到了周围环境以及自身状态的影响,而这种影响的结果,就是每种细胞类型在空间上形成了具有区域偏好性的细胞“网络”。为了系统的确定特定细胞类型的细胞区域“网络”,计算了每种细胞类别中的空间位置彼此相邻的倾向,这里我们称之为同型细胞“网络”。

同型细胞“网络”是为了确定单一细胞类型在空间上的分布特点,多条件进行比较会发现明显的差异和生物学变化。

为了评估每一类(这里就是细胞类型)中spot的空间聚类程度,针对空间转录组构建空间细胞网络,计算网络中每个点 i 的spot degree--- ki(即直接相邻spot的数量,对于 Visium 对应的最大spot degree为 6),文章展示图如下:

意思就是一个spot含有细胞类型A,那其周围的6个spot如果都含有A,那么该spot 为等级6,5个spot含有A则是等级5,以此类推。

随便找了个数据试了一下,拿到下面的效果

当然了,用HE图片的效果比荧光效果好的多,当然,这个图的绘制也是相当复杂。

好看的图片需要以下几个要素:

1、主题:一幅好照片必须有一个鲜明的主题,可以是表现一件事、一个人,也可以表现组照作品故事中的某一个细节。主题明确的作品,要表述的内容让观众一目了然,也就是说,能够使观众很容易从照片中看明白作者的意图。
2、简洁清晰:想必大家都知道这么一句话:绘画是加法,摄影是减法。也就是说,摄影的画面越简洁越好。简洁不等于简单,也不是指画面中被摄内容的多少,而是指画面与主题无关的视觉元素越少越好。
3、颜色搭配:颜色搭配也是一门很深的学问

我们就来实现一下这个方法,首先我们要构建空间网络,寻找每个spot周围6个spot,随后计算细胞等级。

library(Seurat)
library(dplyr)
cortex_sp = readRDS(spatial.rds)

decon_mtrx = t(cortex_sp@assays$predictions@data)

cell_types_all <- colnames(decon_mtrx)[which(colnames(decon_mtrx) != "max")]

decon_df <- decon_mtrx %>%
  data.frame(check.names = F) %>%
  tibble::rownames_to_column("barcodes")

#decon_df$barcodes = rownames(tmp)

cortex_sp@meta.data <- cortex_sp@meta.data %>%
  tibble::rownames_to_column("barcodes") %>%
  dplyr::left_join(decon_df, by = "barcodes") %>%
  tibble::column_to_rownames("barcodes")

###plot dot
slice <- names(cortex_sp@images)[1]
metadata_ds <- data.frame(cortex_sp@meta.data)
colnames(metadata_ds) <- colnames(cortex_sp@meta.data)
cell_types_interest <- cell_types_all

metadata_ds <- metadata_ds %>% tibble::rownames_to_column("barcodeID") %>%
            dplyr::mutate(rsum = base::rowSums(.[, cell_types_interest,
                drop = FALSE])) %>% dplyr::filter(rsum != 0) %>%
            dplyr::select("barcodeID") %>% dplyr::left_join(metadata_ds %>%
            tibble::rownames_to_column("barcodeID"), by = "barcodeID") %>%
            tibble::column_to_rownames("barcodeID")


spatial_coord <- data.frame(cortex_sp@images[[slice]]@coordinates) %>%
        tibble::rownames_to_column("barcodeID") %>% dplyr::mutate(imagerow_scaled = imagerow *
        cortex_sp@images[[slice]]@scale.factors$lowres, imagecol_scaled = imagecol *
        cortex_sp@images[[slice]]@scale.factors$lowres) %>% dplyr::inner_join(metadata_ds %>%
        tibble::rownames_to_column("barcodeID"), by = "barcodeID")



###添加坐标信息
st.object = cortex_sp

st.object$pixel_x = spatial_coord$imagerow_scaled
st.object$pixel_y = spatial_coord$imagecol_scaled
st.object$sample = st.object$orig.ident

xys = setNames(st.object@meta.data[, c("pixel_x", "pixel_y", "sample")], c("x", "y", "sample"))

platforms = 'Visium'

spotnames <- rownames(xys)
library(dplyr)
names(spotnames) <- c(1:nrow(xys)) %>% paste0()
# Get spot distances
sdist = 200
###10X空间转录组临近的6个spot
nNeighbours = 6
maxdist = 200

接下来就要构建空间近邻网络

上一篇下一篇

猜你喜欢

热点阅读