单细胞分析(19)——单细胞转录组基因集评分方法
- 其他
- 2025-09-22 05:24:01

下面是每种基因集评分方法的原理介绍+代码示例,适用于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 框架
📝 结论:如何选择最佳方法? 研究细胞功能状态 → 试试 AUCell 或 ssGSEA!想分析大规模数据? → UCell 是你的最佳选择!在 Seurat 里工作? → Seurat AddModuleScore 是最简单的方法!想减少批次效应影响? → 选择 VAM!
单细胞分析(19)——单细胞转录组基因集评分方法由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“单细胞分析(19)——单细胞转录组基因集评分方法”
下一篇
ZKRollup