Codeplot
spatial transcriptome analysis with Seurat

概述

本教程演示如何使用 Seurat (>=3.2) 空间转录组数据。虽然分析流程类似于单细胞 RNA-seq 分析的 Seurat 工作流程,但我们引入了更新的交互和可视化工具,特别强调空间和分子信息的整合。本教程将涵盖以下任务,我们认为这些任务在许多空间分析中都很常见:

  • 标准化
  • 降维和聚类
  • 检测空间可变特征
  • 交互式可视化
  • 与单细胞 RNA-seq 数据整合
  • 使用多个切片
    我们将会以常见的两个技术:10x Genomics的Visium 技术生成的数据集 和华大的Stereo-seq技术,作为应用案例。

首先,我们加载 Seurat 所需的其他包。

In [58]:

library(Seurat)
library(ggplot2)
library(patchwork)
library(dplyr)

In [59]:

library("htmltools")

In [107]:

getwd()
,'/mnt/sdc/xuzhicheng/wdl/notebook/seurat_spatial',

10x Visium

加载数据

在这里,我们使用 Visium 的矢状小鼠脑切片数据集。
我们可以在 官网下载数据, 并用 Load10X_Spatial() 读取数据. 这功能读取 spaceranger 的输出矩阵和及组织切片的相关图像。
In [68]:

#下载数据
download.file('https://cf.10xgenomics.com/samples/spatial-exp/1.0.0/V1_Mouse_Brain_Sagittal_Anterior_Section_2/V1_Mouse_Brain_Sagittal_Anterior_Section_2_filtered_feature_bc_matrix.h5','V1_Mouse_Brain_Sagittal_Anterior_Section_2_filtered_feature_bc_matrix.h5')
download.file('https://cf.10xgenomics.com/samples/spatial-exp/1.0.0/V1_Mouse_Brain_Sagittal_Anterior_Section_2/V1_Mouse_Brain_Sagittal_Anterior_Section_2_spatial.tar.gz','spatial.tar.gz')
#untar('spatial.tar.gz')

In [64]:

untar('spatial.tar.gz')

In [69]:

brain<-Load10X_Spatial(data.dir='./',filename='V1_Mouse_Brain_Sagittal_Anterior_Section_2_filtered_feature_bc_matrix.h5')

Out [69]:
Warning message in sparseMatrix(i = indices[] + 1, p = indptr[], x = as.numeric(x = counts[]), :
“'giveCsparse' has been deprecated; setting 'repr = "T"' for you”

In [70]:

brain

在 Seurat 对象中,基因表达矩阵的斑点类似于典型的“RNA” Assay,但包含斑点水平,而不是单细胞水平数据。图像本身存储在imagesSeurat 对象的新槽中。该images槽还存储将斑点与其在组织图像上的物理位置相关联所需的信息。

数据预处理

我们简单看下空间数据的数据情况,SpatialFeaturePlot可以查看空间数据的空间分布情况。

In [71]:

plot1 <- VlnPlot(brain, features = 'nCount_Spatial', pt.size = 0.1) + NoLegend()
plot2 <- SpatialFeaturePlot(brain, features = 'nCount_Spatial') + theme(legend.position = "right")
wrap_plots(plot1, plot2)

Out [71]:
Warning message:
guides(<scale> = FALSE) is deprecated. Please use guides(<scale> = "none") instead.”

img
这些图表明,空间转录组数据的差异不仅是技术性差异还还取决于组织空间解剖结构。因此Seurat建议使用 sctransform(Hafemeister 和 Satija,Genome Biology 2019)进行标准化,它建立基因表达的正则化负二项式模型,以便在保留生物学差异的同时考虑技术伪影。更多信息查看相应论文
sctransform 标准化, 将数据存储在 SCT assay中.
In []:

brain <- SCTransform(brain, assay = "Spatial", verbose = FALSE)

SCTransform和 log 归一化区别

In []:

brain <- SCTransform(brain, assay = "Spatial", return.only.var.genes = FALSE, verbose = FALSE)
# 标准log标准化
brain <- NormalizeData(brain, verbose = FALSE, assay = "Spatial")

In [74]:

# 计算 sctransform 和 log 归一化结果如与 UMI 的数量关联关系
brain <- GroupCorrelation(brain, group.assay = "Spatial", assay = "Spatial", slot = "data", do.plot = FALSE)
brain <- GroupCorrelation(brain, group.assay = "Spatial", assay = "SCT", slot = "scale.data", do.plot = FALSE)

In [75]:

p1 <- GroupCorrelationPlot(brain, assay = "Spatial", cor = "nCount_Spatial_cor") + ggtitle("Log Normalization") + theme(plot.title = element_text(hjust = 0.5))
p2 <- GroupCorrelationPlot(brain, assay = "SCT", cor = "nCount_Spatial_cor") + ggtitle("SCTransform Normalization") + theme(plot.title = element_text(hjust = 0.5))
p1 + p2

img
上面的箱线图,计算了每个基因与 UMI 数量(nCount_Spatial此处为变量)的相关性。然后,根据基因的平均表达将基因分组,并生成这些相关性的箱线图。您可以看到对数标准化未能充分标准化前三组中的基因,这表明技术因素继续影响高表达基因的标准化表达估计。相比之下,sctransform 归一化大大减轻了这种影响。

基因表达可视化

在 Seurat,我们具有探索空间数据固有的视觉特性并与之交互的功能。Seurat 中的 SpatialFeaturePlot()功能扩展FeaturePlot(),并且可以将表达点叠加在组织组织学之上。我们可以 用SpatialFeaturePlot() 查看感兴趣基因在空间表达情况。
In [76]:

SpatialFeaturePlot(brain, features = c("Hpca", "Ttr"))

Out [76]:
Warning message:
guides(<scale> = FALSE) is deprecated. Please use guides(<scale> = "none") instead.”
Warning message:
guides(<scale> = FALSE) is deprecated. Please use guides(<scale> = "none") instead.”