RmSoma=149999
RaSoma=42.562
RmTuft=45373.4
RaTuft=35
DistHalfRm=151.741
DistHalfRa=90.8296
SlopeRm=13.8656
SlopeRa=7.76766
soma_hbar = 0.00003
KirGbar = 0.00020307*5
Epas=-71.9879
CmSoma=1
SpineFactorBasal=3.5
SpineFactorTuft=3.5
balance = 0
geomnseg = 1
strdef sectype
objref CAN_temp, CAL_temp, CAT_temp, KAD_temp, KAP_temp, NA_temp
soma distance()
celsius = 34
forall {
insert d3
i=0
x_d3(0)=x3d(0)
y_d3(0)=y3d(0)
z_d3(0)=z3d(0)
for (x) if (x > 0 && x < 1) {
while (arc3d(i)/L < x) { i += 1 }
D=arc3d(i) - arc3d(i-1)
if (D <= 0) {
printf("\t\t * %s had a D < 0\n", secname())
}
alpha = (x*L - arc3d(i-1))/D
x_d3(x)=x3d(i-1) + (x3d(i) - x3d(i-1))*alpha
y_d3(x)=y3d(i-1) + (y3d(i) - y3d(i-1))*alpha
z_d3(x)=z3d(i-1) + (z3d(i) - z3d(i-1))*alpha
}
x_d3(1)=x3d(n3d()-1)
y_d3(1)=y3d(n3d()-1)
z_d3(1)=z3d(n3d()-1)
}
objref tmpo2
tmpo2=new Shape()
soma_caL =0.00006
soma_car =0.00003
gsomacar =0.00008
soma_caLH =0
soma_caT =0.0003
soma_km=0*0.001
potNa=50
mykca_init =0*0.9*1.5*0.03
soma_kca =0*0.7*4.5*0.0001
AXKdr=1
AXNa=3.5
gkdrdend=0
gnanotrunk=0
psoma=0.00075
slowsoma=0.15
slownotsoma=0.1
sinfsoma=1.35
soma_kap =7*0.0005*4*2.75
axon_kap =7*0.0005*4*4
soma_kad =7*0.0005*4*2.75
gna=0.035*1
axongkdr=0.011
gkd=0.005
gnadend=0.015*1.5
gkdrapical=0.01*0.05
gkv2soma=0.00264*5
gkv2=0.00198*10
gkv2axon=0.00198*10
gkv2scale=0.3
scale_Na_conduct=14
gkdrsoma=gkdrapical*0
distalv=0
proximalv=6
icanfrac= 0.0
icangbar = 0.000095*3*2*2*2*2*2*2*0
cantau = 100
gip3= 1.85
func MyExp() {
if ($1>50) {
return exp(50)
} else {
if ($1<-50) {
return 0
} else {
return exp($1)
}
}
}
sectype ="soma"
forsec "soma" {
insert ican
gbar_ican = icangbar
taur_ican = cantau
insert na16a
gbar_na16a= gna * scale_Na_conduct
dist_na16a = sinfsoma
persist_na16a = psoma
slowdown_na16a = slowsoma
C1O1v2_na16a=proximalv
insert kd
gbar_kd=gkdrsoma
ena = potNa
insert Kv2like
gbar_Kv2like=gkv2soma
insert nap
gnabar_nap = 0*.5*0.000014
K_nap = 4.5
vhalf_nap = -60.4
insert pas
Rm=RmTuft+1*(RmSoma-RmTuft)/(1+MyExp((-DistHalfRm)/SlopeRm))
Ra=RaTuft+1*(RaSoma-RaTuft)/(1+MyExp((-DistHalfRa)/SlopeRa))
g_pas=1/Rm
cm=CmSoma
insert h
gbar_h = soma_hbar
K_h = 8.8
vhalf_h = -82
insert kap
gkabar_kap = soma_kap
ek = -80
insert km
gbar_km = soma_km
ek = -80
insert cal
gcalbar_cal = 0.1*soma_caL
insert cat
gcatbar_cat = soma_caT
insert car
gcabar_car = gsomacar
insert kca
cac_kca=0.00075
gbar_kca = 0.5*soma_kca
insert mykca
gkbar_mykca = 5.5*mykca_init
tmpo2.color(2)
}
sectype="axon"
forsec axon_sec_list {
insert nax
gbar_nax=gna*AXNa
insert kd
gbar_kd=axongkdr
ena = potNa
insert pas
Rm=RmTuft+1*(RmSoma-RmTuft)/(1+MyExp((-DistHalfRm)/SlopeRm))
Ra=RaTuft+1*(RaSoma-RaTuft)/(1+MyExp((-DistHalfRa)/SlopeRa))
g_pas=1/Rm
cm=CmSoma
insert km
gbar_km = 3*soma_km
ek = -80
insert kap
gkabar_kap = axon_kap
ek = -80
insert Kv2like
gbar_Kv2like=gkv2axon
}
forsec apical_trunk_list {
insert ican
gbar_ican = icangbar
taur_ican = cantau
for (x) {
xdist = find_vector_distance_precise(secname(),x)
xdist=distance(x)
insert car
gcabar_car(x) = 0.1*soma_car
insert calH
if (xdist > 50) {
gcalbar_calH(x) = 2*soma_caLH
} else {
gcalbar_calH(x) = 0.1*soma_caLH
}
}
caT_distal_maxfactor = 4
caT_distal_distance = 350
for (x) {
xdist = find_vector_distance_precise(secname(),x)
xdist = distance(x)
fr = xdist/caT_distal_distance
insert cat
if (xdist < 100) {
gcatbar_cat(x) = 0
} else {
gcatbar_cat(x) = caT_distal_maxfactor*soma_caT*fr
}
}
kca_distal_maxfactor = 1
kca_distal_distance = 200
for (x) {
xdist = find_vector_distance_precise(secname(),x)
xdist = distance(x)
fr = xdist/kca_distal_distance
insert kca
cac_kca=0.00075
insert mykca
if (xdist < kca_distal_distance && xdist > 50) {
gbar_kca(x) = 5*soma_kca
gkbar_mykca = 2*mykca_init
} else {
gbar_kca(x) = 0.5*soma_kca
gkbar_mykca = 0.5*mykca_init
}
}
insert h
insert kap
insert kad
insert Kv2like
for (x){
xdist = distance(x)
if (xdist>500) {xdist=500}
gbar_h(x) = soma_hbar*(1+(6/5)*xdist/100)
if (xdist > 100){
if (xdist>300) {ndist=300} else {ndist=xdist}
vhalf_h(x)=-81-8*(ndist-100)/200
gkabar_kad(x) = soma_kad*(1+xdist/100)
gkabar_kap(x)=0
gbar_Kv2like(x) =gkv2*gkv2scale
} else {
vhalf_h(x)=-81
gkabar_kap(x) = soma_kap*(1+xdist/100)
gbar_Kv2like(x) = gkv2
gkabar_kad(x)=0
}
}
insert na16a
gbar_na16a=gnadend*scale_Na_conduct
persist_na16a=psoma
slowdown_na16a = slownotsoma
for (x) {
xdist = find_vector_distance_precise(secname(),x)
xdist=distance(x)
y=30+45*(1-MyExp(-xdist/126))
if (y>=25.5) {
if (y<=44.6) {
dist_na16a=(y-11)/14
persist_na16a=psoma
C1O1v2_na16a=6-6*xdist/200
} else { if (y<=58.2) {
dist_na16a=(y-27)/7.3
persist_na16a=psoma
C1O1v2_na16a=6-6*xdist/200
}else { if(y<=65.79) {
dist_na16a=(y-44)/3.3
persist_na16a=psoma
C1O1v2_na16a=6-6*xdist/200
} else{
dist_na16a=(y-44)/3.3
persist_na16a=psoma
C1O1v2_na16a=distalv}
}}} else {
dist_na16a=(y+2.1)/26.848
persist_na16a=psoma
C1O1v2_na16a=6-6*xdist/200}
}
insert kd
gbar_kd=gkdrapical
ena = potNa
insert km
gbar_km = soma_km
ek = -80
insert pas
for (x) {
xdist=distance(x)
if (xdist<=100) {
SpineFactor=1
} else {
if (xdist>394) {
SpineFactor=SpineFactorTuft
} else {
SpineFactor=2+(xdist-100)*(SpineFactorTuft-2)/294
}
}
if (xdist<394) {
Rm=RmTuft+(RmSoma-RmTuft)/(1+MyExp((xdist-DistHalfRm)/SlopeRm))
Ra=RaTuft+(RaSoma-RaTuft)/(1+MyExp((xdist-DistHalfRa)/SlopeRa))
} else {
Rm=RmTuft+(RmSoma-RmTuft)/(1+MyExp((394-DistHalfRm)/SlopeRm))
Ra=RaTuft+(RaSoma-RaTuft)/(1+MyExp((394-DistHalfRa)/SlopeRa))
}
cm(x)=SpineFactor*CmSoma
g_pas(x)=SpineFactor/Rm
}
tmpo2.color(4)
insert kir
gbar_kir=KirGbar
for (x) {
xdist = find_vector_distance_precise(secname(),x)
xdist=distance(x)
insert kir
if (xdist > 100) {
gbar_kir=KirGbar
} else {
gbar_kir=KirGbar*xdist/100
}
}
}
sectype = "apical non-trunk"
forsec apical_non_trunk_list {
insert ican
gbar_ican = icangbar
taur_ican = cantau
for (x) {
xdist = find_vector_distance_precise(secname(),x)
xdist=distance(x)
insert car
gcabar_car(x) = 0.1*soma_car
insert calH
if (xdist > 50) {
gcalbar_calH(x) = 2*soma_caLH
} else {
gcalbar_calH(x) = 0.1*soma_caLH
}
}
caT_distal_maxfactor = 4
caT_distal_distance = 350
for (x) {
xdist = find_vector_distance_precise(secname(),x)
xdist=distance(x)
fr = xdist/caT_distal_distance
insert cat
if (xdist < 100) {
gcatbar_cat(x) = 0
} else {
gcatbar_cat(x) = caT_distal_maxfactor*soma_caT*fr
}
}
kca_distal_maxfactor = 1
kca_distal_distance = 200
for (x) {
xdist = find_vector_distance_precise(secname(),x)
xdist=distance(x)
fr = xdist/kca_distal_distance
insert kca
cac_kca=0.00075
insert mykca
if (xdist < kca_distal_distance && xdist > 50) {
gbar_kca(x) = 5*soma_kca
gkbar_mykca = 2*mykca_init
} else {
gbar_kca(x) = 0.5*soma_kca
gkbar_mykca = 0.5*mykca_init
}
}
insert h
insert kap
insert Kv2like
insert kad
for (x){
xdist = distance(x)
if (xdist>500) {xdist=500}
gbar_h(x) = soma_hbar*(1+(6/5)*xdist/100)
if (xdist > 100){
if (xdist>300) {ndist=300} else {ndist=xdist}
vhalf_h(x)=-81-8*(ndist-100)/200
gkabar_kad(x) = soma_kad*(1+xdist/100)
gkabar_kap(x) = 0
gbar_Kv2like(x) = gkv2*gkv2scale
} else {
vhalf_h(x)=-81
gkabar_kap(x) = soma_kap*(1+xdist/100)
gbar_Kv2like(x) = gkv2
gkabar_kad(x) = 0
}
}
insert na16a
gbar_na16a = gnadend*scale_Na_conduct
persist_na16a=psoma
slowdown_na16a = slownotsoma
for (x) {
xdist = find_vector_distance_precise(secname(),x)
xdist=distance(x)
y=30+45*(1-MyExp(-xdist/126))
if (y>=25.5) {
if (y<=44.6) {
dist_na16a=(y-11)/14
persist_na16a=psoma
C1O1v2_na16a=6-6*xdist/200
} else { if (y<=58.2) {
dist_na16a=(y-27)/7.3
persist_na16a=psoma
C1O1v2_na16a=6-6*xdist/200
}else { if(y<=65.79) {
dist_na16a=(y-44)/3.3
persist_na16a=psoma
C1O1v2_na16a=6-6*xdist/200
} else{
dist_na16a=(y-44)/3.3
persist_na16a=psoma
C1O1v2_na16a=distalv}
}}} else {
dist_na16a=(y+2.1)/26.848
persist_na16a=psoma
C1O1v2_na16a=6-6*xdist/200}
}
insert kd
gbar_kd = gkdrapical
ena = potNa
insert km
gbar_km = soma_km
ek = -80
insert pas
for (x) {
xdist=distance(x)
if (xdist<=100) {
SpineFactor=1
} else {
if (xdist>394) {
SpineFactor=SpineFactorTuft
} else {
SpineFactor=2+(xdist-100)*(SpineFactorTuft-2)/294
}
}
if (xdist<394) {
Rm=RmTuft+(RmSoma-RmTuft)/(1+MyExp((xdist-DistHalfRm)/SlopeRm))
Ra=RaTuft+(RaSoma-RaTuft)/(1+MyExp((xdist-DistHalfRa)/SlopeRa))
} else {
Rm=RmTuft+(RmSoma-RmTuft)/(1+MyExp((394-DistHalfRm)/SlopeRm))
Ra=RaTuft+(RaSoma-RaTuft)/(1+MyExp((394-DistHalfRa)/SlopeRa))
}
cm(x)=SpineFactor*CmSoma
g_pas(x)=SpineFactor/Rm
}
tmpo2.color(3)
for (x) {
xdist = find_vector_distance_precise(secname(),x)
xdist=distance(x)
insert kir
if (xdist > 100) {
gbar_kir=KirGbar
} else {
gbar_kir=KirGbar*xdist/100
}
}
}
sectype = "basal tree"
forsec basal_tree_list {
insert na3dend
insert nap
gnabar_nap = 0*.5*0.000014
K_nap = 4.5
vhalf_nap = -60.4
insert kap
gkabar_kap = 0.0025036
insert h
gbar_h = soma_hbar
insert kd
gbar_na3dend=gnadend
gbar_kd=gkdrdend
ena = potNa
insert Kv2like
gbar_Kv2like = gkv2*gkv2scale
insert pas
for (x) {
xdist=distance(x)
if (xdist<=40) {
SpineFactor=1
} else {
SpineFactor=SpineFactorBasal
}
Rm=RmTuft+1*(RmSoma-RmTuft)/(1+MyExp((-DistHalfRm)/SlopeRm))
Ra=RaTuft+1*(RaSoma-RaTuft)/(1+MyExp((-DistHalfRa)/SlopeRa))
cm(x)=SpineFactor*CmSoma
g_pas(x)=SpineFactor/Rm
}
for (x) {
xdist = find_vector_distance_precise(secname(),x)
xdist=distance(x)
insert kir
if (xdist > 40) {
gbar_kir=KirGbar
} else {
gbar_kir=KirGbar*xdist/40
}
}
tmpo2.color(5)
}
forall if(ismembrane("ca_ion")) {
eca =140
ion_style("ca_ion",0,1,0,0,0)
vshift_ca = 0
}
maximum_segment_length=75
freq = 100
d_lambda = 0.1
func lambda_f() { local i, x1, x2, d1, d2, lam
if (n3d() < 2) {
return 1e5*sqrt(diam/(4*PI*$1*Ra*cm))
}
x1 = arc3d(0)
d1 = diam3d(0)
lam = 0
for i=1, n3d()-1 {
x2 = arc3d(i)
d2 = diam3d(i)
lam += (x2 - x1)/sqrt(d1 + d2)
x1 = x2 d1 = d2
}
lam *= sqrt(2) * 1e-5*sqrt(4*PI*$1*Ra*cm)
return L/lam
}
if(balance) forall {
for (x) {
if (ismembrane("na_ion") && ismembrane("ca_ion") && ismembrane("Ca_ion") && (ismembrane("k_ion"))) {
e_pas(x)=(ina(x)+ik(x)+ica(x)+iCa(x)+g_pas(x)*v(x))/g_pas(x)
} else if (ismembrane("na_ion") && ismembrane("ca_ion") && (ismembrane("k_ion"))){
e_pas(x)=(ina(x)+ik(x)+ica(x)+g_pas(x)*v(x))/g_pas(x)
} else if (ismembrane("na_ion") && (ismembrane("k_ion"))) {
e_pas(x)=(ina(x)+ik(x)+g_pas(x)*v(x))/g_pas(x)
printf("Section %s ina: %g ik: %g\n", secname(), ina(x), ik(x))
psection()
} else {
print "simply assigning v(x)"
e_pas(x)=v(x)
}
fcurrent()
}
}
forall{
for(x){
e_pas=Epas}
}
if(geomnseg) {forall {
nseg = int((L/(d_lambda*lambda_f(freq))+0.9)/2)*2 + 1
}
}
forall {
for(x){
insert cal4
DCa_cal4=0.22
cao0_ca_ion=2
if(ismembrane("ican")){
setpointer cip3p_ican(x), cip3_cal4(x)
}
}
}
forsec "soma" {
for (x) {
rdist=distance(x)
alpha_cal4(x)=gip3*(0.75+.25*MyExp(-rdist/100))
print x, rdist, alpha_cal4(x)
}
}
forsec apical_trunk_list {
for (x) {
rdist=distance(x)
alpha_cal4(x)=gip3*(0.75+.25*MyExp(-rdist/100))
print x, rdist, alpha_cal4(x)
}
}
forsec apical_non_trunk_list {
for (x) {
rdist=distance(x)
alpha_cal4(x)=gip3*(0.75+.25*MyExp(-rdist/100))
print x, rdist, alpha_cal4(x)
}
}
forsec basal_tree_list {
for (x) {
rdist=distance(x)
alpha_cal4(x)=gip3*(0.75+.25*MyExp(-rdist/100))
print x, rdist, alpha_cal4(x)
}
}
if(geomnseg) {forall {
nseg = int((L/(d_lambda*lambda_f(freq))+0.9)/2)*2 + 1
}
}