GCMI implements a mutual information estimate based on a Gaussian copula. The method is decribed in Ince et. al 2017.

Partial Information Decomposition and Partial Entropy Decomposition

This repository implements the partial information decomposition, with a measure of redundancy based on pointwise common change in surprisal as described in Ince 2016. It also includes the Partial Entropy Decomposition, implemented with an entropic redundancy measure based on pointwise common surprisal as described in Ince 2017.


PyEntropy is a Python library to implement calculation of entropy and information quantities using a range of bias correction methods. This contains the core information routines I use throughout my work, and was produced for eventual implementation as an online service in the CARMEN project. It also includes pyentropy.maxent - a module for computing maximum entropy solutions subject to marginal constraints over finite alphabet probability spaces using the information geometric methods of Amari. It is an open source project hosted at Google code. See Ince et al. (2009) for details. The documentation, including a brief primer on entropy and information theory, is available here.


loo_classifiers is a Matlab package to efficiently implement leave-one-out cross-validation for a number of basic supervised learning algorithms.


tdistfit is a Matlab package to fit multivariate t-distributions to data using an expectation-maximization based algorithm.

MATLAB Fortran 95 Interface

The excellent modern Fortran interface to the MATLAB mex API makes extending MATLAB with compiled Fortran extensions much easier. My contributions consist of modifications to support gfortran on Linux as well as the -largeArrayDims 64 bit interface on all platforms. I have also implemented a 'lite' version of the interface, which has much reduced functionality but supports all the Matlab data types.


This module for computing finite alphabet maximum entropy solutions subject to marginal contraints is now distributed as part of the PyEntropy package (pyentropy.maxent).

MATLAB/Python Integration

The Python programming language, together with the numerical libraries NumPy and SciPy, provides a compelling alternative to MATLAB for computational science. Here are some simple scripts to help copying and pasting from MATLAB to Python and from Python to MATLAB.

I have also contributed to pymex, which embeds a Python interpreter in a MATLAB mex extension and provides an elegent interface for interacting with Python from the MATLAB shell. My win64 branch supports 64 bit windows builds with a Microsoft toolchain.


Other snippets and thoughts can be found on my blog.

Stack Overflow