栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

sc.pp.normalize

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

sc.pp.normalize

测试sc.pp.normalize_per_cell
import numpy as np
import scanpy as sc 
x=np.array([[1,2,3],[2,3,4],[1,1,3],[0,2,10]])
adata=sc.AnnData(x)
adata.raw=adata.copy()
#print(adata.X)
# adata.raw=adata.copy()
# sc.pp.scale(adata)
# print(adata.X)
ff=np.median(np.sum(x,axis=1))/np.sum(x,axis=1)
print(np.dot(np.diag(ff),x))

sc.pp.normalize_per_cell(adata)
print(adata.X)
# sc.pp.normalize_total(adata.raw.X)
# print()

结果如下
注意这个

测试sc.pp.normalize_total
import numpy as np
import scanpy as sc 
x=np.array([[1,2,3],[2,3,4],[1,1,3],[0,2,10]])
adata=sc.AnnData(x)
sc.pp.normalize_total(adata)
print(adata.X)

结果如下

验证sc.pp.normalize_per_cell
x=np.random.rand(5,3)
#print(x)

#print(x)
adata=sc.AnnData(x)
ff=np.median(np.sum(x,axis=1))/np.sum(x,axis=1) #如果什么都不设置,那么最终得到的结果是,每个细胞在所有基因的表达总和会是一个中位数值
# 这个中位数是如何得到的呢,是首先计算每个细胞初始所有基因表达的总和求中位数的到的,然后对每个细胞的基因表达乘以一个对应的倍数,从而满足
# 中位数的条件。
print(np.dot(np.diag(ff),x))
print("====================")
sc.pp.normalize_per_cell(adata) # 另外做一些删减,并不是所有的细胞都能被保留
print(adata.X)

记录python的操作 按列操作实现1
import numpy as np
m = np.array([[1,2,3],[4,5,6],[7,8,9],[2,3,-10]])
c = np.array([-1,1,4])
m * c  ## 直接按列乘了,而不是按行操作,但是前提是列的维度和一维数组的维度是一致的

按列操作实现2
np.dot(m,np.diag(c))

按行操作实现1
import numpy as np
m = np.array([[1,2,3],[4,5,6],[7,8,9],[2,3,-10]])
c = np.array([-1,1,4,2])
m * c[:, np.newaxis]
#np.dot(c.reshape(1,len(c)),m),这个做的是矩阵乘法

结果如下

按行操作实现2
(m.T * c).T

按行操作实现3
m * c[:, None]

按行操作实现4
np.dot(np.diag(c),m)

结果如下

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/864832.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号