Seurat分析Slide-seq空间转录组
此教程是使用Seurat分析 Slide-seq v2数据;大部分流程和步骤还是和10x Visium分析流程一样 。
# 数据集
InstallData("ssHippo")
slide.seq <- LoadData("ssHippo")
# 数据预处理
这一步与10x Visium数据处理差不多;但是当前的测试数据含有许多UMI很低的值,但在本教程中也是保留所有检测到的数据进行下游分析。
plot1 <- VlnPlot(slide.seq, features = "nCount_Spatial", pt.size = 0, log = TRUE) + NoLegend()
slide.seq$log_nCount_Spatial <- log(slide.seq$nCount_Spatial)
plot2 <- SpatialFeaturePlot(slide.seq, features = "log_nCount_Spatial") + theme(legend.position = "right")
wrap_plots(plot1, plot2)
image.png
然后使用sctransform对数据进行标准化,并进行数据降维和聚类。
slide.seq <- SCTransform(slide.seq, assay = "Spatial", ncells = 3000, verbose = FALSE)
slide.seq <- RunPCA(slide.seq)
slide.seq <- RunUMAP(slide.seq, dims = 1:30)
slide.seq <- FindNeighbors(slide.seq, dims = 1:30)
slide.seq <- FindClusters(slide.seq, resolution = 0.3, verbose = FALSE)
基于UMAP 可视化数据结果(DimPlot())或给予bead对应位置进行空间可视化(SpatialDimPlot())
plot1 <- DimPlot(slide.seq, reduction = "umap", label = TRUE)
plot2 <- SpatialDimPlot(slide.seq, stroke = 0)
plot1 + plot2
image.png
SpatialDimPlot(slide.seq, cells.highlight = CellsByIdentities(object = slide.seq, idents = c(1,
6, 13)), facet.highlight = TRUE)
image.png
# 整合scRNA-seq参考数据
为了便于对Slide seq数据集进行细胞类型注释,利用现有的小鼠ScRNAseq海马数据集( Saunders, Macosko, et al. 2018)。
处理后的数据,保存为Seurat对象,下载地址: data
原始矩阵数据下载: DropViz website
ref <- readRDS("./mouse_hippocampus_reference.rds")
paper中细胞类型注释保存在Seurat 的cell metadata中;注释包含了不同层级的注释,ref$class是初始注释,ref$subcluster是对初始注释进行了的下一级注释;
首先运行Seurat标签转移方法来预测每个磁柱上的主要细胞类型。
anchors <- FindTransferAnchors(reference = ref, query = slide.seq, normalization.method = "SCT",
npcs = 50)
predictions.assay <- TransferData(anchorset = anchors, refdata = ref$celltype, prediction.assay = TRUE,
weight.reduction = slide.seq[["pca"]], dims = 1:50)
slide.seq[["predictions"]] <- predictions.assay
然后可视化预测的分数:
DefaultAssay(slide.seq) <- "predictions"
SpatialFeaturePlot(slide.seq, features = c("Dentate Principal cells", "CA3 Principal cells", "Entorhinal cortex",
"Endothelial tip", "Ependymal", "Oligodendrocyte"), alpha = c(0.1, 1))
slide.seq$predicted.id <- GetTransferPredictions(slide.seq)
Idents(slide.seq) <- "predicted.id"
SpatialDimPlot(slide.seq, cells.highlight = CellsByIdentities(object = slide.seq, idents = c("CA3 Principal cells",
"Dentate Principal cells", "Endothelial tip")), facet.highlight = TRUE)
image.png
# 鉴定空间差异表达基因
一般使用两种方法:
- 统计分析预注释的切片区域鉴定差异表达基因;
- 统计分析基因表达对空间位置的依赖性
对于第二种方法,FindSpatiallyVariableFeatures(method = 'moransi')便可以实现,函数实现了一种叫Moran’s I 的算法;Moran’s I 可以对一个基因表达对空间位置的依赖性进行打分(类似于相关性系数)。这就允许我们基于基因的空间表达变化进行打分。这就允许我们依赖于基因表达值对基因进行快速的排序。为了快速实现这个计算过程,seurat采用了一个基本区间(bin)的策略,基于选择一个矩阵方框的Slide-seq puck,然后平均其表达和定位。在x和y轴上bin的数量分别使用x.cuts和y.cuts确定。另外,可以安装Rfast2包install.packages('Rfast2')
, 这个包可以减少这个过程运行时间。
DefaultAssay(slide.seq) <- "SCT"
slide.seq <- FindSpatiallyVariableFeatures(slide.seq, assay = "SCT", slot = "scale.data", features = VariableFeatures(slide.seq)[1:1000],
selection.method = "moransi", x.cuts = 100, y.cuts = 100)
展示Moran’s I鉴定的top6个基因:
SpatialFeaturePlot(slide.seq, features = head(SpatiallyVariableFeatures(slide.seq, selection.method = "moransi"),
6), ncol = 3, alpha = c(0.1, 1), max.cutoff = "q95")
image.png
# 原文
Analysis, visualization, and integration of spatial datasets with Seurat
# 系列文章
Seurat分析10x Visium空间转录组数据
单细胞测序分析: Seurat V3联合harmony进行单细胞数据整合分析
单细胞测序分析: Seurat 使用教程