Hodgkin-Huxley simplifed 2D and 3D models (Lundstrom et al. 2009)

 Download zip file 
Help downloading and running models
Accession:117330
"Neuronal responses are often characterized by the firing rate as a function of the stimulus mean, or the f–I curve. We introduce a novel classification of neurons into Types A, B−, and B+ according to how f–I curves are modulated by input fluctuations. ..."
Reference:
1 . Lundstrom BN, Famulare M, Sorensen LB, Spain WJ, Fairhall AL (2009) Sensitivity of firing rate to input fluctuations depends on time scale separation between fast and slow variables in single neurons J Comput Neurosci
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:
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: C or C++ program; XPP;
Model Concept(s): Temporal Pattern Generation; Simplified Models; Bifurcation;
Implementer(s):
/
LundstromEtAl2009
readme.html
hh2TypeAnoiseTau.ode
hh3d.c
screenshot.jpg
                            
    //The following is C code that was used in a MatLab mex file to implement the neuron model.
    //The differential equations can be solved by various means,
    // where the input is STIM and the output is Y

    //3D simplified Hodgkin-Huxley neuron model with slow Na inactivation gate 
    //Parameters to implement model in Figure 11 of Lundstrom et al., J Comp Neurosci

	// Parameters:
	cm = 1;		// uF / cm2
	Gl = 15;   // mS/cm2
	Gk = 36;  
	Gna = 50; 
	El = -54;   // mV
	Ek = -77;	
	Ena = 50;	
   		
	//Differential equations
	mVh = -40;
    mk =  7;
    nVh = -30;
    nk = 5;
    Cbase = 50;
    Camp = 2000;
    Vmax = -40;
    sig = 5;
    
	ntau= 3;
    ninf = 1.0 / (1+exp( (nVh - y[0])/nk) );
    minf  = 1.0 / (1+exp( (mVh - y[0])/mk) );
    
    h = .89 - 1.1*y[1];
    s = .89 - 1.1*y[2];
    
    //time constant for slow Na inactivation
    stau= Cbase + Camp*exp(-pow(Vmax - y[0],2)/pow(sig,2));
           
    //stim is the variable that passes the stimulus value for each time t
    dy[0] = -1*(Gl*(y[0] - El) + Gk*pow(y[1],4)*(y[0] - Ek) + Gna*pow(minf,3)*h*s*(y[0] - Ena))/cm + stim/cm;
	dy[1] = (ninf - y[1]) / ntau; 
    dy[2] = (ninf - y[2]) / stau;