Hierarchical Graph Analysis
Project description
Higra: Hierarchical Graph Analysis
Higra is a C++/Python library for efficient sparse graph analysis with a special focus on hierarchical methods. Some of the main features are:
- efficient methods and data structures to handle the dual representations of hierarchical clustering: trees (dendrograms) and saliency maps (ultrametric distances);
- hierarchical clusterings: quasi-flat zone hierarchy, hierarchical watersheds, agglomerative clustering (single-linkage, average-linkage, complete-linkage, exponential-linkage, Ward, or user provided linkage rule), constrained connectivity hierarchy;
- component trees: min and max trees;
- manipulate and explore hierarchies: simplification, accumulators, cluster extraction, various attributes (size, volume, dynamics, perimeter, compactness, moments, etc.), horizontal and non-horizontal cuts, hierarchies alignment;
- optimization on hierarchies: optimal cuts, energy hierarchies;
- algorithms on graphs: accumulators, vertices and clusters dissimilarities, region adjacency graphs, minimum spanning trees and forests, watershed cuts;
- assessment: supervised assessment of graph clusterings and hierarchical clusterings;
- image toolbox: special methods for grid graphs, tree of shapes, hierarchical clustering methods dedicated to image analysis, optimization of Mumford-Shah energy.
Higra is thought for modularity, performance and seamless integration with classical data analysis pipelines. The data structures (graphs and trees) are decoupled from data (vertex and edge weights ) which are simply arrays (xtensor arrays in C++ and numpy arrays in Python).
Installation
The Python package can be installed with Pypi:
pip install higra
Supported systems:
- Python 3.6, 3.7, 3.8, 3.9
- Linux 64 bits, macOS, Windows 64 bits (requires Visual C++ Redistributable for Visual Studio 2015)
Documentation
Demonstration and tutorials
A collection of demonstration notebooks is available in the documentation. Notebooks are stored in a dedicated repository Higra-Notebooks.
Code samples
This example demonstrates the construction of a single-linkage hierarchical clustering and its simplification by a cluster size criterion.
This example demonstrates the use of hierarchical clustering for image filtering.
Developing C++ extensions
While Higra provides many vectorized operators to implement algorithms efficiently in Python, it is possible that some operations cannot be done efficiently in Python. In such case, the Higra-cppextension-cookiecutter enables to easily setup and generate c++ extension using Higra with Python bindings.
License and how-to cite
The license Cecill-B is fully compatible with BSD-like licenses (BSD, X11, MIT) with an attribution requirement.
The recommended way to give attribution is by citing the following presentation article:
B. Perret, G. Chierchia, J. Cousty, S.J. F. Guimarães, Y. Kenmochi, L. Najman, Higra: Hierarchical Graph Analysis, SoftwareX, Volume 10, 2019. DOI: 10.1016/j.softx.2019.100335
Bibtex
@article{PCCGKN:softwarex2019,
title = "Higra: Hierarchical Graph Analysis",
journal = "SoftwareX",
volume = "10",
pages = "1--6",
year = "2019",
issn = "2352-7110",
doi = "10.1016/j.softx.2019.100335",
author = "B. Perret and G. Chierchia and J. Cousty and S.J. F. Guimar\~{a}es and Y. Kenmochi and L. Najman",
}
Third-party libraries
Higra bundles several third-party libraries (inside the lib
folder):
- pybind11 helps to create Python bindings of c++ methods and classes - BSD-style license
- xtensor (with xtl, xsimd, and xtensor-python provides
numpy
like arrays for c++ with seamless integration with Python - all under the BSD-3-Clause license - Catch2 is a unit test framework - Boost Software License 1.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for higra-0.6.2-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4bc3f2dd76aa0bb778e549c60c8ab8af0773e924af88563bdb68c355640912f2 |
|
MD5 | f72254baf4fb0766c7e9d73215494986 |
|
BLAKE2b-256 | f5e3f3f70d6e1077b98a3074f9bf0cd9ba33c5d53fbf1092c54dbc89b6da4081 |
Hashes for higra-0.6.2-cp39-cp39-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 17bb45c4aba81adbcc90d2f74a24288c66bdeed232b76487a87cc8eebc93a8ca |
|
MD5 | 7d6f3d2676d01af3047ddc33d18fd302 |
|
BLAKE2b-256 | dcf39f4d53939ffda9d6bbcffdf7bea4dd83d3b8b3ef176597ae15e5cd308c63 |
Hashes for higra-0.6.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 338a896b9678cd4a7777d081eae09bd443c8a86bbfb460b27dc99dca5ebb61c3 |
|
MD5 | 4041597b5baed8c46f51dd5ab65bff94 |
|
BLAKE2b-256 | c63deab4943a34cba7092365e1787d24c5ee64d5a07125d564000798c039dab1 |
Hashes for higra-0.6.2-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 192443c04f5f56a8fac8dfde8f1b027912eccc4e48cfa20ac1df1500a04705c2 |
|
MD5 | 56de346187d71ac8bea88b383253776b |
|
BLAKE2b-256 | aa7e1de015acb7c931329fd82cdaf729e110c1fe5fb81327520bb23ff3648108 |
Hashes for higra-0.6.2-cp38-cp38-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b91a6150e0486056bac1aa97b3957d0dbd7a3578a7aa89409e14fef605a4280 |
|
MD5 | 359523d09ba7f7f0d7e30a8132253558 |
|
BLAKE2b-256 | 2e101e89ba156b2327503585faac571af343d0618c70bfcb956baaa2ffb06285 |
Hashes for higra-0.6.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 55c2553c01ca1ebdbbdf494fad3af0b800a930c5edc5512e7f39acfc9983fb1a |
|
MD5 | c2a1998b8566db6f82e5de84db23ba61 |
|
BLAKE2b-256 | 88b197338a387785df298690901f3f89d8eeda29aaef7796075abd0a070e7789 |
Hashes for higra-0.6.2-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 16c727fbeb9616e223c833e46be155b2f8a7bd76ff48341c7184503ad74af116 |
|
MD5 | 0df8ba89352d54102b57b6340e136596 |
|
BLAKE2b-256 | 82c8ca1c51d55d96cf61197fd58bb694cf39721ef950f3671af90922a2072205 |
Hashes for higra-0.6.2-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c1d779f2e84a1256061a3965e4164a209a8b165413e21f8d24ef7c2735a299e |
|
MD5 | cbcc83fbdff44cf581bd4e9a86251420 |
|
BLAKE2b-256 | c5880e7edf66db5d6f40ddcfe480d824ce245b8bc95976f490dd46a2c52d035f |
Hashes for higra-0.6.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1ac2d7816e03217a720e50510b33eb25bcadb21b4bcad44b355e53c45b887d3 |
|
MD5 | abd364a1c85a5941cd685aed48318f65 |
|
BLAKE2b-256 | 0728fc0880fc62d2d7261c584e42bb67a12dccb72f6c03fa988c0c5d1a553dbe |
Hashes for higra-0.6.2-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e2af1903dbab320698d9f3397abc7cbe72132f380f5f7a226c193741f552d2ef |
|
MD5 | d74a332126cd0d52954bac34a8fab06a |
|
BLAKE2b-256 | 525b7526e1e18865bb1bab527861ccd746d8b6882195450cdc07d6e679c336ee |
Hashes for higra-0.6.2-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb32dad12779b22aebb659d7f710a14ff37f9bc0b5829cfceaf3cc5172ebc7f1 |
|
MD5 | 205ba20f4091c6f16e2d513211764630 |
|
BLAKE2b-256 | 1291d90d82c1cee0d5f9df74b9fbd16e02b70d258fa169a8d99191b85946a0de |
Hashes for higra-0.6.2-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95858351755c9c7a5cf02bb3e07d48faa9fda151fcceec33747833e10d89dda1 |
|
MD5 | 7f90206b38a3b7fe64ba3470ef613477 |
|
BLAKE2b-256 | 007489dae9944ff4b0b452c78e37bae8f9847d1ae7e70932f1702353d4ad5901 |