📄 IDH 突变胶质瘤空间组织研究

概述

元程序(metaprogram,MP)评分将一个 MP 的代表基因列表转化为每个细胞或空间 spot 的连续分数,用于描述该基因程序在当前测量单位中的表达表现。本文介绍的具体算法采用“逐基因中心化 → MP 基因平均相对表达 → 匹配背景校正”的流程,衡量 MP 相对于表达水平相近的背景基因是否更突出。Hoefflin 等的 Visium 分析通过 scalop::sigScores() 实现这一流程。[1][2]

MP 识别和 MP 评分承担两个连续任务。识别阶段从多个基因程序中形成共识基因列表,评分阶段将这些列表应用于表达矩阵。这里的 MP 基因列表来自前一阶段,评分输出是“spot × MP”矩阵,每个格子对应一个 spot 对一个 MP 的分数。

输入、测量单位与表达预处理

评分需要两类输入:

  1. 表达矩阵:行是基因,列是细胞或 spot。下文以一个 Visium 样本为计算范围,跨 spot 的平均值均在该样本内部计算。
  2. MP 基因列表:每个 MP 对应一组代表基因。用于评分的实际成员取该列表与表达矩阵保留基因的交集。

Hoefflin 等公开脚本先移除线粒体基因和 RPL、RPS 开头的核糖体基因,再按剩余基因的总计数计算 CPM,进行对数转换,最后保留有表达变异且对数表达均值大于 0.4 的基因。[2:1]

CPMg,s=countg,s∑hcounth,s×106\mathrm{CPM}_{g,s}=\frac{\mathrm{count}_{g,s}}{\sum_h\mathrm{count}_{h,s}}\times10^6
Eg,s=log⁡2(1+CPMg,s10)E_{g,s}=\log_2\left(1+\frac{\mathrm{CPM}_{g,s}}{10}\right)

其中,g 表示基因,s 表示 spot,h 遍历该脚本用于 CPM 分母的基因。CPM 校正每个 spot 的总计数差异,对数转换压缩表达数值的跨度。后续的中心化和分箱均从这些经过处理的表达值出发。这组预处理参数属于该研究的具体实现,其他数据的复用应记录各自的归一化方法与基因过滤范围。

中心化:建立每个基因自身的参照

跨 spot 求均值,再逐个 spot 相减

对每个基因,先计算其在该样本所有 spot 中的平均表达,再将各个 spot 的表达值减去这个平均值。

μg=1N∑s=1NEg,s\mu_g=\frac{1}{N}\sum_{s=1}^{N}E_{g,s}
Rg,s=Eg,s−μgR_{g,s}=E_{g,s}-\mu_g

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]

  1. 计算每个基因的平均表达:使用当前样本中心化前的表达矩阵。
  2. 排序和分箱:将分析基因按平均表达从低到高排列,分为 20 箱。若保留约 10,000 个基因,每箱约有 500 个基因。
  3. 逐个 MP 基因抽取背景:查找其所在分箱,从该箱抽取 75 个基因。
  4. 连接抽取结果:将各 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 内的多个基因。

Aj,s=1Kj∑g∈GjRg,sA_{j,s}=\frac{1}{K_j}\sum_{g\in G_j}R_{g,s}

G 表示 MP j 在当前矩阵中保留的基因集合,K 表示它的基因数。A 是该 MP 在 spot s 中的平均相对表达,每个保留基因贡献相同权重。

随后,对该 MP 背景列表中的基因做同样的计算:

Bj,s=1Lj∑ℓ=1LjRcj,ℓ,sB_{j,s}=\frac{1}{L_j}\sum_{\ell=1}^{L_j}R_{c_{j,\ell},s}

L 是背景列表长度,c 表示列表中第几个背景基因。最终分数为:

Sj,s=Aj,s−Bj,sS_{j,s}=A_{j,s}-B_{j,s}

这两个均值都来自中心化后的相对表达。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:

MP 均值=2+22=2\text{MP 均值}=\frac{2+2}{2}=2
背景均值=1+(−1)2=0\text{背景均值}=\frac{1+(-1)}{2}=0
MP 评分=2−0=2\text{MP 评分}=2-0=2

这个分数表示:在 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]

相关条目

  1. 肿瘤进化与异质性:MP 分数可描述肿瘤中连续的表达状态差异。
  2. 置换检验:为程序评分建立显著性判断时,需要明确零模型、置换单位和检验统计量。

参考来源


  1. 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。 ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  2. 作者代码 4_Vis_SpotAnn_SampleComp.R,重点为表达预处理及 sigScores() 调用。本库已存档该提交,参见 作者代码附件索引。 ↩︎ ↩︎ ↩︎ ↩︎

  3. scalop sigScores 文档及 R/sigScores.R 实现。公开源码核对日期:2026-10-05。 ↩︎ ↩︎ ↩︎ ↩︎

  4. scalop binmatch 文档及 R/bin.R 实现。涵盖均值排序、分箱、逐基因抽样及背景列表连接。 ↩︎ ↩︎

  5. scalop 仓库与 DESCRIPTION,用于开发者、用途与公开源码版本信息。 ↩︎

  6. Gavish 等。Hallmarks of transcriptional intratumour heterogeneity across a thousand tumours。Nature,2023。Methods “Correlations between MPs of different cell types”记载 sigScores() 应用。作者机构提供的全文。 ↩︎

  7. Mutant IDH inhibitors induce lineage differentiation in IDH-mutant oligodendroglioma。Methods “Assignment of cells to states”记载 sigScores() 应用。作者机构提供的全文。 ↩︎

  8. Seurat AddModuleScore 官方文档,包括平均表达、匹配背景和默认输入表达层。 ↩︎

  9. Bioconductor UCell 官方使用说明,包括基于 Mann–Whitney U 的排名评分及其输入要求。 ↩︎