3、空间映射核心问题:细胞类型反卷积、点分辨率估计
各位好,咱们进入第三章。说实话,空间映射这活儿看着很美——既能知道细胞在哪,又能知道它在干啥。但真干起来,有两个问题像两块硬骨头,非啃不可:细胞类型反卷积和点分辨率估计。
今天我就结合自己的项目经历,跟你们掰扯清楚这两个核心问题。
3.1 细胞类型反卷积:从混合信号里猜出谁是谁
什么叫反卷积?别被名字吓到,说白了就是“拆解混合信号”。
你去买个水果拼盘,老板把西瓜、橙子、猕猴桃搅在一起打成汁。你现在有一杯混合果汁,想猜出里面每种水果各放了多少。这就是反卷积。
空间转录组数据也一样。每个 spot(捕获点)是一个 50μm 左右的区域,里面可能包含 1~10 个细胞,甚至更多。测序仪告诉你这个 spot 整体表达了哪些基因、表达量多少。但你真正想知道的是:这个 spot 里到底有几种细胞?每种细胞占多大比例?
数学上我们把它建模成线性混合问题:
X_spot = W × C + ε
其中,X_spot 是 spot 的基因表达向量;W 是参考矩阵(从单细胞数据里拿到的每种细胞类型的特征基因表达谱);C 是我们要估计的细胞类型比例矩阵;ε 是噪声。
嗯,我在一个乳腺癌空间项目里就踩过这个坑。当时图省事,直接用公共单细胞数据做参考矩阵,结果反卷积出来的比例乱七八糟——T 细胞比例居然在一堆成纤维细胞富集区飙高。排查半天,发现参考数据里的 T 细胞亚群标记基因跟空间数据完全不匹配。从那以后,我习惯至少做一遍参考数据和空间数据的基因交集分析,不然反卷积就是瞎猜。
3.2 点分辨率估计:你的数据到底能看到多细?
第二个核心问题是分辨率。很多刚入门的同学以为:spot 直径越小,分辨率越高。其实不完全对。
点分辨率不仅取决于捕获点的物理尺寸,还取决于组织切片的透化时间、RNA 扩散距离、以及细胞密度。在我参与的一个小鼠脑空间项目中,用同一个 10x Visium 芯片,皮层区域和纹状体区域的有效分辨率能差一倍。
为什么?因为皮层细胞密集,RNA 扩散距离短,每个 spot 捕获的细胞类型更单一;而纹状体细胞稀疏,RNA 扩散远,一个 spot 可能混入周围不同区域的信号。
| 平台 | 标称 spot 直径 | 实际有效分辨率(经验值) | 主要限制因素 |
|---|---|---|---|
| 10x Visium | 55μm | 30~80μm | 透化时间、组织类型 |
| Slide-seq V2 | 10μm | 10~20μm | 捕获效率、基因数 |
| MERFISH | 亚细胞 | ~0.5μm | 探针设计、成像深度 |
| Seq-Scope | 0.5~2μm | 1~5μm | 建库复杂度 |
你想想看,如果你拿到的是 55μm 的 Visium 数据,却硬要分析单个细胞水平的空间关系,那结果基本不可信。
我曾经在一个临床项目里,合作方给了 10x Visium 数据,非让我做“单细胞分辨率”的空间富集分析。我劝了半天,最后只答应做到“亚结构区域”的尺度。果然后面验证实验显示,我的分析结果跟免疫组化在区域水平高度一致,但如果按单细胞去解释,误差会大得离谱。
3.3 SPOTlight 怎么同时解决这两个问题?
SPOTlight(全称 Space Transcriptomics 的 Light 版)核心思想很简单:用 非负最小二乘(NNLS) 做反卷积,同时引入空间近邻平滑约束来稳定分辨率估计。
- Step 1:从匹配的单细胞参考数据中提取每种细胞类型的 top 标记基因,构建参考矩阵 W。
- Step 2:对每个 spot,用 NNLS 求解比例向量 C,并加 L2 正则化防止过拟合。
- Step 3:利用 spot 之间的空间位置关系,对相邻 spot 的比例进行平滑(本质是假设细胞类型分布是连续变化的)。
- Step 4:输出每个 spot 的细胞类型组成,并给出可信度评分。
# 核心模型(简化示意)
# X: n_spot × n_gene 空间数据
# W: n_celltype × n_gene 参考矩阵
# C: n_spot × n_celltype 比例矩阵(待求解)
# 对每一个 spot i:
# min ||X[i] - C[i] dot W||² + λ||C[i]||²
# subject to C[i][k] ≥ 0, sum(C[i]) = 1
# 加上空间平滑项:
# min Σ_i ||X[i] - C[i] dot W||² + α Σ_i Σ_{j∈N(i)} ||C[i] - C[j]||²
我特别喜欢 SPOTlight 的一点是:它在 Step 3 里用了一个 自适应核函数,而不是固定半径。如果某个区域组织折叠或者有空腔,它会自动降低平滑权重。我第一次跑的时候没注意这个参数,结果在脑室周围区域出现了明显的“渗色”效应——本来不该有的细胞类型被平滑进来了。嗯,改回默认的“自适应”模式就好了。
一句话总结:反卷积负责猜谁在哪,分辨率估计决定你猜的准不准。SPOTlight 把两个问题统一到一个优化框架里,互相制约、互相修正。
3.4 实战避坑指南
下面列几个我亲身踩过的坑,你们记一下:
- 参考数据和空间数据来自不同物种/组织——我见过有人拿 PBMC 的单细胞数据去反解脑组织空间数据,结果神经元比例全是负的(NNLS 强行给出 0)。不要笑,我早期也干过类似的事。解决方案:先检查基因 overlap,做一下跨数据集标准化。
- 忽略批次效应——空间数据和单细胞数据如果是在不同实验室、不同时间做的,直接拼在一起 NNLS 会崩溃。我曾经用 Harmony 做了一轮整合,反卷积的 R² 从 0.3 直接跳到 0.7。
- 分辨率估计只依赖物理尺寸——如上表所示,实际有效分辨率受多种因素影响。我建议每个项目至少在一张组织切片上做 核探针(control probe)扩散实验,实测 spot 之间的信号混叠程度。
- 把 SPOTlight 的结果当成绝对真理——模型输出的比例是相对丰度,不是绝对细胞数。我做过一个验证:用免疫荧光数出某个区域实际有 50 个 T 细胞,SPOTlight 给出比例 30%,但区域总细胞数是 200,那么 200×30%=60,和 50 比较接近。但如果总细胞数未知,比例就只是一个比值。
重要提醒:SPOTlight 的平滑项参数 α 默认是 0.1。如果你在处理高度异质性的组织(比如肿瘤边界),我会建议先设 α=0.01 跑一次,看看平滑效应是否过度抹平了边界。我在一个胰腺癌项目里,就是因为 α 太大,把肿瘤-正常交界区的细微纤维化信号都给平滑掉了,后来降低到 0.01 才找回边界细节。
3.5 小结
本章我们聊清楚了两个核心问题:
- 反卷积解决“细胞类型混合”的猜测问题
- 分辨率估计告诉你“猜测有多靠谱”
- SPOTlight 在同一个优化框架里同时处理两者,互相约束
下一次实际跑代码之前,先确认你对这两个问题的理解到位了。嗯,数据准备和参数调整都会依赖于这个基础。