当前位置: 首页 > article >正文

单细胞分析(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 分析,如特定细胞亚群功能状态的评估


🔍 方法对比总结

方法计算方式是否需标准化计算效率适用场景
AUCellAUC 排序中等适用于高异质性数据
ssGSEA积分计算适用于大规模数据分析
VAM方差调整马氏距离中等适用于跨数据集分析
UCellSpearman 秩和适用于大规模数据
Seurat AddModuleScore均值计算适用于 Seurat 框架

📝 结论:如何选择最佳方法?

  • 研究细胞功能状态 → 试试 AUCellssGSEA
  • 想分析大规模数据?UCell 是你的最佳选择!
  • 在 Seurat 里工作?Seurat AddModuleScore 是最简单的方法!
  • 想减少批次效应影响? → 选择 VAM


http://www.kler.cn/a/567023.html

相关文章:

  • 代码随想录算法训练营day49(0217)
  • MathJax v2版本中网络慢导致出现 Math Processing Error 问题处理
  • 哔哩哔哩IT私塾python爬虫视频教程中的项目文件
  • 【Maui】系统找不到指定的文件Xamarin.Android.Aapt2.targets
  • Python的那些事第三十六篇:基于 Vega 和 Vega-Lite 的数据可视化解决方案,Altair 声明式可视化库
  • 全国普通高等学校名单
  • Linux与UDP应用1:翻译软件
  • Spring Boot 3.x 基于 Redis 实现邮箱验证码认证
  • 华为hcia——Datacom实验指南——STP工作基本原理及STP/RSTP基本功能配置
  • PHP对接微信支付v3版本
  • 从0开始的IMX6ULL学习篇——裸机篇之外设资源分析
  • mysql系列10—mysql锁
  • 如何使用 preg_replace 处理复杂字符串替换
  • 测试向丨多模态大模型能做宠物身份识别吗?
  • Express + MongoDB 实现 VOD 视频点播
  • QT:Echart-折线图
  • JeeWMS cgReportController.do 多个参数SQL注入漏洞(CVE-2024-57760)
  • Jeecg-Boot 开放接口开发实战:在 Jeecg-Boot 的jeecg-system-biz中添加一个controller 实现免鉴权数据接口
  • AcWing 农夫约翰的奶酪块
  • DeepSeek引爆AI浪潮:B站如何成为科技普惠的“新课堂”?