/pygrank

Recommendation algorithms for large graphs

Primary LanguagePythonApache License 2.0Apache-2.0

pygrank

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.

build coverage Downloads

🛠️ Installation

pygrank works with Python 3.9 or later. The latest version can be installed with pip per:

🔗 Documentation

https://pygrank.readthedocs.io

🧠 Overview

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:

  1. Compatibility with networkx, plain numpy, tensorflow, pytorch, matvec.
  2. Datacentric interfaces that do not require transformations to identifiers.
  3. Large graph support with sparse data structures and scalable algorithms.
  4. Seamless pipelines (e.g., operation chains), from graph preprocessing up to benchmarking and evaluation.
  5. Modular components to be combined and a functional chain interface for complex combinations.
  6. Fast running time with highly optimized operations

🔥 Features

  • Graph filters
  • Community detection
  • Link prediction
  • Graph normalization
  • Convergence criteria
  • Postprocessing (e.g., fairness awareness)
  • Evaluation measures
  • Benchmarks
  • Autotuning
  • Graph Neural Network (GNN) support

👍 Contributing

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.

📓 Citation

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.