// ------------------------------------------- // init active parameters for STDP simulations (Letzkus 2006) // based on Schaefer (2003) // uses mechanisms na, kv, ih, kca, km, kap, ca, cad // ih distribution and nonunifrom resting Vm from Kole (2006) // // by B.Kampa 2006 // ------------------------------------------- proc init_params() { celsius=35 Ri=125 Cm=1 Rm=15000 v_init=-89 // JP corrected RMP under ZD 7288 spinescale=2.0 // scale total area to account for spines hfactor = 0.00042849 // for 2.5 mM K+ hinvtau = 0.0030776 // for 2.5 mM K+ } //------------------------------------------------------------------------- // initalise passive properties and add spines by scaling Rm and Cm, NOT scaled for spines: axon, soma, 1st 100 um of apical dend, the 1st 20 um of basals //---------------------------------------------------------------------- proc init_spine() { forall {insert pas g_pas=1/(Rm/spinescale) cm=Cm*spinescale Ra=Ri } axon {g_pas=0.02 } soma {g_pas=1/Rm cm=Cm} for i=0,14 { dend1[i] {g_pas=1/Rm cm=Cm} } for i=15,27 { dend1[i] {g_pas=1/Rm cm=Cm} } for i=28,32 { dend1[i] {g_pas=1/Rm cm=Cm} } for i=43,47 { dend1[i] {g_pas=1/Rm cm=Cm} } for i=71,72 { dend1[i] {g_pas=1/Rm cm=Cm} } for i=777,778 { dend1[i] {g_pas=1/Rm cm=Cm} } for i=808,810 { dend1[i] {g_pas=1/Rm cm=Cm} } for i=923,924 { dend1[i] {g_pas=1/Rm cm=Cm} } for i=957,959 { dend1[i] {g_pas=1/Rm cm=Cm} } for i=1006,1007 { dend1[i] {g_pas=1/Rm cm=Cm} } for i=1055,1058 { dend1[i] {g_pas=1/Rm cm=Cm} } for i=1059,1060 { dend1[i] {g_pas=1/Rm cm=Cm} } for i=1067,1069 { dend1[i] {g_pas=1/Rm cm=Cm} } } //-------------------------------------------------- // initialise nonunifrom resting Vm //---------------------------------------------------- proc init_vm() { forall { e_pas=v_init } access dend1[21] distance() for i=0,1090 { dend1[i] {e_pas=v_init+(0*(distance(.5))) } } } // -------------------------------------------------------------------------- // Distribution exponential, now identical to patch data (Kole, Nov 2004) // -------------------------------------------------------------------------- proc hexp() { forall {insert ih gamma_ih_ih=6.8e-13 gh_ih = -0.0002 } access dend1[21] area(0.5) distance() printf("distributes Ih exponentially with dis from soma\n") for i=0,1090 { access dend1[i] ghdbar_ih=gh_ih+(hfactor*(exp(hinvtau*distance(.5)))) ghdbar_ih=ghdbar_ih*spinescale } // the reconstructed axon axon { ghdbar_ih=0 } soma { ghdbar_ih=0 } for i=0,13 { dend1[i] { ghdbar_ih=0 } } // the real soma for i=14,27 { dend1[i] { ghdbar_ih=ghdbar_ih/spinescale } } // the 1st 100 um of the apical trunk for i=28,32 { dend1[i] { ghdbar_ih=ghdbar_ih/spinescale } } for i=43,47 { dend1[i] { ghdbar_ih=ghdbar_ih/spinescale } } for i=71,72 { dend1[i] { ghdbar_ih=ghdbar_ih/spinescale } } // the 1st 20 um of the basals for i=777,778 { dend1[i] { ghdbar_ih=ghdbar_ih/spinescale } } for i=808,810 { dend1[i] { ghdbar_ih=ghdbar_ih/spinescale } } for i=923,924 { dend1[i] { ghdbar_ih=ghdbar_ih/spinescale } } for i=957,959 { dend1[i] { ghdbar_ih=ghdbar_ih/spinescale } } for i=1006,1007 { dend1[i] { ghdbar_ih=ghdbar_ih/spinescale } } for i=1055,1058 { dend1[i] { ghdbar_ih=ghdbar_ih/spinescale } } for i=1059,1060 { dend1[i] { ghdbar_ih=ghdbar_ih/spinescale } } for i=1067,1069 { dend1[i] { ghdbar_ih=ghdbar_ih/spinescale} } } // ---------------------------------------------------------- // all other active parameters // ---------------------------------------------------------- proc init_active_params() { Ek = -90 Ena = 60 vshift_na = 3 //to get AP threshold of -63 mV (Gulledge & Stuart) gna_soma = 3000 gkv_soma = 30 gka_soma = 0.06 gkm_soma = 2.2 gkca_soma = 2.5 git_soma = 0.0003 gca_soma = 0 gna_axon = 30000 gkv_axon = 400 gna_dend = 40 *spinescale gkv_dend = 30 *spinescale gka_dend = 0.03 *spinescale gkm_dend = 0.05 *spinescale gkca_dend= 2.5 *spinescale gca_dend = 0 *spinescale git_dend = 0.0003 *spinescale gca_distal = 1.25 * spinescale git_distal = 0.001 *spinescale gka_slope = 0 // no gradient tauR = 80 caiExp = 4 rA = 0.05 rB = 0.1 } proc init_active() { // insert active properties // axon forall insert na forsec axon_only {insert na gbar_na = gna_axon} forsec axon_only {insert kv gbar_kv = gkv_axon} // dendrites forsec dendritic_only { insert na gbar_na = gna_dend insert kv gbar_kv = gkv_dend insert km gbar_km = gkm_dend insert kca gbar_kca = gkca_dend insert kap gkabar_kap = gka_soma insert ca gbar_ca = gca_dend insert it2 gcabar_it2=git_dend insert cad } // soma forsec somaAll { insert na gbar_na = gna_soma insert kv gbar_kv = gkv_soma insert km gbar_km = gkm_soma insert kca gbar_kca = gkca_soma insert kap gkabar_kap = gka_soma insert ca gbar_ca = gca_soma insert cad } forall if(ismembrane("k_ion")) ek = Ek forall if(ismembrane("na_ion")) { ena = Ena } forall if(ismembrane("ca_ion")) { eca = 140 ion_style("ca_ion",0,1,0,0,0) } } // -------------------------------------------------------------- // Low Threshold Ca Channel to reproduce frequency effect (Larkum, Kaiser, Sakmann, PNAS,1999) // -------------------------------------------------------------- proc boost_ca() { vh1_it2=56 vh2_it2=415 //ah_it2=30 // original value ah_it2=10 //changed to get faster Ca decay v12m_it2=45 v12h_it2=65 am_it2=3 vshift_it2=0 vm1_it2=50 vm2_it2=125 it2_init=0.0005 gca_init=4.5 } // -------------------------------------------------------------- // distal apical dendrites // with slightly elevated Ca conductance densities // -------------------------------------------------------------- proc InitDistal() { forsec dendritic_distal { gbar_ca = gca_distal gcabar_it2 = git_distal } } // -------------------------------------------------------------- // replace init procedure to have sufficiently long prepulse // -------------------------------------------------------------- proc init() {local saveDt, i finitialize(v_init) fcurrent() saveDt = dt dt = 10 for i=0,99 fadvance() dt = saveDt print "new init" } proc DoIt() {local i, j init() for i=0,999 { for j=0,0.1/dt-1 fadvance() } }