// granule.tem // Template for three-compartment granule cell model // Andrew Davison, The Babraham Institute, 2000 begintemplate Gran public soma, periph, deep, AMPAr, NMDAr, spiketimes, spikecount public connect2target, synlist external thresh create soma, periph, deep, s2d, s2p objref AMPAr, NMDAr, spiketimes, spikecount, synlist proc init() { local Len, Erest, RM, p, q, Atotal, gsp, gsd, AMPAtau, NMDAalpha, NMDAbeta, Erev, rsd, rsp create soma, periph, deep, s2d, s2p synlist = new List() spiketimes = new Vector() lastspikecount = 0 Erest = -65 // mV Atotal = 8353 // um2 gsp = 3.08e-10 // S/cm2 gsd = 4.34e-10 RM = 120000 // ohm.cm2 Len = 50 p = 0.0136 q = 0.308 rsd = 1/(gsd*Atotal) rsp = 1/(gsp*Atotal) NMDAalpha = 0.0163 // ms-1 NMDAbeta = 0.00292 // ms-1 AMPAtau = 5.5 // ms Erev = 0 // mV soma { L = Len diam = p*Atotal/(PI*Len) Ra = PI/(4*Len*Atotal) insert pas e_pas = Erest // reversal potential mV g_pas = 1/RM // membrane conductance S/cm2 insert nagrantab insert kslowtab insert kM insert kA gnabar_nagrantab = 0.1611 // S/cm2 gkbar_kslowtab = 0.1313 gkbar_kM = 0.1334 gkbar_kA = 0.0088 } periph { L = Len diam = q*Atotal/(PI*Len) Ra = PI/(4*Len*Atotal) insert pas e_pas = Erest g_pas = 1/RM insert nagrantab insert kslowtab gnabar_nagrantab = 0.1355 gkbar_kslowtab = 0.0243 AMPAr = new ExpSyn(0.5) synlist.append(AMPAr) AMPAr.tau = AMPAtau AMPAr.e = Erev NMDAr = new NMDA(0.5) synlist.append(NMDAr) NMDAr.Alpha = NMDAalpha NMDAr.Beta = NMDAbeta NMDAr.e = Erev spikecount = new APCount(0.5) spikecount.thresh = -30 spikecount.record(spiketimes) } deep { L = Len diam = (1-p-q)*Atotal/(PI*Len) Ra = PI/(4*Len*Atotal) insert pas e_pas = Erest g_pas = 1/RM } s2d { diam = 1 Ra = PI*diam*diam/(4*Len*Atotal) * ( 1/gsd ) L = 1 } s2p { diam = 1 Ra = PI*diam*diam/(4*Len*Atotal) * ( 1/gsp ) L = 1 } soma connect s2p(0), 0 s2p connect periph(0), 1 soma connect s2d(0), 1 s2d connect deep(0), 1 // set reversal potentials, etc. forall if (ismembrane("na_ion")) { ena = 45 // mV } forall if (ismembrane("k_ion")) { ek = -70 // mV } } proc connect2target() { periph $o2 = new NetCon(&v(0.5), $o1) $o2.threshold = thresh } endtemplate Gran