1. 背景
在前面的教程中,我们从数据集中删除了低质量的细胞,包括计数较差以及双细胞,并将数据存放在anndata文件中。由于单细胞测序技术的限制,我们在样本中获得RNA的时候,经过了分子捕获,逆转录还有测序。这些步骤会影响同一种细胞的细胞间的测序计数深度的变异性,故单细胞测序数据中的细胞间差异可能会包含了这部分测序误差,等价于计数矩阵中包含了变化很大的方差项。但在目前的统计方法中,绝大部分模型都预先假定了数据具有相同的方差结构。
伽玛-柏松分布
从理论上和经验上建立的 UMI 数据模型是 Gamma-Poisson 分布,即 V a r [ Y ] = μ + α μ 2 Var[Y] = \mu + \alpha \mu^2 Var[Y]=μ+αμ2,其中 μ \mu μ代表UMI平均值, α \alpha α代表细胞UMI的过度离散值。若 α = 0 \alpha=0 α=0 时,意味着此时UMI的分布为泊松分布。
“归一化”的预处理步骤旨在通过将“UMI的方差”缩放到指定范围,来调整数据集中的原始UMI计数以实现模型建模。而在真实的单细胞分析中,有不同的归一化方法以解决不同的分析问题。但经验发现,移位对数在大部分数据中的表现良好,这在2023年4月的Nature Method上的基准测试中有提到。
本章将向读者介绍两种不同的归一化技术:移位对数变换和皮尔逊残差的解析近似。移位对数有利于稳定方差,以利于后续降维和差异表达基因的识别。皮尔森近似残差可以保留生物学差异,并鉴定稀有细胞类型。
我们首先导入我们所需要的Python包,以及上一个教程分析所得到的anndata文件。
import omicverse as ov
import scanpy as sc
ov.utils.ov_plot_set()
adata = sc.read(
filename="s4d8_quality_control.h5ad",
backup_url="https://figshare.com/ndownloader/files/40014331",
)
try downloading from url
https://figshare.com/ndownloader/files/40014331
... this may take a while but only happens once
我们首先检查原始计数UMI的分布,一般在后续的分析中我们会忽略这一步,但对该分布的认识有利于我们理解归一化的意义。
import seaborn as sns
p1 = sns.histplot(adata.obs["total_counts"], bins=100, kde=False)
2. 移位对数
我们将介绍的第一个归一化方法是基于delta方法的移位对数。Delta方法应用非线性函数 f ( Y ) f(Y) f(Y),使得原始计数 Y Y Y 中的差异更加相似。
我们定义非线性函数 f ( Y ) f(Y) f(Y)的变换如下: