// 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
|