Measuring Information Integration
Paper and Toolbox

This toolbox contains a set of functions used to calculate the integrated information within a network defined by a connection matrix. The neural dynamics is modeled as linear systems.

Please read the comments carefully - the functions will only give valid results if certain statistical assumptions are valid.

Here are the individual functions, together with a brief description of what they do.  All of these functions should be downloaded and moved to a single directory.  These functions can be used to reproduced the simulations presented in the paper: "Measuring information integration" (2003) by Giulio Tononi and Olaf Sporns, published in BMC Neuroscience 4, 31.  (Download paper)

This software is free.  Use at your own risk.  Report bugs etc. to


This script loads the connection matrix, sets some important parameters and then proceeds to call 'calcPHI.m' to calculate the integrated information.  Then the script plots the output in a series of displays matching those used in the paper.

Function for calculating the integrated information for a connection matrix.
 There are several important control parameters that need to be set, including the noise levels (intrinsic and perturbation).


Various function for needed for running 'runMIB_Cij.m'.  See script for details

Instead of using the effective information to calculate PHI, a simpler (but mathematically non-equivalent) way of obtaining an estimate of PHI uses the mutual information.  This does not involve the use of perturbations to assess changes in entropy.  To use MI instead of EI, use these three functions:


instead of their EI-analogues (see above).  Also, just substitute the function call "calcPHI_MI(...)" for "calcPHI.m" in 'runMIB_Cij.m'.

Use these connectivity sets to generate the figures in the paper by Tononi and Sporns, 2003
.  Each of the files listed below contains one Cij matrix.  Parameters in 'runMIB_Cij.m' should be set to I_noise = 10^(-5), P_noise = 10^(-0), normalize = 0, optimize = 0, start_lvl = 1, search_clusters = 1, step_through_disp = 0.

Figure 2: Cij_split.mat

Figure 3: Cij_optim_lo.mat

Figure 4: Cij_optim_hi.mat  - here set I_noise = 10^(-1).

Figure 5: Cij_sparse_optim_lo.mat

Figure 6: Cij_full.mat

Figure 7: Cij_4modules.mat