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)
macOS ARM64 is currently only supported through conda conda install higra -c conda-forge
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.10-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a657ed9855a67df8e57c92f8eb7d8ed9136dd76bb747af967de50a2d91ef2d1 |
|
MD5 | 843fcf5a258cdd789e5c20f032dc5e07 |
|
BLAKE2b-256 | 76c664b3dd9be9d735440af9dd5055632b319ed7eb8e0a50a55490cb8be65e09 |
Hashes for higra-0.6.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6ddbee80dafd0e091f31f005e406228b70ab06a80c0cd3c7f5c7aeebdba780f |
|
MD5 | fa0f965d24dcdf3a3acf170c6c6cb9c0 |
|
BLAKE2b-256 | 6fca8e271f53817dbad65a47975e2b96854c4ef1bfec2f513a3ed2653ee024ef |
Hashes for higra-0.6.10-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 669d5951b58adb7ee5693ca97c3c17b1b5bffff51afdcc3115a38344ccb41329 |
|
MD5 | f993da84f6271e71e17bb53fa6b4604a |
|
BLAKE2b-256 | 488c5a3730732c64eb8d3e99d57655361892cf1e73687a8b1260dc02b4b664a7 |
Hashes for higra-0.6.10-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06491d15b88095c9e9216bc938eb91d57cf5050262214d7bf9323b0bfa048e40 |
|
MD5 | 11b0a610291ff27950f5a20054bc0b1b |
|
BLAKE2b-256 | ed33688f1a990654a3f80e66d578f8faaac960d1ea79175226f70aad9e289887 |
Hashes for higra-0.6.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 707f18f1a1adb89719a80adbee7ab21806c5293923b956e6458a62a77f438866 |
|
MD5 | e67acd54ac4a9def196fb744fb40d7be |
|
BLAKE2b-256 | 48c252a9a0505561bb0a984f1dfddb1ec14f073ccf45d8fbe478a2e5736a82ec |
Hashes for higra-0.6.10-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a82a45e016359721fdafbda394c6e6bf8150254bb21dd005790167b048aacb7 |
|
MD5 | df5a1c71e448810003f6ae66013e0ffb |
|
BLAKE2b-256 | 285e2474e3f1ddc63a08a18d7b53ae2ed9d2035586985daf485e91476e5225e3 |
Hashes for higra-0.6.10-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb4f9f71eba4e4a410cd22d5a49f0721f3f1b9185e4d1461e7edf5aba456c8ac |
|
MD5 | 027b8dfc7005e001cade71e86447b5cc |
|
BLAKE2b-256 | 09c9956fc2b7539a64b47ca2588c8ed3a5ec1dac4978d4a2c75496705551f705 |
Hashes for higra-0.6.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d36149a81579965f8082004e93f6b94bd10282cb27fc9208dd0c9e74ef0019d1 |
|
MD5 | e3c17acd45920b927be88c9759be426a |
|
BLAKE2b-256 | b82812c71ac298a1d60d73c144844b602ac4d51acf25ee04e18550f1a00656a0 |
Hashes for higra-0.6.10-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0023a410ebbe26a23db3927acd48260b9b24ea3651212ad16cf12f45af5b90f1 |
|
MD5 | 690bd2e4fdf96e1f23c1cef45f1971fe |
|
BLAKE2b-256 | 8fb47c6779a190a5262a36da7d6b7a30f3c1cb9731f8c392f5cece7263c8ed0d |
Hashes for higra-0.6.10-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff15317adbb708f1509c7441a710c874e4e5d2d97562f02f4d396bbd287a98f5 |
|
MD5 | 02addfe50678f8546095811c8df37a39 |
|
BLAKE2b-256 | dbde2216cf2afa3f63acf7fb6d02504a94587462b429fe167d168b55a00d0466 |
Hashes for higra-0.6.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ff005f988b41b9f33a48c179398870d3233fff349c5c72ade8a304dc9029f69 |
|
MD5 | d9cbcbe5c577ef1cee9b2fce5bcee02c |
|
BLAKE2b-256 | 4354ffc4d9ba9949a65a50856604b41564b13aed15ebc648cebe6f1bda602a92 |
Hashes for higra-0.6.10-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2268106d6f7159da928607eeb4644344df74e440f18959e3c2df02e27a335219 |
|
MD5 | 309115d4814495b64956d5770b112aab |
|
BLAKE2b-256 | c074e9ba1cb623ff3b2adc652dd462fcca17d6be6311fbf2cf86f2629ca606c7 |
Hashes for higra-0.6.10-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7e2dd1bd75ff703aa7b66ae64ac9c50f18c47a4a6c650d7e9908a912802f52e |
|
MD5 | d098b674fb437c93c69712dfd1b60265 |
|
BLAKE2b-256 | 6ef0cf15fda64489762feab01e121cf2cb29578ca5791bcf31edc6826a3f1eec |
Hashes for higra-0.6.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8dea7610936c018b03aaaf35775f123b2548f6ccdb61e05fea7c0052b54a921 |
|
MD5 | 2836604f9c5c35a96b8d09b4cb71eae9 |
|
BLAKE2b-256 | 80937b2efc185f0bb09d7846d345bb4ef2381ec1466ab8395ea6349923bc2fe1 |
Hashes for higra-0.6.10-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 459aa14df0a4edf9c58e42e20805df44720b403818f27764a5a53159c5db2ce0 |
|
MD5 | 26ef86dd09e29e11a00dcec4c5cb647f |
|
BLAKE2b-256 | 48294683da4c328cf22a61927020591bbb398b5643e860a1b85441ff9a99bc4e |