单细胞分析(19)—— 单细胞转录组基因集评分方法
下面是每种基因集评分方法的原理介绍+代码示例,适用于R语言和Python两种主流生信分析环境。可以直接应用于单细胞转录组(scRNA-seq)数据分析中。
🔬 单细胞转录组基因集评分方法(附代码示例)
在单细胞RNA测序(scRNA-seq)分析中,基因集评分(Gene Set Scoring)是一项关键任务,能帮助研究者识别细胞功能状态。本文介绍5种主流方法,并提供代码示例!
1️⃣ AUCell:基于AUC的基因集活性评分
📌 原理
- AUCell 使用 AUC(Area Under the Curve) 来计算基因集在单细胞数据中的活跃度。
- 不依赖数据标准化,适用于异质性较高的数据集。
💻 R 代码示例
# 1. 加载必要的包
library(AUCell)
library(SingleCellExperiment)# 2. 读取表达矩阵(假设 scRNA-seq 数据已转换为 SingleCellExperiment)
exprMatrix <- assay(sce, "counts") # 取 count 数据# 3. 定义基因集
geneSet <- list(MyGeneSet = c("CD8A", "GZMB", "PRF1")) # 以T细胞毒性相关基因为例# 4. 计算 AUC 分数
cells_rankings <- AUCell_buildRankings(exprMatrix, nCores = 1)
cells_AUC <- AUCell_calcAUC(geneSet, cells_rankings)# 5. 可视化结果
AUCell_plot(cells_AUC)
✅ 适用场景:适合用于检测高度活跃的基因集,例如肿瘤浸润T细胞的活化情况。
2️⃣ ssGSEA:单样本基因集富集分析
📌 原理
- 扩展自 GSEA,可计算每个样本的基因集富集得分。
- 适用于大规模数据,计算速度快,但受数据分布影响较大。
💻 R 代码示例
library(GSVA)
library(GSEABase)# 1. 读取数据
exprMatrix <- as.matrix(assay(sce, "logcounts")) # 取 log-normalized 数据# 2. 定义基因集
geneSet <- GeneSet(setName = "T_Cell_Activation",geneIds = c("CD69", "IL2", "IFNG"),geneIdType = SymbolIdentifier())# 3. 运行 ssGSEA
ssgsea_scores <- gsva(exprMatrix, list(T_Cell_Activation = geneSet), method = "ssgsea")# 4. 绘制热图
heatmap(ssgsea_scores)
✅ 适用场景:适用于大规模数据分析,如免疫细胞功能状态的评估。
3️⃣ VAM:方差调整的马氏距离计算
📌 原理
- 通过方差调整(Variance Adjustment)计算基因集活跃度,减少数据噪音的影响。
- 适用于跨数据集分析,避免数据归一化带来的误差。
💻 Python 代码示例
import vam
import scanpy as sc# 1. 读取数据
adata = sc.read_h5ad("single_cell_data.h5ad")# 2. 定义基因集
gene_set = ["CD3D", "CD3E", "CD3G"] # 例:T 细胞相关基因# 3. 计算 VAM 得分
vam_scores = vam.calculate_vam_score(adata, gene_set)# 4. 将得分存入 AnnData
adata.obs["VAM_score"] = vam_scores# 5. 可视化
sc.pl.umap(adata, color="VAM_score")
✅ 适用场景:适合用于跨数据集比较,如不同队列的免疫特征对比。
4️⃣ UCell:基于秩和得分的评分方法
📌 原理
- 采用 Spearman 秩和统计 方法计算基因集的活跃度。
- 计算效率高,适用于大规模单细胞数据。
💻 R 代码示例
library(UCell)
library(Seurat)# 1. 读取 Seurat 数据
sce <- readRDS("single_cell_seurat.rds")# 2. 定义基因集
geneSet <- c("GATA3", "TBX21", "IL4") # 例:Th1/Th2 相关基因# 3. 计算 UCell 评分
sce <- AddModuleScore_UCell(sce, features = list(Th1_Th2 = geneSet), name = "UCell")# 4. 可视化
FeaturePlot(sce, features = "UCell_Th1_Th2")
✅ 适用场景:适合大样本量数据,如全转录组水平的功能分析。
5️⃣ Seurat AddModuleScore:Seurat环境下的简单评分方法
📌 原理
- 计算目标基因集的表达均值,并与背景基因对比。
- 适用于 Seurat 分析框架,但受批次效应影响较大。
💻 R 代码示例
library(Seurat)# 1. 读取 Seurat 数据
sce <- readRDS("seurat_obj.rds")# 2. 定义基因集
geneSet <- list(MyGeneSet = c("CCL5", "CXCL10", "GZMB")) # 例:T 细胞趋化因子# 3. 计算模块得分
sce <- AddModuleScore(sce, features = geneSet, name = "MyGeneSet_Score")# 4. 可视化
FeaturePlot(sce, features = "MyGeneSet_Score1")
✅ 适用场景:适合Seurat 分析,如特定细胞亚群功能状态的评估。
🔍 方法对比总结
| 方法 | 计算方式 | 是否需标准化 | 计算效率 | 适用场景 |
|---|---|---|---|---|
| AUCell | AUC 排序 | 否 | 中等 | 适用于高异质性数据 |
| ssGSEA | 积分计算 | 是 | 快 | 适用于大规模数据分析 |
| VAM | 方差调整马氏距离 | 否 | 中等 | 适用于跨数据集分析 |
| UCell | Spearman 秩和 | 否 | 快 | 适用于大规模数据 |
| Seurat AddModuleScore | 均值计算 | 是 | 快 | 适用于 Seurat 框架 |
📝 结论:如何选择最佳方法?
- 研究细胞功能状态 → 试试 AUCell 或 ssGSEA!
- 想分析大规模数据? → UCell 是你的最佳选择!
- 在 Seurat 里工作? → Seurat AddModuleScore 是最简单的方法!
- 想减少批次效应影响? → 选择 VAM!
相关文章:
单细胞分析(19)—— 单细胞转录组基因集评分方法
下面是每种基因集评分方法的原理介绍代码示例,适用于R语言和Python两种主流生信分析环境。可以直接应用于单细胞转录组(scRNA-seq)数据分析中。 🔬 单细胞转录组基因集评分方法(附代码示例) 在单细胞RNA测…...
010 rocketmq批量消息
文章目录 批量消息BatchProducer.javaBatchConsumer.java 批量消息 批量发送可以提⾼发送性能,但有⼀定的限制: topic 相同 waitStoreMsgOK 相同 (⾸先我们建设消息的iswaitstoremsgoktrue(默认为true), 如果没有异常,我们将始终收到"O…...
JavaWeb后端基础(3)
原打算把Mysql操作数据库的一些知识写进去,但是感觉没必要,要是现在会的都是简单的增删改查,所以,这一篇,我直接从java操作数据库开始写,所以这一篇大致就是记一下JDBC、MyBatis、以及SpringBoot的配置文件…...
Oracle数据库基础入门(三): DQL 深入解析与实践
在 Oracle 数据库的知识体系中,数据查询语言(DQL)无疑是最为常用且关键的部分之一。对于 Java 全栈开发者而言,熟练掌握 DQL 不仅能高效地从数据库中获取所需数据,更是构建强大后端应用的基石。通过 DQL,我…...
P9231 [蓝桥杯 2023 省 A] 平方差
P9231 [蓝桥杯 2023 省 A] 平方差 - 洛谷 题目描述 给定 L,R,问 L≤x≤R 中有多少个数 x 满足存在整数 y,z 使得 xy2−z2。 输入格式 输入一行包含两个整数 L,R,用一个空格分隔。 输出格式 输出一行包含一个整数满足题目给定条件的 x 的数量。 输…...
贪心算法 求解思路
贪心算法简介 贪心算法是通过做一系列的选择来给出某一问题的最优解。对算法中的每一个决策点,做一个当时(看起来是)最佳的选择。这种启发式策略并不是总能产生出最优解,但它常常能给出最优解。 在实际设计贪心算法时࿰…...
2025/2/25,字节跳动后端开发一面面经
一、双方简单自我介绍 面试官先自我介绍,之后属于面试官看简历过程,基本不听。 二、实习中遇到最难的事情,怎么解决的 主要问的还是实习中做过的项目,项目难点在哪里(自己参与的地方),面对困难是怎么思考,怎么实际操作解决的。 三、项目实现细节 掌握自己项目的实…...
Buildroot 添加自定义模块-内置文件到文件系统
目录 概述实现步骤1. 创建包目录和文件结构2. 配置 Config.in3. 定义 cp_bin_files.mk4. 添加源文件install.shmy.conf 5. 配置与编译 概述 Buildroot 是一个高度可定制和模块化的嵌入式 Linux 构建系统,适用于从简单到复杂的各种嵌入式项目. buildroot的源码中bui…...
SpringBoot新闻推荐系统设计与实现
随着信息时代的快速发展,新闻推荐系统成为用户获取个性化内容的重要工具。本文将介绍一个幽络源的基于SpringBoot开发的新闻推荐系统,该系统功能全面,操作简便,能够满足管理员和用户的多种需求。 管理员模块 管理员模块为系统管…...
领域驱动设计:事件溯源架构简介
概述 事件溯源架构通常由3种应用设计模式组成,分别是:事件驱动(Event Driven),事件溯源(Event Source)、CQRS(读写分离)。这三种应用设计模式常见于领域驱动设计(DDD)中,但它们本身是一种应用设计的思想,不仅仅局限于DDD,每一种模式都可以单独拿出来使用。 E…...
基于Java+Spring+Mybsita+mysql的汽租车辆共享平台的设计源码+设计文档
文末获取源码数据库文档 感兴趣的可以先收藏,有毕设问题,项目以及论文撰写等问题都可以和博主沟通,尽最大努力帮助更多的人! 目录 1软件需求 1.1引言 1.1.1编写目的 1.1.2背景 1.2 绪论 1.2.1-Internet与…...
深度学习的正则化深入探讨
文章目录 一、说明二、学习目标三、什么是机器学习中的正则化四、了解过拟合和欠拟合五、代价函数的意义六、什么是偏差和方差?七、机器学习中的正则化? 一、说明 在训练机器学习模型时,模型很容易过拟合或欠拟合。为了避免这种情况…...
Token相关设计
文章目录 1. 双Token 机制概述1.1 访问令牌(Access Token)1.2 刷新令牌(Refresh Token) 2. 双Token 认证流程3. Spring Boot 具体实现3.1 生成 Token(使用 JWT)3.2 解析 Token3.3 登录接口(返回…...
【时序预测】在线学习:算法选择(从线性模型到深度学习解析)
——如何为动态时序预测匹配最佳增量学习策略? 引言:在线学习的核心价值与挑战 在动态时序预测场景中(如实时交通预测、能源消耗监控),数据以流式(Streaming)形式持续生成,且潜在的…...
React antd的datePicker自定义,封装成组件
一、antd的datePicker自定义 需求:用户需要为日期选择器的每个日期单元格添加一个Tooltip,当鼠标悬停时显示日期、可兑换流量余额和本公会可兑流量。这些数据需要从接口获取。我需要结合之前的代码,确保Tooltip正确显示,并且数据…...
学生管理前端
文章目录 首页student.html查询功能 首页 SpringBoot前端html页面放在static文件夹下:/src/main/resources/static 默认首页为index.html,我们可以用两个超链接或者两个button跳转到对应的页面。这里只是单纯的跳转页面,不需要提交表单等其…...
深入理解并实现自定义 unordered_map 和 unordered_set
亲爱的读者朋友们😃,此文开启知识盛宴与思想碰撞🎉。 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 在 C 的标准模板库(STL)中,unorder…...
顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-大模型电话机器人
语音流直接对接Realtime API 多模态大模型 直接把音频流输出给大模型,大模型返回音频流。 顶顶通CTI对Realtime API 的支持 提供了以下2个APP可对接任意 •cti_audio_stream 通过TCP推流和播放流,适合用于人机对话场景。 •cti_unicast_start 通过旁…...
kinova机械臂绿色灯一闪一闪及刷机方法
一、背景 实验室有两个kinova mico机械臂,但经常出现操纵杆上的绿色灯一闪一闪的,导致无法使用操纵杆或ROS进行控制,下面给出官方的教程以及所需要的FS 0CPP 0008_6.2.5_mico_6dof.hex文件。 重要的东西写在前面: a、如果出现操…...
第16天:C++多线程完全指南 - 从基础到现代并发编程
第16天:C多线程完全指南 - 从基础到现代并发编程 一、多线程基础概念 1. 线程创建与管理(C11) #include <iostream> #include <thread>void hello() {std::cout << "Hello from thread " << std::this_…...
PCA-ANN-PWA框架:破解大规模非线性系统全局优化难题
1. 项目概述与核心挑战在化工、能源、材料等过程工业领域,我们工程师经常面临一个头疼的难题:如何对一个包含数百甚至数千个状态变量的大型非线性系统进行高效、可靠的全局优化?这类系统通常由复杂的偏微分方程组描述,比如反应器内…...
多目标优化模型MO-OBAM:在数据匿名化中权衡隐私保护与数据效用
1. 项目概述与核心挑战在金融风控、医疗研究和精准营销这些数据驱动的核心领域,我们每天都在面对一个看似无解的悖论:数据越详细、越原始,从中挖掘出的价值就越大,但随之而来的隐私泄露风险也呈指数级增长。我处理过不少项目&…...
不止是颜色:深入挖掘(ANSI转义码)在Linux/Mac终端里的高级玩法
不止是颜色:深入挖掘ANSI转义码在终端里的高级玩法当大多数开发者还在用\033[31m给终端文字涂上红色时,极客们早已用ANSI转义码玩出了更酷炫的花样。想象一下:终端里跳动的进度条、实时刷新的数据仪表盘、甚至完整的文字冒险游戏——这些全都…...
芯片设计文档查找与管理指南
1. 逻辑IP/标准单元/平台用户指南查找指南作为一名芯片设计工程师,我经常需要查阅各种工艺库和IP核的文档。最近有同事问我:"为什么在Logic IP库下载包里找不到用户指南?"这其实是个常见问题,我来分享一下我的经验。在芯…...
心脏数字孪生:计算建模与机器学习融合重塑精准医疗
1. 项目概述:当计算心脏遇见数据智能在心血管医学的前沿,一场静默的革命正在进行。我们不再仅仅依赖传统的临床试验和群体统计数据来理解疾病、测试药物或规划手术。取而代之的,是一个融合了计算物理学、生物学和人工智能的崭新范式ÿ…...
强化学习实战:用Python手搓Sarsa和Q-Learning,在悬崖漫步里看谁更“怂”
强化学习实战:Python实现Sarsa与Q-Learning在悬崖漫步中的策略差异从游戏视角理解强化学习核心算法想象你正站在一个412的网格世界起点,目标是到达右下角的终点。但中间有一片"悬崖"——任何踏入都会让你回到起点并承受巨大惩罚。每走一步都会…...
【2026年阿里巴巴集团暑期实习- 5月23日-算法岗-第一题- 荆棘林的最优砍断计划】(题目+思路+JavaC++Python解析+在线测试)
题目内容 林中共有 n n n 株荆棘,第 i i i 株的坚硬度为 a i a_i...
语音“下一首“控制车载音乐播放!
V1.0一个android apk,这个app可以监听手机的语音,然后我可以发语音来控制播放下一首歌曲,给语音指令,下一个,就会在酷狗音乐上播放下一首歌曲。节省点击的操作,因为在车上手去点击,影响开车。V1…...
Lindy企业流程自动化实施全周期拆解:从0到1上线仅需14天的关键5步法
更多请点击: https://intelliparadigm.com 第一章:Lindy企业流程自动化实施全周期拆解:从0到1上线仅需14天的关键5步法 Lindy 作为轻量级、高可扩展的流程自动化平台,其核心优势在于将复杂的企业级RPA与低代码逻辑深度融合&#…...
Unity风格化山脉管线:轮廓生成+分层材质+程序植被
1. 这不是“又一个山体素材包”,而是一套可工业化复用的风格化地形生产管线你有没有试过在Unity里拖进一个山体模型,调整光照后发现——它看起来像照片,但就是不像《原神》《空之轨迹》或者《Ori》里那种呼吸感十足的、带着手绘温度的山&…...
