load_file("nrngui.hoc")
cvode_active(1)
nsyn=15
weight=2.2
low=0
high=50
highindex = 111
Rm = 28000
RmDend = Rm
RmSoma = Rm
RmAx = Rm
Cm = 1
CmSoma= Cm
CmAx = Cm
CmDend = Cm
RaAll= 150
RaSoma=150
RaAx = 50
Vrest = -65
gna = .03
AXONM = 2
gkdr = 0.001
celsius = 34.0
KMULT = 0.01
KMULTP = 0.01
ghd=0.0
nash=0
tstop=200
objref nc[nsyn], g, b, rsyn[nsyn], s[nsyn], rc, rd
use_mcell_ran4()
lowindex = mcell_ran4_init()
rc = new Random()
rc.uniform(0,134)
rd = new Random()
rd.uniform(0,1)
xopen("n128su.hoc") // geometry file
access soma
for i=0, nsyn-1 {
s[i] = new NetStimm(0.5)
s[i].interval=100
s[i].number = 1
s[i].start=0
s[i].noise=1
s[i].seed(highindex+3)
}
distance()
for i=0, nsyn-1 {
rsyn[i] = new Exp2Syn(0.5)
rsyn[i].e=0
rsyn[i].tau1 = 0.5
rsyn[i].tau2 = 3
nc[i] = new NetCon(s[i],rsyn[i],0,0,weight*1.e-3)
}
b = new VBox()
b.intercept(1)
g = new Graph()
g.size(0,tstop,-70,-10)
g.addvar("soma.v(0.5)",1,0, 2*tstop,0,2)
g.xaxis(1)
g.begin()
g.family(1)
b.intercept(0)
b.map()
xopen("n128su.ses")
PlotShape[0].exec_menu("Shape Plot")
PlotShape[0].show(0)
proc init() {
axon[1] {
insert nax gbar_nax=gna * AXONM
sh_nax=nash
insert kdr gkdrbar_kdr=gkdr
insert pas e_pas=Vrest g_pas = 1/RmAx Ra=RaAx cm=CmAx
insert kap gkabar_kap = KMULTP*0.2
}
axon[0] {
insert nax gbar_nax=gna * AXONM
sh_nax=nash
insert kdr gkdrbar_kdr=gkdr
insert pas e_pas=Vrest g_pas = 1/RmAx Ra=RaAx cm=CmAx
insert kap gkabar_kap = KMULTP*0.2
}
soma {
insert hd ghdbar_hd=ghd
vhalfl_hd=-73
insert na3 gbar_na3=gna
sh_na3=nash
ar_na3=1
insert kdr gkdrbar_kdr=gkdr
insert kap gkabar_kap = KMULTP
insert pas e_pas=Vrest g_pas = 1/RmSoma Ra=RaSoma cm=CmSoma
}
for i=135,ndend-1 dend[i] { //basal
insert na3 gbar_na3=gna
sh_na3=nash
ar_na3=1
insert kdr gkdrbar_kdr=gkdr
insert kap gkabar_kap=KMULTP
insert pas e_pas=Vrest g_pas = 1/RmDend Ra=RaAll cm=CmDend
}
for i=0,134 dend[i] { //apical
insert pas e_pas=Vrest g_pas = 1/RmDend Ra=RaAll cm=CmDend
insert ds
if (diam>0.5 && distance(0.5)<500) {
insert hd ghdbar_hd=ghd
insert na3
ar_na3=0.7
gbar_na3=gna
insert kdr
gkdrbar_kdr=gkdr
insert kap
insert kad
gkabar_kap=0
gkabar_kad=0
for (x) if (x>0 && x<1) { xdist = distance(x)
if (xdist>500) {xdist=500}
ghdbar_hd(x) = ghd*(1+3*xdist/100)
if (xdist > 100){
vhalfl_hd=-81
gkabar_kad(x) = KMULT*(1+xdist/100)
} else {
vhalfl_hd=-73
gkabar_kap(x) = KMULTP*(1+xdist/100)
}
}
}
}
t=0
forall {
v=Vrest
if (ismembrane("nax") || ismembrane("na3")) {ena=55}
if (ismembrane("kdr") || ismembrane("kap") || ismembrane("kad")) {ek=-90}
if (ismembrane("hd") ) {ehd_hd=-30 }
}
finitialize(Vrest)
fcurrent()
forall {
for (x) {
if (ismembrane("na3")||ismembrane("nax")){e_pas(x)=v(x)+(ina(x)+ik(x))/g_pas(x)}
if (ismembrane("hd")) {e_pas(x)=e_pas(x)+i_hd(x)/g_pas(x)}
}
}
cvode.re_init()
access soma
g.begin()
}
proc advance() {
fadvance()
g.plot(t)
g.flush()
doNotify()
}
proc runl() {
g.color(1)
g.label(0.5,0.6,"0-50um no Ih")
weight=2.2
low=0
high=50
runc()
g.color(2)
g.label(0.5,0.55,"0-50um with Ih")
ghd=5.e-5
runc()
g.color(3)
g.label(0.5,0.45,"250-300um no Ih")
weight=8
low=250
high=300
ghd=0
runc()
g.color(4)
g.label(0.5,0.4,"250-300um with Ih")
ghd=5.e-5
runc()
}
proc runc() {
rc.MCellRan4(highindex+1)
rd.MCellRan4(highindex+2)
for i=0, nsyn-1 {
s[i].seed(highindex+3)
nc[i].weight = weight*1.e-3
}
for i=0, nsyn-1 {
flag=0
while (flag==0) {
comp=int(rc.repick())
tmp=rd.repick()
dend[comp] {if (distance(tmp)<low || distance(tmp)>high) {flag=0} else{flag=1}}
}
dend[comp] {
rsyn[i].loc(tmp)
}
}
run()
}
runl()