/* --- Set Global Simulation Parameters --- */ showGUI = 1 // whether to open gui windows msplit = 1 // whether to split across multiple threads nmt = 8 // number of parallel threads to use (ignored if msplit == 0) verbosity = 2 // verbosity level (0-4) synCa = 3 // excitatory synapses cause Ca influx /*------ */ /* --- Import the geometry and build cell --- */ load_file("LGMDreconstruction_NEURON.hoc") if (verbosity > 2) printf("3D morphology loaded \n") objref siz objref Ctines,Chandle objref FieldA, TineEnds siz = new SectionList() forsec "soma" { siz.append() } forsec "SIZ" { siz.append() } FieldA = new SectionList() forsec "MainTrunk"{ FieldA.append() } forsec "Tines" { FieldA.append() } Ctines = new SectionList() Chandle = new SectionList() for i=0,21 { FieldC[i] {Chandle.append()} } for i=22,454 { FieldC[i] {Ctines.append()} } /*------ */ /* --- Load init files and utility functions --- */ load_file("init.hoc") load_file("guisetup.hoc") load_file("parinit.hoc") load_file("mview.hoc") load_file("Utilities.hoc") if (verbosity > 2) printf("SimUtilities loaded \n") load_file("Injection_procs.hoc") if (verbosity > 2) printf("Injection_procs loaded \n") /*------ */ /* --- Set Membrane Parameters --- */ gl = 1.0e-5 // base leak conductance (some sections set higher below) el = -68 // leak reversal potential Cm = 0.80 // membrane capacitance µF axial = 220 // base axial resistivity Ωcm (some section changed below) EK = -77 // K+ reversal potential ENa = 60 // Na+ reversal potential ECa = 150 // initial Ca2+ reversal potential (changes with Ca2+ influx and eflux) SIZNa = 0.45 // sodium channel density at siz gKdr = 1.0e-2 // base Kdr channel density SIZM = 5.5e-3 // M channel density at siz gcat = 1.4e-2 // CaT channeldensity gkca = 1.3e-2 // KCa channel density gcal = 2e-3 // CaL channel density forall { Ra = axial cm = Cm insert pas g_pas = gl e_pas = el } /*------ */ /* --- Adjust channel densities for each section --- */ /*--- Axon --- */ forsec "Axon" { Ra=35 insert M insert Na insert HH_Kdr insert h g_pas=gl*5 gmax_M = SIZM/35 gmax_Na = SIZNa/30 gmax_HH_Kdr = gKdr gmax_h = 5e-5 ek = EK ena = ENa } /*------ */ /*--- SIZ --- */ forsec siz { Ra=220 insert Na insert HH_Kdr insert M insert KCa insert CaT insert CaL insert CaInternal g_pas = gl*5 gmax_Na = SIZNa gmax_HH_Kdr = gKdr/4 gmax_M = SIZM gmax_KCa = gkca gmax_CaT = gcat gmax_CaL = gcal ek = EK eca = ECa ena = ENa } forsec "ASIZ" Ra=600 forsec "DSIZ" Ra=100 /*------ */ /*--- Handle --- */ forsec "Handle" { Ra=60 insert Na insert HH_Kdr insert M gmax_Na = 1.5e-2 gmax_HH_Kdr = gKdr gmax_M = SIZM/40 ek = EK ena = ENa } /*--- procedure to set decreasing M density in handle--- */ proc handle_M_dist() { local D, Mhalf, MS, Mmax, Mmin // Mmax = SIZM Mmin = 8.0e-5 Mhalf = 25 MS = -50 soma[0] {distance()} forsec "Handle" { D = distance(.5) gmax_M = 0.27*(Mmin + (Mmax-Mmin)/(1+exp((Mhalf-D)/MS))) } } /*------ */ /*--- procedure to set decreasing Na density in handle--- */ proc handle_Na_dist() { local D, d_half, Namax, S, Namin Namin = 1.0e-2 Namax = SIZNa d_half = 40 S = -90 soma[0] {distance()} forsec "Handle" { D = distance(.5) gmax_Na = 0.7*(Namin + (Namax-Namin)/(1+exp((d_half-D)/S))) } } /*------ */ for i=0,30 { // Insert Ca in half of handle near SIZ Handle[i] { insert KCa insert CaT insert CaL insert CaInternal gmax_KCa = gkca gmax_CaT = gcat gmax_CaL = gcal eca=ECa } } /*------ */ /* --- Set cai influx and eflux for SIZ and handle Parameters --- */ forall if (ismembrane("CaInternal")) { alpha_ca_CaInternal = 6.25e-4 // determines ICa : cai ratio ca_init_CaInternal = 1.2e-3 // initial cai tau_ca_CaInternal = 400 // time constant of eflux (ms) } tmax_CaL=0.1 minca_KCa= 9.0e-4 pwr_KCa = 4 kD_ca_KCa= 3.0e-4 tau_KCa = 2 ca_min_CaInternal=1e-5 /*------ */ /*--- Field A --- */ forsec "MainTrunk"{ Ra=120 insert Na gmax_Na = 5e-3 ena = ENa } forsec FieldA { insert HH_Kdr insert M insert NaP insert cdp insert CN insert hcn insert KD_ca3 gmax_hcn = 1.2e-4 gmax_HH_Kdr = gKdr/2 gmax_M = SIZM/140 gmax_NaP = 1e-4 gmax_KD_ca3 = 4.0e-2 ena = ENa ek = EK } TineEnds = new SectionList() FindEnds(TineEnds,"Tines") forsec TineEnds Ra=30 {Handle[20] distance() forsec FieldA gmax_hcn=0.4*gmax_hcn*(distance(0.5)/450)^6} // set increasing hcn density Zratio_g( FieldA, "Handle[60]", "hcn", 0, 0, 1, 1.25, 0.01 ) // set increasing hcn density forsec FieldA gmax_KD_ca3= 3e-3 + gmax_hcn*140 // set increasing KD density /* --- Set Ca pump parameters for Field A--- */ TotalPump_cdp = 8.5e-13 TotalBuffer_cdp=0.04 k1_cdp = 2.0 k3_cdp = 0.5 eca=ECa /*------ */ /*------ */ /*--- Inhibitory Fields B,C --- */ forsec "Field"{ Ra=100 insert M insert KdrF g_pas=gl*2 gmax_M = 5.0e-5 gmax_KdrF = 3.0e-03 ek=EK } Zratio_g(Ctines, "FieldC[19]", "M", 1.25e-5, 30, 1,2) // set increasing M density Zratio_g("FieldB", "Handle[35]", "M", 1.25e-5, 30,1,2) // set increasing M density forsec Chandle { Ra=40 if (ismembrane("NaP")) uninsert NaP if (ismembrane("h")) uninsert h insert HH_Kdr insert Na g_pas = gl gmax_HH_Kdr = gKdr gmax_Na = 4.0e-3 } /*------ */ /*--- Neurite connecting the soma --- */ forsec "CellBody"{ Ra=300 insert NaP insert Na insert HH_Kdr gmax_NaP = 5.0e-5 gmax_Na = 1.5e-2 gmax_HH_Kdr = gKdr*2 ek = EK } /*------ */ /*------ */ if (msplit) { // impedance measures only work in with single thread, so start multithread at end startPar() } if (showGUI) RunControlWindow()