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.7, 3.8, 3.9, 3.10
- 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.5-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 699c072c152a4d6b2a2546250a388d567b12d4a3a56b4d9f6c37dd0f81335716 |
|
MD5 | 6e596c1c496728103c8c7624bec7d61f |
|
BLAKE2b-256 | 8f6de4f1ffa2ea0f06278cac4a63c2f26fa935ec9fc74c4c50b6615a3d8accb5 |
Hashes for higra-0.6.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d91ae3322af9361a0a2d80bcabbbd6dc24006f553367e1915b8aa15dd426e841 |
|
MD5 | 25ec7e5b6d846a6c1ca853799963269c |
|
BLAKE2b-256 | af525e9ef038470fad66e0eb7d586272867d1b30f8a7b8e1896e85299250183e |
Hashes for higra-0.6.5-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f292948e4fbfc96cf622b9fbfbca540e7b8993a8b38bec7766fbe25c0f2c8c5d |
|
MD5 | b488498f73e304f55e077f6ed4efebd7 |
|
BLAKE2b-256 | 6c939835c69027aee4a3142b813186409902e3a21a97c1dfe782d0c8c3e4da1e |
Hashes for higra-0.6.5-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eaedbde7ee7417427b4a1ec798bd7cbd0e12a6ba1e4cfb87a4b7ad0c4454c987 |
|
MD5 | 5e0faa52b582b78962ee104823605273 |
|
BLAKE2b-256 | 58307f2bbcd2770a88ea6107666e02a47775a29e75d0a5e006d1fcd440a56f34 |
Hashes for higra-0.6.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f3722ae803edddea6403cc591accc189c79b5c4aa844bb4e2ebdfbdb819c41ea |
|
MD5 | 2d5b955e4ae2f10c056cfcfc1a6b66af |
|
BLAKE2b-256 | 34c8c3fd3f82870e79a8b4b9ab931e8c2c02648fde7aa8cdac030b85aab3c72a |
Hashes for higra-0.6.5-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bdb5d072c4037c4b0441deb0abe1d88b314969155259c5c31703a30b79677422 |
|
MD5 | d319149c72e151ad1c947b0906ed8628 |
|
BLAKE2b-256 | 23a60ef31e4cde25a77316155440ce0de343021f9251152152d5f16dd2fc7c5a |
Hashes for higra-0.6.5-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d9e2309a1166560a92a6342d3886da53612066c113e611c8ac6e0f04747ce2b |
|
MD5 | 807b3372e20bcfb243ade9314022468e |
|
BLAKE2b-256 | e80b688a99ca349ecdd989f75b12f36ec95e790192c2c9c156f7b93926e6c298 |
Hashes for higra-0.6.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 334f364998fdbfa90d42d30c10300367a0ba63521ac55a217c94d42b8ed100dd |
|
MD5 | 9da62af28d4672c41b3322842e726ea9 |
|
BLAKE2b-256 | 1574e3ed9cd69ca4d13b434bb013db0a9982f985d5ad5d5d36513eb911ed7b8c |
Hashes for higra-0.6.5-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5790ed51658bdcd5a91c53ea1252e7554ab9e0a09902c6cf49325e55fef92abd |
|
MD5 | b29fd5d74a94b51792727b4dbd64c064 |
|
BLAKE2b-256 | 3c7e11a7c8bbb90ea71cc25e29accfdf663b50ff5562657a8a76dbafbc5746aa |
Hashes for higra-0.6.5-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9fed89e22e57b0e744b03fe8e92f0025b84d66f2c22b041a568aca9ac4de5c3c |
|
MD5 | b09c6d3c0c3b35b02f4e611bf4d082fc |
|
BLAKE2b-256 | f1284cebe9dbaee19a3d7e39318a71344ee7cce7d8c311ad77f76ed49b5c28da |
Hashes for higra-0.6.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54565ea8e1e30752ed0fe52a24b1e17cf5ab19399e15e7cb20b686268c50179c |
|
MD5 | f87816244afb3ad9ec8d2946032d7414 |
|
BLAKE2b-256 | 9db10776e35c4ffc305708f2e4399287759a94a644d609cb6096a812a5b8b0b8 |
Hashes for higra-0.6.5-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b0fa9b8b194424953125fed27c83b75d1aefd2b1f1c82706f4e15c8347cf484 |
|
MD5 | 1430fc45a7e0befb490116f55386f710 |
|
BLAKE2b-256 | 6dcd2a2e8ae01da89b3f1b94de34da4e1ab47083659ee7c75ba25c894fe1689e |