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

单细胞分析(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

相关文章:

  • Difyにおけるデータベースマイグレーション手順
  • Linux:进程控制
  • 【Java进阶】java设计模式之单例模式
  • Xcode手动安装SDK模拟器
  • 怎么写C#命令行参数程序,及控制台带参数案例(程序完整源码)下载
  • 2.你有什么绝活儿?—Java能做什么?
  • 计算机网络基础:剖析网络的构成要素
  • 电脑界面锁定的原因分析与解决办法?
  • 0301 leetcode - 1502.判断是否能形成等差数列、 682.棒球比赛、657.机器人能否返回原点
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_conf_add_dump
  • mac安装环境
  • Swan 表达式 - 选择表达式
  • ZK Rollup
  • 记20忘10之六:line
  • 隐私风险加剧,2025年1月超过82000款App被Google Play移除!
  • AI助理精准匹配------助力快速搭建Stable Difussion图像生成应用
  • 【Springboot】解决问题 o.s.web.servlet.PageNotFound : No mapping for *
  • 时钟树的理解
  • 2025生成式AI技术趋势深度解析:从企业战略到轻量化部署的全面转型
  • SpringBoot+Redis+Mybatis-plus黑马点评
  • 合肥网站设计建设/长春百度推广电话
  • 公司网站设计的费用/代运营竞价公司
  • 如何查公司网站谁家做的/东莞网络推广营销
  • 汽车o2o网站建设/推广网络营销案例
  • 建设部网站为什么打不开/竞价托管外包服务
  • 德州制作网站哪家最专业/站长统计幸福宝