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]
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;
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 GLU cell; Hippocampus CA3 pyramidal GLU cell;
function [theta nbr_iter hist_L hist_theta] = compute_theta(X,X_spike,sum_X_spike,theta_0,tol_theta,max_iter)

X = X'; X_spike = X_spike'; theta_0 = theta_0';

X_spike_theta = X_spike*theta_0;
X_theta = X*theta_0; 
expXtheta = exp(X_theta);

L = sum(X_spike_theta) - sum(expXtheta);
G = sum_X_spike' - (X'*expXtheta);
temp = nan(size(X'));
for j=1:size(X,2)
    temp(j,:) = X(:,j).*expXtheta;
end
H = -(temp*X);

hist_theta = nan(max_iter,length(theta_0));
hist_L = nan(max_iter,1);
hist_theta(1,:) = theta_0;
hist_L(1) = L;
theta = theta_0;

for i=1:max_iter
    
    if(i>3 && abs((L-hist_L(i-2))/hist_L(i-2)) < tol_theta)
        nbr_iter = i;
        hist_theta(i,:) = theta;
        hist_L(i) = L;
        break;
    else
        nbr_iter = i;
        theta = theta - ((inv(H))*G);
        X_spike_theta = X_spike*theta;
        X_theta = X*theta;
        expXtheta = exp(X_theta);
        
        L = sum(X_spike_theta) - sum(expXtheta);
        G = sum_X_spike' - (X'*expXtheta);
        temp = nan(size(X'));
        for j=1:size(X,2)
            temp(j,:) = X(:,j).*expXtheta;
        end
        H = -(temp*X);
        
        hist_theta(i,:) = theta;
        hist_L(i) = L;
    end
   
end