Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 内存不足,无法执行因式分解expm scipy.sparse.linalg.splu_Python_Memory_Scipy_Sparse Matrix - Fatal编程技术网

Python 内存不足,无法执行因式分解expm scipy.sparse.linalg.splu

Python 内存不足,无法执行因式分解expm scipy.sparse.linalg.splu,python,memory,scipy,sparse-matrix,Python,Memory,Scipy,Sparse Matrix,我一直在尝试使用。简单地说,这个软件包括一个算法,当您通过一些查询节点和一个网络时,它可以找到重要的子网络。对于较小的网络,它可以正常工作,但我感兴趣的网络相当大,它有21988个节点和360474条边。TieDIE使用scipy生成初始网络内核,尽管Matlab也是生成此内核的一个选项,但我没有许可证。在生成此内核的过程中,我遇到以下错误: Not enough memory to perform factorization. Traceback (most recent call last)

我一直在尝试使用。简单地说,这个软件包括一个算法,当您通过一些查询节点和一个网络时,它可以找到重要的子网络。对于较小的网络,它可以正常工作,但我感兴趣的网络相当大,它有21988个节点和360474条边。TieDIE使用scipy生成初始网络内核,尽管Matlab也是生成此内核的一个选项,但我没有许可证。在生成此内核的过程中,我遇到以下错误:

Not enough memory to perform factorization. Traceback (most recent call last):   
File "Trials.py", 
line 44, in <module> diffuser = SciPYKernel(network_path)   
File "lib/kernel_scipy.py", 
line 83, in __init__ self.kernel = expm(time_T*L)   
File "/home/agmoreno/TieDIE-trials/TieDIE/local/lib/python2.7/site-packages/scipy/sparse/linalg/matfuncs.py",
line 602, in expm return _expm(A, use_exact_onenorm='auto')   
File "/home/agmoreno/TieDIE-trials/TieDIE/local/lib/python2.7/site-packages/scipy/sparse/linalg/matfuncs.py",
line 665, in _expm X = _solve_P_Q(U, V, structure=structure)   
File "/home/agmoreno/TieDIE-trials/TieDIE/local/lib/python2.7/site-packages/scipy/sparse/linalg/matfuncs.py",
line 699, in _solve_P_Q return spsolve(Q, P)   
File "/home/agmoreno/TieDIE-trials/TieDIE/local/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/linsolve.py",
line 198, in spsolve Afactsolve = factorized(A)   
File "/home/agmoreno/TieDIE-trials/TieDIE/local/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/linsolve.py",
line 440, in factorized return splu(A).solve   
File "/home/agmoreno/TieDIE-trials/TieDIE/local/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/linsolve.py", 
line 309, in splu ilu=False, options=_options) 
MemoryError
最有趣的是,我使用的是一台集群计算机,它有64个CPU,700GB或RAM,根据ps监控,软件在执行和后期的某个时刻达到了内存使用量的1.3%~10GB的峰值。我被告知RAM的使用没有限制。。。所以我真的不知道会发生什么

也许这里有人能帮我找到scipy的替代品或解决它

内存错误是否可能是因为只使用了一个节点?在这种情况下,如何在节点之间分配工作


提前感谢。

没错,对于这样一个非常大的网络,单个节点上需要很高的内存。当然,最简单的解决方案是一种变通方法,可以是:

1在捕获相关生物的同时,有没有办法减小输入网络的大小?也许只需查找距离输入节点2步远的所有节点

2使用新的Cytoscape API为您进行扩散:

3使用PageRank而不是计算不理想的热核,因为我们已经证明扩散在生物网络上更有效

希望这有帮助!
-Evan Paull TieDIE developer/主要作者

使用集群并不意味着SciPy知道如何在集群中分发工作。这个东西可能运行在一个节点上。我还认为它只使用了一个节点,因为在监控中,cpu使用率%cpu总是接近99%,每增加100个节点就有另一个节点在使用,但我认为这不是限制问题。在这种情况下,我如何在节点之间分配工作?分配这个?这非常复杂。在稀疏情况下更是如此!我所知道的唯一一个库,是为这样的东西构建的:,它也有python包装器。@sascha我应该向scipy开发人员报告这个吗?或者这只是我的场景中预期会发生的事情?@AdrianGarciaMoreno不。这不是scipy的范围,我认为这甚至是一个明确命名的示例,用于说明不需要实现的东西。他们不会实施这个。这或多或少是一项任务,可能只有研究软件或定制构建付费软件。要么查看LibElement,要么远离主题。稀疏矩阵代数很难做对。分布式稀疏矩阵代数更糟糕。感谢Paul的努力,我最终使用Diffusion和Networkx来检索可能的模块。谢谢