sc.pp.normalize_per_cell和sc.pp.normalize_total()

scanpy的标准化从sc.pp.normalize_per_cell()更新成了sc.pp.normalize_total(),它官方也是建议用后者(当然前面这个函数仍然存在,且可以正常使用)。二者目的是基本一致的,处理数据的过程也没变,但是存在细微的差别,总体而言就是新的sc.pp.normalize_total()在参数设置方面更加人性化了。如下是旧的sc.pp.normalize_per_cell()警告。

官方对于使用旧版sc.pp.normalize_per_cell函数的警告

最大的区别用人话来说,就是它不会自动给你过滤了,原来这个函数默认旧把min_counts<1的基因给去除了,实际上许多时候也无伤大雅,但是有时我们并不像这个潜在的var过滤发生,所以在新版的sc.pp.normalize_total()就把这个去除掉了,你需要结合使用filter()自己人为决定是否需要操作基因数目的变更。

此外,如果scanpy标准化环节出现以下报错,也是把sc.pp.normalize_per_cell()换成使用sc.pp.normalize_total()可以解决:

numpy.core._exceptions._UFuncOutputCastingError: Cannot cast ufunc 'divide' output from dtype('float64') to dtype('uint64') with casting rule 'same_kind'

你可能感兴趣的:(sc.pp.normalize_per_cell和sc.pp.normalize_total())