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

news2024/11/24 6:09:59

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(sce@meta.data, 
                 sce@reductions$umap@cell.embeddings,
                 seurat_annotation = sce@active.ident)
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(sce@meta.data)
p =FeaturePlot(sce,'Cluster1') #默认名称cluster1
p 

dat<- data.frame(sce@meta.data, 
                 sce@reductions$umap@cell.embeddings,
                 seurat_annotation = sce@active.ident)
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 -

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1850252.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

atcoder abc 358

A welcome to AtCoder Land 题目&#xff1a; 思路&#xff1a;字符串比较 代码&#xff1a; #include <bits/stdc.h>using namespace std;int main() {string a, b;cin >> a >> b;if(a "AtCoder" && b "Land") cout <&…

车辆轨迹预测系列 (三):nuScenes数据集详细介绍-1

车辆轨迹预测系列 (三)&#xff1a;nuScenes数据集详细介绍-1 文章目录 车辆轨迹预测系列 (三)&#xff1a;nuScenes数据集详细介绍-1一、数据集准备1、解压2、安装nuscenes-devkit3、介绍 二、架构内容解释1、category 类别2、attribute 属性3、visibility 可见性4、instance …

【金】01Y120 pygame 外星人入侵

13241890059 具有功能&#xff1a;分数记录、排行榜、难度升级 ‪H:\0work\1_pygame-200

emWin在Windows上仿真运行环境配置

文章目录 一、emWin介绍二、emWin必用的2个工具2.1 PC仿真器2.2 GUIBuilder图形化设计工具三、安装VS2022四、打开emwin仿真工程五、常见的配置修改5.1 运行内存修改5.2 LCD显示屏尺寸的修改一、emWin介绍 emWin(Embedded Wizard Graphics Library)是Segger公司开发的嵌入式…

Redis实战—Redis分布式锁

本博客为个人学习笔记&#xff0c;学习网站与详细见&#xff1a;黑马程序员Redis入门到实战 P56 - P63 目录 分布式锁介绍 基于Redis的分布式锁 Redis锁代码实现 修改业务代码 分布式锁误删问题 分布式锁原子性问题 Lua脚本 编写脚本 代码优化 总结 分布式锁介绍…

transdreamer 论文阅读笔记

这篇文章是对dreamer系列的改进&#xff0c;是一篇world model 的论文改进点在于&#xff0c;dreamer用的是循环神经网络&#xff0c;本文想把它改成transformer&#xff0c;并且希望能利用transformer实现并行训练。改成transformer的话有个地方要改掉&#xff0c;dreamer用ht…

Large Language Model based Multi-Agents: A Survey of Progress and Challenges

目录 摘要简介背景单一智能体系统单智能体 vs .多智能体系统 剖析多智能体系统&#xff1a;接口、剖析、通信和能力智能体 - 环境接口智能体画像智能体通信能力获取 摘要 大型语言模型( Large Language Models&#xff0c;LLMs )在各种任务中都取得了令人瞩目的成功。由于LLMs…

Linux搭建我的世界乌托邦探险之旅3.2整合包服务端,Minecraft开服教程

Linux服务器使用MCSM10 搭建 我的世界 乌托邦探险之旅3.2 整合包 服务端 的教程&#xff0c;Minecraft整合包开服教程。 大型养老探险整合包&#xff1a;乌托邦探险之旅3.2&#xff0c;探索上千种结构&#xff0c;造访丰富的自然群系&#xff0c;欣赏生动的生物动画&#xff0…

Android SurfaceFlinger——屏幕热插拔回调(九)

上一篇文章分析了回调注册监听的调用流程&#xff0c;对于数据的回调正好是注册监听的逆向调用。首先前面提到过在 HWC2On1Adapter 中就会直接转型为每一个回调到上层&#xff0c;这里我们就看一下屏幕热插拔回调&#xff08;hotplugHook&#xff09;的调用流程。 一、硬件回调…

数据库系统概论——数据库恢复技术

文章目录 数据库恢复技术事务的基本概念什么是事务如何定义事务&#xff1a;事务的特性 数据库恢复概述故障的种类恢复的实现技术恢复策略事务故障的恢复系统故障的恢复介质故障的恢复 数据库恢复技术 事务的基本概念 什么是事务 事务使用户定义的一个数据库操作序列&#x…

步步精:连接器领域的卓越品牌

自1987年成立以来&#xff0c;步步精坐落于美丽的旅游城市——温州市乐清虹桥镇&#xff0c;被誉为“国家电子主体生产基地”、“国家精密模具制造基地”。公司拥有7大厂区、9大事业部&#xff0c;800名专职员工&#xff0c;致力于提供高品质的连接器解决方案。注册商标“BBJCO…

数据库精选题(三)(SQL语言精选题)(按语句类型分类)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;数据库 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 创建语句 创建表 创建视图 创建索引…

【机器学习】基于Softmax松弛技术的离散数据采样

1.引言 1.1.离散数据采样的意义 离散数据采样在深度学习中起着至关重要的作用&#xff0c;它直接影响到模型的性能、泛化能力、训练效率、鲁棒性和解释性。 首先&#xff0c;采样方法能够有效地平衡数据集中不同类别的样本数量&#xff0c;使得模型在训练时能够更均衡地学习…

开启声音的奇幻之旅:AI声音变换器的魔法秘籍与创意应用

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/这个充满科技魔力的时代&#xff0c;AI Voice Changer 就像一把神奇的钥匙&#xff0c;能为我们打开声音的魔法之门。今天&#xff0c;就让我带你…

在线教育系统源码入门:教育培训小程序开发全流程

本篇文章&#xff0c;笔者将详细介绍在线教育系统源码的入门知识&#xff0c;并带领大家了解教育培训小程序的开发全流程。 一、在线教育系统的基本概念 一个完整的在线教育系统应具备以下几个模块&#xff1a; 用户管理 课程管理 教学互动 支付模块 数据统计 二、开发工…

【开发】内网穿透ztncui搭建私有节点

文章目录 写在前面一键部署ztnuci记录后续 写在前面 前面搭建moon节点转发的确会降低延迟&#xff0c;但是总有出现moon节点解析不成功的例子&#xff0c;于是疯狂寻找答案是为什么&#xff1f;终于在知乎上找到这样一个答案。 一键部署ztnuci 参考这篇很完善的教程和贴心的…

小i机器人:总负债5.31亿,员工数量在减少,银行借款在增加,净利润已下降-362.68%

小i机器人:总负债5.31亿,员工数量在减少,银行借款在增加,总收入在增长,净利润已下降-362.68% 来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 目录 一、小i机器人公司介绍 二、小i机器人过去20年的发展历程和取得的成就 三、小i机器人的产品和技术架构 四、小i机器人…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-24深度卷积神经网络AlexNet

24深度卷积神经网络AlexNet import torch from torch import nn import liliPytorch as lp import liliPytorch as lp import matplotlib.pyplot as pltdropout1 0.5 #Alexnet架构 net nn.Sequential(nn.Conv2d(1, 96, kernel_size11, stride4, padding1),nn.ReLU(),nn.MaxPo…

29-Linux--守护进程

一.基础概念 1.守护进程&#xff1a;精灵进程&#xff0c;在后台为用户提高服务&#xff0c;是一个生存周期长&#xff0c;通常独立于控制终端并且周期性的执行任务火处理事件发生 2.ps axj&#xff1a;查看守护进程 3.进程组&#xff1a;多个进程的集合&#xff0c;由于管理…

# 消息中间件 RocketMQ 高级功能和源码分析(十一)

消息中间件 RocketMQ 高级功能和源码分析&#xff08;十一&#xff09; 一、消息中间件 RocketMQ 源码分析&#xff1a; 拉取消息长轮询机制 1、消息拉取长轮询机制分析 RocketMQ 未真正实现消息推模式&#xff0c;而是消费者主动向消息服务器拉取消息&#xff0c;RocketMQ …