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.10, 3.11, 3.12, 3.13, 3.14
- Linux 64 bits (x86_64), macOS (x86_64 & ARM), Windows 64 bits (x86_64) (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
numpylike 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
Release files for higra 0.6.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 162.2 MB
Release files / higra-0.6.13-cp314-cp314t-win_amd64.whl
| Download URL | higra-0.6.13-cp314-cp314t-win_amd64.whl |
|---|---|
| Size | 6.1 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d653d140730c3da53a0d3bbdfbd1c8e2fa567eaba3b6c66bedcb6563da977ce6
|
|
BLAKE2b-256 checksum How to use checksums |
4110bd607a9a7d1d9087d7bb8571abdca04926d01ea9cf1ae6592c3429c585c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / higra-0.6.13-cp314-cp314-win_amd64.whl
| Download URL | higra-0.6.13-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e69010b737ee669cdbe3ba1a99acb88abb51e3f10bae8f13d40948151ad803a9
|
|
BLAKE2b-256 checksum How to use checksums |
db5514b2952b1f95a583114ac1afb4a2aca2c7d3d6bc8dd665561e1e5ce76b54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / higra-0.6.13-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | higra-0.6.13-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 11.6 MB |
| Tags | CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
32bf7b4f4c09b93ddd6a4d04fcdd386cd99f252fc7659894fd76d26763be9d2b
|
|
BLAKE2b-256 checksum How to use checksums |
50f40b48f34c2460d3c610dc949859269a96703857d0fc1bb80e7cd0489f6e25
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / higra-0.6.13-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | higra-0.6.13-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 6.1 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
57f7cc4edc40ea303fcd5fbfa69eb7f1f6f1b3c809e1aead6cec7452bd9c4db4
|
|
BLAKE2b-256 checksum How to use checksums |
564008894ca6f158ee99ff73ba3462896f800fa1e9a6b52f42e43744385043f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / higra-0.6.13-cp314-cp314-macosx_10_15_x86_64.whl
| Download URL | higra-0.6.13-cp314-cp314-macosx_10_15_x86_64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.14 macOS 10.15+ x86-64 |
|
SHA-256 checksum How to use checksums |
5263825befa6c6fe44a31fb833556dad43705458fc84b5a10a1414085105c4a8
|
|
BLAKE2b-256 checksum How to use checksums |
b3fb38055e1d344194a2e7be424df01095ee1a6c35954fbef9ab43e18192ed5d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / higra-0.6.13-cp313-cp313-win_amd64.whl
| Download URL | higra-0.6.13-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 5.8 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
493235a159c82c917abc17281cf4275dcb57fb1b213b3dbfdc1f81873c64e1e2
|
|
BLAKE2b-256 checksum How to use checksums |
e6b2d1f2e3ed0870c5bc6b127a2ab917af0dd1233700d2503c67f4173f778725
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / higra-0.6.13-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | higra-0.6.13-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 11.6 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
b38257cd3f922aaaced79563543df64e732239942161231867ea9398f2e9161a
|
|
BLAKE2b-256 checksum How to use checksums |
42394af36b2460a080b4301fd9ca6c7fa8b97c96030a14bf1c928a2c07cd603f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / higra-0.6.13-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | higra-0.6.13-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 6.1 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
ced8e0c40ef5d89e2a8abea60409a2e7cf67477302795a769121e67f599c9b75
|
|
BLAKE2b-256 checksum How to use checksums |
ea24d7e691ad846106c1730924f49597c824360a58ed510440a283d0552e3a2d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / higra-0.6.13-cp313-cp313-macosx_10_13_x86_64.whl
| Download URL | higra-0.6.13-cp313-cp313-macosx_10_13_x86_64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.13 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
df0b605729012fb2edebb2fd7eed3810c9657d607bac2bd3cf1d6b5723962942
|
|
BLAKE2b-256 checksum How to use checksums |
c90f09515a1b6fdef5235b0ab830efa0d7dac78a4b4fccd2088cd7d4eea96f24
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / higra-0.6.13-cp312-cp312-win_amd64.whl
| Download URL | higra-0.6.13-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 5.8 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
71ecbf39621acc07b42c9468da4105946cee4016425b5f1edc82fc34ac0a2957
|
|
BLAKE2b-256 checksum How to use checksums |
610e82904a866a5e430622990cb9d344e6944fd65ab79cb310292a09e0ef7d23
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / higra-0.6.13-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | higra-0.6.13-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 11.6 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
bc560952fe9a6cec4482da3163e94592f95c93045a124176541d145c98f28a2d
|
|
BLAKE2b-256 checksum How to use checksums |
826a27e323fe9186c74e3e9949629d04bceba76c3b99dd67ea9b3aaef66b5f7e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / higra-0.6.13-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | higra-0.6.13-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 6.1 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
fecd196c551ac736bed53cf69bb19b9052d22122a36e297872fafca86b45a26f
|
|
BLAKE2b-256 checksum How to use checksums |
3e90fb4e440d37c4a03d3bce3522d715f87c436c9ffd6c3c861b357163cd46e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / higra-0.6.13-cp312-cp312-macosx_10_13_x86_64.whl
| Download URL | higra-0.6.13-cp312-cp312-macosx_10_13_x86_64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.12 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
aa1b6318672ebb87415ba0389059243fde0453a2bfb7d38dfe5489f429a76a9c
|
|
BLAKE2b-256 checksum How to use checksums |
3a11ac41629d93a10a8d79faf0cec961a785536f75393396f809347d9b36bc46
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / higra-0.6.13-cp311-cp311-win_amd64.whl
| Download URL | higra-0.6.13-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 5.8 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
2ebb118320ffebff154096071ec3108d39550a02ee67eae4dcbb6818be97aaf5
|
|
BLAKE2b-256 checksum How to use checksums |
1cb5351e53c7702a889c0f1aeac08a9c52b2345309a86a1094e04cbb9daf4545
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / higra-0.6.13-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | higra-0.6.13-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 11.6 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3c4e91e22f15c959fad263770273d56be5ce2b226f939c8a84b49a1b0fb7e54f
|
|
BLAKE2b-256 checksum How to use checksums |
26abc583d3b19d41ad93ed1fb7b2a99874c9e723be267c7d96c9ca94d895fbaf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / higra-0.6.13-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | higra-0.6.13-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 6.1 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
aa01fca4391962bde428e7e103ad935b5db1294421f1d9d32b06f96189795eb8
|
|
BLAKE2b-256 checksum How to use checksums |
4a2c04eb756aa65c12a21fa714daa5d0d404105990dae7d0f319c2c3dc3cff71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / higra-0.6.13-cp311-cp311-macosx_10_9_x86_64.whl
| Download URL | higra-0.6.13-cp311-cp311-macosx_10_9_x86_64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.11 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
4a0751cdc282adbbf5990f85617a1c5d29dc8ae2f54daba05656481021be1d0c
|
|
BLAKE2b-256 checksum How to use checksums |
4a51470d930e33b38892c98c4317aa455c2d50ff64229b5f0f0f5b9288733493
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / higra-0.6.13-cp310-cp310-win_amd64.whl
| Download URL | higra-0.6.13-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 5.8 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
03b76ebf103dfaf83de69ebe34f97fb62dbbecd190f06ed1a389c846d0478105
|
|
BLAKE2b-256 checksum How to use checksums |
76ff192df180ed63cfec451098128d1745011416b17ecb72510aed7760f4be8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / higra-0.6.13-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | higra-0.6.13-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 11.6 MB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
cc0b812dbb18a809b4a424d06afa48e15a58be673944141b7e28e845c55e32b6
|
|
BLAKE2b-256 checksum How to use checksums |
53b0ecb7bb0943d2246e43d2b40b5810002fe6c9d32acf31a83dc59b973df7bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / higra-0.6.13-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | higra-0.6.13-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 6.1 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
48177fb5c007659814a2de007025f50304828f3a11875d2c63b97c71b945e85f
|
|
BLAKE2b-256 checksum How to use checksums |
75b28e9317a0ce7aa2fd7d1fea304c0f4a818215e0279f10b6fef1a78fc74199
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / higra-0.6.13-cp310-cp310-macosx_10_9_x86_64.whl
| Download URL | higra-0.6.13-cp310-cp310-macosx_10_9_x86_64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.10 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
8a84f4fd09f044a7a49e00e964f8eee619562b3c7310245b7f133190ac7a3604
|
|
BLAKE2b-256 checksum How to use checksums |
6e6a37b6726e1c6da4ae0ea1b29f27fd826f09d8383492fa33bc01a8cfa1e6a0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|