如何理解归一化和对数转换 sc.pp.normalize_total sc.pp.log1p seurat scanpy

发布时间:2023年12月21日

1 normalize?

# Normalize data
sc.pp.normalize_total(adata_vis_plt, target_sum=1e4)

这段代码使用了sc.pp.normalize_total()函数对数据进行归一化处理。normalize_total()函数是Scanpy库(用于单细胞RNA测序分析的Python库)中的一个函数。它将adata_vis_plt数据对象中的每个细胞的表达量进行归一化,使得归一化后的总和等于目标和(这里是1万)。归一化可以有效地消除不同细胞之间的技术因素差异。

2 loglp?


# Log transformation

sc.pp.log1p(adata_vis_plt)

这段代码使用了sc.pp.log1p()函数对数据进行对数转换。log1p()函数计算X = log(X + 1),其中log表示自然对数(以e为底),除非指定了其他的底数。对数转换可以将原始数据中的大范围变化映射到一个较小的范围,有助于减小数据的偏度,并提高后续分析的可靠性。

Seurat 在数据处理中包含了一个标准化步骤,即 NormalizeData 函数,该函数会将每个基因的表达值除以总表达值,并按照一定比例对每个细胞进行缩放。这样的标准化可以使得各个样本之间的表达值范围更加一致,方便后续的比较和分析。此外,Seurat 还提供了 ScaleData 函数,用于对已经标准化后的数据进行缩放,使得每个基因的表达值都具有均值为 0,标准差为 1 的特性。这种缩放策略可以减少各个基因之间的表达值范围差异,提高聚类和可视化的效果。

相比之下,Scanpy 对数据处理的方式则更加灵活Scanpy 不要求用户在数据处理过程中必须进行标准化和缩放,但是允许用户根据实际需要选择是否进行这些步骤。例如,用户可以使用 AnnData 对象的 .raw 属性保存原始的数据,然后使用 .X 属性保存标准化或缩放后的数据。因此,Scanpy 可以适应不同的数据类型和分析需求,并且允许用户根据需要选择不同的处理方式。

ScanpySeurat?之间的对等函数

ScanpySeurat 之间,并不存在完全一对一的函数对应关系,但是它们提供了类似的功能,可以根据需要进行组合和使用以达到标准化和缩放的效果。

下面是一些 Scanpy 中常用的函数和其在 Seurat 中的类似功能:

  1. pp.normalize_totalScanpy)对应于 NormalizeDataSeurat)。这两个函数都用于对数据进行全局归一化,使得每个细胞的总表达值相等或接近。

  2. pp.log1pScanpy)对应于 LogNormalizeSeurat)。这两个函数都用于对数据进行对数转换,以减小不同细胞之间的表达值范围差异。

  3. pp.scaleScanpy)对应于 ScaleDataSeurat)。这两个函数都用于对已经标准化后的数据进行缩放,使得每个基因的表达值都具有均值为 0,标准差为 1 的特性。

  4. pp.regress_outScanpy)对应于 ReggressOutSeurat)。这两个函数都用于去除技术因素对表达数据的影响,例如批次效应或测序深度。

需要注意的是,虽然这些函数在功能上类似,但在具体的实现和参数设置上可能会有差异。

文章来源:https://blog.csdn.net/qq_52813185/article/details/135119945
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。