/*---------------------------------------------------------------------------- Neuron demo file to simulate fluctuating conductances ----------------------------------------------------- - single-compartment with "Gfluct" point-process - addition of Na/K currents for action potentials - spontaneous firing - Gfluct2 process - fluctuations comparable to layer6 model with correl=0.7 Reference: Destexhe, A., Rudolph, M., Fellous, J-M. and Sejnowski, T.J. Fluctuating synaptic conductances recreate in-vivo--like activity in neocortical neurons. Neuroscience 107: 13-24 (2001). (electronic copy available at http://cns.iaf.cnrs-gif.fr) Written by A. Destexhe, 1999 ----------------------------------------------------------------------------*/ //---------------------------------------------------------------------------- // load and define general graphical procedures //---------------------------------------------------------------------------- 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]) } proc makegraph() { local ii // define subroutine to add a new graph // makeraph("variable", xmin,xmax,ymin,ymax) ngraph = ngraph+1 ii = ngraph-1 g[ii] = new Graph() g[ii].size($2,$3,$4,$5) 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.5 npoints = 2000 tstop = npoints * dt runStopAt = tstop steps_per_ms = 1/dt celsius = 36 v_init = -70 objectvar Exp , Pow, Theor // create vectors of data points Exp = new Vector(npoints) Theor = new Vector(npoints) Pow = new Vector(npoints/2) //---------------------------------------------------------------------------- // create a compartment and insert passive properties //---------------------------------------------------------------------------- create soma soma { L = 105 // size to get similar Rin as Layer VI cell diam = 105 } leak_cond = 4.52e-5 leak_rev = -80 // D & P 1999 capacit = 1 axial_res = 250 forall { // insert passive currents insert pas g_pas = leak_cond e_pas = leak_rev cm = capacit Ra = axial_res L = L } //---------------------------------------------------------------------------- // insert active properties //---------------------------------------------------------------------------- DEBUG=0 soma { // insert voltage-dependent currents INa, IKd, IM insert inaT ena = 50 vtraub_inaT = -63 // threshold of -55 gnabar_inaT = 20e-4 // density for soma insert ikdT ek = -90 vtraub_ikdT = -63 // threshold of IKd gkbar_ikdT = 200e-4 // density for soma insert imZ ek = -90 gkbar_imZ = 3e-4 // density for soma } // // set the values of voltage-dependent conductances: // - Na channels like Magee-Johnston // - IM set to repetitive firing at the right frequency // corrJ = 4.3 // Johnston correction factor for Na conductance soma { gnabar_inaT = corrJ*120e-4 // sodium channels gkbar_ikdT = 100e-4 // delayed rectifier gkbar_imZ = 5e-4 // M-channels } forall { shift_inaT = -10 // inactivation around -52 mV vtraub_inaT = -63 // was -50 mV before vtraub_ikdT = -63 } //---------------------------------------------------------------------------- // insert Gfluct process //---------------------------------------------------------------------------- access soma objref fl fl = new Gfluct2(0.5) fl.std_e = 0.012 // 4 times larger fl.std_i = 0.0264 proc make_Fpanel() { // make panel xpanel("Fluctuating Conductance model") xpvalue("E_e",&fl.E_e) xpvalue("E_i",&fl.E_i) xpvalue("g_e0",&fl.g_e0) xpvalue("g_i0",&fl.g_i0) xpvalue("std_e",&fl.std_e) xpvalue("std_i",&fl.std_i) xpvalue("tau_e",&fl.tau_e) xpvalue("tau_i",&fl.tau_i) xbutton("Run","run()") xpanel() } make_Fpanel() //---------------------------------------------------------------------------- // create graphs //---------------------------------------------------------------------------- addgraph("soma.v(0.5)",-80,40) ymin = 0 // min-max values ymax = 0.15 addgraph("fl.g_e",ymin,ymax) addgraph("fl.g_i",ymin,ymax)