今天是如何在Seurat中处理多个切片。😎
rm(list = ls())
library(SeuratObject)
library(Seurat)
library(SeuratData)
library(ggplot2)
library(patchwork)
library(dplyr)
这个小鼠大脑数据集包含另一个与大脑另一半相对应的切片。🙂
在这里,我们读入并执行相同的预处理。😘
#InstallData("stxBrain")
brain <- LoadData("stxBrain", type = "anterior1")
brain
#InstallData("stxBrain")
brain2 <- LoadData("stxBrain", type = "posterior1")
brain2 <- SCTransform(brain2, assay = "Spatial", verbose = FALSE)
为了在同一个Seurat对象中处理多个切片,需要用到merge()。🤓
brain.merge <- merge(brain, brain2)
然后,降维和聚类。🥰
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 = T)
brain.merge <- RunUMAP(brain.merge, dims = 1:30)
最后,数据可以在单个 UMAP 图中联合可视化。😘
DimPlot(brain.merge, reduction = "umap", group.by = c("ident", "orig.ident"))

SpatialDimPlot(brain.merge)

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

空间转录组(Spatial Transcriptomics)领域里主流的几类技术路线:👇
1️⃣ Visium v1 chemistry (10x Genomics):好比把一座城市切成网格(每个格子有几十栋楼),我们能知道每个格子里有哪些“声音”,但不能分辨出具体哪栋楼在说;
2️⃣ Slide-seq v2:城市被拆成“楼房级别”的地图,每个楼门口都贴了二维码,能知道哪栋楼里发出了哪些声音;
3️⃣ Image-based Spatial Data(成像型空间转录组,比如 MERFISH, seqFISH, CosMx, Xenium 等):不再只是“听到声音”,而是拿着放大镜直接看每个人嘴里在说什么字;
4️⃣ Visium HD (10x Genomics 最新):从“街区地图 → 楼房地图 → 楼层地图”,Visium HD 甚至能精确到“每个房间里的人在说什么”;
技术 | 分辨率 | 是否全转录组 | 技术难度 | 代表性优点 |
|---|---|---|---|---|
Visium v1 | ~55 μm,几十个细胞 | ✅ | ★ | 成熟稳定,数据分析生态完善 |
Slide-seq v2 | ~10 μm,近单细胞 | ✅ | ★★★ | 分辨率更高,能接近单细胞水平 |
成像型 (MERFISH/seqFISH 等) | 单分子、亚细胞级别 | ❌(靶向基因) | ★★★★ | 精度最高,可看到 RNA 在细胞内的位置 |
Visium HD | ~2 μm,亚细胞 | ✅ | ★★★ | 分辨率最高 + 全转录组 |