参考:
[1] https://github.com/Starlitnightly/single_cell_tutorial
[2] https://github.com/theislab/single-cell-best-practices
归一化的引入
在质量控制中,已经从数据集删除了低质量细胞。然而由于测序技术的限制,我们在样本中获得RNA时,经过分子捕获,逆转录和测序,这些步骤会影响同一种细胞的细胞间测序深度的变异性,因此,数据中的细胞间差异包含了这部分误差,等价于counts矩阵包含了变化很大的方差项。
归一化旨在通过将UMI counts的方差缩放到指定范围,以调整原始矩阵的UMI counts。目前有两种归一化方法:
- 移位对数:在大部分数据中表现良好,有利于稳定方差,进而利于降维和差异基因识别;
- 皮尔森残差的近似解析:保留生物学差异,有利于鉴定稀有细胞类型。
首先,我们加载数据:
import omicverse as ov
import scanpy as sc
import matplotlib.pyplot as plt
ov.utils.ov_plot_set()
adata = sc.read("./data/s4d8_quality_control.h5ad")
print(adata)
然后,可视化total_counts,这是描述一个细胞中发现的分子数量(UMI),通常也可以被认为是这个细胞的文库大小:
import seaborn as sns
plt.figure(figsize=(8, 6))
p1 = sns.histplot(adata.obs["total_counts"], bins=100, kde=False)
plt.show()
这可视化了原始计数UMI的分布,可以用于和之后归一化的分布对比。
移位对数
这里介绍基于delta方法的移位对数,delta方法应用 f ( Y ) f(Y) f(Y),使得原始计数 Y Y Y中的差异被缩小: f ( y ) = l o g ( y s + y 0 ) f(y)=log(\frac{y}{s}+y_{0})