📄 IDH 突变胶质瘤空间组织研究
概述
元程序(metaprogram,MP)评分将一个 MP 的代表基因列表转化为每个细胞或空间 spot 的连续分数,用于描述该基因程序在当前测量单位中的表达表现。本文介绍的具体算法采用“逐基因中心化 → MP 基因平均相对表达 → 匹配背景校正”的流程,衡量 MP 相对于表达水平相近的背景基因是否更突出。Hoefflin 等的 Visium 分析通过 scalop::sigScores() 实现这一流程。[1][2]
MP 识别和 MP 评分承担两个连续任务。识别阶段从多个基因程序中形成共识基因列表,评分阶段将这些列表应用于表达矩阵。这里的 MP 基因列表来自前一阶段,评分输出是“spot × MP”矩阵,每个格子对应一个 spot 对一个 MP 的分数。
输入、测量单位与表达预处理
评分需要两类输入:
- 表达矩阵:行是基因,列是细胞或 spot。下文以一个 Visium 样本为计算范围,跨 spot 的平均值均在该样本内部计算。
- MP 基因列表:每个 MP 对应一组代表基因。用于评分的实际成员取该列表与表达矩阵保留基因的交集。
Hoefflin 等公开脚本先移除线粒体基因和 RPL、RPS 开头的核糖体基因,再按剩余基因的总计数计算 CPM,进行对数转换,最后保留有表达变异且对数表达均值大于 0.4 的基因。[2:1]
其中,g 表示基因,s 表示 spot,h 遍历该脚本用于 CPM 分母的基因。CPM 校正每个 spot 的总计数差异,对数转换压缩表达数值的跨度。后续的中心化和分箱均从这些经过处理的表达值出发。这组预处理参数属于该研究的具体实现,其他数据的复用应记录各自的归一化方法与基因过滤范围。
中心化:建立每个基因自身的参照
跨 spot 求均值,再逐个 spot 相减
对每个基因,先计算其在该样本所有 spot 中的平均表达,再将各个 spot 的表达值减去这个平均值。
N 是该样本参与评分的 spot 数,R 表示中心化后的相对表达。在“基因 × spot”矩阵中,这一步按行操作,每个基因减去各自的行均值。
| 基因 A | spot 1 | spot 2 | spot 3 | 跨 spot 均值 |
|---|---|---|---|---|
| 中心化前表达 | 5 | 2 | 2 | 3 |
| 减去基因 A 的均值 | 5−3 | 2−3 | 2−3 | — |
| 相对表达 | 2 | −1 | −1 | 0 |
正值表示该基因在当前 spot 高于自身跨 spot 的平均水平,负值表示低于这一水平。中心化后,每个基因的跨 spot 均值为零,各个 spot 的表达偏离仍然保留。[3]
中心化与 z 标准化的区别
| 处理 | 计算操作 | 保留或改变的性质 |
|---|---|---|
| 中心化 | 减去该基因的平均值 | 将均值移到零,保留该基因原来的标准差 |
| z 标准化 | 减均值后,再除以该基因的标准差 | 将均值移到零,并将非恒定基因的标准差调整为 1 |
本文讨论的 sigScores() 默认逐行中心化保留原表达尺度。其平均分数会受各基因表达变化幅度的影响,z 标准化则会进一步改变不同基因在求平均时的相对贡献。
匹配背景:建立同一 spot 内的参照
匹配依据
背景基因按中心化前的跨 spot 平均表达匹配。这个平均值表示一个基因在当前样本中的整体表达水平。
例如,某个 MP 基因的平均对数表达为 3.0,平均值接近 3.0 的其他基因可成为同箱候选。它们的功能和空间变化趋势可以各不相同。匹配的对象是整体表达水平,背景用于提供相近表达水平基因的参照。
分箱与抽取
Hoefflin 等指定 20 个分箱,并为每个 MP 基因从同一箱随机抽取 75 个背景基因。scalop 的公开实现先将基因按平均表达排序,再按排序位置分箱,每箱的基因数量大致相等。[1:1][4]
- 计算每个基因的平均表达:使用当前样本中心化前的表达矩阵。
- 排序和分箱:将分析基因按平均表达从低到高排列,分为 20 箱。若保留约 10,000 个基因,每箱约有 500 个基因。
- 逐个 MP 基因抽取背景:查找其所在分箱,从该箱抽取 75 个基因。
- 连接抽取结果:将各 MP 基因对应的抽取结果连接为该 MP 的背景列表,使背景具有与 MP 相近的整体表达水平分布。
| MP 基因 | 所在表达分箱 | 背景来源 |
|---|---|---|
| A | 第 5 箱 | 第 5 箱随机抽取的 75 个基因 |
| B | 第 12 箱 | 第 12 箱随机抽取的 75 个基因 |
| C | 第 18 箱 | 第 18 箱随机抽取的 75 个基因 |
分箱使用中心化前的平均值,能保留基因整体表达水平的差异。中心化后的跨 spot 平均值均为零,因此相对表达矩阵用于后续评分,原表达矩阵用于背景匹配。
背景列表与复现细节
在一次样本内评分调用中,每个 MP 生成一份背景列表,该列表用于这个样本的所有 spot。各个 spot 中背景基因的表达值不同,因此每个 spot 都有各自的背景均值。更换样本时,基因平均表达、分箱及背景列表可以随之变化。
按所核对的 scalop 公开实现,默认 replace = FALSE,每个 MP 基因对应的一次抽取采用无放回方式。各次抽取结果可以重叠,背景列表保留这些重复条目,求平均时按出现次数贡献。候选池包含同箱全部基因,MP 基因本身也可进入抽取结果。[4:1][3:1]
若一个 MP 的 50 个基因全部保留,背景列表包含 50×75=3,750 个条目。实际条目数随保留的 MP 基因数变化。分箱数量与抽取数量应同时满足每箱候选基因充足的条件,随机种子决定具体抽取结果。
从相对表达计算 MP 分数
MP 均值和背景均值
对于某个 spot,先取出该 MP 各基因在这里的相对表达值,再对这些数值求算术平均。这里平均的是同一个 spot 内的多个基因。
G 表示 MP j 在当前矩阵中保留的基因集合,K 表示它的基因数。A 是该 MP 在 spot s 中的平均相对表达,每个保留基因贡献相同权重。
随后,对该 MP 背景列表中的基因做同样的计算:
L 是背景列表长度,c 表示列表中第几个背景基因。最终分数为:
这两个均值都来自中心化后的相对表达。MP 均值提供目标程序的表现,背景均值提供表达水平匹配的参照。[1:2][3:2]
一个完整的数值例子
以下为算法演示数据。假设 MP 包含 A、B,匹配后得到的简化背景包含 C、D。
| 基因 | 所属列表 | spot 1 表达 | spot 2 表达 | spot 3 表达 | 跨 spot 均值 | spot 1 相对表达 |
|---|---|---|---|---|---|---|
| A | MP | 5 | 2 | 2 | 3 | 2 |
| B | MP | 6 | 3 | 3 | 4 | 2 |
| C | 背景 | 4 | 3 | 2 | 3 | 1 |
| D | 背景 | 3 | 4 | 5 | 4 | −1 |
C 与 A 的整体平均表达相同,D 与 B 的整体平均表达相同。对 spot 1:
这个分数表示:在 spot 1 中,MP 基因相对于自身平均水平的升高,比匹配背景的对应表现更突出。
两次参照各自解决的问题
| 操作 | 参照对象 | 回答的问题 |
|---|---|---|
| 基因中心化 | 同一个基因在该样本所有 spot 中的平均表达 | 该基因在当前 spot 比自身平时水平高或低多少? |
| 背景校正 | 当前 spot 中匹配背景基因的平均相对表达 | MP 相对于这一组背景基因有多突出? |
逐基因中心化使每行平均值为零,一个具体 spot 中仍可以有许多基因同时取正值。背景相减进一步校正表达水平相近的基因在这个 spot 中共同升高或降低的影响,使分数聚焦于 MP 相对于匹配背景的表现。
分数的含义与 spot 注释
正值、零值和负值
| MP 平均相对表达 | 背景平均相对表达 | MP 分数 | 解释 |
|---|---|---|---|
| 1.5 | 0.2 | 1.3 | MP 高于自身均值,且相对于匹配背景更突出 |
| 1.5 | 1.2 | 0.3 | MP 和背景均高于自身均值,校正后的相对差异较小 |
| −0.2 | −0.8 | 0.6 | MP 低于自身均值,同时高于匹配背景的相对表达 |
| 0.5 | 0.5 | 0 | MP 与背景的平均相对表达相等 |
| 0.2 | 0.7 | −0.5 | MP 的平均相对表达低于背景 |
**正分表示 MP 的平均相对表达高于匹配背景。**判断 MP 是否高于自身跨 spot 平均水平,应同时查看 MP 初始均值。评分属于表达模式的相对证据,调控机制、功能活性和“主动/被动上调”的判断需要结合相应的其他证据。
该分数通常保留正负值,数值尺度由输入表达变换和评分配置决定。它提供连续的程序表达指标,细胞比例、概率和统计显著性分别由相应的估计模型或检验计算。
从连续分数到离散注释
Hoefflin 等为每个 spot 计算多个 MP 分数,再将最高分对应的 MP 赋给该 spot。最高分规则把连续分数矩阵转化为主导程序标签,用于空间分布和后续组织分析。[1:3][2:2]
一个 spot 可以同时对多个 MP 取得较高分数。Visium spot 的测量通常整合多个细胞,分数可随细胞组成及细胞状态表达共同变化。主导程序标签概括该测量单位的表达表现,评分与标签宜分别保留。
scalop 实现与备用信息
包的定位和应用记录
scalop 全名为 Single Cell Analysis Operations,由 Julie Laffy 开发,是面向单细胞 RNA 测序分析与肿瘤内程序识别的 R 工具包。公开仓库 DESCRIPTION 标注版本为 1.1.0。这个版本信息对应 2026-10-05 核对的公开源码,具体分析环境应记录实际安装版本和源码提交。[5]
其 sigScores() 在胶质瘤和跨癌种程序研究中有反复使用的记录,例如:
| 研究 | 使用用途 |
|---|---|
| Gavish 等,Hallmarks of transcriptional intratumour heterogeneity across a thousand tumours,Nature,2023 | 对癌细胞及肿瘤微环境细胞进行 MP 评分 |
| Mutant IDH inhibitors induce lineage differentiation in IDH-mutant oligodendroglioma | 对恶性细胞进行 AC-like、OC-like、NPC-like 程序评分 |
| Hoefflin 等,Spatial analysis reveals the evolving organization of IDH-mutant glioma | 对 Visium spot 进行 MP 评分与主导程序注释 |
这些记录支持其作为肿瘤细胞状态研究中的专门工具包使用。“平均表达减去匹配背景”的思路也有其他软件实现,包的应用范围与算法思路的应用范围应分别描述。[6][7][1:4]
主要参数
| 参数 | sigScores 默认值 | Hoefflin 脚本设置 | 含义 |
|---|---|---|---|
center.rows |
TRUE |
沿用默认 | 逐基因减去跨 spot 均值 |
expr.center |
TRUE |
TRUE |
减去表达分箱匹配的背景分数 |
expr.nbin |
30 | 20 | 表达分箱数 |
expr.binsize |
100 | 75 | 每个 MP 基因抽取的背景条目数 |
conserved.genes |
0.7 | 0.4 | MP 列表与矩阵匹配后需保留的最低基因比例 |
replace |
FALSE |
沿用默认 | 每次背景抽取采用无放回方式 |
例如,MP 原有 50 个基因,conserved.genes = 0.4 要求至少保留 20 个基因才能进入评分。保留比例关系到该分数对原 MP 的代表性。[3:3][2:3]
R 调用示例
以下为参考调用。expr 是完成适用归一化、对数转换及基因过滤的基因 × spot 矩阵,mp_genes 是每个元素包含一个 MP 基因名列表的命名列表。中心化由函数内部完成,示例显式列出部分默认参数,并补充随机种子以便重复运行。
set.seed(1234)
mp_scores <- scalop::sigScores(
m = expr,
sigs = mp_genes,
center.rows = TRUE,
expr.center = TRUE,
expr.nbin = 20,
expr.binsize = 75,
conserved.genes = 0.4,
replace = FALSE
)
head(mp_scores)
packageVersion("scalop")
输出数据框的行是 spot,列是通过基因保留比例筛选的 MP。
复现应保存输入表达处理方式、基因过滤范围、样本内或合并样本的计算范围、MP 基因列表、参数、随机种子、包版本和背景列表。跨样本评分若分别建立均值和背景,分数带有各样本自身的参照,跨样本比较需保持一致的处理流程并结合这些参照解释。
与 AddModuleScore、UCell 的对应关系
| 实现 | 核心计算 | 表达参照 |
|---|---|---|
scalop::sigScores(),本文配置 |
逐基因中心化后,MP 均值减去匹配背景均值 | 基因自身的跨 spot 均值,以及同 spot 的匹配背景 |
Seurat::AddModuleScore() |
基因集平均表达减去表达分箱匹配的背景均值 | 使用所选表达层的数值与匹配背景 |
UCell |
根据单个细胞或 spot 内的基因表达排名计算 Mann–Whitney U 统计量,并转化为签名分数 | 当前测量单位内部的基因排名 |
AddModuleScore() 与这里的背景校正思路相近。输入表达处理、逐基因中心化、分箱和背景列表处理等实现细节决定具体结果。UCell 采用排名统计,提供另一种表达程序评分尺度。不同方法所得数值应按各自算法解释。[8][9]
相关条目
- 肿瘤进化与异质性:MP 分数可描述肿瘤中连续的表达状态差异。
- 置换检验:为程序评分建立显著性判断时,需要明确零模型、置换单位和检验统计量。
参考来源
Hoefflin 等。Spatial analysis reveals the evolving organization of IDH-mutant glioma。Cancer Cell,2026。Methods “Spot scoring and assignment of spots to MPs”,原文 PDF 第 15–16 页。DOI:10.1016/j.ccell.2026.08.005。 ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
作者代码 4_Vis_SpotAnn_SampleComp.R,重点为表达预处理及
sigScores()调用。本库已存档该提交,参见 作者代码附件索引。 ↩︎ ↩︎ ↩︎ ↩︎scalop sigScores 文档及 R/sigScores.R 实现。公开源码核对日期:2026-10-05。 ↩︎ ↩︎ ↩︎ ↩︎
scalop binmatch 文档及 R/bin.R 实现。涵盖均值排序、分箱、逐基因抽样及背景列表连接。 ↩︎ ↩︎
scalop 仓库与 DESCRIPTION,用于开发者、用途与公开源码版本信息。 ↩︎
Gavish 等。Hallmarks of transcriptional intratumour heterogeneity across a thousand tumours。Nature,2023。Methods “Correlations between MPs of different cell types”记载
sigScores()应用。作者机构提供的全文。 ↩︎Mutant IDH inhibitors induce lineage differentiation in IDH-mutant oligodendroglioma。Methods “Assignment of cells to states”记载
sigScores()应用。作者机构提供的全文。 ↩︎Seurat AddModuleScore 官方文档,包括平均表达、匹配背景和默认输入表达层。 ↩︎
Bioconductor UCell 官方使用说明,包括基于 Mann–Whitney U 的排名评分及其输入要求。 ↩︎
元程序评分的思想与算法
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法