首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >🤩 Seurat | 空间转录组数据分析的标准流程!~(六)(小肠示例-瑞士卷)

🤩 Seurat | 空间转录组数据分析的标准流程!~(六)(小肠示例-瑞士卷)

作者头像
生信漫卷
发布2025-11-13 18:30:08
发布2025-11-13 18:30:08
1210
举报

写在前面

这期我们上新一个小肠瑞士卷🍥实战:基于 Visium HD(FFPE) 的空间转录组。

Seurat跑一遍从数据解包 → 读入(8 µm bin)→ 标准预处理 → Sketch 下采样聚类 → 全量映射 → 结构域/标记基因可视化的教科书流程。

为什么选小肠?:👇

因为瑞士卷组织天然带有强序列化的空间轴(隐窝–绒毛),非常适合展示空间分层与功能带的转变;而 FFPE数据又更贴近临床样本的真实场景。😍

你只需替换为自己的Visium HDFFPEFresh/Fixed Frozen)数据和基因列表,就能快速产出一套图文结果(UMAP、空间分群、热点基因热图等)。🥳

代码保持先小样本建模(Sketch)→ 再全量投影(ProjectData)的思路,在保证结构信息不丢的前提下,大幅节省计算时间。⌚️

用到的包

代码语言:javascript
复制
rm(list = ls())
library(Seurat)
library(ggplot2)
library(patchwork)
library(dplyr)
if (!requireNamespace("spacexr", quietly = TRUE)) {
  devtools::install_github("dmcable/spacexr", build_vignettes = FALSE)
}
library(spacexr)

示例数据

今天用到的是小鼠肠道的(FFPE)的Visium HD数据集。😏

我们要基于sketch无监督聚类分群,可视化空间位置,TOP基因表达可视化。🥸

来展示好看的瑞士卷吧!~😀

代码语言:javascript
复制
untar("./visium_hd/mouse_intestine/Visium_HD_Mouse_Small_Intestine_binned_outputs.tar.gz",exdir = "./visium_hd/mouse_intestine/")
untar("./visium_hd/mouse_intestine/Visium_HD_Mouse_Small_Intestine_spatial.tar.gz", exdir = "./visium_hd/mouse_intestine/")

bin.size我们设置8um,和我们之前的一样。🚀

代码语言:javascript
复制
localdir <- "./visium_hd/mouse_intestine/"
object <- Load10X_Spatial(data.dir = localdir, bin.size = 8)

标准处理

代码语言:javascript
复制
DefaultAssay(object) <- "Spatial.008um"
object <- NormalizeData(object)
object <- FindVariableFeatures(object)
object <- ScaleData(object)

Sketch

这里用到Sketch抽样,缩短我们的计算时间,可以参看上一章。🥳

代码语言:javascript
复制
object <- SketchData(
  object = object,
  ncells = 5000,
  method = "LeverageScore",
  sketched.assay = "sketch"
)

然后基于sketchAssay进行标准流程。😂

代码语言:javascript
复制
DefaultAssay(object) <- "sketch"
object <- FindVariableFeatures(object)
object <- ScaleData(object)
object <- RunPCA(object, assay = "sketch", reduction.name = "pca.sketch")
object <- FindNeighbors(object, assay = "sketch", reduction = "pca.sketch", dims = 1:50)
object <- FindClusters(object, cluster.name = "seurat_cluster.sketched", resolution = 3)
object <- RunUMAP(object, reduction = "pca.sketch", reduction.name = "umap.sketch", return.model = T, dims = 1:50)

映射到整个data

现在我们映射到原来的整个data上。🐶

代码语言:javascript
复制
object <- ProjectData(
  object = object,
  assay = "Spatial.008um",
  full.reduction = "full.pca.sketch",
  sketched.assay = "sketch",
  sketched.reduction = "pca.sketch",
  umap.model = "umap.sketch",
  dims = 1:50,
  refdata = list(seurat_cluster.projected = "seurat_cluster.sketched")
)

我们现在做一下基础可视化!~🥳

代码语言:javascript
复制
Idents(object) <- "seurat_cluster.projected"
DefaultAssay(object) <- "Spatial.008um"

p1 <- DimPlot(object, reduction = "umap.sketch", label = F) + theme(legend.position = "bottom")
p2 <- SpatialDimPlot(object, label = F) + theme(legend.position = "bottom")
p1 | p2

看一下分群的在"瑞士卷"上的位置吧。😍

代码语言:javascript
复制
Idents(object) <- "seurat_cluster.projected"
cells <- CellsByIdentities(object, idents = c(1, 5, 18, 26))
p <- SpatialDimPlot(object, cells.highlight = cells[setdiff(names(cells), "NA")], cols.highlight = c("#FFFF00", "grey50"), facet.highlight = T, combine = T) + NoLegend()
p

看一下分群的Top marker。😏

代码语言:javascript
复制
DefaultAssay(object) <- "Spatial.008um"
Idents(object) <- "seurat_cluster.projected"
object_subset <- subset(object, cells = Cells(object[["Spatial.008um"]]), downsample = 1000)

DefaultAssay(object_subset) <- "Spatial.008um"
Idents(object_subset) <- "seurat_cluster.projected"
object_subset <- BuildClusterTree(object_subset, assay = "Spatial.008um", reduction = "full.pca.sketch", reorder = T)

markers <- FindAllMarkers(object_subset, assay = "Spatial.008um", only.pos = TRUE)
markers %>%
  group_by(cluster) %>%
  dplyr::filter(avg_log2FC > 1) %>%
  slice_head(n = 5) %>%
  ungroup() -> top5

object_subset <- ScaleData(object_subset, assay = "Spatial.008um", features = top5$gene)
p <- DoHeatmap(object_subset, assay = "Spatial.008um", features = top5$gene, size = 2.5) + theme(axis.text = element_text(size = 5.5)) + NoLegend()
p
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信漫卷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 用到的包
  • 示例数据
  • 标准处理
  • Sketch
  • 映射到整个data
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档