SCS 55.单细胞空间组织病理学图像分割(SPATA2)
Spatial Segmentation
介绍
空间转录组样本通常附带一张基础的组织病理学图像。为了整合特定观察区域的组织病理学分类,可以使用SPATA2对样本进行手动分割。例如,我们使用的是一个中枢神经系统恶性肿瘤的空间转录组样本,该样本包含三个不同的相邻组织病理学区域:肿瘤区、过渡区以及浸润性皮层。
# load required packages
library(tidyverse)
library(SPATA2)
library(ggallin)
# load SPATA2 inbuilt data
object_t269 <- loadExampleObject("UKF269T", meta = TRUE, process = TRUE)
## 12:48:15 Identifying tissue outline with `method = obs`.
## 12:48:15 Identifying spatial outliers.
## 12:48:15 Spatial outliers: 4
## 12:48:15 Spatial outliers to remove: 4.
## 12:48:15 Keeping 3213 observation(s).
## 12:48:15 Identifying tissue outline with `method = obs`.
## Normalizing layer: counts
## 12:48:17 Active matrix in assay 'gene': 'LogNormalize'
2.创建空间分割变量
空间分割,有时也称为手动标注,是指创建分组变量,根据图像的组织形态学特征为每个观测值分配标签。在示例对象样本UKF269T中,我们提供了此类变量,我们将其命名为“组织学”。
# variables that have been created using spatial segmentation
# curently only one: "histology"
getSpatSegmVarNames(object_t269)
## [1] "histology"
# plot the histology image in coordinates frame
plotImage(object_t269) +
ggpLayerFrameByCoords(object_t269)

# grouping variable created with spatial segmentation
plotSurface(object_t269, color_by = "histology")

要自行创建如上图所示的空间分割变量,请使用函数createSpatialSegmentation()。此动画展示了工作流程:
object_t269 <- createSpatialSegmentation(object_t269)
要创建新的分割变量,请点击“创建新分割变量”。随后,系统会提示您输入新变量的名称。此处,我们将其简单命名为example_spat_segm。点击“添加分割变量”后,该变量会在元数据框(meta data.frame)中被创建,且所有值默认为“未命名”。这是初始状态,因为我们尚未进行任何分割操作。对分割变量的操作意味着根据观察值所覆盖的组织学区域,依次为其标记标签。要实现这一点,请在交互图(Interaction-plot)上圈出您想要标记的区域。可以通过双击图表或使用键盘快捷键d开始绘制。绘制过程中,图表会显示相关提示。再次双击即可退出绘制模式,这可用于放大或缩小以重新定位视图。若再次双击,已绘制线条的端点将连接到光标位置,您可以继续绘制。持续圈出区域,直至线条的起点和终点足够接近以形成闭合圆圈。要闭合圆圈,请点击“高亮”。这将高亮显示通过此方式圈出的观察值。高亮观察值后,在“高亮”按钮下方输入您希望用于标记这些观察值的名称。点击“名称”以保存结果。结果应立即在左侧的图表中显示。您可以重复此过程,直至满意为止。请注意,如果您再次将某个观察值包含在另一个区域内,之前为其设置的标签将被覆盖。
如果您首次使用自己的SPATA2对象运行该函数,左侧不会显示图表。这是因为元数据框中目前没有可操作的分割变量。在本示例中,我们已创建空间分割变量histology。此外,请不必过于关注您绘制的多边形所遗漏的单个数据点,dissolveGroups()函数可能会为您节省时间和麻烦。
3.数据存储
在转录组学研究中,分组变量通常由聚类算法生成,并以因子的形式存储在元数据框(meta data.frame)中。由于空间分割变量也是分组变量,因此它们同样被存储在该细胞数据框中。
# show all grouping (factor) variables in the meta data.frame
getMetaDf(object_t269) %>%
select(barcodes, where(is.factor))
## # A tibble: 3,213 × 5
## barcodes tissue_section seurat_clusters histology bayes_space
## <chr> <fct> <fct> <fct> <fct>
## 1 GTAGCGCTGTTGTAGT-1 tissue_section_1 1 tumor 2
## 2 TTGTTTGTGTAAATTC-1 tissue_section_1 1 tumor 2
## 3 CGTAGCGCCGACGTTG-1 tissue_section_1 2 tumor 2
## 4 GTAGACAACCGATGAA-1 tissue_section_1 2 tumor 2
## 5 ACAGATTAGGTTAGTG-1 tissue_section_1 9 tumor 2
## 6 TGAGATCAAATACTCA-1 tissue_section_1 2 tumor 4
## 7 CTGGTCCTAACTTGGC-1 tissue_section_1 9 tumor 4
## 8 TGCACGAGTCGGCAGC-1 tissue_section_1 7 tumor 4
## 9 ATAGTCTTTGACGTGC-1 tissue_section_1 9 transition 4
## 10 GGGTGGTCCAGCCTGT-1 tissue_section_1 4 transition 4
## # ℹ 3,203 more rows
# obtain only names from variables created with spatial segmentation
spat_segm_vars <- getSpatSegmVarNames(object_t269)
spat_segm_vars
## [1] "histology"
# show only variables that have been created by spatial segmentation
getMetaDf(object_t269) %>%
select(barcodes, all_of(spat_segm_vars))
## # A tibble: 3,213 × 2
## barcodes histology
## <chr> <fct>
## 1 GTAGCGCTGTTGTAGT-1 tumor
## 2 TTGTTTGTGTAAATTC-1 tumor
## 3 CGTAGCGCCGACGTTG-1 tumor
## 4 GTAGACAACCGATGAA-1 tumor
## 5 ACAGATTAGGTTAGTG-1 tumor
## 6 TGAGATCAAATACTCA-1 tumor
## 7 CTGGTCCTAACTTGGC-1 tumor
## 8 TGCACGAGTCGGCAGC-1 tumor
## 9 ATAGTCTTTGACGTGC-1 transition
## 10 GGGTGGTCCAGCCTGT-1 transition
## # ℹ 3,203 more rows
# visualize the (unfinished) spatial segmentation variable
# from the gif above
plotSurface(object_t269, color_by = "example_spat_segm", clrp_adjust = c("unnamed" = "lightgrey"))

4. 使用分段变量
分组变量可以像其他任何分组变量一样使用,通常通过 group_by、grouping_variable 或 across 参数来引用。
# histology variable is a grouping option ...
getGroupingOptions(object_t269)
## factor factor factor factor
## "tissue_section" "seurat_clusters" "histology" "bayes_space"
# but not all grouping options derive from spatial segmentation
getSpatSegmVarNames(object_t269)
## [1] "histology"
由于新的空间分割变量与其他分组变量一样是元特征,因此适用于它的规则和选项与这些分组变量相同,包括getGroupNames()、renameGroups()和relevelGroups()。
# check group (segment) names
getGroupNames(object_t269, grouping = "histology")
## [1] "tumor" "transition" "infiltrated"
# rename groups (only temporary without storing the results)
renameGroups(object_t269, grouping_variable = "histology", "tumor_renamed" = "tumor") %>%
plotSurface(object = ., color_by = "histology", pt_clrp = "npg")

空间分割变量也可用于基于组织学的DEA和GSEA分析,并可在绘图函数中访问结果。
# run DEA based on histology
object_t269 <- runDEA(object = object_t269, across = "histology")
## Normalizing layer: counts
## Centering and scaling data matrix
## Running DEA across 'histology' with method 'wilcox'.
## Number of groups/clusters: 3
## Calculating cluster tumor
## For a (much!) faster implementation of the Wilcoxon Rank Sum Test,
## (default method for FindMarkers) please install the presto package
## --------------------------------------------
## install.packages('devtools')
## devtools::install_github('immunogenomics/presto')
## --------------------------------------------
## After installation of presto, Seurat will automatically use the more
## efficient implementation (no further action necessary).
## This message will be shown once per session
## Calculating cluster transition
## Calculating cluster infiltrated
plotDeaVolcano(
object = object_t269,
across = "histology",
use_pseudolog = TRUE,
label_genes = c("EGFR", "MBP", "SNAP25"),
pt_size = 1,
label_size = 3
)

plotSurfaceComparison(object_t269, color_by = c("EGFR", "MBP", "SNAP25"), nrow = 1)

plotBoxplot(object_t269, variables = c("EGFR", "MBP", "SNAP25"), across = "histology", nrow = 1, clrp = "npg")


DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)