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

 Download zip file 
Help downloading and running models
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.
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]
Citations  Citation Browser
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 GLU cell; Hippocampus CA3 pyramidal GLU cell; Neocortex fast spiking (FS) interneuron; Neocortex spiking regular (RS) neuron;
Gap Junctions:
Simulation Environment: MATLAB;
Model Concept(s):
Implementer(s): Mensi, Skander [skander.mensi at epfl.ch];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; Hippocampus CA3 pyramidal GLU cell;
function [spiketimes] = Extract_spiketimes(voltage, sampling_freq)
%   Given a voltage trace 'voltage', detect the spiketimes with the upward
%   zero crossing cirterion and set spiketimes to the maximum value
%   following the zero-crossing in a 1 ms windows
%   Output: spiketimes is a vector containing the indices of the spikes in
%   timebin
    dt = 1e3/sampling_freq;
    k=1;                                                %number of spikes
    voltage_prime = [0;diff(voltage)];                  %voltage derivative
    limite = 0;                                         %zero-crossing criterion
    Dt = round(1/dt);
    limit_t_refr = floor(0.8/dt);
    t_refr = limit_t_refr + 1;
    spiketimes_t(1,1) = 0;
    for i=1:length(voltage)-Dt          %loop over the voltage traces
        if(voltage(i) >= limite && voltage_prime(i) > 0 && t_refr >= limit_t_refr)
            k = k+1;
            t_refr = 0;
            [temp temp_ind] = max(voltage(i:i+Dt));
            spiketimes_t(k,1) = i+temp_ind;
            t_refr = t_refr + 1;
    spiketimes_t(:,1) = spiketimes_t(:,1)-1;
    spiketimes(:,1) = spiketimes_t(2:end,1);