CMI Estimators - pwollstadt/IDTxl GitHub Wiki

The choice of the CMI estimator is of primary importance and the estimator must be specified in the analysis settings dictionary.

Different CMI estimators are available for discrete data, jointly Gaussian continuous data, and non-linear continuous data. For non-linear continuous data, two alternatives are available: a multithreaded Java-implementation (JidtKraskovCMI) and an OpenCL-implementation (OpenCLKraskovCMI, to be run on GPUs). See the Installation and Requirements page for software requirements to use either of the two estimator classes.

Example

Use JIDT KSG estimator for Conditional Mutual Information:

settings = {'cmi_estimator': 'JidtKraskovCMI'}

JIDT Estimators

As of June 2020, the following estimators are available:

  • JidtDiscreteCMI (for discrete data)
  • JidtGaussianCMI (for jointly Gaussian continuous data, equivalent to Granger causality when used for Transfer Entropy estimation)
  • JidtKraskovCMI (for non-linear continuous data)

For an updated list of available JIDT estimators and their documentation, enter:

import idtxl.estimators_jidt
help(idtxl.estimators_jidt)

The Kraskov- and the Gaussian-estimator return estimates in nats. The discrete estimator returns bits.

Python Estimators

As of version 1.5 12/2023, the following estimator written purely in Python is available:

  • PythonKraskovCMI (for non-linear continuous data)

For an updated list of available Python estimators and their documentation, enter:

import idtxl.estimators_python
help(idtxl.estimators_python)

The user can select between different backends for the k-nearest-neighbor search. Currently implemented are KDTree (both from scipy and sklearn) and BallTree (`sklearn).

The Kraskov-estimator return estimates in nats.

OpenCL Estimators

  • OpenCLKraskovCMI

For an updated list of available OpenCL estimators and their documentation, enter:

import idtxl.estimators_opencl
help(idtxl.estimators_opencl)

All results are in nats.

Numba CUDA Estimators

  • NumbaCudaKraskovCMI

For an updated list of available Numba CUDA estimators and their documentation, enter:

import idtxl.estimators_numba
help(idtxl.estimators_numba)

All results are in nats.