AUCell:单细胞转录组中识别每一个细胞对某个通路的富集程度
2022-03-17 本文已影响0人
汪汪队队长_莱德
AUCell:能够看出某个通路在细胞中的激活情况,在文章中可以用于差异比较,即这个通路多数在巨噬细胞中激活,而在其他细胞群中不激活
8f37c46e064b71c7fc55ec17806e6e2.png
1.R包的下载
if (!requireNamespace("BiocManager", quietly=TRUE))
install.packages("BiocManager")
# To support paralell execution:
BiocManager::install(c("doMC", "doRNG","doSNOW"))
# For the main example:
BiocManager::install(c("mixtools", "GEOquery", "SummarizedExperiment"))
# For the examples in the follow-up section of the tutorial:
BiocManager::install(c("DT", "plotly", "NMF", "d3heatmap", "shiny", "rbokeh",
"dynamicTreeCut","R2HTML","Rtsne", "zoo"))
browseVignettes("AUCell")
2.需要两个文件,一个是seruat的表达矩阵,一个是基因集(MsigDB数据库)
#加载R包
library(AUCell)
library(clusterProfiler)
library(ggplot2)
library(Seurat)
library(SeuratData)
library(msigdbr)
library(patchwork)
rm(list=ls())
#导入数据
#导入seurat对象
scRNA <- readRDS("scRNAsub.rds") #这个是我自己的单细胞数据
dim(scRNA)
cells_rankings <- AUCell_buildRankings(scRNA@assays$RNA@data) # 关键一步 细胞的表达矩阵
#制作基因集
#选择GO-BP
a=msigdbr(species = "Homo sapiens",category = "C5",subcategory = c("BP"))
a = subset(a,select =c("gs_name","gene_symbol")) %>% as.data.frame()
#选择GO-MF
b=msigdbr(species = "Homo sapiens",category = "C5",subcategory = c("MF"))
b = subset(b,select =c("gs_name","gene_symbol")) %>% as.data.frame()
#将二者合并
c <- rbind(a,b)
genesets = split(c$gene_symbol,c$gs_name)
#这样就制作好了关于GO BP与MF的基因集(唉,从这里就可以看出我的水平了,一言难尽......)
3.计算AUC: 耗时长
cells_AUC <- AUCell_calcAUC(genesets, cells_rankings, aucMaxRank=nrow(cells_rankings)*0.1)
4.找一些通路(该找哪些通路呢?) 用grep函数找
length(rownames(cells_AUC@assays@data$AUC)) #查看一下一共有多少条
data.frame(grep("METABOLIC",rownames(cells_AUC@assays@data$AUC),value = T)) #找与代谢相关的term
#选择其中一条,进行plot ##set gene set of interest here for plotting
geneSet <- "GOBP_VITAMIN_B6_METABOLIC_PROCESS"
aucs <- as.numeric(getAUC(cells_AUC)[geneSet, ]) #提取这个通路在每一个细胞的得分
scRNA$AUC <- aucs #将得分添加入scRNA(seruat)对象
saveRDS(scRNA,"scRNAsub.rds") #保存数据
#选择细胞展示的维度
df<- data.frame(scRNA@meta.data, scRNA@reductions$umap@cell.embeddings) #选择用UMAP维度看 也可以选择TSNE
head(df)
#我们看到每个细胞现在都加上AUC值了,下面做一下可视化。
5.plot
#做一个注释文件 就好比要在什么层次对细胞进行注释
class_avg <- df %>%
group_by(celltype) %>% #这里可以改成cluster seurat_clusters/或者其他的annotation
summarise(
UMAP_1 = median(UMAP_1),
UMAP_2 = median(UMAP_2)
)
#通过ggplot画图
ggplot(df, aes(UMAP_1, UMAP_2)) +
geom_point(aes(colour = AUC)) + viridis::scale_color_viridis(option="A") +
ggrepel::geom_label_repel(aes(label = celltype),
data = class_avg,
size = 6,
label.size = 0,
segment.color = NA
)+ theme(legend.position = "none") + theme_bw()
6.references:
https://www.jianshu.com/p/784a04c49873
https://www.jianshu.com/p/2fb20f44da67