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.6, 3.7, 3.8, 3.9
- 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.3-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 35e8fe9dfe837f2ea3ebff113e5641085c313e8d997072a27b4410ff39343dba |
|
MD5 | e00ba602b7a84c7daf9324eb0aedd370 |
|
BLAKE2b-256 | 7d48e1b901441bffbc2279bae7038111d149034aac84eb196c0e73668a4476c4 |
Hashes for higra-0.6.3-cp39-cp39-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6616acb7a918082c555fa1ecb16e0334b638037012c50d0df8c26ce9ac6fe60e |
|
MD5 | 5047659da21c174cd66e2796933b0196 |
|
BLAKE2b-256 | 5f624792156c0797c12d4c3a99df5c5c236b09cfe62663b4adb2b347657193f9 |
Hashes for higra-0.6.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5272ada58d44600244fa08ccc174517b7d1d7b2598f3ee350e14cabff9b2c075 |
|
MD5 | 078fce2e9da3ef52e663e4e186cf4ea2 |
|
BLAKE2b-256 | 1bf755bf0df3b33927e0155651d0e8b690f78bedf6b9d28efdd0b955b2d4fdb5 |
Hashes for higra-0.6.3-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6a6aecd53aa9658220aed954bb189663d61a4138e90323080cc504376a92865c |
|
MD5 | 14264125633958427dedd59589177375 |
|
BLAKE2b-256 | 9b806368974e4df26d76548956126308646a649e255f6baff35f410ae565dc85 |
Hashes for higra-0.6.3-cp38-cp38-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6aac8e850deb3ae35fe6ed2dcd7a5d718af528d037760f2c17aa3b047177a960 |
|
MD5 | a7a796f1be5539a941af6df90c1dac38 |
|
BLAKE2b-256 | 98b30fb5bafd14f8be3b3029f2d73a19637b35397be18412f59ba4065b195df5 |
Hashes for higra-0.6.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56831f75c1440972478ebb2c3554a7a68cc3d26ecbb27baa538e81ca57aeb2b1 |
|
MD5 | 318031e265250d23400ab57188128652 |
|
BLAKE2b-256 | 7d9a108b741e09dfb8e294ef79a75d95107bd7a9fb195b0a6d6c2822c725e9cf |
Hashes for higra-0.6.3-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 25ed08fb39b4c269e10ad421f97d956c509b5b384fc01c5d338c3b5588f9b74f |
|
MD5 | 5f05208de6832d64efd1d4be423ce85a |
|
BLAKE2b-256 | df072c1f1ed5914e6747f577e9b7c9db424b6a66de83aac211678f6bc91d6ce7 |
Hashes for higra-0.6.3-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2add9d971e57d50bd34552e326d73e283b636f920acf5d9db278119dc3bd4ba0 |
|
MD5 | f2a7948f03f841e7269a720676690f03 |
|
BLAKE2b-256 | 5fb90473fc05a780ac55420628f37ba6e51221e20f24ebfebe46eebfff2976ab |
Hashes for higra-0.6.3-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4292529782d9e8c2de747275bc927231aeed9f1bf5a95a711f0f043a191415bc |
|
MD5 | 142db8c629f3f3b169e74145164c2bf0 |
|
BLAKE2b-256 | 31d9f61a77dfe30b85ae5a6161250438f4d94d0068e7e608981e10acf0efa04f |
Hashes for higra-0.6.3-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb59c54c6bde6b15c73b8ae8cccd8e2e2a1917bb0b6b9778ea0e8ad0e9f84cca |
|
MD5 | 4a8d3543cb3486bee71b79cbcea737d7 |
|
BLAKE2b-256 | 629493b2d0fb9479ca6cc1e91bdc5847438c7d73ed521fac74a87fdc7c749035 |
Hashes for higra-0.6.3-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9fa3fda993f4bfa56c848fbdc7b600045d82037a6e0542b8faa46bb61403c62 |
|
MD5 | 09d39750d3991ef1471d7a0225e6b2e3 |
|
BLAKE2b-256 | d84e08fc2ec08a9c498b09f90dc72d3e536ed87632ea578dbc4e2acf63f2d9a1 |