单细胞分析(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_…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
