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.4, 3.5, 3.6, 3.7
- Linux 64 bits, macOS, Windows 64 bits
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.4.5-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | baae8d2c696a793498584105a57591be1be6915ea7951cb799d010333b732deb |
|
MD5 | c83ac7a464e6e3d42435e11e5de2f713 |
|
BLAKE2b-256 | 8572b0e73ec2c952d0908fc52b7e43dfd3a98682fd21455d570502a57df0593e |
Hashes for higra-0.4.5-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54adac6d268117c82c27d0f161661471d0015b583893dd988d29b6c529ad1352 |
|
MD5 | a4695cb423d31d06708947a06bd26509 |
|
BLAKE2b-256 | 64c3e8b6526177aaaa22dd7e606d41ff87028ff119900765feb16767b8cfc29f |
Hashes for higra-0.4.5-cp37-cp37m-macosx_10_6_intel.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1823c8e1a221d3fa94d17a2641abf3e70a0c3e77674e0f60babbab4f1cc46dd8 |
|
MD5 | 819d12a802a3cfd926ac29de9105efac |
|
BLAKE2b-256 | e64e7d5177ce64587ee80ed0d741f05c19372c297f938b76d276c0969a4a94e0 |
Hashes for higra-0.4.5-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a20d813fd7dbae9513a60ebaba35df536bbaf3fbe3eeed921b8f55d1f3d8c1e |
|
MD5 | 96a0b05117f5be6acedcc210b13c5710 |
|
BLAKE2b-256 | e67a0d7b33909678a45724fe40c182d030c078225f7fda60111fad7af3f4fd88 |
Hashes for higra-0.4.5-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0842923c1efba9636d885114b3b25d3bbbb0fa4eeac2540d3fa67d514c628f0c |
|
MD5 | 17592819c1a348f7f90712d6e9d3041b |
|
BLAKE2b-256 | c3f04c29adfd6526621a5bec41874ef1185b147b2d0f1f63f6cfc54f55f22bc1 |
Hashes for higra-0.4.5-cp36-cp36m-macosx_10_6_intel.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65a78c4307bd0aaebff72244d3672f831f6a4dbf6c439c9206946e08aee1bfa9 |
|
MD5 | dc34690e7303448eaf16cffe6664f365 |
|
BLAKE2b-256 | b400fde424b09b88be17f243402c583853b13f72ec1899043f370801c12bbb43 |
Hashes for higra-0.4.5-cp35-cp35m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97a7f47495487973e17e677da6cc9b5b51110df231d09a82694505e342f605e2 |
|
MD5 | 05839b3f8ad728d43db41d7ead566498 |
|
BLAKE2b-256 | 15a629c4226633d8db86e8883de1d314c4142b1c562c9b467d799bd2e062d149 |
Hashes for higra-0.4.5-cp35-cp35m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b22b0e395af0967031bb59a0a40eb165994f8db9558c21d3d66fe82060b6837 |
|
MD5 | 7eafc4de36b0c5011a34cf0c81cad565 |
|
BLAKE2b-256 | 247e810db885cf6b51f18693e28d0231198786a42ea1dbe24eaf0e148fbf42c9 |
Hashes for higra-0.4.5-cp35-cp35m-macosx_10_6_intel.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d26daa05535098ed92ea91e025007cc9e8ac0bf34c3469a7ac4b86d40a03960 |
|
MD5 | 3678adefe7547a874e71f9639ff62898 |
|
BLAKE2b-256 | 24814dbd153e104c3c15184e4fb017f7b5267290b1afc21bd9f09149c862afb5 |
Hashes for higra-0.4.5-cp34-cp34m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ecfcc0e33c8b9f7ee4d0a674eb1d59ac5042e98b8fb910982b04ec1e1c4e6bb |
|
MD5 | 97df7d705e4a2f303ee2d0f9476d2a26 |
|
BLAKE2b-256 | 73ec8add79c2d7ba360d027cd8629eabd2d4bbd2ded9f3037ffc1aeaaf18d53a |
Hashes for higra-0.4.5-cp34-cp34m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 26d474155122e85f1c5cdeacc00c48e4dfc259b5aad5a5d70ce266901913b638 |
|
MD5 | 01580e79e0fd1d4d8c3df53c0a5f32bf |
|
BLAKE2b-256 | 84dad885d1fe0bb55d7f28d70d355eb5820a502e8e37f8787f8045eb386f0a35 |
Hashes for higra-0.4.5-cp34-cp34m-macosx_10_6_intel.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 080542c6e06066f140877fb97ecbc7c86538504211aabb1367e484584fdde6a3 |
|
MD5 | 0a9cc3167d9640980d3f00c40d10250a |
|
BLAKE2b-256 | be8a06c5d5ef6444eae73ee625b9f67bb0a96a946a94c2d1381e541b57c053ae |