数据科学工厂 发表于 2024-7-27 10:32:10

空间单细胞|10x Visium数据分析、可视化与整合(3)

## 引言

[本文](https://satijalab.org/seurat/articles/spatial_vignette#overview "Source")介绍了使用Seurat分析具有空间分辨率的RNA测序数据的方法,重点在于将空间信息与分子数据相结合。将包括以下常见于空间数据分析的任务:

- 数据标准化
- 降维和数据聚类
- 发现空间变异性特征
- 与单细胞RNA测序数据的整合
- 处理多个样本切片

## 与单细胞数据融合

Visium检测的分辨率大约为50微米,这意味着每个检测点会覆盖多个细胞的表达信息。随着单细胞RNA测序数据的日益增多,研究人员可能想要对每个空间体素进行“反演分析”,以推断其细胞类型的组成。

首先加载数据(可在此下载),对单细胞RNA测序的参考数据进行预处理,然后进行标签转移。这个过程会为每个检测点提供一个基于单细胞RNA测序派生类别的概率分类。将这些预测结果作为Seurat对象中的一个新的检测项目添加进去。

```R
allen_reference <- readRDS("/brahms/shared/vignette-data/allen_cortex.rds")

# note that setting ncells=3000 normalizes the full dataset but learns noise models on 3k
# cells this speeds up SCTransform dramatically with no loss in performance
library(dplyr)
allen_reference <- SCTransform(allen_reference, ncells = 3000, verbose = FALSE) %>%
    RunPCA(verbose = FALSE) %>%
    RunUMAP(dims = 1:30)

# After subsetting, we renormalize cortex
cortex <- SCTransform(cortex, assay = "Spatial", verbose = FALSE) %>%
    RunPCA(verbose = FALSE)
# the annotation is stored in the 'subclass' column of object metadata
DimPlot(allen_reference, group.by = "subclass", label = TRUE)
```

![](https://s2.loli.net/2024/06/24/fGBWcPwIgAHjYud.png)

```R
anchors <- FindTransferAnchors(reference = allen_reference, query = cortex, normalization.method = "SCT")
predictions.assay <- TransferData(anchorset = anchors, refdata = allen_reference$subclass, prediction.assay = TRUE,
    weight.reduction = cortex[["pca"]], dims = 1:30)
cortex[["predictions"]] <- predictions.assay
```

目前,已经为每个类别的每个检测点计算出了预测得分。在前额皮层区域,特别关注的是层次化的兴奋性神经元。在这个区域,能够识别出这些神经元亚型的不同连续层次,例如:

```R
DefaultAssay(cortex) <- "predictions"
SpatialFeaturePlot(cortex, features = c("L2/3 IT", "L4"), pt.size.factor = 1.6, ncol = 2, crop = TRUE)
```

![](https://s2.loli.net/2024/06/24/bEOYDnN4cfUtTeK.png)

利用这些预测得分,能够推断出那些在特定空间区域分布的细胞类型。采用了与定义基因表达的空间变异性相同的标记点过程方法,但在这里,将细胞类型的预测得分视作“标记”,而非基因表达本身。这种方法帮助识别出在空间分布上具有特定性的细胞类型。

```R
cortex <- FindSpatiallyVariableFeatures(cortex, assay = "predictions", selection.method = "moransi",
    features = rownames(cortex), r.metric = 5, slot = "data")
top.clusters <- head(SpatiallyVariableFeatures(cortex, selection.method = "moransi"), 4)
SpatialPlot(object = cortex, features = top.clusters, ncol = 2)
```

!(https://s2.loli.net/2024/06/24/SUVm3euqXPLohiO.png)

最终,证明了的综合分析方法能够有效地重现已知的神经元和非神经元亚群的空间分布模式,这包括了层状兴奋性神经元、第一层星形胶质细胞以及皮层灰质区域。

```R
SpatialFeaturePlot(cortex, features = c("Astro", "L2/3 IT", "L4", "L5 PT", "L5 IT", "L6 CT", "L6 IT",
    "L6b", "Oligo"), pt.size.factor = 1, ncol = 2, crop = FALSE, alpha = c(0.1, 1))
```

![](https://s2.loli.net/2024/06/24/D5eptHgcAKamFEk.png)

## 多切片处理

这个小鼠大脑的数据集还包含了另一个切片,它代表了大脑的另一半。将这个切片导入,并进行与之前相同的初步标准化处理。

```R
brain2 <- LoadData("stxBrain", type = "posterior1")
brain2 <- SCTransform(brain2, assay = "Spatial", verbose = FALSE)
```

为了在同一个 Seurat 对象中处理多个切片,提供了合并功能。

```R
brain.merge <- merge(brain, brain2)
```

这样就可以对底层 RNA 表达数据进行联合降维和聚类。

```R
DefaultAssay(brain.merge) <- "SCT"
VariableFeatures(brain.merge) <- c(VariableFeatures(brain), VariableFeatures(brain2))
brain.merge <- RunPCA(brain.merge, verbose = FALSE)
brain.merge <- FindNeighbors(brain.merge, dims = 1:30)
brain.merge <- FindClusters(brain.merge, verbose = FALSE)
brain.merge <- RunUMAP(brain.merge, dims = 1:30)
```

最后,数据可以在单个 UMAP 图中联合可视化。 SpatialDimPlot() 和 SpatialFeaturePlot() 默认情况下将所有切片绘制为列,将分组/特征绘制为行。

```R
DimPlot(brain.merge, reduction = "umap", group.by = c("ident", "orig.ident"))
```

![](https://s2.loli.net/2024/06/24/HVtwQlkRCaY2xA4.png)

```R
SpatialDimPlot(brain.merge)
```

![](https://s2.loli.net/2024/06/24/1NaJTihtKbl3zq5.png)

```R
SpatialFeaturePlot(brain.merge, features = c("Hpca", "Plp1"))
```

![](https://s2.loli.net/2024/06/24/sH4PLSnZqj6htpu.png)
页: [1]
查看完整版本: 空间单细胞|10x Visium数据分析、可视化与整合(3)