本文代码来自Seurat官方网站。介绍单样本空转数据的标签转移。
rm(list = ls())library(tidyverse)library(Seurat)library(SeuratData)cortex = readRDS("cortex.rds")
这是小鼠皮层细胞的高质量参考数据,来自 Allen 研究所。
下载自 https://www.dropbox.com/s/cuowvm4vrf65pvq/allen_cortex.rds?dl=1
首先加载参考数据集,并通过 dim() 函数确认其维度: allen_reference <- readRDS("allen_cortex.rds") dim(allen_reference) 运行结果显示为 34617 行、14249 列。
dim()
allen_reference <- readRDS("allen_cortex.rds") dim(allen_reference)
这里推荐设置 ncells=3000。这一操作的逻辑在于:虽然它会对整个数据集进行归一化,但仅在 3000 个细胞上构建噪声模型。这种策略能显著加速 SCTransform 的计算过程,且在性能上并无损失,是官网明确推荐的用法。
ncells=3000
allen_reference <- SCTransform(allen_reference, ncells = 3000, verbose = FALSE) %>%RunPCA(verbose = FALSE) %>%RunUMAP(dims = 1:30)
参考数据是已经注释好的Seurat对象,注释的细胞类型存储在meta.data的subclass列,画个umap图展示它。
DimPlot(allen_reference, group.by = "subclass", label = TRUE) NoLegend() coord_fixed()
简单罗列一下这些细胞类型咯,不研究这个领域的话,只要分清楚这些单词是细胞的名字,不是基因名字就可以啦!
兴奋性神经元
L2/3 IT
第2/3层端脑内投射神经元
L4
第4层颗粒神经元
L5 IT
第5层端脑内投射神经元
L5 PT
第5层锥体束投射神经元
L6 CT
第6层皮层丘脑投射神经元
L6 IT
第6层端脑内投射神经元
L6b
第6b层神经元
NP
近距离投射神经元
抑制性神经元
Lamp5
Lamp5 中间神经元
Meis2
Meis2 中间神经元
Pvalb
小清蛋白中间神经元
Serpinf1
Serpinf1 中间神经元
Sncg
Sncg 中间神经元
Sst
生长抑素中间神经元
Vip
VIP 中间神经元
发育相关神经元
CR
Cajal-Retzius 细胞
非神经元细胞
Astro
星形胶质细胞
Endo
血管内皮细胞
Macrophage
巨噬细胞/小胶质细胞
Oligo
少突胶质细胞
Peri
周细胞
SMC
平滑肌细胞
VLMC
血管及软脑膜细胞
寻找锚点,进行标签转移。这里的 cortex 已经完成了 SCTransform 和 PCA,因此可以直接用于寻找锚点和标签转移。
anchors <- FindTransferAnchors(reference = allen_reference, query = cortex, normalization.method = "SCT", reference.reduction = "pca", dims = 1:30)predictions.assay <- TransferData(anchorset = anchors,refdata = allen_reference$subclass, prediction.assay = TRUE,weight.reduction = cortex[["pca"]], dims = 1:30)
执行到这里,拿到的 predictions.assay 表示的是:每个 spot 在每一种细胞类型上的预测得分。接下来,把它写入空转的 Seurat 对象中,作为其中的一个组成部分即可。
GetAssayData(predictions.assay, layer = "data")[1:4, 1:4]代码语言:plain复制
GetAssayData(predictions.assay, layer = "data")[1:4, 1:4]
## AAACAGAGCGACTCCT-1 AAACCGGGTAGGTACC-1 AAACCGTTCGTCCAGG-1## Vip000## Lamp5000## Sst000## Sncg 000## AAACTCGTGATATAAG-1## Vip0## Lamp50## Sst0## Sncg 0代码语言:r复制
## AAACAGAGCGACTCCT-1 AAACCGGGTAGGTACC-1 AAACCGTTCGTCCAGG-1## Vip000## Lamp5000## Sst000## Sncg 000## AAACTCGTGATATAAG-1## Vip0## Lamp50## Sst0## Sncg 0
cortex[["predictions"]] <- predictions.assayDefaultAssay(cortex) <- "predictions"
画图查看其中两种细胞的预测分数。
SpatialFeaturePlot(cortex, features = c("L2/3 IT", "L4"), ncol = 2, crop = TRUE) &theme(plot.margin = unit(c(1, 1, 1, 1), "mm"),legend.text = element_text(size = 8))
寻找(预测分数)有明显空间分布模式的细胞类型。
cortex <- FindSpatiallyVariableFeatures(cortex, assay = "predictions", selection.method = "moransi",features = rownames(cortex), layer = "data")
展示 Moran’s I 最高的 4 种细胞类型,也就是预测分数空间自相关性最强、空间分布模式最明显的细胞类型。(图上画的是细胞类型预测分数,不是基因表达量,也不是真实细胞数量或者丰度。)
top.clusters <- head(SpatiallyVariableFeatures(cortex, method = "moransi"), 4)SpatialFeaturePlot(object = cortex, features = top.clusters, ncol = 2) & theme(plot.margin = unit(c(1, 1, 1, 1), "mm"),legend.text = element_text(size = 8))
最后,展示各种细胞类型预测分数的空间分布,可以与已知的小鼠皮层分层结构进行比较,检查是否相符。
features_of_interest <- c("Astro", "L2/3 IT", "L4", "L5 PT", "L5 IT", "L6 CT", "L6 IT", "L6b", "Oligo")SpatialFeaturePlot(cortex,features = features_of_interest, pt.size.factor = 1.6, ncol = 3,crop = TRUE,alpha = c(0.1, 1)) & theme(plot.margin = unit(c(1, 1, 1, 1), "mm"))
补充同频道和同主题内容,方便继续浏览更多相关内容。
继续查看同栏目最近更新的文章。
本文面向CAD零基础学习者,系统讲解坐标输入、图层管理与基础绘图命令的核心用法。通过分步实操与常见问题排查,帮助新手建立精确绘图习惯,掌握规范出图的基础能力。
掌握CAD的核心在于建立“画得准、标得清、复用快、交付稳”的工作流。本文提供从环境设置、高频命令组合、标注规范、图块标准化到项目分阶段交付的完整路径,帮助初学者避免常见返工陷阱,独立完成可检查、可复用、可打印的工程图纸。
本文详细解析 Claude Code 登录前的账号类型区分方法,涵盖个人订阅、Teams 席位与企业 Enterprise 席位的授权路径差异。提供终端登录命令、环境变量排查及常见异常处理步骤,帮助用户快速完成正确授权并避免登录路径混淆。
本文详细介绍Claude Code在修改文件前的权限模式配置方法,包括defaultMode可选值、permissions allow与deny规则设置、多层级配置文件管理以及 status验证技巧,帮助开发者安全高效地使用AI编程助手。
在VS Code中接入Claude Code后,建议优先验证扩展面板与集成终端两条入口。本文提供标准检查顺序、关键命令与常见故障排查路径,帮助你快速确认环境就绪,避免后续开发受阻。