Extraction and classification of three cortical neuron types (Mensi et al. 2012)

 Download zip file 
Help downloading and running models
Accession:143148
This script proposes a new convex fitting procedure that allows the parameters estimation of a large class of stochastic Integrate-and-Fire model upgraded with spike-triggered current and moving threshold from patch-clamp experiments (i.e. given the injected current and the recorded membrane potential). This script applies the method described in the paper to estimate the parameters of a reference model from a single voltage trace and the corresponding input current and evaluate the performance of the fitted model on a separated test set.
Reference:
1 . Mensi S, Naud R, Pozzorini C, Avermann M, Petersen CC, Gerstner W (2012) Parameter extraction and classification of three cortical neuron types reveals two distinct adaptation mechanisms. J Neurophysiol 107:1756-75 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Neocortex;
Cell Type(s): Hippocampus CA1 pyramidal cell; Hippocampus CA3 pyramidal cell; Neocortex fast spiking (FS) interneuron; Neocortex spiking regular (RS) neuron;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: MATLAB;
Model Concept(s):
Implementer(s): Mensi, Skander [skander.mensi at epfl.ch];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal cell; Hippocampus CA3 pyramidal cell;
function [nu] = IF_eta_nu(I,param,eta,gamma,nbr_repet,sampling_freq)

dt = 1e3/sampling_freq;
C = param(1); g_l=param(2); E_l=param(3);
E_reset=param(4); t_refr=param(5)/dt;
v0 = param(6); DeltaV=param(7);
t_max = length(I);
nu = zeros(1,t_max);

for i=1:nbr_repet
    spike = zeros(1,t_max);
    t_spike = -t_max;
    v=E_l;
    w = zeros(t_max+length(eta),1);
    VT = zeros(t_max+length(gamma),1);
    t=1;
    while(t<t_max)
        dv = (-g_l*(v-E_l) + I(t) - w(t))/C;
        v = v + dt*dv;
        vt = v0 + VT(t);
        p = exp(-exp((v-vt)/DeltaV));

        if(rand()>p && t-t_spike>t_refr)
            t = t+t_refr;
            v = E_reset;
            spike(t) = 1;
            t_spike = t;
            t=t+1;
            w(t:t+length(eta)-1) = w(t:t+length(eta)-1) + eta;
            VT(t:t+length(gamma)-1) = VT(t:t+length(gamma)-1) + gamma;
        else
            t=t+1;
        end
    end
    nu = nu + spike;
end
nu = nu/nbr_repet;

Loading data, please wait...