Future Enhancement Request : Graph Algorthims on CSRGraph
I like your idea. I was using Networkx and it just hogs all memory, I was looking for a python graph library for large graphs and I saw this library.
Can future enhancements support Graph Algorithms like Page Rank?
Hey,
Since you can access the underlying CSR matrix with G.mat directly it's easy to extend with other algorithms that take in numpy/scipy objects.
For pagerank, you could probably use something like pagerank_scipy from networkX (just the method) and throw it at the csrgraph.
Long run I want to make these things have a simpler API within this package
Here's an ongoing list of algorithms to implement:
- Shortest Path
- PageRank
- Min Cut
- Gromov Hyperbolicity:
- https://doc.sagemath.org/html/en/reference/graphs/sage/graphs/hyperbolicity.html
- https://lars76.github.io/2020/07/22/computing-gromov-hyperbolicity.html
I like your idea. I was using Networkx and it just hogs all memory, I was looking for a python graph library for large graphs and I saw this library.
Can future enhancements support Graph Algorithms like Page Rank?
I think networkit is fast enough.
NetworkX is fast since it makes the graph into a sparse matrix before running the algorithm.
The problem with networkX is loading the large graph in the first place -- if it's too large you'll run out of RAM very fast.
We can just use the pagerank_scipy function from networkX on the csrgraph.graph.mat object but it would be nicer to have a wrapper function for it in this library
NetworkX is fast since it makes the graph into a sparse matrix before running the algorithm.
The problem with networkX is loading the large graph in the first place -- if it's too large you'll run out of RAM very fast.
We can just use the
pagerank_scipyfunction from networkX on thecsrgraph.graph.matobject but it would be nicer to have a wrapper function for it in this library
I have used networkx and networkit. Many algorithms of networkx are operated on the dictionary-like data structure of networkx itself, so the speed is relatively slow, and networkx is not designed to accelerate parallel computing. On the contrary, networkit does this, but Networkit implements fewer graph algorithms than networkx