Closed ixxmu closed 1 month ago
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指数的目前的用法更像是增加分析的细粒度,通过统计学结果告诉大家组织内部不同细胞簇的实际情况和预测情况的差异。
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") # 老演员了
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))
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表格在附件或者正文中也可以。
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:表示单元格的背景颜色。
不要在意这张奇怪的图,仅仅是一个可视化。
注:若对内容有疑惑或者有发现明确错误的朋友,请联系后台(欢迎交流)。更多内容可关注公众号:生信方舟
- END -
https://mp.weixin.qq.com/s/MYIGKrskIWp5FXhSQffSYA