ROGUE: 细胞亚群纯度评估

在多篇高分文章中都出现了评估细胞亚群纯度的内容,用到的是张泽民团队的ROGEU包。提出了一个基于熵的统计量(ROGUE)来准确地定量鉴定的细胞团的纯度,可应用于所有测试的scRNA-seq数据集,对评估推测细胞簇的质量、发现纯细胞亚型以及构建全面、详细和标准化的单细胞图谱具有重要意义。

B. Liu et al., An entropy-based metric for assessing the purity of single cell populations. Nat Commun 11, 3155 (2020).
https://github.com/PaulingLiu/ROGUE
https://htmlpreview.github.io/?https://github.com/PaulingLiu/ROGUE/blob/master/vignettes/ROGUE_Tutorials.html

泛癌NK细胞ROGUE图

安装

if (!requireNamespace("devtools", quietly = TRUE)) install.packages("devtools")
devtools::install_github("PaulingLiu/ROGUE")
# 查看是否安装成功
suppressMessages(library(ROGUE))
suppressMessages(library(ggplot2))
suppressMessages(library(tidyverse))

数据

模拟数据有两个一个是表达矩阵expr(行基因,列细胞,数值为原始counts);分组信息meta(每个细胞对应的分组信息,例如所属细胞群、样本、患者等)

expr
meta

示例

setwd('~/project/PH/test/ROGUE')
suppressMessages(library(ROGUE))
suppressMessages(library(ggplot2))
suppressMessages(library(tidyverse))

#### 读入数据 ----
expr <- readRDS('./data/DC.rds') 
meta <- readRDS('./data/info.rds') 
length(table(meta$CellID)) # 细胞数目为913
table(meta$Patient) # 样本信息
# p1  p2  p3  p4  p5  p6  p7 
# 214   6 171 146 125 110 141
table(meta$ct) #细胞类型
# tDC1 tDC2 tDC3 tpDC 
# 171  330  101  311

#### 1. S-E ----
## 过滤低质量细胞 (至少10个细胞中有表达的基因,至少表达10个基因的细胞)
expr <- matr.filter(expr, min.cells =10, min.genes =10)
# 使用SE模型 计算每个基因的 expression entropy
ent.res <- SE_fun(expr)
head(ent.res)
# A tibble: 6 × 7
#   Gene    mean.expr  entropy  fit    ds    p.value p.adj
#                    
# 1 LYZ           1.65   0.762 1.27  0.510       0     0
# 2 HLA-DQB2      1.35   0.569 1.01  0.437       0     0
# 3 BIRC3         1.21   0.458 0.886 0.428       0     0

## 可视化表达值和熵的关系
SEplot(ent.res)
##鉴定出的高度信息性基因可用于聚类和伪时间分析

#### 2.Rogue Calculate ----
rogue.value <- CalculateRogue(ent.res, platform = "UMI")
rogue.value # 0.7219202 
# ROGUE评分默认>0.9时是一致性比较高的细胞亚类

# 推荐使用样本来计算异质性
rogue.res <- rogue(expr, labels = meta$ct, samples = meta$Patient, platform = "UMI", span = 0.6)
saveRDS(rogue.res, 'rogue_res.RDS')

#### 3.ggplot绘图 ----
custom_colors <- c("#0072B2", "#D55E00", "#009E73", "#CC79A7")
p <- rogue.boxplot(rogue.res) 
df <- p[["data"]]
# 绘制箱型图
ggplot(df, aes(x=clusters, y=ROGUE)) +
  geom_boxplot(aes(color=clusters), fill=NA) +  
  geom_jitter(aes(color=clusters), width=0, size=1.5) +  
  scale_color_manual(values=custom_colors) + 
  theme_classic() + 
  theme(axis.text = element_text(color = 'black')) + 
  labs(title="", x="", y="ROGUE index") + 
  #scale_y_continuous(limits = c(0.75, 0.95), breaks = seq(0.75, 0.95, by = 0.1)) +  # 设置 y 轴范围和间隔
  theme(legend.position = "none") 
ggsave('rogue_boxplot.pdf', last_plot(), width = 4, height = 3)

结果

S–E plot

Each point represents one gene. The relationship between S and E was fitted with LOESS regression for each gene.
从图中观察到熵S与基因的平均表达水平E之间有很强的关系,从而形成了我们的表达熵模型(S - E模型)的基础。图中蓝色代表高可信度基因
对于异质细胞群体,某些基因会在部分细胞中表现出表达偏差,导致其表达分布的受限随机性,从而导致S的降低。因此,可以在无监督的情况下,通过选择S降低(ds)最大的基因来对抗零期望,以获得有信息的基因。

图中tDC1具有较高的ROGUE值,代表该细胞群的纯度较高;相反tDC2细胞群纯度较低。
直观地说,对于所有基因都没有显著ds的细胞群,将接收到一个ROGUE值为1,表明它是一个完全纯的亚型或状态。相反,显著性ds汇总最多的种群将产生~0的纯度评分。

其他

使用自己的数据测试了下运行速度:7万个细胞挂后台运行了2.5小时,速度不是很快但是还可以接受!

欢迎大家评论交流!
(每帖分享:在漫长的黑夜中期盼着破晓后的黎明)

版权声明:
作者:感冒的梵高
链接:https://www.techfm.club/p/141248.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>