TITLE Fluctuating conductances COMMENT ----------------------------------------------------------------------------- Fluctuating conductance model for synaptic bombardment ====================================================== This implementation models only excitatory synaptic input, and is based on the model described in: Rudolph M, Destexhe A (2005) An extended analytic expression for the membrane potential distribution of conductance-based synaptic noise. Neural Comput 17:2301-15 Original code: http://senselab.med.yale.edu/ModelDb/showmodel.asp?model=64259&file=\NCnote\Gfluct.mod IMPLEMENTATION This mechanism is implemented as a nonspecific current defined as a point process. PARAMETERS The mechanism takes the following parameters: E_e (mV) : reversal potential of excitatory conductance g_e0 (umho) : average excitatory conductance std_e (umho) : standard dev of excitatory conductance tau_e (ms) : time constant of excitatory conductance A. Destexhe, Laval University, 1999 Trivial modifications by: Matthias H. Hennig, University of Edinburgh, 2011 ----------------------------------------------------------------------------- ENDCOMMENT INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)} NEURON { POINT_PROCESS mhh_Gfluct RANGE g_e, E_e, g_e0, g_e1 RANGE std_e, tau_e, D_e NONSPECIFIC_CURRENT i } UNITS { (nA) = (nanoamp) (mV) = (millivolt) (umho) = (micromho) } PARAMETER { dt (ms) E_e = 0 (mV) : reversal potential of excitatory conductance g_e0 = 0.000001 (umho) : average excitatory conductance std_e = 0.0002 (umho) : standard dev of excitatory conductance tau_e = 2 (ms) : time constant of excitatory conductance } ASSIGNED { v (mV) : membrane voltage i (nA) : fluctuating current g_e (umho) : total excitatory conductance g_e1 (umho) : fluctuating excitatory conductance D_e (umho umho /ms) : excitatory diffusion coefficient exp_e amp_e (umho) } INITIAL { g_e1 = 0 if(tau_e != 0) { D_e = 2 * std_e * std_e / tau_e exp_e = exp(-dt/tau_e) amp_e = std_e * sqrt( (1-exp(-2*dt/tau_e)) ) } } BREAKPOINT { SOLVE oup if(tau_e==0) { g_e = std_e * normrand(0,1) } g_e = g_e0 + g_e1 i = g_e * (v - E_e) } PROCEDURE oup() { : use Scop function normrand(mean, std_dev) if(tau_e!=0) { g_e1 = exp_e * g_e1 + amp_e * normrand(0,1) } } PROCEDURE new_seed(seed) { : procedure to set the seed set_seed(seed) VERBATIM printf("Setting random generator with seed = %g\n", _lseed); ENDVERBATIM }