代谢分析:用 scFEA 描述 CD8 T 亚类的代谢差异
1. 任务说明
完成亚类注释后,可以比较不同亚类的代谢状态。本页使用 scFEA 从表达数据推断:
反应模块的 flux-like score
+ 代谢物 balance score
→ 按 cell_subtype 汇总
→ 回到 donor 层面复核差异
flux-like score 是模型根据 RNA 表达推断的相对分数,不是同位素示踪测得的真实通量;balance score 也不是代谢物浓度。
本次任务实际做了两轮:scMetabolism 和 scFEA。为便于理解,本页先讲 scFEA,再介绍 scMetabolism 结果及两种方法的对照。
2. 激活 Single-cell Metabolism Agent
打开“智能体”页面,激活 Single-cell Metabolism Agent。
该智能体支持 scMetabolism、Compass、scFEA 和 MEBOCOST,因此每轮都要在提示词中写明使用哪种方法。
3. 真实案例:确认输入和分析单位
输入是完成亚类注释的 CD8T_Colon_annotated_clean.h5ad:
| 项目 | 本案例 |
|---|---|
| 细胞数 | 2,491 |
| 基因数 | 12,761 |
| 亚类字段 | cell_subtype(10 个亚类) |
| donor 字段 | donorID(5 个 donor) |
| 物种 | human |
| scFEA 输入矩阵 | adata.raw.X 中的 log1p 标准化表达 |
10 个标签包括 7 个常规 CD8T_* 亚类、MAIT 和两类 γδ T,本次运行比较全部 10 类。如果只关心常规 CD8T,应在运行前明确范围,不能在结果出来后临时改变。
3.1 cell 不是生物学重复
scFEA 为每个细胞生成分数,但真正的生物学重复是 5 个 donor。统计时先把细胞汇总成 donor × cell_subtype 均值(每个组合至少 3 个细胞),最终保留 39 个 donor-level 单元。部分亚类只出现在 3 个 donor 中,设计并不平衡,统计能力有限。
4. 发送 scFEA 提示词
参考提示词(可直接复制):请先把尖括号中的内容替换为自己的实际路径。
<CD8T_Colon_annotated_clean.h5ad 的完整路径>
请使用 scFEA 做单细胞代谢分析。
物种:human
亚类字段:cell_subtype
donor 字段:donorID
请自动检查并使用适合 scFEA 的全基因 log1p 标准化表达。
本次运行使用 human M168 网络(168 个反应模块、70 个代谢物),CPU、100 个 epoch,训练约 126.5 秒。
4.1 实际使用的表达矩阵
输入 h5ad 同时存在缩放后的 adata.X、layers['counts'] 和 adata.raw.X 的 log1p 表达。scFEA 实际使用第三项,并在记录中明确没有使用缩放矩阵和 raw counts。
4.2 运行中的 fallback 和 warning
| 问题 | 实际处理 |
|---|---|
magic-impute 未安装 |
sc_imputation=False,直接使用观察到的 log1p 表达 |
| 模块基因覆盖不完整 | 663 个模块基因匹配 451 个,覆盖率 68% |
| 18/168 个模块没有匹配基因 | 标记为不可测,不参与解读 |
| 28 个模块只有 1 个匹配基因 | 标记为弱约束,降低可信度 |
| Compass 需要商业求解器 | CPLEX Community 只能处理 1,000 个变量(Recon2 约需 7,600),Compass 没有产生结果 |
Compass 阻塞后生成了 COMPASS_BLOCKER.md,用户明确选择改用 scFEA,后续结果始终标记为 scFEA。
5. 结果解读
5.1 核心统计:没有特征通过 FDR
| 输出 | 规模 | FDR < 0.05 | 最小 FDR |
|---|---|---|---|
| 反应模块 flux-like score | 2,491 × 168 | 0/150 个可测模块 | 0.245 |
| 代谢物 balance score | 2,491 × 70 | 0/70 个代谢物 | 0.224 |
正式统计结论是:在 5 个 donor 和当前不平衡设计下,没有足够证据证明任一模块或代谢物在 10 个亚类间存在 FDR 校正后的显著差异。这不等于“没有生物学差异”,下面展示的较大效应只能写成描述性、探索性信号。
5.2 反应模块热图
亚类间变化较大的 48 个反应模块。颜色是每个模块跨亚类标准化的 z-score,只能比较同一行的相对高低。
效应量较大的模块:
| 模块 | 反应 | η² | nominal p | FDR | 描述性高值亚类 |
|---|---|---|---|---|---|
M_102 |
Ornithine_in → Ornithine | 0.61 | 0.002 | 0.245 | gdT_Trm_TRDC |
M_101 |
Citrulline_in → Citrulline | 0.51 | 0.005 | 0.313 | gdT_Trm_TRDC |
M_25 |
Glutathione → glutamate | 0.45 | 0.009 | 0.313 | gdT_Trm_TRDC |
M_3 |
G3P → 3PD | 0.42 | 0.012 | 0.313 | gdT_Trm_TRDC |
M_42 |
Spermine → β-Alanine | 0.42 | 0.012 | 0.313 | gdT_Cyto_GNLY |
gdT_Trm_TRDC 在多组中央碳代谢、谷胱甘肽和鸟氨酸相关模块中分数较高,是本轮最突出的亚类;但 FDR 未通过,不能写成“代谢显著增强”。
5.3 代谢物 balance 热图
70 个代谢物的 balance score 按亚类汇总。红色表示模型分数相对较高,不代表实际浓度更高。
例如 Glutathione 的 η² 为 0.49、最小 FDR 为 0.224,可以写“不同亚类的 balance score 呈现差异模式”,不能写“谷胱甘肽含量显著不同”。
5.4 UMAP 与小提琴图
左:M_6: Pyruvate → Lactate 的 flux-like score;右:Lactate balance score。
scMetabolism 提示糖酵解差异,而 scFEA 显示变化较强的反应段更接近 M_3: G3P → 3PD 和 M_4: 3PD → Pyruvate,并不是 Lactate 末端 M_6。不能看到这张图就说“乳酸生成增强”。
灰色小提琴是细胞分布,彩色点是 donor × subtype 均值。正式判断应看 donor 点是否一致,而不是被大量细胞的平滑轮廓迷惑。
5.5 scFEA 主要交付文件
| 文件 | 用途 |
|---|---|
CD8T_Colon_scfea.h5ad |
带 X_scfea_flux 和 X_scfea_balance 的可复用结果 |
scfea_module_flux_cells.csv |
每个细胞的 168 个模块分数 |
scfea_metabolite_balance_cells.csv |
每个细胞的 70 个 balance score |
scfea_module_flux_donorsubtype_means.csv |
donor × subtype 模块均值 |
scfea_metabolite_balance_donorsubtype_means.csv |
donor × subtype balance 均值 |
scfea_module_flux_donor_stats.csv |
模块 donor-level 统计 |
scfea_metabolite_balance_donor_stats.csv |
代谢物 donor-level 统计 |
scfea_module_gene_coverage.csv |
每个模块的基因覆盖情况 |
SCFEA_SUMMARY.md |
方法、结果、warning 和证据边界 |
run_record.json |
实际矩阵、配置、fallback 和文件来源 |
5.6 第二种方法:scMetabolism 通路打分
scMetabolism 与 scFEA 不同:它用 AUCell 计算 KEGG 代谢通路的相对表达活性。单独运行时可发送:
参考提示词(可直接复制):请先把尖括号中的内容替换为自己的实际路径。
<CD8T_Colon_annotated_clean.h5ad 的完整路径>
请使用 scMetabolism 比较不同 cell_subtype 的代谢通路活性。
物种:human
亚类字段:cell_subtype
donor 字段:donorID
请自动检查并使用合适的全基因 log1p 标准化表达。
先核对本轮仍分析同样的 2,491 个细胞和 10 个亚类,否则两种方法的结果不能直接比较。
scMetabolism 为每个细胞计算 85 条 KEGG 通路分数,其中 74 条至少匹配 5 个基因。
5.7 scMetabolism 结果
差异较大的 20 条通路,星号表示 donor-aware 检验后 FDR<0.05。
统计使用 43 个 donor × subtype 均值做 score ~ subtype + donor 的 donor-blocked ANOVA(随机截距模型在 5 个 donor 下出现 singular variance,已记录 fallback)。共有 7 条通路达到 FDR<0.05:
| 通路 | FDR | partial η² |
|---|---|---|
| One carbon pool by folate | 0.040 | 0.60 |
| Glycolysis / Gluconeogenesis | 0.049 | 0.56 |
| Drug metabolism – other enzymes | 0.049 | 0.54 |
| Other types of O-glycan biosynthesis | 0.049 | 0.54 |
| N-Glycan biosynthesis | 0.049 | 0.53 |
| Pyruvate metabolism | 0.049 | 0.53 |
| Lysine degradation | 0.049 | 0.53 |
灰色箱体汇总 donor-level 数值,彩色点是 5 个 donor。检查显著结果是否由单个 donor 推动。
标题中的 FDR 来自 donor-level 检验。Oxidative phosphorylation 标记为 ns,局部颜色较亮不等于显著。
5.8 两种方法只能交叉定位,不能互相“证明”
| scMetabolism 结果 | scFEA 提供的补充定位 | 证据边界 |
|---|---|---|
| Glycolysis / Gluconeogenesis,FDR=0.049 | M_3、M_4 的描述性变化强于 Lactate 末端 M_6 |
scFEA 模块未通过 FDR,不是独立验证 |
| One carbon pool by folate,FDR=0.040 | M_25: Glutathione → glutamate 提示 transsulfuration/glutathione 分支 |
只是反应分支定位假设 |
| N-/O-glycan biosynthesis | 对应 M168 模块效应较弱 | 不应强行要求两种方法一致 |
| Drug metabolism – other enzymes | M168 没有对应 xenobiotic 模块 | scFEA 无法回答,不是阴性验证 |
两种方法的模型和统计流程不同,一致方向可用于提出后续实验问题,但不能写成“scFEA 证实 scMetabolism”。
6. 人机职责
| 分析者负责 | 可以交给 omicOS |
|---|---|
| 决定研究全部 10 类还是只研究常规 CD8T | 检查细胞范围和字段 |
确认 donorID 才是生物学重复 |
生成 cell-level 分数并汇总到 donor × subtype |
| 选择 scFEA、scMetabolism 或其他方法 | 检查依赖、模型覆盖和可执行性 |
| 判断模型分数能支持什么表述 | 输出热图、UMAP、统计表和运行记录 |
| 决定是否需要代谢组或同位素实验验证 | 报告 FDR、效应量、fallback 和限制 |
omicOS 可以计算和整理证据,但不能把表达数据变成真实代谢通量。
7. 验收清单
- 输入文件、细胞数、基因数和
cell_subtype与预期一致,donorID存在; - scFEA 实际使用 log1p 全基因表达,没有使用 scaled z-score 或 raw counts;
- scFEA 和 scMetabolism 的输出名称没有混用;
- 模块覆盖率、不可测模块、弱约束模块和
sc_imputation=False均有记录; - 结果明确写明 0 个模块和 0 个代谢物通过 FDR<0.05;
- 描述性模块同时给出 effect size、nominal p 和 FDR;
- Compass blocker 没有被隐藏;
- h5ad、cell-level 表、donor-level 表、覆盖表、图片和运行记录都能打开;
- 结论没有把 flux-like、balance 或 pathway score 写成实测通量、浓度或因果效应。
如果结果只返回热图,可以继续发送:
补充参考提示词(可直接复制)
请帮我检查代谢分析结果是否完整,
告诉我使用了哪个表达矩阵、有没有警告,
以及结果文件保存在哪里。
8. 下一步
本案例可以优先复核糖酵解的 M_3/M_4 反应段、glutathione 相关 M_25,以及 γδ T 中的鸟氨酸相关模块。验证手段包括增加 donor、改善亚类在 donor 间的覆盖,或使用靶向代谢组和稳定同位素示踪。若要比较 condition,必须在 sample/donor 层面建立明确的 contrast——本页只有 subtype 比较,不是 condition DE。
9. 操作回放
- 新建对话(如“CD8T-代谢分析”),提供完成亚类注释的 h5ad 路径。
- 激活
Single-cell Metabolism Agent。 - 第一轮 scMetabolism:发送 5.6 节提示词,检查
SUMMARY.md、通路统计和 donor-level 图,得到 7 条 FDR<0.05 的 KEGG 通路。 - 第二轮 scFEA:在同一对话中明确要求改用 scFEA,发送第 4 节提示词。Compass 被求解器许可阻塞后,结果文件继续标记为 scFEA。
- 依次检查输出:先看
SCFEA_SUMMARY.md确认 0 个特征通过 FDR,再看模块热图、balance 热图、UMAP 和带 donor 点的小提琴图,最后核对 CSV 与CD8T_Colon_scfea.h5ad。 - 记录交接信息:输入与实际表达矩阵、字段、scFEA 配置与覆盖率、39 个 donor × subtype 单元、FDR 结果、描述性候选、scMetabolism 的 7 条通路、Compass blocker,以及“表达推断分数,不是实测通量”的边界。








