STDP allows fast rate-modulated coding with Poisson-like spike trains (Gilson et al. 2011)

 Download zip file 
Help downloading and running models
Accession:136717
The model demonstrates that a neuron equipped with STDP robustly detects repeating rate patterns among its afferents, from which the spikes are generated on the fly using inhomogenous Poisson sampling, provided those rates have narrow temporal peaks (10-20ms) - a condition met by many experimental Post-Stimulus Time Histograms (PSTH).
Reference:
1 . Gilson M, Masquelier T, Hugues E (2011) STDP allows fast rate-modulated coding with Poisson-like spike trains. PLoS Comput Biol 7:e1002231 [PubMed]
Citations  Citation Browser
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; Brian; Python;
Model Concept(s): Pattern Recognition; Activity Patterns; Coincidence Detection; Spatio-temporal Activity Patterns; Simplified Models; Synaptic Plasticity; Long-term Synaptic Plasticity; Learning; Unsupervised Learning; STDP; Noise Sensitivity; Information transfer;
Implementer(s): Masquelier, Tim [timothee.masquelier at alum.mit.edu];
/
GilsonEtAl2011
src
analyze.py
convergence.m
customrefractoriness.py *
generatePeak.m
generateSpikeTrain.m
init.py
main.py
mutualInfo.py
param.m
peak2spike.m
pickleAll.py *
poisson.m
restore.py *
saveCurrent.py
savePot.py
saveWeight.py
spikeToBurst.m
timedLog.m *
timedLogLn.m *
toMatlab.py *
unpickleAll.py *
                            
global PARAM

PARAM.randState = 0; % Random generator seed. 
PARAM.T = 1000; % Total duration (s)
PARAM.patternDuration = 50e-3; % Patter duration L (s)
PARAM.meanFreq = 20; % Mean firing rate r_0 (Hz)
PARAM.nAfferent = 1000; % Number of afferents N
PARAM.nAfferentInPattern = round(2^-1*PARAM.nAfferent); % Number of pattern afferents N_0
PARAM.patternFreq = 1.5 * PARAM.patternDuration;  % Pattern presentation frequency f
PARAM.deletion = 0;%1-1/sqrt(2); % Deletion probability (=1-p)

% type of pattern
PARAM.ACADEMIC = 0; % Not used anymore
PARAM.POISSON = 1; % Baseline simulation
PARAM.N1N2 = 2; % Bimodal patterns (see Fig. 4)
PARAM.FIG = 3; % Not used anymore
PARAM.PSTH = 4; % Not used anymore
PARAM.pattern_type = PARAM.POISSON;

% used peaked instantaneous rates
PARAM.peakedRate = true; % True for model R, false for model S
PARAM.rCoef = false; % Use global enveloppe (see Fig. 7)
PARAM.dt = .5e-3; % Time step
PARAM.r0 = 0; % Spontaneous activity
PARAM.speak0 = 10e-3; % Sigma of Gaussian rate peaks
PARAM.speak1 = 0*PARAM.speak0; % Sigma of Gaussian rate peak variability
PARAM.rpeak0 = 1; % Height of Gaussian rate peaks
PARAM.rpeak1 = 0*PARAM.rpeak0;% Height of Gaussian rate peak variability

% random positions of pattern (avoiding consecutive ones)
rand('state',PARAM.randState)
PARAM.posPattern = [];
skip = false;
for p = 1:floor( PARAM.T / PARAM.patternDuration )
    if skip
        skip = false;
    else
        if rand<1/(1/PARAM.patternFreq-1)
            PARAM.posPattern = [PARAM.posPattern p];
            skip = true; % skip next
        end
    end
end
patternPeriod = zeros(length(PARAM.posPattern),2);
for p=1:length(PARAM.posPattern)
    patternPeriod(p,:) = ( PARAM.posPattern(p) + [-1  0] ) * PARAM.patternDuration;
end
save(['../data/patternPeriod.' sprintf('%03d',PARAM.randState) '.mat'],'patternPeriod')