SCS 60.单细胞空间转录组空间聚类(SPATA2)


Clustering

介绍

分组变量将样本的观测值划分为可以相互比较属性的组。例如,观测值的分组可以是聚类算法的结果或手动空间分割的结果。本教程将展示如何在SPATA2中应用和添加聚类。

go 复制代码
# load required packages
library(SPATA2)
library(SPATAData)
library(tidyverse)
go 复制代码
object_t269<- readRDS("object_t269.rds")
object_t269 <- updateSpataObject(object_t269)
go 复制代码
# plot histology 
plotSurface(object_t269, color_by = "histology", pt_clrp = "npg")
go 复制代码
plotImage(object_t269)

2. SPATA2 内的聚类

有许多算法可以将您的样本分成子组。SPATA2 提供了多种聚类算法的封装。那些会立即将结果添加到 SPATA2 对象中的聚类算法,其名称以 run-* 开头,并以 *-Clustering() 结尾。例如:runBayesSpaceClustering()、runKmeansClustering()、runSeuratClustering()。参数名称或命名指定了输出分组变量的名称。可通过getGroupingOptions()获取结果分组变量名称。

go 复制代码
# current grouping options 
getGroupingOptions(object_t269)
go 复制代码
##            factor            factor            factor            factor 
##  "tissue_section" "seurat_clusters"       "histology"     "bayes_space"
go 复制代码
# run the pipeline
object_t269 <- 
  runBayesSpaceClustering(
    object = object_t269, 
    name = "bayes_spacev2", # the name of the output grouping variable
    qs = 5
  )
go 复制代码
# run PCA based on which clustering is conducted
object_t269 <- runPCA(object_t269, n_pcs = 20)

object_t269 <- 
  runKmeansClustering(
    object = object_t269, 
    ks = c(7, 8), 
    methods_kmeans = "Lloyd"
  )
go 复制代码
# results are immediately stored in the objects feature data
getGroupingOptions(object_t269)
go 复制代码
##            factor            factor            factor            factor 
##  "tissue_section" "seurat_clusters"       "histology"     "bayes_space" 
##            factor            factor            factor 
##   "bayes_spacev2"        "Lloyd_k7"        "Lloyd_k8"
go 复制代码
# left plot
plotSurface(
  object = object_t269, 
  color_by = "bayes_spacev2", 
  pt_clrp = "uc"
)
go 复制代码
# right plot
plotSurface(
  object = object_t269, 
  color_by = "Lloyd_k7",
  pt_clrp = "jco"
)

3. SPATA2以外的聚类

聚类可能由多种聚类算法产生。如果这些算法未在SPATA2函数中实现,可以使用addFeatures()函数将它们添加进去。唯一的要求是有一个名为barcodes的变量,用于将组映射到观测值。请注意,变量必须为因子类(factor class),才能被识别为分组变量。

go 复制代码
# uses kmeans outside of SPATA2
kmeans_res <- 
  stats::kmeans(
    x = getPcaMtr(object_t269), 
    centers = 7, 
    algorithm = "Hartigan-Wong"
  )

head(kmeans_res[["cluster"]])
go 复制代码
## GTAGCGCTGTTGTAGT-1 TTGTTTGTGTAAATTC-1 CGTAGCGCCGACGTTG-1 GTAGACAACCGATGAA-1 
##                  2                  4                  4                  4 
## ACAGATTAGGTTAGTG-1 TGAGATCAAATACTCA-1 
##                  2                  2
go 复制代码
cluster_df <- 
  as.data.frame(kmeans_res[["cluster"]]) %>% 
  tibble::rownames_to_column(var = "barcodes") %>% 
  magrittr::set_colnames(value = c("barcodes", "kmeans_4_HW")) %>% 
  tibble::as_tibble()

cluster_df[["kmeans_4_HW"]] <- as.factor(cluster_df[["kmeans_4_HW"]])

cluster_df
go 复制代码
## # A tibble: 3,213 × 2
##    barcodes           kmeans_4_HW
##    <chr>              <fct>      
##  1 GTAGCGCTGTTGTAGT-1 2          
##  2 TTGTTTGTGTAAATTC-1 4          
##  3 CGTAGCGCCGACGTTG-1 4          
##  4 GTAGACAACCGATGAA-1 4          
##  5 ACAGATTAGGTTAGTG-1 2          
##  6 TGAGATCAAATACTCA-1 2          
##  7 CTGGTCCTAACTTGGC-1 2          
##  8 TGCACGAGTCGGCAGC-1 3          
##  9 ATAGTCTTTGACGTGC-1 2          
## 10 GGGTGGTCCAGCCTGT-1 3          
## # ℹ 3,203 more rows
go 复制代码
# grouping options before adding
getGroupingOptions(object_t269)
go 复制代码
##            factor            factor            factor            factor 
##  "tissue_section" "seurat_clusters"       "histology"     "bayes_space" 
##            factor            factor            factor 
##   "bayes_spacev2"        "Lloyd_k7"        "Lloyd_k8"
go 复制代码
# add the cluster results to the meta features
object_t269 <- 
  addFeatures(
    object = object_t269,
    feature_df = cluster_df
  )

# grouping options names afterwards
getGroupingOptions(object_t269)
go 复制代码
##            factor            factor            factor            factor 
##  "tissue_section" "seurat_clusters"       "histology"     "bayes_space" 
##            factor            factor            factor            factor 
##   "bayes_spacev2"        "Lloyd_k7"        "Lloyd_k8"     "kmeans_4_HW"

继续通过可视化结果或使用差异表达分析(DEA)来研究其转录特征。

go 复制代码
plotSurface(
  object = object_t269,
  color_by = "kmeans_4_HW",
  pt_clrp = "jama"
) +
  labs(color = "Kmeans HW")
相关推荐
牧艺41 分钟前
Cursor Rules / Skills 分层设计:让 Agent 像「团队新同事」
前端·人工智能·cursor
yszaygr21381 小时前
Verilog参数化游程编码RLE模块
算法
shepherd1111 小时前
一文带你掌握 LLM、Token、Context、Prompt、RAG、MCP、Skill、Agent 等 AI 核心概念
人工智能·后端·ai编程
望易1 小时前
刚设计的大模型架构-双域耦合认知框架
算法·架构
小林ixn1 小时前
MCP 保姆级入门指南:AI 的“万能充电口”到底怎么玩?
人工智能
转转技术团队3 小时前
没有测试的核心代码,怎么交给 AI 重构
人工智能
爱读源码的大都督4 小时前
Claude Code源码分析(三):为什么系统提示词中需要有tools呢?
前端·人工智能·后端
半个落月5 小时前
LLM如何预测下一个Token?一文拆解Transformer核心流程
人工智能
触底反弹5 小时前
🔥 2026 年爆火的 Harness Engineering 到底是什么?从原理到实战一文讲透
javascript·人工智能·程序员