Fast node ranking algorithms on large graphs.
Node score diffusion · Recommendation and ranking · Community structure · Link prediction · Graph signal processing
License: Apache Software License
Author: Emmanouil (Manios) Krasanakis
Dependencies: networkx
,numpy
,scipy
,sklearn
,wget
Backends (optional): numpy
,tensorflow
,pytorch
,torch_sparse
,matvec
Externally install non-numpy backends before using them.
pygrank
works with Python 3.9 or later. The latest version can be installed with pip per:
https://pygrank.readthedocs.io
Analyzing graph edges (links) between graph nodes can help rank or score nodes based on proximity to structural or attribute-based communities given known example members. With the introduction of graph signal processing and decoupled graph neural networks, the importance of node ranking has drastically increased, as its ability to perform induction by quickly spreading node information through edges has been theoretically and experimentally corroborated. For example, it can be used to make predictions based on a few known node attributes or based on the outputs of feature-based machine learning models.
pygrank
is a collection of node ranking algorithms
and practices that support real-world conditions,
such as large graphs and heterogeneous preprocessing
and postprocessing requirements. Thus, it provides
ready-to-use tools that simplify the deployment of
theoretical advancements and testing of new algorithms.
Some of the library's advantages are:
- Compatibility with networkx, plain numpy, tensorflow, pytorch, matvec.
- Datacentric interfaces that do not require transformations to identifiers.
- Large graph support with sparse data structures and scalable algorithms.
- Seamless pipelines (e.g., operation chains), from graph preprocessing up to benchmarking and evaluation.
- Modular components to be combined and a functional chain interface for complex combinations.
- Fast running time with highly optimized operations
- Graph filters
- Community detection
- Link prediction
- Graph normalization
- Convergence criteria
- Postprocessing (e.g., fairness awareness)
- Evaluation measures
- Benchmarks
- Autotuning
- Graph Neural Network (GNN) support
Feel free to contribute in any way, for example through the issue tracker or by participating in discussions. Please check out the contribution guidelines to bring modifications to the code base. If so, make sure to follow the pull checklist described in the guidelines.
If pygrank
has been useful in your research and you would like to cite it in a scientific publication, please refer to the following paper:
@article{krasanakis2022pygrank,
author = {Emmanouil Krasanakis, Symeon Papadopoulos, Ioannis Kompatsiaris, Andreas Symeonidis},
title = {pygrank: A Python Package for Graph Node Ranking},
journal = {SoftwareX},
year = 2022,
month = oct,
doi = {10.1016/j.softx.2022.101227},
url = {https://doi.org/10.1016/j.softx.2022.101227}
}
To publish research that makes use of provided methods, please cite all relevant publications.