{"id":21164563,"url":"https://github.com/polsys/ennemi","last_synced_at":"2025-03-31T09:07:54.639Z","repository":{"id":42436757,"uuid":"247088713","full_name":"polsys/ennemi","owner":"polsys","description":"Easy Nearest Neighbor Estimation of Mutual Information","archived":false,"fork":false,"pushed_at":"2024-11-13T10:34:07.000Z","size":1918,"stargazers_count":37,"open_issues_count":15,"forks_count":13,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-24T04:04:45.898Z","etag":null,"topics":["entropy","information-theory","mutual-information","python","scientific-computing"],"latest_commit_sha":null,"homepage":"https://polsys.github.io/ennemi/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/polsys.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/support.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-13T14:20:39.000Z","updated_at":"2025-03-19T17:00:45.000Z","dependencies_parsed_at":"2024-06-20T23:27:48.783Z","dependency_job_id":"8d62ab22-cddb-48d6-b4c9-a79c0cee621d","html_url":"https://github.com/polsys/ennemi","commit_stats":{"total_commits":187,"total_committers":2,"mean_commits":93.5,"dds":0.005347593582887722,"last_synced_commit":"cbae2737ca5d5244df94a5a769b4d55a58971bca"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polsys%2Fennemi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polsys%2Fennemi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polsys%2Fennemi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polsys%2Fennemi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/polsys","download_url":"https://codeload.github.com/polsys/ennemi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246443538,"owners_count":20778249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["entropy","information-theory","mutual-information","python","scientific-computing"],"created_at":"2024-11-20T14:07:03.095Z","updated_at":"2025-03-31T09:07:54.599Z","avatar_url":"https://github.com/polsys.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ennemi\n_(Easy Nearest Neighbor Estimation of Mutual Information)_\n\n[![Continuous Integration](https://github.com/polsys/ennemi/workflows/Continuous%20Integration/badge.svg?event=push)](https://github.com/polsys/ennemi/actions)\n[![Integration Tests](https://github.com/polsys/ennemi/workflows/Integration%20Tests/badge.svg)](https://github.com/polsys/ennemi/actions)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=polsys_ennemi\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=polsys_ennemi)\n[![DOI](https://zenodo.org/badge/247088713.svg)](https://zenodo.org/badge/latestdoi/247088713)\n\nThis Python 3 package provides simple methods for estimating mutual information of continuous and discrete variables.\nWith one method call, you can estimate several variable pairs and time lags at once.\nBoth unconditional and conditional MI (including multivariate condition) are supported.\nThe interface is aimed at practical, non-linear correlation analysis.\n\nThe package uses the nearest neighbor methods decscribed in:\n- Kraskov et al. (2004): Estimating mutual information. Physical Review E 69.\n  [doi:10.1103/PhysRevE.69.066138](https://dx.doi.org/10.1103/PhysRevE.69.066138).\n- Frenzel \u0026 Pompe (2007): Partial Mutual Information for Coupling Analysis of\n  Multivariate Time Series. Physical Review Letters 99.\n  [doi:10.1103/PhysRevLett.99.204101](https://dx.doi.org/10.1103/PhysRevLett.99.204101).\n- Ross (2014): Mutual Information between Discrete and Continuous Data Sets.\n  PLoS ONE 9.\n  [doi:10.1371/journal.pone.0087357](https://dx.doi.org/10.1371/journal.pone.0087357).\n\nThe latest source code on GitHub might be less stable than the released version on PyPI.\nYou can see the roadmap of planned additions on the\n[Milestones page](https://github.com/polsys/ennemi/milestones).\nSee also the [support statement](docs/support.md).\nYou can also follow the development by clicking `Watch releases` on the GitHub page.\n\n\n## Getting started\n\nThis package requires Python 3.11 or higher,\nand it is tested to work on the latest versions of Ubuntu, macOS and Windows.\nThe only hard dependencies are reasonably recent versions of NumPy and SciPy;\nPandas is strongly suggested for more enjoyable data analysis.\n\nThis package is available on PyPI:\n```sh\npip install ennemi\n```\n(If your machine has multiple Python installations, you may need to run e.g. `pip3`.)\n\nFor documentation, please see https://polsys.github.io/ennemi.\n\n\n## Building\n\nThe tests depend on pandas, so you need that installed in addition.\nAdditionally, `pytest` and `mypy` are required for building the project.\nAll of these are installed by the \"extras\" syntax of `pip`.\n\nTo install the package in development mode, clone this repository and execute\n```sh\npip install -e .[dev]\n```\nin the repository root folder.\n\nAll methods, including tests, are type annotated and checked with `mypy`.\nThe CI script runs the check automatically on each pushed commit.\nTo run the check yourself, execute\n```sh\npython -m mypy ennemi/ tests/unit tests/integration tests/pandas\n```\nin the repository root (configuration is stored in `mypy.ini` file).\n\nDistribution packages (source package and wheel) are created with the `build` package:\n```sh\npip install build\npython -m build\n```\n\nPlease see also the [contribution guidelines](CONTRIBUTING.md).\n\n\n## Citing\n\nThis work is licensed under the MIT license.\nIn short, you are allowed to use, modify and distribute it as you wish, as long as\nthe original copyright notice is preserved.\nThis software is provided \"as is\", functioning to the extent of passing\nthe unit and integration tests in the `tests` directory.\n\nThis package is archived on Zenodo.\nThe DOI [10.5281/zenodo.3834018](https://doi.org/10.5281/zenodo.3834018)\nalways resolves to the latest version of `ennemi`.\nFor reproducibility, you should cite the exact version of the package you have used.\nTo do so, use the DOI given on the [Releases](https://github.com/polsys/ennemi/releases) page or on Zenodo.\n\nIf you want to cite an article\n(although you should still mention the version number you used), the reference is:\n```\n@article{ennemi,\n  title = {ennemi: Non-linear correlation detection with mutual information},\n  journal = {SoftwareX},\n  volume = {14},\n  pages = {100686},\n  year = {2021},\n  doi = {https://doi.org/10.1016/j.softx.2021.100686},\n  author = {Petri Laarne and Martha A. Zaidan and Tuomo Nieminen}\n}\n```\n\nThis package is maintained by Petri Laarne, and was initially developed at\n[Institute for Atmospheric and Earth System Research (INAR)](https://www.helsinki.fi/en/inar-institute-for-atmospheric-and-earth-system-research),\nUniversity of Helsinki.\nPlease feel free to contact me at `firstname.lastname@helsinki.fi`\nabout any questions or suggestions related to this project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolsys%2Fennemi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpolsys%2Fennemi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolsys%2Fennemi/lists"}