Parameter estimation for Hodgkin-Huxley based models of cortical neurons (Lepora et al. 2011)

 Download zip file 
Help downloading and running models
Accession:136808
Simulation and fitting of two-compartment (active soma, passive dendrite) for different classes of cortical neurons. The fitting technique indirectly matches neuronal currents derived from somatic membrane potential data rather than fitting the voltage traces directly. The method uses an analytic solution for the somatic ion channel maximal conductances given approximate models of the channel kinetics, membrane dynamics and dendrite. This approach is tested on model-derived data for various cortical neurons.
Reference:
1 . Lepora NF, Overton PG, Gurney K (2012) Efficient fitting of conductance-based model neurons from somatic current clamp. J Comput Neurosci 32:1-24 [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:
Cell Type(s): Neocortex L5/6 pyramidal GLU cell; Neocortex L2/3 pyramidal GLU cell; Neocortex fast spiking (FS) interneuron; Neocortex spiking regular (RS) neuron; Neocortex spiking low threshold (LTS) neuron;
Channel(s): I Na,t; I L high threshold; I T low threshold; I K; I M;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: GENESIS; MATLAB;
Model Concept(s): Parameter Fitting; Simplified Models; Parameter sensitivity;
Implementer(s): Lepora, Nathan [n.lepora at shef.ac.uk];
Search NeuronDB for information about:  Neocortex L5/6 pyramidal GLU cell; Neocortex L2/3 pyramidal GLU cell; I Na,t; I L high threshold; I T low threshold; I K; I M;
/
demo_modelDB
functions_v0.4
README.txt
fig1.m
fig1_tar.m
                            
function fig1_tar
% example data: 1 active 1 passive compartment

clear all; dbstop if error; clc;
fpath = 'functions_v0.4'; path(path,fpath); 
% cpath = '../compiled_v0.4'; path(path,cpath); 
res = [pwd,'/',mfilename]; if ~isdir(res); mkdir(res); end
% if isdir('/output'); rmdir('/output','s'); end; 
mkdir('output');

% function to convert 1cpt->2cpt
function [len,dia] = match(len0,dia0,la,mu) % la=Sd/Ss, mu=S0/Ss 
    si = 1/(mu-1)-1/la; % si=Rax/Rs
    dia(1) = sqrt(1/mu)*dia0; len(1) = sqrt(1/mu)*len0; 
    S0 = pi*len0*dia0; SA(1) = S0/mu; SA(2,1) = SA(1)*la; Rax = si*RM/SA(1);
    dia(2,1) = (4*RA*SA(2)/(pi^2*Rax))^(1/3); len(2,1) = SA(2)/(pi*dia(2));
%     % display some outputs
%     ldSa = [round(len*1e6), round(dia*1e6), round(SA*1e12)]'
%     tau = round(1e3*[CM*RM, CM*RM/(1+(RM/SA(1)+RM/SA(2))/Rax)])
%     scRax = round(1e-6*Rax)
%     Rin = round(1e-6*RM./(pi*len0.*dia0))
end

%% generate data_pop1 - pospischil fig0
name = 'pop1';

% parameters
pas_param = [res,'/pas_param_',name]; 
CM = 0.01; RM = 0.667; RA = 10; Em = -0.065; 
[len,dia] = match(67e-6,67e-6,2,2); % 1 1.6
save(pas_param,'CM','RM','RA','Em','len','dia');

act_param = [res,'/act_param_',name]; 
G = [500 100]; chan_list = {'Na','Kd'}; Vhalf = [0 0; 0 0];
V_T = 15e-3; chan_sc = [V_T,1,1, V_T,1,1; V_T,1,1, V_T,1,1]; % Vsh, Vsc, tc 
save(act_param,'G','chan_list','chan_sc','Vhalf');

sim_param = [res,'/sim_param_',name]; 
dt_out = 5e-5; dt_sim = 2e-6; tmax = 0.5; 
save(sim_param,'dt_out','dt_sim','tmax');

IV_data = [res,'/IV_data_',name]; 
tinj = (0:dt_out:0.5)'; % same sampling as output
Iinj = 0.5e-9*( tinj>=0.1 & tinj <=0.4 );
t = tinj; Vs = tinj*nan;
save(IV_data,'tinj','Iinj','t','Vs');

% make the data
id = [res,'/IV_tar_',name];
pars{1} = {id,IV_data,pas_param,act_param,sim_param};    
makeCell_1act1pas(id,IV_data,pas_param,act_param,sim_param)

%% generate data_pop2 - pospischil fig1
name = 'pop2';

% parameters
pas_param = [res,'/pas_param_',name]; 
CM = 0.01; RM = 1; RA = 10; Em = -0.070; 
[len,dia] = match(96e-6,96e-6,2,2);
save(pas_param,'CM','RM','RA','Em','len','dia');

act_param = [res,'/act_param_',name]; 
G = [500 50 0.7]; chan_list = {'Na','Kd','KM'}; Vhalf = [0 0; 0 0; 0 0];
V_T = 5e-3; chan_sc = [V_T,1,1, V_T,1,1; V_T,1,1, V_T,1,1; 0e-3,1,1, 0e-3,1,1]; % Vsh, Vsc, tc
save(act_param,'G','chan_list','chan_sc','Vhalf');

sim_param = [res,'/sim_param_',name]; 
dt_out = 5e-5; dt_sim = 2e-6; tmax = 1;
save(sim_param,'dt_out','dt_sim','tmax');

% injection current
IV_data = [res,'/IV_data_',name]; 
tinj = (0:dt_out:1)'; % same sampling as output
Iinj = 0.5e-9*( tinj>=0.2 & tinj <=0.8 );
t = tinj; Vs = tinj*nan;
save(IV_data,'tinj','Iinj','t','Vs');

% make the data
id = [res,'/IV_tar_pop2'];
pars{2} = {id,IV_data,pas_param,act_param,sim_param};    
makeCell_1act1pas(id,IV_data,pas_param,act_param,sim_param)

%% generate data_pop3 - pospischil fig5b
name = 'pop3';

% parameters
pas_param = [res,'/pas_param_',name]; 
CM = 0.01; RM = 10; RA = 10; Em = -0.070; 
[len,dia] = match(96e-6,96e-6,2,2);
save(pas_param,'CM','RM','RA','Em','len','dia');
        
act_param = [res,'/act_param_',name]; 
G = [500 50 0.7 2]; chan_list = {'Na','Kd','KM','CaL'}; Vhalf = [0 0; 0 0; 0 0; 0 0];
V_T = 10e-3; chan_sc = [V_T,1,1, V_T,1,1; V_T,1,1, V_T,1,1; 0e-3,1,1, 0e-3,1,1; 0e-3,1,1, 0e-3,1,1]; % Vsh, Vsc, tc
save(act_param,'G','chan_list','chan_sc','Vhalf');

sim_param = [res,'/sim_param_',name]; 
dt_out = 5e-5; dt_sim = 2e-6; tmax = 2.5;
save(sim_param,'dt_out','dt_sim','tmax');

% injection current
IV_data = [res,'/IV_data_',name]; 
tinj = (0:dt_out:2.5)'; % same sampling as output 
Iinj = 0.2e-9*( tinj>=0.1 & tinj <=2.4 );
t = tinj; Vs = tinj*nan;
save(IV_data,'tinj','Iinj','t','Vs');

% make the data
id = [res,'/IV_tar_pop3'];
pars{3} = {id,IV_data,pas_param,act_param,sim_param};    
makeCell_1act1pas(id,IV_data,pas_param,act_param,sim_param)

%% generate data_pop4 - pospischil fig8a
name = 'pop4';

% parameters
pas_param = [res,'/pas_param_',name]; 
CM = 0.01; RM = 10; RA = 10; Em = -0.060; 
[len,dia] = match(96e-6,96e-6,2,2);
save(pas_param,'CM','RM','RA','Em','len','dia');
        
act_param = [res,'/act_param_',name]; 
G = [500 50 0.3 4]; chan_list = {'Na','Kd','KM','CaT'}; Vhalf = [0 0; 0 0; 0 0; 0 0]; 
V_T = 5e-3; chan_sc = [V_T,1,1, V_T,1,1; V_T,1,1, V_T,1,1; 0e-3,1,1, 0e-3,1,1; 0e-3,1,1, 0e-3,1,1]; % Vsh, Vsc, tc
save(act_param,'G','chan_list','chan_sc','Vhalf');

sim_param = [res,'/sim_param_',name]; 
dt_out = 5e-5; dt_sim = 2e-6; tmax = 2; 
save(sim_param,'dt_out','dt_sim','tmax');

% injection current
IV_data = [res,'/IV_data_',name]; 
tinj = (0:dt_out:2)'; % same sampling as output
Iinj = -0.1e-9*( tinj>=0.2 & tinj <=1.2 );
t = tinj; Vs = tinj*nan;
save(IV_data,'tinj','Iinj','t','Vs');

% make the data
id = [res,'/IV_tar_pop4'];
pars{4} = {id,IV_data,pas_param,act_param,sim_param};    
makeCell_1act1pas(id,IV_data,pas_param,act_param,sim_param)

%% run all
% run_compiled('makeCell_1act1pas',pars,[pwd,'/',cpath],mfilename,25,nan)

end

Loading data, please wait...