Skip to main content

Python 3 implementation and documentation of the Hermina-Janos local graph clustering algorithm.

Project description

The library implements multiple variations of a local graph clustering algorithm named the Hermina-Janos algorithm in memory of my beloved grandparents.

Besides the clustering algorithms themselves, the library also contains a cluster implementation (obviously) and utility classes for i) ranking the nodes the algorithms have seen during the clustering process and ii) recording the steps the clustering algorithms have taken.

See the documents included in the library for more details.

Local clustering

A graph clustering algorithm is called local if its goal is to find the cluster of one or more “source” nodes without looking at whole graph. In other words a local algorithm starts out from the source nodes and at each step only looks at the nodes it has seen so far and their neighbors to find the cluster the source nodes belong to.

Demo

The library contains a demo module that shows the basic usage of this project. If you wish to run the demo, you will first need to install the igraph and cairo libraries and their Python interfaces besides the default dependencies of the library.

Dependencies

The library’s only requirement is the GraphScraper library that you can install with pip (pip install graphscraper). As a consequence, you will also need SQLAlchemy or Flask-SQLAlchemy to be installed.

License - GNU AGPLv3

The library is open-sourced under the conditions of the GNU Affero General Public License v3.0, which is the strongest copyleft license. The reason for using this license is that this library is the “publication” of the Hermina-Janos algorithm and it should be referenced accordingly.

Contribution

Any form of constructive contribution is welcome. Besides the usual things (feedback, features, bug fixes, tests, additional documentation, etc.), the following types of contributions are especially appreciated:

  • Algorithm analysis and evaluation (algorithmic complexity, accuracy with different cluster definitions, etc.).

  • Analysis of how the weighting coefficients of the connectivity based cluster definition corresponding to the different hierarchy levels relate to each-other in different real-world graphs.

  • Implementation of new cluster definitions (modularity or conductance based for example).

  • etc.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

localclustering-0.10.0-py3-none-any.whl (25.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page