单细胞分析(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_…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
