利用Seurat处理空间转录组数据
数据获取
data
|-- spatial
|-- filtered_feature_bc_matrix.h5
也可以下载原始数据自己进行处理。
原始数据处理
sapce ranger主要的功能:
spaceranger mkfastq ##将bcl数据转换成fastq数据
spaceranger count ##将fastq数据转换成空间特征矩阵
spaceranger aggr ##可以将同分组,同流程的样本进行合并
处理思路大致如下:
space ranger结果包含许多结果:
├── analysis
├---├── clustering
│---├── diffexp
│---├── pca
│---├── tsne
│---└── umap
├── cloupe.cloupe
├── filtered_feature_bc_matrix ##需要的表达矩阵结果
│---├── barcodes.tsv.gz
│---├── features.tsv.gz
│---└── matrix.mtx.gz
├── filtered_feature_bc_matrix.h5 ##需要的表达矩阵结果
├── metrics_summary.csv
├── molecule_info.h5
├── possorted_genome_bam.bam
├── possorted_genome_bam.bam.bai
├── raw_feature_bc_matrix
│---├── barcodes.tsv.gz
│---├── features.tsv.gz
│---└── matrix.mtx.gz
├── raw_feature_bc_matrix.h5
├── spatial # 空间信息
│---├── aligned_fiducials.jpg
│---├── detected_tissue_image.jpg
│---├── scalefactors_json.json
│---├── tissue_hires_image.png
│---├── tissue_lowres_image.png
│---└── tissue_positions_list.csv
└── web_summary.html
一般需要的是 filtered_feature_bc_matrix/filtered_feature_bc_matrix.h5结果,和对应的spatial空间信息文件。数据读取
利用Seurat包中的Load10X_Spatial函数进行读取。
##加载相关R包
library(Seurat)
library(patchwork)
library(tidyverse)
###数据读取
brain<-Seurat::Load10X_Spatial("data/")
ps:如果不设置filename参数的话,默认读取"filtered_feature_bc_matrix.h5" 文件
数据预处理
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)
(向左滑动查看更多)
需要对数据进行标准化处理,从而减少测序深度带来的影响。同时,因为组织中细胞的密度差异原因,使得数据存在异质性,所以需要进行有效Normalization,但是因为组织特异性的原因,常规的标准化方法(LogNormalize)不适用。
###对数据进行标准化处理
brain <- SCTransform(brain, assay = "Spatial", verbose = FALSE)
(向左滑动查看更多)
基因表达的可视化
可以使用Seurat中的SpatialFeaturePlot函数来查看组织上的相关基因的表达情况
SpatialFeaturePlot(brain, features = c("Hpca", "Ttr"))
##未SCT标准化之前
##SCT标准化之后
##相关参数设置
pt.size.factor - 这将缩放spot的大小。默认是1.6
alpha - 最小和最大透明度。默认是c(0.1,1)
#相关参数修改
p1 <- SpatialFeaturePlot(brain, features = "Ttr", pt.size.factor = 1)
p2 <- SpatialFeaturePlot(brain, features = "Ttr", alpha = c(0.1, 1))
p1 + p2
(向左滑动查看更多)
降维、聚类、可视化
使用与scRNA-seq分析相同的工作流程,对空间转录组数据进行聚类。使用基于图形方法进行聚类。
brain <- RunPCA(brain, assay = "SCT", verbose = FALSE)
brain <- FindNeighbors(brain, reduction = "pca", dims = 1:30)
brain <- FindClusters(brain, verbose = FALSE)
brain <- RunUMAP(brain, reduction = "pca", dims = 1:30)
(向左滑动查看更多)使用DimPlot函数或SpatialDimPlot函数对cluster进行展示和查看。
####可视化查看
p1 <- DimPlot(brain, reduction = "umap", label = TRUE)
p2 <- SpatialDimPlot(brain, label = TRUE, label.size = 3)
p1 + p2
(向左滑动查看更多)
##查看特定类的情况
SpatialDimPlot(brain, cells.highlight = CellsByIdentities(object = brain, idents = c(2, 1, 4, 3, 5, 8)), facet.highlight = TRUE, ncol = 3)
(向左滑动查看更多)
识别空间变量特征
##识别两个cluster中的差异基因
de_markers <- FindMarkers(brain, ident.1 = 4, ident.2 = 6)
SpatialFeaturePlot(object = brain, features = rownames(de_markers)[1:3], alpha = c(0.1, 1), ncol = 3)
(向左滑动查看更多)
另一种方法是在没有预先注释的情况下,寻找显示空间模式的特征。利用FindSpatiallyVariables函数进行实现。
brain <- FindSpatiallyVariableFeatures(brain, assay = "SCT", features = VariableFeatures(brain)[1:1000], selection.method = "markvariogram")
###查看显著的基因
top.features <- head(SpatiallyVariableFeatures(brain, selection.method = "markvariogram"), 6)
SpatialFeaturePlot(brain, features = top.features, ncol = 3, alpha = c(0.1, 1))
暂时先介绍到这,如果有兴趣可以直接查看原文。https://satijalab.org/seurat/v3.2/spatial_vignette.html
参考资料:
Analysis, visualization, and integration of spatial datasets with Seurat
Seurat 新版教程:分析空间转录组数据
ST Pipeline: an automated pipeline for spatial mapping of unique transcripts
推荐阅读:
单细胞转录组+空间转录组联合绘制人类鳞状细胞癌组成和空间结构的多模式图谱
CELL | 空间转录组技术辅助揭示阿尔兹海默症中淀粉样蛋白斑诱导的转录组改变