infomeasure is a project for information-theoretic measures and estimators. It computes entropy, joint and conditional entropy, cross-entropy, mutual information, conditional mutual information, transfer entropy, conditional transfer entropy, and the Kullback-Leibler and Jensen-Shannon divergences, using discrete, kernel, ordinal and nearest-neighbour estimation.
The same estimator model is implemented twice.
- Python, the reference package, for notebooks, scripts, teaching, statistical tests and composite measures. Repository on GitHub, package on PyPI, docs on Read the Docs.
- Rust, for performance-critical code, portable binaries and embedding in services. Source on Codeberg, crate on crates.io, docs on docs.rs.
Numerical parity between the two is checked continuously.
Citation
C. M. Büth et al. infomeasure, information-theoretic measures and estimators. Scientific Reports (2025). DOI 10.1038/s41598-025-14053-5.
Release archive on Zenodo, machine-readable citation in the CITATION.cff.
Community
Contributions are welcome. See CONTRIBUTING.md and the Code of Conduct.
Contributions and acknowledgements
Carlson Moses Büth developed the Python infomeasure implementation, including design, coding, and validation. Kishor Acharya and Massimiliano Zanin conceptualised the project, guided the implementation, and contributed to validation and testing. All authors collaborated on the development of demos and applications, and all authors reviewed and approved the initial manuscript.
- Kishor Acharya, ORCID 0000-0003-3542-6119
- Massimiliano Zanin, ORCID 0000-0002-5839-0393
Carlson Moses Büth develops the Rust implementation on his own. Both collaborators provide guidance across the project as a whole.
Contributions are welcome. Beyond the authors above, others have contributed to the project, and the Python repository and the Rust repository record their contributions and the project history.
License
MIT OR Apache-2.0.