我正在研究一个大型基因阵列,其中一个基因由多个探针表示,范围从2到20。我基本上想进行kruskal-wallace测试(非参数方差分析)以确定探针是否在单个基因上给出基本相同的信息。因此,我编写了以下代码,令基因为(1 xm)数组,其中m为探针数。令X为(nxm)numpy数组)。
ugenes=np.unique(genes)
for i in range(genes.size):
gene=ugenes[i]
idx=np.where(genes==gene)[0]
% the length of idx is variable and can be anywhere from 2 to twenty so Xd is of
% variable size
Xd=X[:,idx]
[h,p]=kruskal(Xd)
我遇到的问题是kruskal仅采用带有多个数组的一维数组作为参数。由于Xd是可变的,因此我不必将其拆分成多少个单个数组,并且唯一基因的数量在20000左右,因此手动进行操作不是一种选择。反正有分解Xd以便可以将其发送到kruskal
kruskal(Xd[:,0],Xd[:,1],...Xd[:,z])
(其中z是Xd的总列数)而不执行Xd的列数?
您可以尝试将列转换为列表并将其传递给kruskal:
Xd=list(X[:,idx].T)
[h,p]=kruskal(*Xd)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句