Neural transformations on spike timing information (Tripp and Eliasmith 2007)

 Download zip file 
Help downloading and running models
" ... Here we employ computational methods to show that an ensemble of neurons firing at a constant mean rate can induce arbitrarily chosen temporal current patterns in postsynaptic cells. ..."
1 . Tripp B, Eliasmith C (2007) Neural populations can induce reliable postsynaptic currents without observable spike rate changes or precise spike timing. Cereb Cortex 17:1830-40 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism:
Cell Type(s): Abstract integrate-and-fire leaky neuron;
Gap Junctions:
Simulation Environment: MATLAB;
Model Concept(s): Activity Patterns; Temporal Pattern Generation;
Implementer(s): Tripp, Bryan [bryan.tripp at]; Eliasmith, Chris [celiasmith at];
% Finds the number of trials needed to find the minimal spike rate increases
% that would be needed to support reliable spiking. Assumptions as in article text.  

clear all

lambda = 0.1; %baseline spike rate per bin
bins = 200;
N = 10000; %total number of converging neurons 
n = [500 1000]; %number of converging neurons that contribute to each spike 
                % ... don't want < 500 because then we begin to have
                % neurons that don't contribute to any output spike                

ne = lambda * bins * n / N;

mistimeRate = [.001:.005:.09]; %error rate of post-synaptic neuron (per bin)
probExtraSpike = mistimeRate;
probMissingSpike = mistimeRate / lambda; %this is the probability of any intended spike getting dropped
z_baseline = norminv(1-probExtraSpike, 0, 1)
z_elevated = norminv(1-probMissingSpike, 0, 1)

presynapticRate = bins * lambda;

minimalElevatedRate = [];
for i = 1:length(n) 
    for j = 1:length(mistimeRate)
        threshold = lambda + z_baseline(j) * (lambda/N)^.5; % note the N (all neurons may combine to spike inappropriately)
        elevated = elevatedRate(lambda, n(i), N, threshold, probMissingSpike(j));
        minimalElevatedRate(i,j) = elevated;
        thresholds(i,j) = threshold;
        % find presynaptic error rate (to allow comparison with post-synaptic error rate) 
        presynapticExtraSpikeRate(i,j) = (bins-presynapticRate) * (1-pdf('poiss', 0, lambda)); %i.e. #supposedly non-spiking bins X prob >0 spikes/bin
        presynapticMissingSpikeRate(i,j) = ne(i) * pdf('poiss', 0, elevated) + (presynapticRate - ne(i)) * pdf('poiss', 0, lambda);
        presynapticErrorRate(i,j) = (presynapticExtraSpikeRate(i,j) + presynapticMissingSpikeRate(i,j)) / 2;

% display some intermediate results

rateDifference = minimalElevatedRate - lambda;

sigma = lambda ^ .5;

% Differences would be best detected with ANOVA, so we find # trials needed for sufficient ANOVA power, with effect sizes as calculated above 
% need #elevated trials, lambda, lamba_elevated, bins
power = .8; %desired power 
for i = 1:length(n)
    for j = 1:length(mistimeRate)
        trials(i,j) = anovaTrials(bins, lambda, minimalElevatedRate(i,j), ne(i), power)
        save 'data_power.mat'

Loading data, please wait...