/*---------------------------------------------------------------------------- demo file for first order kinetic synapse mechanism --------------------------------------------------- This file provides a simulation of glutamaterergic EPSP's in a passive compartment. A presyaptic compartment (PRE) is created and contains Hodgkin-Huxley Na/K currents for generating action potentials. A current pulse is injected in PRE to elicit a train of spikes. For each spike an EPSP is generated in the postsynaptic compartment (POST). The number of presynaptic spikes can be adjusted by changing the pulse duration (stim.dur). Whole-cell recorded postsynaptic currents mediated by NMDA receptors (Hessler et al., Nature 366: 569-572, 1993) were used to estimate the parameters of the present simulations; the fit was performed using a simplex algorithm (see Destexhe, A., Mainen, Z.F. and Sejnowski, T.J. Fast kinetic models for simulating AMPA, NMDA, GABA(A) and GABA(B) receptors. In: Computation and Neural Systems, Vol. 4, Kluwer Academic Press, in press, 1995). The voltage-dependence of the Mg2+ block of the NMDA was modeled by an instantaneous function, assuming that Mg2+ binding was very fast (see Jahr & Stevens, J. Neurosci 10: 1830-1837, 1990; Jahr & Stevens, J. Neurosci 10: 3178-3182, 1990). To see the voltage-dependence of the NMDA response, play with different values of the resting membrane potential (e_pas in POST). Alain Destexhe, The Salk Institute, 1994 ----------------------------------------------------------------------------*/ //---------------------------------------------------------------------------- // load and define general graphical procedures //---------------------------------------------------------------------------- // xopen("$(NEURONHOME)/lib/hoc/stdrun.hoc") load_file("nrngui.hoc") objectvar g[20] // max 20 graphs ngraph = 0 proc addgraph() { local ii // define subroutine to add a new graph // addgraph("variable", minvalue, maxvalue) ngraph = ngraph+1 ii = ngraph-1 g[ii] = new Graph() g[ii].size(0,tstop,$2,$3) g[ii].xaxis() g[ii].yaxis() g[ii].addvar($s1,1,0) g[ii].save_name("graphList[0].") graphList[0].append(g[ii]) } // nrnmainmenu() // create main menu nrncontrolmenu() // crate control menu //---------------------------------------------------------------------------- // general parameters //---------------------------------------------------------------------------- dt=0.025 tstop = 150 runStopAt = tstop steps_per_ms = 1/dt celsius = 36 v_init = -70 //---------------------------------------------------------------------------- // create compartments and insert passive properties //---------------------------------------------------------------------------- create PRE,POST forall { diam=10 L=10 insert pas g_pas=1/5000 e_pas=v_init } //---------------------------------------------------------------------------- // insert presynaptic mechanisms //---------------------------------------------------------------------------- access PRE // insert Hodgk-Hux. Na+ and K+ currents for spikes insert hh2 ek = -90 gnabar_hh2 = 0.1 gkbar_hh2 = 0.03 objectvar stim // insert current injection PRE stim = new IClamp(.5) // command for version nrn3a8 or newer // PRE stim = new PulseStim(.5) // command for older NEURON versions stim.del = 10 stim.dur = 2 // 2 ms for single psp, 10 ms for train of psps stim.amp = 0.1 //---------------------------------------------------------------------------- // insert postsynaptic mechansisms //---------------------------------------------------------------------------- objectvar c c = new NMDA() // create synapse POST c.loc(0.5) // assign postsynaptic compartment setpointer c.pre, PRE.v(0.5) // assign presynaptic compartment Cmax_NMDA = 1 // (mM) max transmitter concentration Cdur_NMDA = 1 // (ms) transmitter duration (rising phase) Alpha_NMDA = 0.072 // (/ms mM) forward (binding) rate Beta_NMDA = 0.0066 // (/ms) backward (unbinding) rate Erev_NMDA = 0 // (mV) reversal potential Prethresh_NMDA = 0 // (mV) voltage level nec for release Deadtime_NMDA = 1 // (ms) mimimum time between release events mg_NMDA = 1 // (mM) external Mg++ concentration c.gmax = 0.001 // (umho) maximum conductance //---------------------------------------------------------------------------- // add graphs //---------------------------------------------------------------------------- addgraph("PRE.v(0.5)",-90,40) addgraph("c.C",0,1) g[1].addvar("c.R",1,0) addgraph("c.i",-0.005,0.00001) addgraph("POST.v(0.5)",v_init-5,v_init+20)