首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >空间转录组: DLPFC数据集分析 (2)

空间转录组: DLPFC数据集分析 (2)

作者头像
数据科学工厂
发布2025-11-19 16:05:01
发布2025-11-19 16:05:01
830
举报

引言

本系列讲解 空间转录组学 (Spatial Transcriptomics) 相关基础知识与数据分析教程[1],持续更新,欢迎关注,转发,文末有交流群

归一化

使用 library size normalization 计算经过对数变换的归一化计数(logcounts)。我们使用来自 scaterscran 包的方法,做出简化假设,即 spots 可以被视作等同于 single cells。

代码语言:javascript
复制
# calculate library size factors
spe <- computeLibraryFactors(spe)

summary(sizeFactors(spe))

##     Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.1330  0.6329  0.8978  1.0000  1.2872  3.7820

hist(sizeFactors(spe), breaks = 20, main = "Histogram of size factors")
代码语言:javascript
复制
# calculate logcounts
spe <- logNormCounts(spe)

assayNames(spe)

##  [1] "counts"    "logcounts"

特征选择(HVGs)

应用特征选择方法以识别一组顶级高变异基因(HVGs)。我们使用 scran包的方法,再次做出简化假设,即 spots 可以被视作等同于 single cells。

我们还首先移除线粒体基因,因为这些基因通常表达非常高,且不是主要生物学关注点。

代码语言:javascript
复制
# remove mitochondrial genes
spe <- spe[!is_mito, ]
dim(spe)

##  [1] 33525  3614

# fit mean-variance relationship, decomposing variance into 
# technical and biological components
dec <- modelGeneVar(spe)

# select top HVGs
top_hvgs <- getTopHVGs(dec, prop = 0.1)

# number of HVGs selected
length(top_hvgs)

##  [1] 1424

降维

接下来,我们使用主成分分析(PCA)对顶级高变异基因(HVGs)进行降维。我们保留前 50 个主成分(PCs)以供后续下游分析。这样做既能减少噪声,也能提高计算效率。我们还在前 50 个 PCs 上运行 UMAP,并保留前 2 个 UMAP 成分用于可视化。

我们使用 scater 包中计算高效的 PCA 实现,该实现使用随机化,因此需要设置随机种子以保证可重复性。

代码语言:javascript
复制
# using scater package
set.seed(123)
spe <- runPCA(spe, subset_row = top_hvgs)
spe <- runUMAP(spe, dimred = "PCA")

reducedDimNames(spe)
##  [1] "PCA"  "UMAP"

dim(reducedDim(spe, "PCA"))
##  [1] 3614   50

dim(reducedDim(spe, "UMAP"))
##  [1] 3614    2

# update column names for plotting
colnames(reducedDim(spe, "UMAP")) <- paste0("UMAP", 1:2)

聚类

接下来,我们应用聚类算法以识别细胞类型或空间域。请注意,在此示例中,我们仅使用分子特征(基因表达)作为聚类的输入。

在此,我们使用基于图的聚类,采用 scran 中实现的 Walktrap 方法,应用于上述基于顶级高变异基因(HVGs)计算出的前 50 个主成分(PCs)。

代码语言:javascript
复制
# graph-based clustering
set.seed(123)
k <- 10
g <- buildSNNGraph(spe, k = k, use.dimred = "PCA")
g_walk <- igraph::cluster_walktrap(g)
clus <- g_walk$membership
table(clus)
##  clus
##    1   2   3   4   5   6   7 
##  365 765 875 803 198 370 238

# store cluster labels in column 'label' in colData
colLabels(spe) <- factor(clus)

通过在X-Y空间中绘制群集标签,并与该数据集可用的手动注释参考标签(ground_truth)一起绘制。

代码语言:javascript
复制
# plot cluster labels in x-y space
plotCoords(spe, annotate = "label", pal = "libd_layer_colors")
代码语言:javascript
复制
# plot manually annotated reference labels
plotCoords(spe, annotate = "ground_truth", pal = "libd_layer_colors")
代码语言:javascript
复制
# plot clusters labels in UMAP dimensions
plotDimRed(spe, plot_type = "UMAP", annotate = "label", 
           pal = "libd_layer_colors")

未完待续,欢迎关注!

Reference

[1] Ref: https://lmweber.org/OSTA/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 冷冻工厂 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 归一化
  • 特征选择(HVGs)
  • 降维
  • 聚类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档