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.8, 3.9, 3.10, 3.11, 3.12 (amd64)
- Linux 64 bits, macOS, Windows 64 bits (requires Visual C++ Redistributable for Visual Studio 2015)
Prebuilt binaries are currently not available for ARM architectures.
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.8-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b319b9002e09df32a1d0de36ab2eec9e3394c311a1537f5d72b5d06f2840a084 |
|
MD5 | 14d91bc60a9abcd05be4398becb7726a |
|
BLAKE2b-256 | 0c70ea79fc2db2b86e0af29fdf32463cea6da3bf922a3c1003ad2cc32e616f69 |
Hashes for higra-0.6.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 225ec7f7c94c857ae56058cba32fe7b48fa7d57dc739c490347485cd6b87d539 |
|
MD5 | aa2810f15be469d14fd92a62db785cfc |
|
BLAKE2b-256 | f9fcf667b9a462c6e12e352651979866ef1dd3c8e5c7d979f4f1c4aa96f2b2dd |
Hashes for higra-0.6.8-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 298cca04154733df51b049a23bb2f5e03ff6ea62ba85fe50d4f038c63bbb855b |
|
MD5 | 808e4aa3fd27e39b1622a1decbe0023f |
|
BLAKE2b-256 | 4b73ff915f02e7563022d3106624ee47874dc4e33cfe29d5400ffc9e03283979 |
Hashes for higra-0.6.8-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a71a2b8c405d44d7dffba564f0f2b24b7808113020ef7a2d1ce8f03243efb789 |
|
MD5 | b3680ccec8cfd25d073f10b833ec25f6 |
|
BLAKE2b-256 | 942a49431db097dbd337956b3130708cea2bdcfdeff2b04b895ebc8d4fe25dbf |
Hashes for higra-0.6.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70ed06b40b6ba067269f7b453402e83cb9b0ee97609c45f52aac8000b51e3514 |
|
MD5 | 5c9bd77360e0743a5ec4fe5868747e12 |
|
BLAKE2b-256 | 459e22dead325db81e87c1e59ef6a9f165599da00353a664a4e191b4ae9dbc6d |
Hashes for higra-0.6.8-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | afc9f1917838ff746f86d556cc134d7b40769ca675333143a2cd2dd4491e6a15 |
|
MD5 | 9acb996cea3561a55c94095ef0043a4e |
|
BLAKE2b-256 | 847ca4d49cad849fe55fc522fe81b8cacb127dd631fb129727d950645fc2d500 |
Hashes for higra-0.6.8-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 16118b689029afbca7e3f72e6a83eb5bd3f369a3263cc248bccc3e0aa4affcf2 |
|
MD5 | 82a6bdc876ce90d11e732676fb4eed4e |
|
BLAKE2b-256 | cbdaef9d8321694c0b3013444b94f6d9643cfb48358838e5cb8630c100352f30 |
Hashes for higra-0.6.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | df50d49f351db079ea55d6a8670d31426254db2a69add5015c41a9f5862657a1 |
|
MD5 | 8f74775726d25e7ab6f48b2bfe6a3cbc |
|
BLAKE2b-256 | eefe82b8d74b92475a6ef0c8341de180a6cf60fc9b232b479408012c41bdcd07 |
Hashes for higra-0.6.8-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b68e3bbea5821dba1987e93175e416c65e19359e5cc900b05f53e7f0d13e7ba3 |
|
MD5 | 0c79fc6a49b21cabf28846ad30a9e3dd |
|
BLAKE2b-256 | 872a7bc487c602c7b50fa65131cb4b20e64fa9728b370082b5bef9bed8e76a14 |
Hashes for higra-0.6.8-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6ca0fd6367c1be3131b3305911e9e644711225ce54bf1e00bbec102b2873b46 |
|
MD5 | 5387e8ab3fe954879ba0ddfaa853a8e1 |
|
BLAKE2b-256 | 3a161d0ca39dd8e07b85d21b42fab79cc091b7f6ea3c1706fca202d4d0775a2b |
Hashes for higra-0.6.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04555b6c97bb46b7ac1e316702398c1caa84ac560d36b1677f185195058e525d |
|
MD5 | d5f57f974dcf6c44bf71ab905d2360d1 |
|
BLAKE2b-256 | 927fb06c35d3b72734179a2517cf39f31a4980e91cc2a1c2f770fc20a6d3a82d |
Hashes for higra-0.6.8-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44093e3a75234a6de94bcbb5a1393492494f18bb707a0faf06ff45f47fd3706b |
|
MD5 | 95b3feeb75a31dd843ca768eaf286abc |
|
BLAKE2b-256 | e3af48c6e932bcd369dadcd5c37381d58aa3e6402d18a887290ac66ac08fb45d |
Hashes for higra-0.6.8-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23dcfdb9a83f612716fd6b0213787e3cb9255110bbc18aa7200354dea8972d1b |
|
MD5 | 64046d04431dcd36dc8e842edd5cf13a |
|
BLAKE2b-256 | bd44f4be68066d8601c70bf5cd1a81e09f2a35e698c6a8e52d2cad983b3a7491 |
Hashes for higra-0.6.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd3b91ded1bba46413f30f15728ee2d745de2e9ed878430a9ed2ab6070e64d92 |
|
MD5 | a5a1549fbf11d32cd49ad28e33f3d8dd |
|
BLAKE2b-256 | 1e5ee65586be597f44c9890fc0db9c340e685bc5b6d5ff3c62211f392fb625e4 |
Hashes for higra-0.6.8-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c2de996d9344ad75a70b16b480966a3b8160d80b711072f68c81ce849020691b |
|
MD5 | a71a65f45a4132b769d4b9657f31bc99 |
|
BLAKE2b-256 | 95c320fadcf2a4960f32b180fc3e10c3dbe20e6e7aa310a6b1bea3447602902d |