单细胞分析(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测…...
【数据挖掘】Pandas
Pandas 是 Python 进行 数据挖掘 和 数据分析 的核心库之一,提供了强大的 数据清洗、预处理、转换、分析 和 可视化 功能。它通常与 NumPy、Matplotlib、Seaborn、Scikit-Learn 等库结合使用,帮助构建高效的数据挖掘流程。 📌 1. 读取数据 P…...
Spring Boot 中 @Transactional 注解全面解析
亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、Java 与 Python 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在未来…...
【网络】数据链路层(以太网帧格式、MTU、ARP)、NAT、内网穿透
文章目录 1. 数据链路层2. 以太网帧格式3. MTU3.1 认识MTU3.2 MTU 对于 TCP 协议的影响 4. 局域网通信原理5. ARP协议5.1 基本概念5.2 原理5.3 ARP 数据报的格式 6. NAT技术7. 内网穿透8. 内网打洞9. 代理服务器9.1 正向代理9.2 反向代理9.3 NAT VS 代理服务器 10.网络总结 1. …...
ASPNET Core笔试题 【面试宝典】
文章目录 一、如何在ASP.NET Core中激活Session功能?二、什么是中间件?三、ApplicationBuilder的Use和Run方法有什么区别?四、如何使TagHelper在元素这一层上失效?五、什么是ASP.NET Core?六、ASP.NET Core中AOP的支持…...
Harmony os next~鸿蒙原子化服务开发实战:天气卡片开发全解析
鸿蒙原子化服务开发实战:天气卡片开发全解析 一、原子化服务与HarmonyOS卡片概述 (1)原子化服务特性 HarmonyOS原子化服务具有独立入口(桌面图标/智慧搜索)、免安装、跨设备流转三大核心特性。服务卡片作为其可视化载…...
【pytest框架源码分析三】pluggy源码分析之hook注册调用流程
pluggy的hook调用,最重要的就是使用了__call__魔法函数,这个函数能够在我们调用实例时,自动调用这个函数,无需自己手动调用。 前面介绍了各个类的方法,这里简述下pluggy的调用流程(主要介绍主流程ÿ…...
Linux消息队列
msgget函数(类似于shmget) 是 Linux 系统中用于 创建或获取消息队列(System V Message Queue) 的系统调用。 #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h>int msgget(key_t key, int m…...
ChatGPT 提示词框架
作为一个资深安卓开发工程师,我们在日常开发中经常会用到 ChatGPT 来提升开发效率,比如代码优化、bug 排查、生成单元测试等。 但要想真正发挥 ChatGPT 的潜力,我们需要掌握一些提示词(Prompt)的编写技巧,并…...
对于动态线程池框架 Hippo4j 的思考
从 java 线程池探讨动态线程池框架的可行性以及扩展性 ThreadPoolExecutor 对外给用户暴露了很多 get、set 方法,get 方法可以让我直接获得一些线程池的运行时信息,比如线程池过去已经完成任务的总数量,线程池目前活跃线程数量等等ÿ…...
问deepseek: HYPRE BoomerAMG 有哪些参数可以进行性能调优
Hypre BoomerAMG 是一个高性能的多重网格预条件子,常用于求解大规模稀疏线性系统。为了优化其性能,可以调整以下关键参数: 1. AMG 参数 Coarsening (强连接阈值) strong_threshold: 控制强连接的阈值,通常在 0.25 到 0.6 之间&a…...
seacms v9 实现的MySQL注入
目录 过滤关键词information_schema 怎么办 一、环境搭建 二、环境分析 三、源代码分析 1、过滤程序 2、注入点 四、获取数据库名 五、获取数据库表名 六、获取表的列名 七、获取数据信息 过滤关键词information_schema 怎么办 1.、利用sys数据库(MySQL 5.…...
基于C#的CANoe CLR Adapter开发指南
一、引言 CANoe 是一款广泛应用于汽车电子开发和测试的工具,它支持多种编程接口,方便开发者进行自定义扩展。CANoe CLR Adapter 允许我们使用 C# 语言与 CANoe 进行交互,充分利用 C# 的强大功能和丰富的类库。本文将详细介绍如何基于 C# 进行…...
Vue 系列之:基础知识
什么是 MVVM MVVM(Model-View-ViewModel)一种软件设计模式,旨在将应用程序的数据模型(Model)与视图层(View)分离,并通过 ViewModel 来实现它们之间的通信。降低了代码的耦合度。 M…...
知识库功能测试难点
图表交互功能测试难点 知识库图表类型多,每种图表交互功能不同。像柱状图,可能有点击柱子查看详细数据、鼠标悬停显示数据提示等交互;折线图除了这些,还可能支持缩放查看不同时间段数据。多种交互操作在不同图表间存在差异&#x…...
一文掌握 Scrapy 框架的详细使用,包括实战案例
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. Scrapy 简介2. Scrapy 的核心组件3. 安装 Scrapy4. 创建 Scrapy 项目4.1 创建项目4.2 创建 Spider5. 编写 Spider5.1 定义 Item5.2 编写 Spider 逻辑6. 运行 Scrapy 爬虫6.1 运行爬虫6.2 保存爬取数据7. Scrapy 的高…...
奔图Pantum M7165DN黑白激光打印一体机报数据清除中…维修
故障描述: 一台奔图Pantum M7165DN黑白激光打印一体机开机自检正常,自检过后就不能工作了,按键面板无任何反应一直提示数据清除中…,如果快速操作的话也能按出菜单、功能啥的,不过一会又死机了,故障请看下图: 故障检修: 经分析可能是主板数据出现了问题,看看能不能快速…...
微服务架构与传统的单体架构有什么区别?微服务架构(Spring Cloud + Maven)强在哪?
微服务架构与传统的单体架构(Spring Boot Maven 项目)在设计和实现上有显著差异,主要体现在系统拆分方式、部署模式、技术栈选择、维护成本等方面。以下是具体对比: 1. 架构设计 维度单体架构微服务架构系统拆分所有功能模块集…...
二、QT和驱动模块实现智能家居----2、编译支持QT的系统
因为我们的Linux内核文件不支持QT系统(当然如果你的支持,完全跳过这篇文章),所以我们要从网上下载很多软件包,这里直接用百问网的软件包,非常方便。 一:Ubuntu 配置 1 设置交叉编译工具链 以…...
游戏引擎学习第128天
开始 然而,我们仍然有一些工作要做,渲染部分并没有完全完成。虽然现在已经能够运行游戏,而且帧率已经可以接受,但仍然有一些东西需要进一步完善。正在使用调试构建编译版本,虽然调试版本的性能不如优化版本࿰…...
【量化策略】套利交易策略
【量化策略】套利交易策略 🚀量化软件开通 🚀量化实战教程 技术背景与应用场景 在金融市场中,套利交易策略是一种利用市场价格差异来获取无风险利润的交易方式。这种策略通常涉及同时买入和卖出不同市场上的相同或相似金融产品࿰…...
laravel11设置中文语言包
安装中文语言包 Laravel 11 默认没有内置完整中文语言包,推荐使用第三方维护的完整翻译: # 通过 Composer 安装语言包 composer require laravel-lang/common --dev# 发布中文语言文件到项目 php artisan lang:add zh_CN这会自动将中文语言文件生成到 l…...
Javaweb数据库多表查询 内连接 外连接 子查询
内连接 外连接 左外连接,左边是全部表 表名,即使没有匹配右边的数据,也要查询出来 子查询 案例 1.没有说所有的部门,所有的员工,用内连接(隐式内连接)...
欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、马氏距离理解学习
目录 一、欧氏距离(Euclidean Distance)公式:原理: 二、曼哈顿距离(Manhattan Distance)公式:原理: 三、切比雪夫距离(Chebyshev Distance)公式:原…...
【地图视界-Leaflet4】绘制自定义图形
引言 在前面的文章中,我们学会了如何在 Leaflet 中添加标记、弹窗以及切换不同的底图和叠加图层。但是在很多实际应用中,我们需要在地图上绘制多边形、圆形、矩形、折线等几何图形,用于标记区域、路径规划、范围分析等。 本篇文章将介绍如何…...
华为hcia——Datacom实验指南——STP工作基本原理及STP/RSTP基本功能配置
什么时候需要用到STP 在二层交换网络中,为了避免环路产生。 什么是STP STP生成树协议,是用来在冗余链路上消除二层环路。在众多交换机中,需要设置出一个根桥,其余的交换机称为非根桥,根桥是整个交换网络的核心&…...
游戏引擎学习第127天
仓库:https://gitee.com/mrxiao_com/2d_game_3 为本周设定阶段 我们目前的渲染器已经实现了令人惊讶的优化,经过过去两周的优化工作后,渲染器在1920x1080分辨率下稳定地运行在60帧每秒。这个结果是意料之外的,因为我们没有预计会达到这样的…...
PostgreSQL 创建表格
PostgreSQL 创建表格 在数据库管理中,表格(Table)是数据存储的基础。PostgreSQL作为一款强大的开源对象关系型数据库管理系统(ORDBMS),创建表格是其最基本的功能之一。本文将详细讲解如何在PostgreSQL中创…...
AF3 deduplicate_unpaired_sequences函数解读
AlphaFold3 msa_pairing模块的deduplicate_unpaired_sequences 函数的作用是移除 chain[msa] 中那些已经存在于 chain[msa_all_seq] 中的序列。换句话说,它保留那些不在 chain[msa_all_seq] 中的序列,从而确保未配对的 MSA 序列不会与配对的 MSA 序列重复…...
图像处理之图像边缘检测算法
目录 1 图像边缘检测算法简介 2 Sobel边缘检测 3 经典的Canny边缘检测算法 4 演示Demo 4.1 开发环境 4.2 功能介绍 4.3 下载地址 参考 1 图像边缘检测算法简介 图像边缘检测是计算机视觉和图像处理中的基本问题,主要目的是提取图像中明暗变化明显的边缘细节…...
unity使用input system实现相机屏幕手势丝滑拖拽
input action设置 操作对象设置 camera 具体操作类 PlayerInputView类 using System.Collections; using UnityEngine; using UnityEngine.InputSystem; using TouchPhase UnityEngine.InputSystem.TouchPhase;public class FingerScale : MonoBehaviour {private Vector3…...
Leetcode-853. Car Fleet [C++][Java]
目录 一、题目描述 二、解题思路 Leetcode-853. Car Fleethttps://leetcode.com/problems/car-fleet/description/ 一、题目描述 There are n cars at given miles away from the starting mile 0, traveling to reach the mile target. You are given two integer array …...
建易WordPress
建易WordPress是一家专业的WordPress建站服务提供商,专注于为企业和个人提供一站式的WordPress网站建设、维护、托管、运营推广以及搜索引擎优化(SEO)服务。 服务内容 1. 网站建设 提供模板建站和定制开发两种服务,满足不同客户的需求。模板建站价格为…...
计算机三级网络技术备考(3)
【知识点补充:带宽是是链路的传输速率,宽带是一种服务】 第四章:路由设计技术 考点1:IP路由选择与路由汇聚 核心层:s0两个IP进行汇聚就行 汇聚层:聚合后两个以上的往前进几位(因为主机号不够因…...
工程化与框架系列(13)--虚拟DOM实现
虚拟DOM实现 🌳 虚拟DOM(Virtual DOM)是现代前端框架的核心技术之一,它通过在内存中维护UI的虚拟表示来提高渲染性能。本文将深入探讨虚拟DOM的实现原理和关键技术。 虚拟DOM概述 🌟 💡 小知识࿱…...
Java实现pdf文件压缩(aspose-pdf实现压缩、itextpdf去除aspose-pdf版权水印)
Java实现pdf文件压缩 时间换空间,实现pdf文件无损压缩。 1、依赖准备 市面上操作pdf文件的组件有spire.pdf.free、itextpdf、openpdf、pdfbox等,它们各有千秋。我们主要完成的场景为压缩,减少文件大小去优化存储、传输等。 在这里选取的组件…...
生态安全相关
概念:生态安全指一个国家具有支撑国家生存发展的较为完整、不受威胁的生态系统,以及应对内外重大生态问题的能力。 (1)国外生态安全的研究进展 国际上对生态安全的研究是从“环境”与“安全”之间的关系展开的。开始的阶段&#x…...
通过 ANSYS Discovery 进行 CFD 分析,增强工程设计
概括 工程师使用计算流体动力学 (CFD) 分析来研究和优化各种应用中的流体流动和传热分析。ANSYS Discovery 是一个用户友好的软件平台,使工程师能够轻松设置和解决 CFD 模型,并能够通知设计修改 在这篇博文中,我们将重点介绍在 Ansys Disc…...
2. 在后端代码中加入日志记录模块
1. 说明 日志模块基本上是每一个软件系统开发中必不可少的,主要用于持久记录一些代码运行中的输出信息,辅助编码人员进行代码调试,以及后期软件上线运行报错分析。在Python中加入日志模块比较简单,只需要借助logging和RotatingFi…...
MySQL锁分类
一、按锁的粒度划分 全局锁 定义:锁定整个数据库实例,阻止所有写操作,确保数据备份一致性。加锁方式:通过FLUSH TABLES WITH READ LOCK实现,释放需执行UNLOCK TABLES。应用场景:适用于全库逻辑备份…...
软件测试之白盒测试知识总结
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 概念与定义 白盒测试:侧重于系统或部件内部机制的测试,类型分为分支测试(判定节点测试)、路径测试、语句测试…...
看视频学习方法总结
以下是提高教学视频吸收率的系统性方法,结合认知科学原理和实际学习场景,帮助您最大化学习效果: 一、观看前的黄金准备阶段 60秒快速扫描法 用1分钟快速浏览视频目录、章节标题和简介,建立知识框架。荷兰伊拉斯姆斯大学实验表明&…...
nvm的学习
学习 nvm(Node Version Manager) 是掌握 Node.js 开发的关键技能之一。以下是系统的学习路径和实战指南,涵盖从基础到进阶的内容: 一、基础入门 1. nvm 的核心作用 多版本共存:安装和管理多个 Node.js 版本ÿ…...
OpenCV计算摄影学(5)处理一系列图像(例如视频帧)的非局部均值去噪的函数fastNlMeansDenoisingColoredMulti()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 对用于彩色图像序列的 fastNlMeansDenoisingMulti 函数的修改。 cv::fastNlMeansDenoisingColoredMulti 函数是 OpenCV 中用于处理一系列图像&am…...
mysql安装教程,超详细图文教程(附安装包)MySQL8.0安装教程
文章目录 前言一、MySQL安装包下载二、mysql安装教程 前言 本教程旨在为大家提供详细、清晰的 mysql安装教程,帮助你轻松跨过安装门槛,顺利开启数据库管理与开发的精彩之旅。 一、MySQL安装包下载 MySQL 是一款备受欢迎的开源关系型数据库管理系统&…...
Spark内存迭代计算
一、宽窄依赖 窄依赖:父RDD的一个分区数据全部发往子RDD的一个分区 宽依赖:父RDD的一个分区数据发往子RDD的多个分区,也称为shuffle 二、Spark是如何进行内存计算的?DAG的作用?Stage阶段划分的作用? &a…...
Odoo免费开源CRM技术实战:从商机线索关联转化为售后工单的应用
文 / 开源智造 Odoo金牌服务 Odoo:功能强大且免费开源的CRM Odoo 引入了一种高效的客户支持管理方式,即将 CRM 线索转换为服务台工单。此功能确保销售和支持团队能够无缝协作,从而提升客户满意度并缩短问题解决时间。通过整合 CRM 模块与服…...
对seacmsv9进行sql注入,orderby,过滤information_schema
对seacmsv9进行sql注入,orderby,过滤information_schema 1.对seacmsv9进行sql注入 海洋影视管理系统(seacms,海洋cms)是一套专为不同需求的站长而设计的视频点播系统,采用的是 php5.Xmysql 的架构 seacm…...
跨AWS账户共享SQS队列以实现消息传递
在现代分布式系统中,不同的服务和组件通常需要进行通信和协作。Amazon Simple Queue Service (SQS)提供了一种可靠、可扩展且完全托管的消息队列服务,可以帮助您构建分布式应用程序。本文将介绍如何在一个AWS账户(账户A)中创建SQS队列,并授权另一个AWS账户(账户B)中的用户和角色…...
Starrocks 写入报错 primary key memory usage exceeds the limit
背景 本文基于 StarRocks 3.3.5 单个Starrocks BE配置是 16CU 32GB 在Flink Yaml CDC 任务往 Starrocks写数据的过程中,突然遇到了primary key memory usage exceeds the limit 问题,具体如下: java.lang.RuntimeException: com.starrocks.…...