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.