Git Product home page Git Product logo

ennemi's Introduction

ennemi

(Easy Nearest Neighbor Estimation of Mutual Information)

Continuous Integration Integration Tests Coverage DOI

This Python 3 package provides simple methods for estimating mutual information of continuous variables. With one method call, you can estimate several variable pairs and time lags at once. Both unconditional and conditional MI (including multivariate condition) are supported. The interface is aimed at non-linear correlation analysis.

The package uses the nearest neighbor methods decscribed in:

NOTE: The package is beta quality. We are not planning major changes to the API, but breakages are still possible. The latest source code on GitHub might be more unstable than the released version on PyPI. You can see the roadmap of planned additions on the Milestones page.

Getting started

This package requires Python 3.6 or higher, and it is tested to work on the latest versions of Ubuntu, macOS and Windows. The only hard dependencies are reasonably recent versions of NumPy and SciPy; Pandas is strongly suggested for more enjoyable data analysis.

This package is available on PyPI:

pip install ennemi

(If your machine has multiple Python installations, you may need to run e.g. pip3.)

For documentation, please see https://polsys.github.io/ennemi.

Building

The tests depend on pandas, so you need that installed in addition. Additionally, pytest and mypy are required for building the project. All of these are installed by the "extras" syntax of pip.

To install the package in development mode, clone this repository and execute

pip install -e .[dev]

in the repository root folder.

All methods, including tests, are type annotated and checked with mypy. The CI script runs the check automatically on each pushed commit. To run the check yourself, execute

python -m mypy ennemi/ tests/unit tests/integration

in the repository root (configuration is stored in mypy.ini file).

Please see also the contribution guidelines.

Citing

This work is licensed under the MIT license. In short, you are allowed to use, modify and distribute it as you wish, as long as the original copyright notice is preserved. This software is provided "as is", functioning to the extent of passing the unit and integration tests in the tests directory.

This package is archived on Zenodo. The DOI 10.5281/zenodo.3834018 always resolves to the latest version of ennemi. For reproducibility, you should cite the exact version of the package you have used. To do so, use the DOI given on the Releases page or on Zenodo.

In the future, a journal article may become the canonical reference for this package. You should still also cite the package version you have used.

This package is maintained by Petri Laarne at Institute for Atmospheric and Earth System Research (INAR), University of Helsinki. Please feel free to contact me at [email protected] about any questions or suggestions related to this project.

ennemi's People

Contributors

polsys avatar morrme avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.