Fisher and Shannon information in finite neural populations (Yarrow et al. 2012)

 Download zip file 
Help downloading and running models
Accession:142990
Here we model populations of rate-coding neurons with bell-shaped tuning curves and multiplicative Gaussian noise. This Matlab code supports the calculation of information theoretic (mutual information, stimulus-specific information, stimulus-specific surprise) and Fisher-based measures (Fisher information, I_Fisher, SSI_Fisher) in these population models. The information theoretic measures are computed by Monte Carlo integration, which allows computationally-intensive decompositions of the mutual information to be computed for relatively large populations (hundreds of neurons).
Reference:
1 . Yarrow S, Challis E, Seri├Ęs P (2012) Fisher and Shannon information in finite neural populations. Neural Comput 24:1740-80 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Connectionist Network;
Brain Region(s)/Organism: Unknown;
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: MATLAB;
Model Concept(s): Rate-coding model neurons;
Implementer(s): Yarrow, Stuart [s.yarrow at ed.ac.uk];
function [Ifish, Imut] = fig2_CD(N, c)
% fig2_CD  Reproduce points from Figure 2C and 2D
% 
% [Ifish, Imut] = fig2_CD(N, c) calculates the mutual information and I_Fisher for:
% population size N neurons
% correlation coefficient c

% Stuart Yarrow s.yarrow@ed.ac.uk - 15/11/2011

tic

stderr = 2e-2;      % Target relative error for MC halting
maxiter = 4e5;      % MC iteration limit

tau = 1.0;          % integration time (s)
fTau = 10.0;        % variability F/tau (spikes/s^2)
F = fTau .* tau;    % Fano factor
alpha = 0.5;        % variability exponent
fmax = 50.0;        % peak firing rate (spikes/s)
fbg = 10.0;         % background firing rate (spikes/s)
sigma = 30.0;       % tuning curve width parameter (degrees)

% Preferred stimuli
nrns = [-180 : 360/N : 180-360/N];

% Define stimulus ensemble and population
stim = StimulusEnsemble('circular', 360, 360);
popNrns = CircGaussNeurons(nrns, sigma, fmax, fbg, tau, 'Gaussian-uniform', [F alpha c]);

% Compute measures
Ifish = popNrns.Ifisher(stim);
[Imut, ImutSEM, ImutSamps] = popNrns.mi('randMC', stim, stderr, maxiter);
    
fprintf('fig2_CD.m\n')
fprintf('Parameters: N = %g neurons, c = %g\n', N, fTau)
fprintf('I_Fisher = %g bits\n', Ifish)
fprintf('I_mut = %g bits with StdErr %g bits\n', Imut, ImutSEM)
fprintf('I_mut - I_Fisher = %g bits\n', Imut - Ifish)

Loading data, please wait...