Hierarchical Graph Analysis
Project description
# Higra: Hierarchical Graph Analysis
[![Build Status](https://travis-ci.org/PerretB/Higra.svg?branch=master)](https://travis-ci.org/PerretB/Higra) [![Build status](https://ci.appveyor.com/api/projects/status/5op4qm2cddm7iuj2/branch/master?svg=true)](https://ci.appveyor.com/project/PerretB/higra/branch/master) [![codecov](https://codecov.io/gh/PerretB/Higra/branch/master/graph/badge.svg)](https://codecov.io/gh/PerretB/Higra) [![Documentation Status](https://readthedocs.org/projects/higra/badge/?version=latest)](https://higra.readthedocs.io/en/latest/?badge=latest)
Higra is a C++/Python library for efficient graph analysis with a special focus on hierarchical methods. Some of the main features are:
efficient methods and data structures to handle the dual representation of hierarchical clustering: dendrograms (trees) and ultra-metric distances (saliency maps);
hierarchical clustering algorithms: agglomerative clustering (single-linkage, average-linkage, complete-linkage, or custom rule), quasi-flat zones hierarchy, hierarchical watersheds;
component trees: min and max trees;
various algorithms to manipulate and explore hierarchical clustering: accumulators, filtering/simplification, cluster extraction, partitioning, horizontal and non-horizontal cuts, alignment;
optimization on hierarchies: optimal cuts, energy hierarchies;
algorithms on graphs: accumulators, computation of dissimilarities, partitioning;
assessment: supervised assessment of graph clustering and hierarchical clustering;
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](https://github.com/QuantStack/xtensor) arrays in C++ and [numpy](https://github.com/numpy/numpy) arrays in Python).
## Installation
### Python frontend
The Python frontend can be installed with Pypi:
`bash pip install higra `
Supported systems:
Python 3.4, 3.5, 3.6, 3.7
Linux 64 bits, macOS, Windows 64 bits
### C++ backend
The C++ backend is an header only library. No facilities for system wide installation is currently provided: just copy/past where you need it!
## Demonstration and tutorials
Check the dedicated repository [Higra-Notebooks](https://github.com/PerretB/Higra-Notebooks) for a collection of Jupyter Notebooks dedicated to Higra.
## Build
### With cmake
Requires:
cmake
Python + Numpy
Google Benchmark (optional for benchmarking of the C++ backend)
Commands:
`bash git clone https://github.com/PerretB/Higra.git mkdir build cd build cmake ../Higra/ make `
Sometimes, cmake gets confused when several Python versions are installed on the system. You can specify which version to use with -DPYTHON_EXECUTABLE:FILEPATH=/PATH-TO-PYTHON/python, e.g.
` cmake -DPYTHON_EXECUTABLE:FILEPATH=/anaconda3/bin/python ../Higra/ `
The python package is build in the directory
` build/higra/ `
### With setup.py
The setup.py is a thin wrapper around the cmake script to provide compatibility with python setuptools.
` pip install cmake python setup.py bdist_wheel cd dist pip install higra*.whl `
## Third-party libraries
Higra bundles several third-party libraries (inside the lib folder):
[pybind11](https://github.com/pybind/pybind11) helps to create Python bindings of c++ method and classes - [BSD-style license](https://github.com/pybind/pybind11/blob/master/LICENSE)
[xtensor](https://github.com/QuantStack/xtensor) (with [xtl](https://github.com/QuantStack/xtl), [xsimd](https://github.com/QuantStack/xsimd), and [xtensor-python](https://github.com/QuantStack/xtensor-python) provides numpy like arrays for c++ with seamless integration with Python - all under the [BSD-3-Clause license](https://github.com/QuantStack/xtensor/blob/master/LICENSE)
[Catch2](https://github.com/catchorg/Catch2) is a unit test framework - [Boost Software License 1.0](https://github.com/catchorg/Catch2/blob/master/LICENSE.txt)
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.3.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 263b3b6067facae13548a24f19722a5af556c1d14876e59e0ae0dd3166ec1090 |
|
MD5 | 84544037bfdb7a88be14eaad562f4f34 |
|
BLAKE2b-256 | d553fd2713f9c817e8258873825d0978e5d5cc6437b298ba01bab8cbc645cf80 |
Hashes for higra-0.3.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 16786b480b9589f83439c6a318537850b41c196b6d4942b37992964f3a7619ca |
|
MD5 | 26e2ea10eb867544bd4fbf3b7a6bba5a |
|
BLAKE2b-256 | f5d15f427831936d16cfb0a1810deef474c458ab0861978c28e90ef259aad9f3 |
Hashes for higra-0.3.0-cp37-cp37m-macosx_10_6_intel.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38ac9d54099c75a5191f99344424a3affde3446ad20780c5234658a1a38cf883 |
|
MD5 | 588a0b83731c7d6d5ac4c325a4adaf12 |
|
BLAKE2b-256 | 93d5976fdb9ca0e11ee9ed9acae4dc1f245459d791158438e20de7c749c834d9 |
Hashes for higra-0.3.0-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42da02509db6f73a455921a59f9b4be54cd395b147b1ecf3652c250e13926d03 |
|
MD5 | 5998e552ef001f336cd4906d81bc84da |
|
BLAKE2b-256 | 21ed37a4fbf33bee74592667422daf8c29ce6ce6532370a2829c0b14e125d5a4 |
Hashes for higra-0.3.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 57b4064d75a1d5bec10d0a58ef111dbc01db108fc80183cbc8bac8e0dd9923b2 |
|
MD5 | fac2a791b2bafb8727157f2845f32510 |
|
BLAKE2b-256 | 23b7e292b86191935e8e92bcbdf35dde374d43e5848dc4eb902ae9547c8db389 |
Hashes for higra-0.3.0-cp36-cp36m-macosx_10_6_intel.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | efa7c2fea5a1f2371ffc722bf2c6e0c0a7b3b9ea8e8581148bdd6edbb85e9ef7 |
|
MD5 | bb01c9cae5661b45dadd1f5b8185aaa5 |
|
BLAKE2b-256 | b9b598dcf33d5328dd27e8da179acf75caea6f772a4de018e0415640725ff6a5 |
Hashes for higra-0.3.0-cp35-cp35m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 223b54038931f2cc369c3587eee19bf4c49fffefbcd7a067301d63e61c22545b |
|
MD5 | e094cfc9ff4ee65ef10559878dad64f9 |
|
BLAKE2b-256 | 1a9be685e239113f33519bca43bbec454c906a9ed954131314f2d21978aecfc5 |
Hashes for higra-0.3.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ddb3a1d2f86ce496e5fc24f23a69b58629a302ed63b54866abaa74f90027daa6 |
|
MD5 | 30ed75454225e7973c3587e1b842f667 |
|
BLAKE2b-256 | e01b81cc75d8bcd326b1ef383088a27c1143c8ed23d1df79d31fb28907b288bd |
Hashes for higra-0.3.0-cp35-cp35m-macosx_10_6_intel.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c7fc4fcdc4e22e4642d8b0231a99a3187b4c4b45c7e08cd94360c575c3787b5 |
|
MD5 | 8d922b4b3fbe8bc050e83b4671124a82 |
|
BLAKE2b-256 | 0fef49e8f4fd7010070821cc1c37667a5d3d01a494516441c7b077193e2d9273 |
Hashes for higra-0.3.0-cp34-cp34m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6042206bc196289c6bc0a9e31521c180e04a5833e1c2b687618254621edf16b |
|
MD5 | e3ff3bd6290c74db82b5268a4e1749db |
|
BLAKE2b-256 | afdd734af9bfde0ac29f5b2a5975933ec02b709f5600c900838ae54f8e73c732 |
Hashes for higra-0.3.0-cp34-cp34m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b655df1a2ca42b3c2f98fa5d56118a4b4a1f088adf60dc1bf265c35feda23df0 |
|
MD5 | 16d4b09644af2d9466f70d743c1c0383 |
|
BLAKE2b-256 | 98967441f1d19e9f66016261763193c47c2c014827e01e826f68bc9f8627b39d |
Hashes for higra-0.3.0-cp34-cp34m-macosx_10_6_intel.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 852f09afaa4168252df088220f90b2236dbc0b29f99e9848ba76405b61a4544c |
|
MD5 | a6e8c31065c7e99750bed79076b485a4 |
|
BLAKE2b-256 | d1a70ba7f06085eb6a50580e63156998891983c46b84e313fefc8dbfd5ab0047 |