higra


Namehigra JSON
Version 0.6.2 PyPI version JSON
download
home_pagehttps://github.com/higra/Higra
SummaryHierarchical Graph Analysis
upload_time2021-01-13 19:55:40
maintainer
docs_urlNone
authorBenjamin Perret
requires_python
licenseCeCILL-B
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            

# Higra: Hierarchical Graph Analysis

[![Build Status](https://travis-ci.com/higra/Higra.svg?branch=master)](https://travis-ci.com/higra/Higra) 
[![Build status](https://ci.appveyor.com/api/projects/status/oo0v2uepcxihvwno?svg=true)](https://ci.appveyor.com/project/PerretB/higra-21ed3)
[![codecov](https://codecov.io/gh/higra/Higra/branch/master/graph/badge.svg)](https://codecov.io/gh/higra/Higra)
[![Documentation Status](https://readthedocs.org/projects/higra/badge/?version=latest)](https://higra.readthedocs.io/en/stable/?badge=stable)

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](https://github.com/QuantStack/xtensor) arrays in C++ and [numpy](https://github.com/numpy/numpy) arrays in Python).

## Installation

The Python package can be installed with Pypi:

```bash
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](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads))


## Documentation

[https://higra.readthedocs.io/](https://higra.readthedocs.io/)

### Demonstration and tutorials

A collection of demonstration notebooks is available in the [documentation](https://higra.readthedocs.io/en/stable/notebooks.html). 
Notebooks are stored in a dedicated repository [Higra-Notebooks](https://github.com/higra/Higra-Notebooks).

### Code samples

This example demonstrates the construction of a single-linkage hierarchical clustering and its simplification by a cluster size criterion.

[![Example on clustering](doc/source/fig/example_graph_filtering.png)](https://github.com/higra/Higra-Notebooks/blob/master/Illustrations%20of%20SoftwareX%202019%20article.ipynb)

This example demonstrates the use of hierarchical clustering for image filtering.

[![Example on image filtering](doc/source/fig/example_image_filtering.png)](https://github.com/higra/Higra-Notebooks/blob/master/Illustrations%20of%20SoftwareX%202019%20article.ipynb)

## 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](https://github.com/higra/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](http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt) 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](http://www.sciencedirect.com/science/article/pii/S235271101930247X), SoftwareX, Volume 10, 2019. DOI: 10.1016/j.softx.2019.100335

<details> 
 <summary><b>Bibtex</b></summary>

    @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",
     }

</details>



## 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++ methods 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)





            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/higra/Higra",
    "name": "higra",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "",
    "author": "Benjamin Perret",
    "author_email": "benjamin.perret@esiee.fr",
    "download_url": "",
    "platform": "",
    "description": "\n\n# Higra: Hierarchical Graph Analysis\n\n[![Build Status](https://travis-ci.com/higra/Higra.svg?branch=master)](https://travis-ci.com/higra/Higra) \n[![Build status](https://ci.appveyor.com/api/projects/status/oo0v2uepcxihvwno?svg=true)](https://ci.appveyor.com/project/PerretB/higra-21ed3)\n[![codecov](https://codecov.io/gh/higra/Higra/branch/master/graph/badge.svg)](https://codecov.io/gh/higra/Higra)\n[![Documentation Status](https://readthedocs.org/projects/higra/badge/?version=latest)](https://higra.readthedocs.io/en/stable/?badge=stable)\n\nHigra is a C++/Python library for efficient sparse graph analysis with a special focus on hierarchical methods. Some of the main features are:\n\n- efficient methods and data structures to handle the dual representations of hierarchical clustering: trees (dendrograms) and saliency maps (ultrametric distances);\n- 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;\n- component trees: min and max trees;\n- manipulate and explore hierarchies:  simplification, accumulators, cluster extraction, various attributes (size, volume, dynamics, perimeter, compactness, moments, etc.), horizontal and non-horizontal cuts, hierarchies alignment;\n- optimization on hierarchies: optimal cuts, energy hierarchies;\n- algorithms on graphs: accumulators, vertices and clusters dissimilarities, region adjacency graphs, minimum spanning trees and forests, watershed cuts;\n- assessment: supervised assessment of graph clusterings and hierarchical clusterings;\n- image toolbox: special methods for grid graphs, tree of shapes, hierarchical clustering methods dedicated to image analysis, optimization of Mumford-Shah energy.\n\nHigra 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).\n\n## Installation\n\nThe Python package can be installed with Pypi:\n\n```bash\npip install higra\n```\n\nSupported systems: \n\n - Python 3.6, 3.7, 3.8, 3.9\n - Linux 64 bits, macOS, Windows 64 bits (requires [Visual C++ Redistributable for Visual Studio 2015](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads))\n\n\n## Documentation\n\n[https://higra.readthedocs.io/](https://higra.readthedocs.io/)\n\n### Demonstration and tutorials\n\nA collection of demonstration notebooks is available in the [documentation](https://higra.readthedocs.io/en/stable/notebooks.html). \nNotebooks are stored in a dedicated repository [Higra-Notebooks](https://github.com/higra/Higra-Notebooks).\n\n### Code samples\n\nThis example demonstrates the construction of a single-linkage hierarchical clustering and its simplification by a cluster size criterion.\n\n[![Example on clustering](doc/source/fig/example_graph_filtering.png)](https://github.com/higra/Higra-Notebooks/blob/master/Illustrations%20of%20SoftwareX%202019%20article.ipynb)\n\nThis example demonstrates the use of hierarchical clustering for image filtering.\n\n[![Example on image filtering](doc/source/fig/example_image_filtering.png)](https://github.com/higra/Higra-Notebooks/blob/master/Illustrations%20of%20SoftwareX%202019%20article.ipynb)\n\n## Developing C++ extensions\n\nWhile Higra provides many vectorized operators to implement algorithms efficiently in Python, it is possible that\nsome operations cannot be done efficiently in Python. \nIn such case, the [Higra-cppextension-cookiecutter](https://github.com/higra/Higra-cppextension-cookiecutter) enables\nto easily setup and generate c++ extension using Higra with Python bindings.\n\n## License and how-to cite\n\nThe license [Cecill-B](http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt) is fully compatible with BSD-like licenses (BSD, X11, MIT) with an attribution requirement.\n\nThe recommended way to give attribution is by citing the following presentation article:\n\n>  B. Perret, G. Chierchia, J. Cousty, S.J. F. Guimar\u00e3es, Y. Kenmochi, L. Najman, [Higra: Hierarchical Graph Analysis](http://www.sciencedirect.com/science/article/pii/S235271101930247X), SoftwareX, Volume 10, 2019. DOI: 10.1016/j.softx.2019.100335\n\n<details> \n <summary><b>Bibtex</b></summary>\n\n    @article{PCCGKN:softwarex2019,\n         title = \"Higra: Hierarchical Graph Analysis\",\n         journal = \"SoftwareX\",\n         volume = \"10\",\n         pages = \"1--6\",\n         year = \"2019\",\n         issn = \"2352-7110\",\n         doi = \"10.1016/j.softx.2019.100335\",\n         author = \"B. Perret and G. Chierchia and J. Cousty and S.J. F. Guimar\\~{a}es and Y. Kenmochi and L. Najman\",\n     }\n\n</details>\n\n\n\n## Third-party libraries\n\nHigra bundles several third-party libraries (inside the `lib` folder): \n\n- [pybind11](https://github.com/pybind/pybind11) helps to create Python bindings of c++ methods and classes - [BSD-style license](https://github.com/pybind/pybind11/blob/master/LICENSE)\n- [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)\n- [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)\n\n\n\n\n",
    "bugtrack_url": null,
    "license": "CeCILL-B",
    "summary": "Hierarchical Graph Analysis",
    "version": "0.6.2",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "7f90206b38a3b7fe64ba3470ef613477",
                "sha256": "95858351755c9c7a5cf02bb3e07d48faa9fda151fcceec33747833e10d89dda1"
            },
            "downloads": -1,
            "filename": "higra-0.6.2-cp36-cp36m-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7f90206b38a3b7fe64ba3470ef613477",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 8590570,
            "upload_time": "2021-01-13T19:55:40",
            "upload_time_iso_8601": "2021-01-13T19:55:40.035865Z",
            "url": "https://files.pythonhosted.org/packages/00/74/89dae9944ff4b0b452c78e37bae8f9847d1ae7e70932f1702353d4ad5901/higra-0.6.2-cp36-cp36m-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "205ba20f4091c6f16e2d513211764630",
                "sha256": "cb32dad12779b22aebb659d7f710a14ff37f9bc0b5829cfceaf3cc5172ebc7f1"
            },
            "downloads": -1,
            "filename": "higra-0.6.2-cp36-cp36m-manylinux2010_x86_64.whl",
            "has_sig": false,
            "md5_digest": "205ba20f4091c6f16e2d513211764630",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 10520134,
            "upload_time": "2021-01-13T19:31:06",
            "upload_time_iso_8601": "2021-01-13T19:31:06.037677Z",
            "url": "https://files.pythonhosted.org/packages/12/91/d90d82c1cee0d5f9df74b9fbd16e02b70d258fa169a8d99191b85946a0de/higra-0.6.2-cp36-cp36m-manylinux2010_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "d74a332126cd0d52954bac34a8fab06a",
                "sha256": "e2af1903dbab320698d9f3397abc7cbe72132f380f5f7a226c193741f552d2ef"
            },
            "downloads": -1,
            "filename": "higra-0.6.2-cp36-cp36m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "d74a332126cd0d52954bac34a8fab06a",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 5222947,
            "upload_time": "2021-01-13T19:43:09",
            "upload_time_iso_8601": "2021-01-13T19:43:09.435468Z",
            "url": "https://files.pythonhosted.org/packages/52/5b/7526e1e18865bb1bab527861ccd746d8b6882195450cdc07d6e679c336ee/higra-0.6.2-cp36-cp36m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "abd364a1c85a5941cd685aed48318f65",
                "sha256": "d1ac2d7816e03217a720e50510b33eb25bcadb21b4bcad44b355e53c45b887d3"
            },
            "downloads": -1,
            "filename": "higra-0.6.2-cp37-cp37m-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "abd364a1c85a5941cd685aed48318f65",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 8590631,
            "upload_time": "2021-01-13T19:57:27",
            "upload_time_iso_8601": "2021-01-13T19:57:27.839415Z",
            "url": "https://files.pythonhosted.org/packages/07/28/fc0880fc62d2d7261c584e42bb67a12dccb72f6c03fa988c0c5d1a553dbe/higra-0.6.2-cp37-cp37m-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "cbcc83fbdff44cf581bd4e9a86251420",
                "sha256": "2c1d779f2e84a1256061a3965e4164a209a8b165413e21f8d24ef7c2735a299e"
            },
            "downloads": -1,
            "filename": "higra-0.6.2-cp37-cp37m-manylinux2010_x86_64.whl",
            "has_sig": false,
            "md5_digest": "cbcc83fbdff44cf581bd4e9a86251420",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 10518127,
            "upload_time": "2021-01-13T19:35:18",
            "upload_time_iso_8601": "2021-01-13T19:35:18.288269Z",
            "url": "https://files.pythonhosted.org/packages/c5/88/0e7edf66db5d6f40ddcfe480d824ce245b8bc95976f490dd46a2c52d035f/higra-0.6.2-cp37-cp37m-manylinux2010_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "0df8ba89352d54102b57b6340e136596",
                "sha256": "16c727fbeb9616e223c833e46be155b2f8a7bd76ff48341c7184503ad74af116"
            },
            "downloads": -1,
            "filename": "higra-0.6.2-cp37-cp37m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "0df8ba89352d54102b57b6340e136596",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 5223474,
            "upload_time": "2021-01-13T20:04:46",
            "upload_time_iso_8601": "2021-01-13T20:04:46.529322Z",
            "url": "https://files.pythonhosted.org/packages/82/c8/ca1c51d55d96cf61197fd58bb694cf39721ef950f3671af90922a2072205/higra-0.6.2-cp37-cp37m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "c2a1998b8566db6f82e5de84db23ba61",
                "sha256": "55c2553c01ca1ebdbbdf494fad3af0b800a930c5edc5512e7f39acfc9983fb1a"
            },
            "downloads": -1,
            "filename": "higra-0.6.2-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c2a1998b8566db6f82e5de84db23ba61",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 8636841,
            "upload_time": "2021-01-13T19:58:53",
            "upload_time_iso_8601": "2021-01-13T19:58:53.504162Z",
            "url": "https://files.pythonhosted.org/packages/88/b1/97338a387785df298690901f3f89d8eeda29aaef7796075abd0a070e7789/higra-0.6.2-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "359523d09ba7f7f0d7e30a8132253558",
                "sha256": "1b91a6150e0486056bac1aa97b3957d0dbd7a3578a7aa89409e14fef605a4280"
            },
            "downloads": -1,
            "filename": "higra-0.6.2-cp38-cp38-manylinux2010_x86_64.whl",
            "has_sig": false,
            "md5_digest": "359523d09ba7f7f0d7e30a8132253558",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 10505899,
            "upload_time": "2021-01-13T19:37:17",
            "upload_time_iso_8601": "2021-01-13T19:37:17.641523Z",
            "url": "https://files.pythonhosted.org/packages/2e/10/1e89ba156b2327503585faac571af343d0618c70bfcb956baaa2ffb06285/higra-0.6.2-cp38-cp38-manylinux2010_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "4041597b5baed8c46f51dd5ab65bff94",
                "sha256": "338a896b9678cd4a7777d081eae09bd443c8a86bbfb460b27dc99dca5ebb61c3"
            },
            "downloads": -1,
            "filename": "higra-0.6.2-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4041597b5baed8c46f51dd5ab65bff94",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 8637129,
            "upload_time": "2021-01-13T20:09:27",
            "upload_time_iso_8601": "2021-01-13T20:09:27.487938Z",
            "url": "https://files.pythonhosted.org/packages/c6/3d/eab4943a34cba7092365e1787d24c5ee64d5a07125d564000798c039dab1/higra-0.6.2-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "7d6f3d2676d01af3047ddc33d18fd302",
                "sha256": "17bb45c4aba81adbcc90d2f74a24288c66bdeed232b76487a87cc8eebc93a8ca"
            },
            "downloads": -1,
            "filename": "higra-0.6.2-cp39-cp39-manylinux2010_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7d6f3d2676d01af3047ddc33d18fd302",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 10492814,
            "upload_time": "2021-01-13T19:54:06",
            "upload_time_iso_8601": "2021-01-13T19:54:06.904752Z",
            "url": "https://files.pythonhosted.org/packages/dc/f3/9f4d53939ffda9d6bbcffdf7bea4dd83d3b8b3ef176597ae15e5cd308c63/higra-0.6.2-cp39-cp39-manylinux2010_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2021-01-13 19:55:40",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": null,
    "github_project": "higra",
    "error": "Could not fetch GitHub repository",
    "lcname": "higra"
}
        
Elapsed time: 0.18310s