Skip to content

Native MI estimators + minor fixes#48

Merged
joshuabmoore merged 6 commits into
mainfrom
joshuabmoore-dev3
Jun 10, 2026
Merged

Native MI estimators + minor fixes#48
joshuabmoore merged 6 commits into
mainfrom
joshuabmoore-dev3

Conversation

@joshuabmoore

@joshuabmoore joshuabmoore commented Jun 10, 2026

Copy link
Copy Markdown
Collaborator
  • Fixed minor typo in README (pyhctsa.distribute instead of pyhctsa.distributed)
  • Fixed minor typo in the in the information.yaml configuration file.
  • Several features which return errors as strings (in the case of critical failure) have been updated to return np.nan instead.
  • Dropped the jpype1 and JIDT dependencies (see validation tests below) due to inefficiencies with the Python-Java interface. JIDT functions located in pyhctsa/toolboxes/infodynamics-dist have been replaced with native python ports.
  • Changes to logging such that only critical warnings are shown to the user. The user can manually set the logging level if they wish to receive more information.
  • Updated return values to be np.nan for certain function which return errors as strings.
  • Added new infotheory toolbox in pyhctsa/toolboxes containing the ported mutual information functions for the Gaussian, Kraskov1 and Kraskov2 estimators. Dropped kernel estimator as it was not used in the original hctsa feature set.
  • Updated README and docs to reflect the removal of JIDT/Java.
  • Updated requirements.txt and pyproject.toml to reflect dropping of jpype1 dep.

Validation of Gaussian, Kraskov1, and Kraskov2 MI estimators

To verify the consistency between the original JIDT-implemented estimators and the proposed native Python implementations, outputs for the three estimators (Gaussian, Kraskov1, Kraskov2) were compared on the empirical1000 dataset. For each of the 1000 time series instances, 264 features were computed across several master operations (which themselves rely on the mutual information estimators e.g., automutual_info_stats_*). Across the 264 features (spanning all three estimators), all were found to have pearson r ~ 1, and MAE at or below machine precision, confirming consistency between implementations.

Comparison between JIDT and native Python port results:
java_versus_javaless_results.csv
Raw results:
java_results.txt
javaless_results.txt

@joshuabmoore joshuabmoore added the enhancement New feature or request label Jun 10, 2026
@joshuabmoore joshuabmoore changed the title Joshuabmoore dev3 Native MI estimators + minor fixes Jun 10, 2026
@joshuabmoore joshuabmoore marked this pull request as ready for review June 10, 2026 20:38
@joshuabmoore joshuabmoore merged commit e905563 into main Jun 10, 2026
26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant