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

 Download zip file 
Help downloading and running models
Accession:136380
" ... 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. ..."
Reference:
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;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: MATLAB;
Model Concept(s): Activity Patterns; Temporal Pattern Generation;
Implementer(s): Tripp, Bryan [bryan.tripp at mail.mcgill.ca]; Eliasmith, Chris [celiasmith at uwaterloo.ca];
% This script generates data on error associated with signal generation by
% various Izhikevich networks

clear all

useBandLimitedJitter = 0;

cases = [ ... % distribution exponent, connectivity 
        2 .5; ...
        .1 .3; ...
        2 .65; ...
        ]
    
x = load('signals_figure4.mat');
signals = x.signals;

jitter = [0 .001 .002 .004 .008 .016];

meanPeakCorrelation = [];
meanAreaCorrelation = [];
meanNormAreaCorrelation = [];

for i = 1:size(cases,1)
    % generate long firing patterns to get statistics
    activity = izhikevichNetwork(20000, 500, cases(i,1), cases(i,2)) %note that # of neurons effects COV and synchrony (use same # as in tests)
    cov = activity.COV;
    cov = cov(find(cov > 0));
    meanCOV(i) = mean(cov);
    sdCOV(i) = std(cov);
    xc = ensembleCrossCorr(activity.spikes(251:270,:), .001, 20);
    meanPeakCorrelation = [meanPeakCorrelation; mean(xc(:,1)) std(xc(:,1))];
    meanAreaCorrelation = [meanAreaCorrelation; mean(xc(:,2)) std(xc(:,2))];
    meanNormAreaCorrelation = [meanNormAreaCorrelation; mean(xc(:,3)) std(xc(:,3))]; 

    for j = 1:length(jitter) 
        for k = 1:size(signals,1)
            % generate test firing patterns
            activity = izhikevichNetwork(300, 500, cases(i,1), cases(i,2));    
            spikes = activity.spikes;
            %figure, plot(spikes, (1:size(spikes,1))' * ones(1, size(spikes,2)), 'k.'); pause
	
            % find weights to approximate target current signal
            if useBandLimitedJitter
                sprintf('Using band-limited jitter')
                [weights, err, t] = decode(signals(k,:), .0002, spikes, [0 0 0], [jitter(j) 0 0], [0 2*pi*15], 0, 32, 5, 1); 
            else 
                [weights, err, t] = decode(signals(k,:), .0002, spikes, [jitter(j) 0 0], [0 0 0], [0 10], 0, 32, 5, 1); 
            end
            t
            meanErr(i,j,k) = mean(err)
            sdErr(i,j,k) = std(err);
        end
    end
    save 'data_Izhikevich.mat'
end


Loading data, please wait...