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

Not enough memory to perform factorization expm scipy.sparse.linalg.splu

我一直在尝试使用TieDIE。简而言之,该软件包含一种算法,当您通过一些查询节点和网络时,该算法可以找到重要的子网。对于较小的网络它工作得很好,但我感兴趣的网络非常大,它有 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

最有趣的是,根据 ps 监控,在某个时刻执行,稍后粉碎。我被告知 RAM 的使用没有限制...所以我真的不知道会发生什么...

也许这里有人可以帮助我找到 scipy 的替代方案或解决它。

有没有可能是只用了一个节点导致的内存错误?在这种情况下,我如何在节点之间分配工作?

提前致谢。

没错,对于像这样的非常大的网络,您需要在单个节点上使用高内存。最简单的解决方案当然是解决方法:

(1) 有没有什么方法可以减少输入网络的大小,同时仍然捕获相关生物学?也许只是寻找距离输入节点 2 步远的所有节点?

(2) 使用新的 Cytoscape API 为您做扩散:http://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1005598 (https://github.com/idekerlab/heat-diffusion)

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

希望对您有所帮助! -Evan Paull(TieDIE developer/lead 作者)