/* -------------------------------------------------------------- Two-compartment reduced model for neocortical electrogenesis DEMO Z. F. Mainen and T. J. Sejnowski (1996) Influence of dendritic structure on firing pattern in model neocortical neurons. Nature 382: 363-366. author: Zach Mainen zach@salk.edu -------------------------------------------------------------- */ load_proc("nrnmainmenu") // Use standard NEURON procedures from // "stdrun.hoc" tstop = 1000 // 1 second simulation steps_per_ms = 40 dt = 0.025 // time step celsius = 37 // temperature scales kinetics of active currents // -------------------------------------------------------------- // create two compartments, connect and insert conductances // -------------------------------------------------------------- create dend // dendritic compartment create axon // axo-somatic compartment access axon connect dend(0), axon(.5) // connect the compartments // the position arguments (0, 0.5) are irrelevant dend { diam = 10/PI // note, L and Ra are set in "init()" procedure // uses the associated ".mod" files insert na // na.mod insert km // km.mod insert kca // kca.mod insert ca // ca.mod insert cad // cad.mod insert pas } axon { diam = 10/PI L = 10 // area of 100 um^2 // note Ra of axon is irrelevant to the 2-comp simulation insert na // na.mod insert kv // kv.mod } // -------------------------------------------------------------- // electrical geometry // -------------------------------------------------------------- rho = 165 // dendritic to axo-somatic area ratio // useful range approx (50 to 200) kappa = 10 // coupling resistance (Mohm) // useful range approx (0 to 10) // -------------------------------------------------------------- // passive properties // -------------------------------------------------------------- v_init = -70 // resting membrane potential (approximate) (mV) forall cm = 0.75 // membrane capacity (uF-cm^-2 rm = 30000 // membrane resistivity (ohm-cm^2) dend.g_pas = 1/rm // only dendrite has leak conductance dend.e_pas = v_init // leak reversal potential (mV) // -------------------------------------------------------------- // active conductances // -------------------------------------------------------------- // Axo-somatic conductance densities (pS-um^-2) axon.gbar_na = 30000 // fast Na+ axon.gbar_kv = 1500 // fast non-inactivating K+ // Dendritic conductance densities (pS-um^-2) dend.gbar_na = 15 // fast Na+ dend.gbar_ca = 0.3 // high voltage-activated Ca^2+ dend.gbar_km = 0.1 // slow voltage-dependent non-inactivating K+ dend.gbar_kca = 3 // slow Ca^2+-activated K+ forall ek = -90 // K+ current reversal potential (mV) forall ena = 60 // Na+ current reversal potential (mV) dend.eca = 140 // Ca2+ current reversal potential (mV) // using an ohmic current rather than GHK equation dend { ion_style("ca_ion",0,1,0,0,0) } // -------------------------------------------------------------- // stimulating electrode // -------------------------------------------------------------- objref st st = new IClamp(.1) axon st.loc(.5) st.amp = 0.1 st.dur = 900 st.del = 5 // -------------------------------------------------------------- // Redefinition of the standard hoc procedure for initialization // that allows for pre-equilibration of currents and translation // of "rho" and "kappa" parameters into proper dendrite L and Ra // -------------------------------------------------------------- proc init() { dend { L = rho*axon.L // dend area is axon area multiplied by rho Ra = Ra*kappa/ri(.5) // axial resistivity is adjusted to achieve // desired coupling resistance } st_amp_save = st.amp // preserve stimulus amplitude st.amp = 0 // turn stimulus off t = -1e6 // back up in time finitialize(v_init) // initialize fcurrent() temp_dt = dt dt = 10 // take a few large steps for i=0,19 fadvance() // to allow currents to reach steady state t = 0 // restore t,dt dt = temp_dt finitialize(v) // initialize again fcurrent() st.amp = st_amp_save // restore stimulus } // -------------------------------------------------------------- // bring up standard menus and a graph // -------------------------------------------------------------- nrnmainmenu() nrncontrolmenu() newPlotV()