5

Question:

Which libraries/packages are the most efficient (in terms of memory use and speed) to analyze multilayer networks?

Desired answer:

Ideally, the answer to this question would involve using each of these libraries to create a pre-defined network and calculate a few centrality measures (e.g. page rank), benchmarking the amount of time and RAM memory each library uses. Something similar to this benchmark here.

List of packages

I'm particularly interested in libraries/packages in R or Python. I list below some the packages I was recommended, but feel free to add others to the list:

Libraries in Python:

Libraries in R:

obs. I've only tried MuxViz and I quite like it. It's very easy to use and understand but I find it could be faster.

Community
  • 1
  • 1
rafa.pereira
  • 13,251
  • 6
  • 71
  • 109
  • It sounds like you want to run Page Rank on a network, and then add a layer to the network and run page rank again. If so, all of the above libraries you mentioned are sufficient. If you are just starting out, NetworkX may be ideal - it's executed entirely in python and you can explore the network easily as an abstracted dictionary. For this reason, it is both most easily comprehensible but also the least performant. Depending on the subject matter, though, and the environment within which it is being run, it may be sufficient. – kuanb Nov 17 '17 at 00:58
  • I would like to calculate various centrality measures for a multilayer network. Some of the libraries above are not very versatile in that they do only enable the calculation of just a few centrality measures – rafa.pereira Nov 17 '17 at 17:19
  • 1
    If breadth of support and methods is your goal, and you want an easier ramp up, NetworkX is your best bet. It's been in active development since 2002, has tons of features implemented within it, and if you ever feel that it's lacking anything, you can simply export as a spare matrix, which allows it to be consumed by SciPy, opening up the entirety of the ScipPy/NumPy/sk-learn universe. – kuanb Nov 17 '17 at 17:39
  • NetworkX is certainly among the most versatile packages but it seems to been extremely slow. [Take a look at this benchmark](https://graph-tool.skewed.de/performance). – rafa.pereira Nov 17 '17 at 17:58
  • 1
    That's correct. I noted that in the first comment: "[nx is] executed entirely in python and you can explore the network easily as an abstracted dictionary. For this reason, it is both most easily comprehensible but also the least performant." Again, if this is your first foray, it's the safest strategy. I find performance is best dealt with after you've finalized what it is you want to do. Eg, if running mult. single node analyses, it might be sufficient to simply run multiple NetworkX analyses in parallel and save enormous time on not having to re-implement dozens of algorithms. – kuanb Nov 17 '17 at 18:02

0 Answers0