Ro/e主要目的是评估不同的细胞系在组织分布是否显著偏离随机期望值,开发者指出这个工具比卡方检验有所不同,卡方检验只能观察结果偏离随机期望的程度,而Ro/e则能够进一步表明特定细胞簇在特定组织中的富集/消耗的情况。例如,如果 Ro/e>1,则表明在该组织中,某细胞簇的细胞数量高于随机期望,即表现为富集;如果 Ro/e<1,则表明某细胞簇在该组织中的细胞数量低于随机期望,即表现为消耗。
Ro/e指数的含义
Ro/e 指数的评分规则:
+++, Ro/e > 1; ++, 0.8 < Ro/e ≤ 1; +, 0.2 ≤ Ro/e ≤ 0.8; +/−, 0 < Ro/e < 0.2; −, Ro/e = 0与比较不同条件下细胞的RNA扰动和细胞数量变化不同,该工具更加侧重于同一组织内部不同细胞群的变化情况。顺便我们再回顾一下Augur和miloR这两个工具,Augur主要是关注基因表达差异,评估细胞在不同条件下所产生的RNA扰动情况,miloR是关注不同条件下细胞数量的变化,从数理的角度来看它是根据细胞群体的空间拓扑结构而做的分析(比如非转移和转移,需要先整合在一起然后进行比较)。而Ro/e指数的目前的用法更像是增加分析的细粒度,通过统计学结果告诉大家组织内部不同细胞簇的实际情况和预测情况的差异。
分析步骤
1.导入
rm(list = ls())
V5_path = "/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/seurat5/"
.libPaths(V5_path)
.libPaths()
library(Startrac)
library(ggplot2)
library(tictoc)
library(ggpubr)
library(ComplexHeatmap)
library(RColorBrewer)
library(circlize)
library(tidyverse)
library(sscVis)
library(Seurat)
library(tidyverse)
library(readr)
library(qs)
library(BiocParallel)
register(MulticoreParam(workers = 8, progressbar = TRUE))
load("scRNA.Rdata") # 老演员了
2.数据预处理
dat <- scRNA@meta.data
# 提取两种T细胞数据
data <- dat[dat$celltype %in% c("CD4+ T-cells", "CD8+ T-cells"), ]
# 创造出不同的组织
data$tissue <- c(rep("N",800),rep("T",754))
3.Ro/e分析
colnames(data)
data <- data[,c(1,8:10)]
colnames(data) <- c("patient","clone.id","majorCluster","loc")
data$Cell_Name <- c("T cell")
data$patient <- as.character(data$patient)
data$clone.id <- as.character(data$clone.id)
data$majorCluster <- as.character(data$majorCluster)
data$loc <- as.character(data$loc)
Roe <- calTissueDist(data,
byPatient = F,
colname.cluster = "majorCluster", # 不同细胞亚群
colname.patient = "patient", # 不同样本
colname.tissue = "loc", # 不同组织
method = "chisq", # "chisq", "fisher", and "freq"
min.rowSum = 0)
Roe
# N T
# CD4+ T-cells 0.9992205 1.0008271
# CD8+ T-cells 1.0014351 0.9984773
Roe这是最关键的值,然后进行可视化即可,甚至不可视化直接放一个excel表格在附件或者正文中也可以。
4.可视化
col_fun <- colorRamp2(c(min(Roe, na.rm = TRUE), 1, max(Roe, na.rm = TRUE)),
c("blue", "white", "red"))
Heatmap(as.matrix(Roe),
show_heatmap_legend = TRUE,
cluster_rows = TRUE,
cluster_columns = TRUE,
row_names_side = 'right',
show_column_names = TRUE,
show_row_names = TRUE,
col = col_fun,
row_names_gp = gpar(fontsize = 10),
column_names_gp = gpar(fontsize = 10),
heatmap_legend_param = list(
title = "Ro/e Index", # 自定义图注名称
at = seq(0.5, 1.5, by = 0.5), # 例刻度的位置/自己的数据必须修改一下!
labels = seq(0.5, 1.5, by = 0.5) # 每个刻度的标签/自己的数据必须修改一下!
),
cell_fun = function(j, i, x, y, width, height, fill) {
grid.text(sprintf("%.2f", Roe[i, j]), x, y, gp = gpar(fontsize = 8, col = "black"))
}
)
# cell_fun = function(j, i, x, y, width, height, fill)
# j 和 i:分别表示单元格的列和行索引。
# x 和 y:是单元格的中心位置坐标,用于确定文本的位置。
# width 和 height:表示单元格的宽度和高度,可以用来调整文本位置或大小。
# fill:表示单元格的背景颜色。
不要在意这张奇怪的图,仅仅是一个可视化。
参考资料:
A pan-cancer single-cell transcriptional atlas of tumor infiltrating myeloid cells. Cell. 2021 Feb 4;184(3):792-809.e23. Lineage tracking reveals dynamic relationships of T cells in colorectal cancer. Nature. 2018 Dec;564(7735):268-272. github:https://github.com/Japrin/STARTRAC 生信侃侃谈:https://mp.weixin.qq.com/s/EW4WWfizX98uM8cqS-S1gg TOP生物信息:https://mp.weixin.qq.com/s/GCubkqV6Xo2VwNeWG9Up0Q BIO笔记本:https://mp.weixin.qq.com/s/AfYRmLEw1oXE5S8zr5UQDA 生信随笔:https://mp.weixin.qq.com/s/oHzfFx02Kp5w2x_v3l9iKw
注:若对内容有疑惑或者有发现明确错误的朋友,请联系后台(欢迎交流)。更多内容可关注公众号:生信方舟
- END -