如何用有限的RAM分析大型网络/图形



对于当前的项目,我需要分析一个>300mb .csv文件中给我的大型蛋白质-蛋白质相互作用网络。这个图将有超过500万条边和数万个节点。

我已经尝试使用Cytoscape和Gephi来加载和分析我的数据,但两者似乎都无法处理这种大小的网络。当Cytoscape在尝试加载文件几秒钟后崩溃时,Gephi设法加载50%,直到内存耗尽。(是的,我将-Xmx设置为max)

注意,我的电脑有8GB的内存。

在这一点上,我开始质疑自己:是否有可能用普通的网络分析软件来分析这种规模的网络,或者我是否被迫编写和调整自己的算法?或者有你们知道的可用软件吗?

现在,我不一定需要图形可视化,只是简单的中心性测量等。

我真的希望我的问题不是太不具体。

提前感谢!

Cytoscape.js和Cytoscape desktop (Java)都支持无头模式。

你可以直接在Node.js中使用Cytoscape.js,并直接访问它的API。只要require('cytoscape'),就可以了。与可视化相比,在Node.js中直接使用Cytoscape.js在CPU使用和RAM方面的成本要低得多。js支持多种类型的中心性计算。它只是一个API调用来计算值,所以即使只是在Node.js REPL中也很容易尝试(您可以编写一个JSON文件)。

您可以通过CyRest(即HTTP/REST请求)与Cytoscape桌面进行无头通信。这意味着你可以用任何语言进行分析,但你所做的一切都将是异步的,并且需要不断的序列化和反序列化。我认为你也可以为Cytoscape桌面编写一个应用程序,只要它是无头的。

最新更新