SC-MEB:空间转录组聚类R包!

2022-03-29 08:36:44 浏览数 (2)

导语

GUIDE ╲

空间转录组学 (ST) 使研究人员能够以接近单细胞的分辨率测量转录组范围内的基因表达,同时保留每次测量的空间信息。这些空间解析的转录组学加深了我们对细胞类型和状态如何受组织微环境调节的理解。

背景介绍

我们通过空间转录组研究微环境如何调节细胞类型和状态,首先是识别空间的细胞簇。小编今天为大家介绍一个使用隐马尔可夫模型进行空间聚类分析的R包SC-MEB,发表在BIB上,题目为SC-MEB: spatial clustering with hidden Markov random field using empirical Bayes。

R包安装

代码语言:javascript复制
library(devtools)
install_github("Shufeyangyi2015310117/SC.MEB")
library("SC.MEB")
#> Loading required package: mclust
#> Warning: package 'mclust' was built under R version 4.0.5
#> Package 'mclust' version 5.4.7
#> Type 'citation("mclust")' for citing this R package in publications.

结果解析

01

输入数据和预处理

这里我们使用R包的真实数据CRC数据集拟合SC-MEB。

使用spatialPreprocess() 对计数矩阵进行对数归一化,并对顶部n.HVGs高度可变的基因执行PCA,保留顶部n.PCs主成分。

代码语言:javascript复制
file = system.file("extdata", "CRC3.rds", package = "SC.MEB")
CRC = readRDS(file)

set.seed(114)
library(scuttle)
library(scran)
library(scater)
library(BiocSingular)
CRC <- spatialPreprocess(CRC, platform="Visium")

使用R包默认的参数。

代码语言:javascript复制
platform = "Visium"
beta_grid = seq(0,4,0.2)
K_set= 2:10
parallel=TRUE
num_core = 3
PX = TRUE
maxIter_ICM = 10
maxIter = 50

02

运行R包

计算邻域并行运行SC-MEB包
代码语言:javascript复制
library(SingleCellExperiment)
Adj_sp  <- find_neighbors2(CRC, platform = "Visium")
Adj_sp[1:10,1:10]
#> 10 x 10 sparse Matrix of class "dgCMatrix"
#>                          
#>  [1,] . 1 1 . . . . . . .
#>  [2,] 1 . 1 1 . . . . . .
#>  [3,] 1 1 . 1 1 . . . . .
#>  [4,] . 1 1 . 1 1 . . . .
#>  [5,] . . 1 1 . 1 1 . . .
#>  [6,] . . . 1 1 . 1 1 . .
#>  [7,] . . . . 1 1 . 1 1 .
#>  [8,] . . . . . 1 1 . 1 1
#>  [9,] . . . . . . 1 1 . 1
#> [10,] . . . . . . . 1 1 .

y = reducedDim(CRC, "PCA")[,1:15]
fit = SC.MEB(y, Adj_sp, beta_grid = beta_grid, K_set= K_set, parallel=parallel, num_core = num_core, PX = PX, maxIter_ICM=maxIter_ICM, maxIter=maxIter)
#> Starting parallel computing...
str(fit[,1])
#> List of 9
#>  $ x     : num [1:2988, 1] 1 1 1 1 1 1 1 1 1 1 ...
#>  $ gam   : num [1:2988, 1:2] 1 1 1 1 1 ...
#>  $ pxgn  : num [1:2988, 1:2] 0.9 0.996 0.988 0.999 0.988 ...
#>  $ pygx  : num [1:2988, 1:2] 17.6 17.9 29.8 33.4 24 ...
#>  $ mu    : num [1:15, 1:2] 4.3905 -0.5647 0.1235 0.1118 -0.0293 ...
#>  $ sigma : num [1:15, 1:15, 1:2] 5.14 -1.8006 -1.6301 -0.0896 1.0888 ...
#>  $ beta  : num 2.2
#>  $ ell   : num 65515
#>  $ loglik: num [1:2, 1] 66215 66254

03

聚类及可视化

使用 BIC 选择集群数量
代码语言:javascript复制
selectKPlot(fit, K_set = K_set, criterion = "BIC")
使用Modified BIC选择聚类集群的数量。我们可以在BIC中修改参数c。对于空间转录组ST或Visiu数据集,参数c的范围通常在0.4到1之间,而对于具有大量细胞的10x Genomics Visium的MERFISH公共数据集,通常会变得更大,例如10-20。因此用户可以根据他们对组织或细胞的先验知识来调整参数c。

04

对空间cluster的可视化

我们可以使用 ClusterPlot() 在点的空间位置上绘制聚类情况。

代码语言:javascript复制
out = selectK(fit, K_set = K_set, criterion = "BIC")
pos = matrix(cbind(colData(CRC)[,c(4)],20000-colData(CRC)[,c(3)]), 2988, 2)
ClusterPlot(out, pos, size = 3, shape = 16)

小编总结

SC-MEB是一个对空间转录组数据进行聚类和可视化的R包。与先前的包相比,SC-MEB不仅计算效率高,可扩展到大样本量,而且还能够选择平滑参数和cluster数量(虽然可视化有一丢丢丑)。做空间转录组的同学们可以尝试一下哦!

END

0 人点赞