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.7, 3.8, 3.9, 3.10, 3.11 (amd64)
- 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.7-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65277fbc933377342848d55ada8f35bddb5243d0e06d1cfba00c18ce513c8874 |
|
MD5 | a2917c9a1e82ac8a6bf32935d4aba483 |
|
BLAKE2b-256 | 23235670fa07eda9aaa3afc7eddfe6a75b1a415bd6f12aa0656fd5b3bc5909a8 |
Hashes for higra-0.6.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 33228b1f671acf06f2d3ce4f189fb602b98627f38952de598ed3769d1987d1ba |
|
MD5 | 4ca395d0d7be3f944f581e33cfbc6be5 |
|
BLAKE2b-256 | d38d9cf98ab11fc13ebc93e8db6d1dbd9f944a529d6f37f3519d5cce1a488552 |
Hashes for higra-0.6.7-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c657c5b2ca28611a6d68fe39a70233b7594e900e1b29ea7e471ebc1b0d568f1 |
|
MD5 | d87e985e4d31a041e8ec99e4f155a3da |
|
BLAKE2b-256 | 4e461ca9b788b605e00553eb08ceb667b55f4bc9bc60f78c24325a084049f48f |
Hashes for higra-0.6.7-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c1b7540b61cdff2548560a7f90a5d1b8c18c02fcc431e94041e7ea49436baae2 |
|
MD5 | c18255e78048ca7265c5a37aa17c0787 |
|
BLAKE2b-256 | 9bf312c688b4fe4bf3f5129ab4efdfd59bfb9c51749e223bd4a613262971bbec |
Hashes for higra-0.6.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d69f27ea97cbbc9631eca9239147a70d10b3899ab68e87d603223cbb69ca34f |
|
MD5 | 768f1773ab49a54666950ef741b374fe |
|
BLAKE2b-256 | 16d0b44a62f4bbb714f30c99c9bb1a348b21e3cb899e6bc14a134a8d841e34e8 |
Hashes for higra-0.6.7-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f29b584d65fbc00afa08184228d6dcf1d75a6a271c76069f96a319e4fdc9c06d |
|
MD5 | cb6d3558605520f9a1e9ebddbda9f4fc |
|
BLAKE2b-256 | 6af2c92f67cba6504028471fd42aec40e938c6a0c3294d3f45c39b16f334b118 |
Hashes for higra-0.6.7-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1127a76d452a9837fc6dc2db256df63aec49d8f45495d0875f98f076e2026593 |
|
MD5 | 72371f73f0501dba7b65d020e3a88c7b |
|
BLAKE2b-256 | ec4f4c41e685bf16836b8779d0f4b6119c7ced753d72ea84a7deefce8d87d7de |
Hashes for higra-0.6.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03b69c59e1940a16568d7f134ce7c98860ef9aafa2895818907689547f3c4b64 |
|
MD5 | 631487424206383a20caa9487cf7e5e2 |
|
BLAKE2b-256 | 8d5d81fa78109f63f4b9ffd63a4f1c27d701675bbe801406db3407e5de8f0464 |
Hashes for higra-0.6.7-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83d40a12bca72b7945f32808a74cad727694e80472cfa888f02255e8642140cf |
|
MD5 | ad40d37dd562e0e2d94f2a5f408e8d9e |
|
BLAKE2b-256 | 9aa800eb588f3fc60c49ace067d5262cc15e21b4cdaa354ec0a264923bfe9622 |
Hashes for higra-0.6.7-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d3579592217755f1acbeae8f369082c2afc0b471c60fe7c838a5bd597c8fed1 |
|
MD5 | e533745827fc7a494ef78b767b831d15 |
|
BLAKE2b-256 | 7d61db46bcc45bc3bf4ee2bb96ebac5a18a03e93b5e2c3b3798c6c2332f64823 |
Hashes for higra-0.6.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3acd83554dc261e1d040e56e60a30512669e24b9eb9168f6f8ff5896209c8fdc |
|
MD5 | e9f18c84c9bb076a3bcaa4f1c158049a |
|
BLAKE2b-256 | d31759f0647ffae9aa116e59240428dee532a0012a7951d29a6cb650f7f8e6b6 |
Hashes for higra-0.6.7-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9fe083384478f02982403874d8cc46ffffb134b5d00ea66a02cca057bdbde45e |
|
MD5 | 973fa9300a476d447ab62fa6ec24ba5f |
|
BLAKE2b-256 | 4fb36b4b3895fe5b187a21e592c6b3bbbc76730ab9db047c3b2ac7e97f9f2836 |
Hashes for higra-0.6.7-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 810f909ba8eee610f9a5a6ea74bf44e423139bdc8fc2b3e1c00063bf8c334a5b |
|
MD5 | 394063fe06b267bf8c70c0961eb5b1a4 |
|
BLAKE2b-256 | b6d61ec68382444dc1b367ca5f45e35ae44e929576862f22fdb50a0165dad9d8 |
Hashes for higra-0.6.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86c378219c501c86b47f835c7dd68712e9d9a52fd61a9a0480485d73399f4a01 |
|
MD5 | 7e8c1c4b03361a4d0f2a9f06ed54ee86 |
|
BLAKE2b-256 | f875b12b64854985685bbe8e7b825819ccdfac929c352f0c294fb1b014eb1613 |
Hashes for higra-0.6.7-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e274d2df9550d024a56b5b5690d944b2c072e4e843a91930cbc563b899cfa9d4 |
|
MD5 | 2f5392788200ba4f8fef180dd553689e |
|
BLAKE2b-256 | e3d76bfdb442f4d79bc30c4f1d19dd14930aa172bf3b800180677349fece8791 |