单细胞转录组的分析流程看起来像一条固定流水线:质控、归一化、降维、聚类和注释。但真正值得追问的是,模型究竟从表达矩阵里学到了什么。

先让数据保持可解释

我们先过滤低质量细胞,再把每个细胞的测序深度归一化到同一个尺度。这个步骤不会让数据更“聪明”,却会让后面的距离计算不再被测序深度支配。

质控与 UMAP 示意图

PCA 不是终点

PCA 把高维表达矩阵投影到一个更容易观察的空间。UMAP 进一步强调局部邻域,但图上的距离不能直接等同于生物学距离,仍然需要回到 marker gene 和实验设计中验证。

import scanpy as sc

adata = sc.read_h5ad("pbmc3k.h5ad")
sc.pp.normalize_total(adata, target_sum=1e4)
sc.pp.log1p(adata)
sc.pp.pca(adata, n_comps=50)
sc.pp.neighbors(adata, n_neighbors=15)
sc.tl.umap(adata)

留给下一次热实验的问题

当细胞数从 3,000 增长到 100,000,邻居图构建的内存曲线会怎样变化?下一篇会把这个问题交给 GPU。