首页 > 其他分享 >AUCell和AddModuleScore函数进行基因集评分

AUCell和AddModuleScore函数进行基因集评分

时间:2024-06-22 17:00:33浏览次数:14  
标签:分析 AUC 评分 基因 细胞 AddModuleScore AUCell umap label

AUCellAddModuleScore 分析是两种主流的用于单细胞RNA测序数据的基因集活性分析的方法。这些基因集可以来自文献、数据库或者根据具体研究问题进行自行定义。

AUCell分析原理:

1、AUCell分析可以将细胞中的所有基因按表达量进行排序,生成一个基因排名列表,表达量越高的基因排名越靠前。

2、接下来对每个基因集中的基因找到它们在每个细胞的基因排名列表中的位置,这些位置则反映了基因集内基因在特定细胞群中的表达情况。

3、计算基因集在每个细胞中的活性评分。基于基因集内基因的排名,通过计算这些基因排名的累计面积(AUC,Area Under the Curve)来评估基因集的活性。AUC值越大,表明该基因集在该细胞中的表达越活跃。

AddModuleScore分析原理:

1、计算每个基因集中的基因在每个细胞中的平均表达值

2、选择与目标基因集大小相似的背景基因集,通过目标基因集的平均表达值减去背景基因集的平均表达值,得到基因模块评分(这个评分代表)。这个背景基因集是有函数内部把表达矩阵自行切割若干份之后随机抽取每一份中的基因作为背景基因集。

应用场景
  • 细胞类型鉴定:识别不同细胞类型或细胞亚群的特征基因集活性。

  • 功能状态分析:分析细胞的功能状态,例如细胞周期、免疫反应等。

  • 生物学过程探索:探索特定生物学过程中基因集的表达活性。

AUCell分析步骤:

1.读取基因集数据(采用了Autophagy基因数据)

rm(list = ls())
autophagy_genes <- read.xlsx("Autophagy.xlsx",colNames = T) 
g <- autophagy_genes$Symbol
head(autophagy_genes)
#GeneId                                                                    Name Symbol
#1  55626                                          autophagy/beclin-1 regulator 1 AMBRA1
#2   8542                                                     apolipoprotein L, 1  APOL1
#3    405                          aryl hydrocarbon receptor nuclear translocator   ARNT
#4    410                                                         arylsulfatase A   ARSA
#5    411                                                         arylsulfatase B   ARSB
#6    468 activating transcription factor 4 (tax-responsive enhancer element B67)   ATF4

2.读取R包和需要分析的数据(采用了单细胞pbmc数据)

library(Seurat)
library(tidyverse)
library(openxlsx)
load("step1.final.Rdata") #pbmc数据
sce <- step1.final
#check一下
DimPlot(sce,group.by = "celltype",label = T)+ NoLegend() +ggsci::scale_color_d3()

3、AUCell分析

library(GSEABase)
geneSets <- GeneSet(g, setName="autophagy")
geneSets
#BiocManager::install("AUCell")
library(AUCell)
exprMatrix = sce@assays$RNA@data
rownames(exprMatrix) = Features(sce)
colnames(exprMatrix) = Cells(sce)
#对矩阵中的每个细胞里,给基因进行排序(可见下图1)
cells_rankings <- AUCell_buildRankings(exprMatrix,, plotStats=TRUE) 
#把每个细胞中的基因表达量从高到底排列并计算数量
#Quantiles for the number of genes detected by cell: 
#(Non-detected genes are shuffled at the end of the ranking. Keep it in mind when choosing #the threshold for calculating the AUC).
#    min      1%      5%     10%     50%    100% 
# 491.00  633.15  806.00  897.30 1323.00 5418.00 
cells_AUC <- AUCell_calcAUC(geneSets, cells_rankings,
                            aucMaxRank = nrow(cells_rankings)*0.05)
#为了计算AUC,默认情况下只使用排名中前5%的基因(即检查基因集中的基因是否在前5%之内)。
#这样可以在更大的数据集上更快地执行,并减少排名底部噪音的影响(例如,许多基因可能表达量为0)。要考虑的百分比可以通过参数 aucMaxRank 参数进行修改。可以通过AUCell_buildRankings提供的直方图进行辅助判断。
#Genes in the gene sets NOT available in the dataset: 
# autophagy:  26 (12% of 222)
set.seed(123)
#见下图2
cells_assignment <- AUCell_exploreThresholds(cells_AUC, plotHist=TRUE, assign=TRUE) 
auc_thr = cells_assignment$HMMR$aucThr$selected 
auc_thr

不同细胞中基因表达情况呈偏态分布

这里重点提一下如何看这个AUC histogram,我这边采用autophagy基因集在pbmc数据集中进行分析发现,AUC大于0.11的细胞为活性细胞,但是pbmc中没有细胞符合要求~ 这也提示了我们在做AUCell分析前,需要仔细考虑纳入分析的基因集和单细胞数据是否”合适“。

接下来我以AUCell github上的资料为例子,这些AUC柱状图是对“自定义/活性基因集的细胞”的直观展示。开发者采用了神经细胞的数据集进行分析和展示。

1) 图片的标题是指不同的细胞亚群和基因数量,比如Astrocyte_Cahoy (526g),星形胶纸细胞,代表这群细胞在研究者纳入分析的数据集中存在的基因数量为526个。其中Random(50g), 代表研究者随机提取细胞和基因。

2) X轴代表了AUC值的大小,Y轴代表了不同AUC值下的细胞数量,图形里边的AUC值代表了阈值,AUC阈值下边的具体数值代表了达到要求的“活性”细胞数量。

3) 理想的情况图形呈双峰分布,数据集中大多数细胞是呈现较低的AUC值,而少部分细胞则呈现较高的AUC值。比如Oligodendrocyte_Cahoy分析结果。比较类似的结果是Neuron和Microglia_lavin,虽然它们的基因集细胞数量很少或者符合要求的细胞数很少,但结果仍旧呈现出了双峰形态,或许侧面说明了他们的基因集或者筛除的细胞能够明显的表征某些特性。

4) 如果基因集是数据集中的高比例细胞的标记(比如 Neuron结果),那么分布图形可能类似于管家基因的分析结果(HK-like)。

5) 基因集的大小会影响结果。更大的基因集(100-2k)可会使结果更稳定,更易评估,随着基因数目的减少,AUC = 0的细胞数目可能增加。当然如果选定的基因集非常给力,那么也可能呈现较好的结果 (即Neuron_Lein结果)。

4、图形可视化

#由于我这里使用的autophagy基因并不能很好的区分高低活性细胞,因此我更换了数据集
#数据集采用了GSE162025鼻咽癌数据集中的上皮细胞
#基因集采用了"SCNM1","CDC42SE1","ZNF687" (随意指定)
Idents(sce) <- sce$celltype
sce$auc_score = as.numeric(getAUC(cells_AUC))
sce$auc_group = ifelse(sce$auc_score>auc_thr,"high_A","low_A") #自行修改

dat<- data.frame([email protected], 
                 sce@[email protected],
                 seurat_annotation = [email protected])
class_avg <- dat %>%
  group_by(seurat_annotation) %>% #按照seurat_annotation列(即细胞的分类)对数据进行分组。
  summarise(
    umap_1 = median(umap_1),
    umap_2 = median(umap_2) #对每个分组计算UMAP坐标的中位数 画label
  )

library(ggpubr)
ggplot(dat, aes(umap_1, umap_2))  +
  geom_point(aes(colour  = auc_score)) +
  viridis::scale_color_viridis(option="A") +
  ggrepel::geom_label_repel(aes(label = seurat_annotation),
                            data = class_avg,
                            label.size = 0,
                            segment.color = NA)+
  theme_bw()
ggsave(filename="Aucell.pdf",width = 12,height = 7)


# 高低分组
ggplot(dat,aes(x = umap_1,y = umap_2))+
  geom_point(aes(color = auc_group),size = 0.5)+
  theme_classic()
ggsave(filename="Aucell2.pdf",width = 8,height = 7)

然后接下来可以根据基因集的高低分组进行更多的个性化分析啦~

AddModuleScore分析步骤:

1、读取数据和基因集

rm(list = ls())
library(Seurat)
g <- c("SCNM1","CDC42SE1","ZNF687")
load("sce_epi.Rdata")  #数据集采用了GSE162025鼻咽癌数据集中的上皮细胞
#DimPlot(sce,group.by = "celltype",label = T)+ NoLegend() +ggsci::scale_color_d3()

2、AddModuleScore分析

#AddmoduleScore函数是seraut包自带的很方便
sce =  AddModuleScore(object = sce,features = g)
colnames([email protected])
p =FeaturePlot(sce,'Cluster1') #默认名称cluster1
p 

dat<- data.frame([email protected], 
                 sce@[email protected],
                 seurat_annotation = [email protected])
class_avg <- dat %>%
  group_by(seurat_annotation) %>% #按照seurat_annotation列(即细胞的分类)对数据进行分组。
  summarise(
    umap_1 = median(umap_1),
    umap_2 = median(umap_2) #对每个分组计算UMAP坐标的中位数 画label
  )

library(ggpubr)
ggplot(dat, aes(umap_1, umap_2))  +
  geom_point(aes(colour  = Cluster1)) + #修改这里的colour
  viridis::scale_color_viridis(option="A") +
  ggrepel::geom_label_repel(aes(label = seurat_annotation),
                            data = class_avg,
                            label.size = 0,
                            segment.color = NA)+
  theme_bw()
ggsave(filename="Aucell-addmodulescore.pdf",width = 12,height = 7)

获得cluster评分之后就可以按照中位值或者其他的值进行分组,从而进行后续的个性化分析啦~

:若对内容有疑惑或者有发现明确错误的朋友,请联系后台(希望多多交流)。更多内容可关注公众号:生信方舟

- END -

标签:分析,AUC,评分,基因,细胞,AddModuleScore,AUCell,umap,label
From: https://blog.csdn.net/zfyyzhys/article/details/139884658

相关文章

  • uniapp(全端兼容) - 最新详细实现刻度尺组件效果,uni-app实现尺子打分及手指拖动刻度尺
    效果图在uniapp微信小程序/手机h5网页网站/安卓app/苹果app/支付宝小程序/nvue等(全平台完美兼容)开发中,实现uniApp各端都兼容的“刻度尺(横格尺|尺子)”手势左右两侧拖动、手指滑动刻度尺功能,水平刻度尺,支持自定义尺子颜色、大小、刻度、滑动时的步进值、最大和最小刻度值......
  • 经验分享|如何查询自己的大数据信用评分?
    在大数据技术的加持之下,金融风控也逐渐运用大数据技术了,也就是我们说的大数据或者大数据信用,在大数据信用报告中对个人的综合信用风险有着等级划分,那大数据信用报告信用等级怎么看呢?本文为你详细介绍一下,感兴趣的不妨去看看。大数据信用等级常见的划分形式:一......
  • c# 检测密码强度,评分规则仿google
    参考delphi的代码更改为C#Delphi检测密码强度规则(仿google)仿google评分规则一、密码长度:5分:小于等于4个字符10分:5到7字符25分:大于等于8个字符二、字母:0分:没有字母10分:全都是小(大)写字母20分:大小写混合字母三、数字:0分:没有数字10......
  • vue+uniapp框架开发的电影评分系统 微信小程序
    前端:vue语法,uniapp框架,微信小程序后端:springboot,java数据库:mysql环境:intellijidea,支持eclipse前端技术:Vue+elementui、Html、CSS语言框架:springbootjava+spring、mybatis、Springmvc数据库:mysql代码结构讲解如下config:主要用来存储配置文件,以及其他不怎么动用的信......
  • 知识分享:大数据信用花导致的评分不足多久能恢复
    随着金融风控领域越来越科技化,基于大数据技术的金融风控成为了贷前风控不可或缺的重要环节,相信很多人在申贷的时候都听说过大数据信用和综合评分等词语,那大数据信用花导致的评分不足多久能恢复呢?本文带大家一起去了解一下。首先,我们得先了解大数据花的原因一......
  • 制作评分器
    本题目要编写一个评分器。创建考试后,当输入做题总数和错题数时自动求出分数代码中包含两个类,分别是:1、父类Grade负责将成绩分成级别,如,A:100-90;B:89-80;C:79-70;D:69-60;F:低于60分私有成员:字符变量letter----表示成绩的级别,如‘A’、‘B’等单精度浮点变量score---表示真实分数......
  • 2022-06-30-和讯网上市公司社会责任综合评分数据
    和讯网发布的我国上市公司社会责任综合评分作为企业社会责任表现的度量。 该评分基于我国上市公司的社会责任报告和财务报告信息,从股东责任、员工责任、供应商、客户和消费者权益责任、环境责任和公共责任五个方面,分别设立13个二级指标和37个三级指标,对企业社会责任承担情......
  • es集群、索引压缩以及相关度评分计算
    es的集群需要有n/2+1的票数才能当选主节点最好采用2+1部署方案:即3节点集群有一个节点设置为投票节点,这样可以更高效率的选出主节点 1.es的选举,选举过程可以看一下源码首先查找存活的节点,包括自己,然后对节点进行过滤,找出具有投票权的节点进行投票,记录票数,选出临时master(还不是......
  • 各大插件市场智能助手评分榜出炉!百度Comate稳居第一
    近日,在VSCode、Jetbrains等各大插件市场智能助手评分榜中,百度Comate分别以4.5和4.4位列第一,通义灵码位居第二、第三,CodeGeeX、iFlyCode、aiXcoder、GitHubCopilot等跟随其后。从外界获悉,百度Comate自发布以来,得到了广大程序员们的好评。许多用户表示,Comate不仅提高了他们的工......
  • 揭秘姓名背后的奥秘:从五行分析到吉凶评分全攻略
    在古老的中国文化中,姓名不仅仅是一个简单的标签,它承载着深厚的文化内涵和人生寓意。从姓名学的角度来看,一个人的名字与其命运息息相关,通过分析姓名中的五行属性、吉凶评分等,我们可以对个人的性格、运势有一定的了解。一、姓名分析的重要性姓名分析,又称为姓名学,是一门古老而神秘......