作者 (author): LKP kunpeng.liao@abiosciences.com Skill 及脚本参数来源: Chen et al., 2025, Cancer Cell 43, 1656–1676, https://doi.org/10.1016/j.ccell.2025.06.020
scMetabolism 单细胞代谢定量
按 KEGG 代谢通路对单细胞打代谢活性分。
安装
# Windows 下已装 scMetabolism 时直接 library;安装:
remotes::install_github("YosefLab/VISION")
remotes::install_github("wu-yc/scMetabolism")
核心调用(Seurat v5 兼容写法)
library(scMetabolism)
# 关键:sc.metabolism.Seurat() 直接访问 Seurat v5 的 @counts 槽会失败,
# 必须用底层矩阵版 sc.metabolism()
countexp <- Seurat::GetAssayData(obj, assay = "RNA", layer = "counts") # 稀疏矩阵
metab <- sc.metabolism(
countexp = countexp,
method = "AUCell", # 本项目用 AUCell(另一选项 "VISION")
imputation = FALSE,
ncores = 2,
metabolism.type = "KEGG" # 代谢基因集取 KEGG(另有 GO/REACTOME)
)
# metab$metabolism:通路 × 细胞 的活性矩阵
下游汇总与热图
library(Seurat); library(pheatmap)
obj[["METABOLISM"]] <- CreateAssayObject(counts = metab$metabolism)
# 按细胞类型求均值
avg <- aggregate(t(metab$metabolism), by = list(celltype = obj$celltype), FUN = mean)
mat <- t(avg[, -1]); colnames(mat) <- avg$celltype
# 挑目标通路(如戊糖磷酸途径、糖酵解/糖异生、缬氨酸/亮氨酸/异亮氨酸降解与生物合成、
# 类固醇生物合成、谷胱甘肽代谢、膦酸酯代谢)
pheatmap(mat[selected_pathways, ], scale = "row",
treeheight_row = 0, treeheight_col = 0)
常见坑
- Seurat v5 必须用矩阵接口:
sc.metabolism.Seurat()读@counts槽报错(v5 无该槽),改GetAssayData(layer="counts")+ 底层sc.metabolism() - imputation=F:插补(NNLS 去卷积)会改变通量分布,论文口径不插补
- AUCell 输出是相对活性:跨样本比较前按条件分层展示,不做绝对定量解读
- ncores:Windows 多核偶发内存暴涨,2 稳妥
- 输入建议去除正常参考亚群:如恶性 ductal 分析时剔除非恶性 D01_Ductal-CFTR 再打分
Scan to join WeChat group