proc init_params() {
strdef somareadfile, dendreadfile
/* somareadfile="ri21scs.asc" */ /* "ri21scs.asc" */
/* dendreadfile="ri21dcs.asc" */ /* "ri21dcs.asc" */
somav="dend1[13].v(0.5)" /* somatic recording site */
dendv="dend1[232].v(0.99)" /* dendritic recording site */
/* initialize user-defined membrane parameters */
celsius = 35
/* fit long pulse attenuation before dendritic sag kicks in */
/* attenuation = 0.634 */
global_ra=147 /* internal resistivity in ohm-cm */
Cm=1.0 /* specific membrane capacitance in uF/cm^2 */
Rm=19263 /* specific membrane resistivity in ohm-cm^2 */
Vleak=-75
Vrest=-75 /* resting potential in mV */
maxq=0.0025 /* gqbar value */
maxq=0.000013 /* for nu sag, init5, qscale=10 */
maxq=0.0017 /* for nu sag, init5, qscale=0.01 */
qblock=0 /* fraction of q current blocked by Cs */
nablock=1 /* fraction of na current blocked by TTX */
kblock=1 /* fraction of k current blocked */
spinescale=2.0 /* scale total area to account for spines */
areascale=0.882216 /* scale total area by an additional factor */
target=54.5 /* input resistance target */
/* parameters for low Ri, nonuniform Rm simulation (init_nurm3) */
/* short pulse fit not too bad */
if (nurm==3) {
global_ra=75
rmsoma = 32000
rmend = 4000
rmhalfdis=400
rmsteep=150
areascale=0.882216
}
/* parameters for low Ri, nonuniform Rm simulation (init_nurm4) */
if (nurm==4) {
global_ra=91.7
rmsoma = 29767
rmend = 1018.5
rmhalfdis=730
rmsteep=50
Cm=1.1035
areascale=1.0
/* from best fit with 5 free parameters */
}
/* initq1 with init_pass (uniform Rm and sag) */
if ((initq==1) && (nurm==1) && (qblock<1)) {
Vleak=-75
maxq=0.00011
a0_q=0.0004
b0_q=a0_q
zeta_q=6
}
/* initq1 with nurm3 */
if ((initq==1) && (nurm==3) && (qblock<1)) {
Vleak=-75
maxq=0.000115
lowv=-67
highv=-64
a0_q=0.00057
b0_q=a0_q
}
/* initq8 with init_pass */
if ((initq==8) && (nurm==1) && (qblock<1)) {
Vleak=-75
qscale=0.02
maxq=0.02
qhalfdis=600
qsteep=75
a0_q=0.0002
b0_q=a0_q
zeta_q=6
}
/* initq8 with init_nurm3 */
if ((initq==8) && (nurm==3) && (qblock<1)) {
qscale=0.002
maxq=0.016
qhalfdis=600
qsteep=75
Vleak=-84
lowv=-66
highv=-56
}
/* initq10 with init_nurm4 */
if ((initq==10) && (nurm==4) && (qblock<1)) {
qscale=0.002
maxq=0.016
qhalfdis=600
qsteep=75
Vleak=-84
lowv=-66
highv=-56
}
}
proc init() { local dtsav
finitialize(Vrest)
fcurrent()
if (writeout>0) {
somasimvec.record(&dend1[13].v(0.5))
dendsimvec.record(&dend1[232].v(0.99))
}
if (qblock<1) {
dtsav=dt
dt=10
t=1e6
printf("initializing")
for i=0,40 {
printf(".")
fadvance()
}
printf("\n")
dt=dtsav
finitialize()
}
t=0
ss_save()
}
proc advance() {
fadvance()
ss_subtract()
}
proc ss_save() {
Vrestsoma=somaticv()
Vrestdend=dendriticv()
ss_subtract()
}
proc ss_subtract() {
vsoma=somaticv()-Vrestsoma-75
vdend=dendriticv()-Vrestdend-75
}
proc insert_pass() {
print "Inserting passive membrane properties\n"
forall {insert pas Ra=global_ra e_pas=Vleak}
}
proc insertq() {
printf("Inserting sag conductance in all segments: %d pecent blocked\n",qblock*100)
forall { insert qq gqbar_qq=0 }
}
proc init_pass() {
global_ra=$1*100
dendscale=spinescale*areascale
somascale=areascale*1.0
print "init_pass: Initializing uniform passive membrane properties"
forall { g_pas=1/(Rm/dendscale) cm=Cm*dendscale Ra=global_ra e_pas=Vleak}
/* the following segments are NOT scaled for spines *
/* these include the axon, soma, 1st 100 um of apical trunk, */
/* and the 1st 20 um of basals */
/* the reconstructed axon */
axon { g_pas=1/(Rm/somascale) cm=Cm*somascale Ra=global_ra e_pas=Vleak}
soma { g_pas=1/(Rm/somascale) cm=Cm*somascale Ra=global_ra e_pas=Vleak}
for i=0,7 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale}
}
/* the real soma */
for i=8,17 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale}
}
/* the 1st 100 um of the apical trunk */
for i=18,22 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale}
}
for i=31,34 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale}
}
for i=49,51 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale}
}
/* the 1st 20 um of the basals */
for i=750,755 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale}
}
for i=762,764 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale}
}
for i=881,885 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale}
}
for i=858,860 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale}
}
for i=886,889 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale}
}
for i=959,960 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale}
}
for i=991,992 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale}
}
for i=1027,1029 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale}
}
for i=1031,1032 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale}
}
for i=1046,1047 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale}
}
forall{v=Vleak}
}
proc init_nurm() {
dendscale=spinescale*areascale
somascale=areascale*1.0
/* rmscale is set in init_params */
/* decrease rmscale to steepen decrease in Rm */
/* as a function of distance (decreases to zero at 600 or so) */
dis=0
access dend1[13]
area(0.5)
distance()
print "Initializing nonuniform passive membrane properties\n"
forall { g_pas=1/(Rm/dendscale) cm=Cm*dendscale Ra=global_ra e_pas=Vleak}
for i=14,749 {
access dend1[i]
dis=distance(0)
dend1[i] {g_pas=1/((Rm/dendscale)*(1-dis/rmscale)) }
}
/* the following segments are NOT scaled for spines */
/* these include the axon, soma, 1st 100 um of apical trunk, */
/* and the 1st 20 um of basals */
/* the reconstructed axon */
axon { g_pas=1/(Rm/somascale) cm=Cm*somascale }
soma { g_pas=1/(Rm/somascale) cm=Cm*somascale }
for i=0,7 {
access dend1[i]
dis=distance(0)
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale }
}
/* the real soma */
for i=8,17 {
dend1[i] {g_pas=1/((Rm/somascale)*(1-dis/rmscale)) cm=Cm*somascale }
}
/* the 1st 100 um of the apical trunk */
for i=18,22 {
dend1[i] {g_pas=1/((Rm/somascale)*(1-dis/rmscale)) cm=Cm*somascale }
}
for i=31,34 {
dend1[i] {g_pas=1/((Rm/somascale)*(1-dis/rmscale)) cm=Cm*somascale }
}
for i=49,51 {
dend1[i] {g_pas=1/((Rm/somascale)*(1-dis/rmscale)) cm=Cm*somascale }
}
/* the 1st 20 um of the basals */
for i=750,755 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale }
}
for i=762,764 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale }
}
for i=881,885 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale }
}
for i=858,860 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale }
}
for i=886,889 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale }
}
for i=959,960 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale }
}
for i=991,992 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale }
}
for i=1027,1029 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale }
}
for i=1031,1032 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale }
}
for i=1046,1047 {
dend1[i] {g_pas=1/(Rm/somascale) cm=Cm*somascale }
}
}
proc init_nurm2() {
dendscale=spinescale*areascale
somascale=areascale*1.0
/* nonlinear decrease in Rm from rmsoma to rmend */
/* rmsoma and rmend are set in init_params */
maxdis=1220
dis=0
access dend1[13]
area(0.5)
distance()
print "Initializing nonuniform passive membrane properties\n"
forall { g_pas=1/(rmsoma/dendscale) cm=Cm*dendscale Ra=global_ra e_pas=Vleak}
for i=14,749 {
access dend1[i]
dis=distance(0)
rmpoint=(rmsoma-rmend)*exp(-dis/lambdadis)+rmend
dend1[i] {g_pas=1/(rmpoint/dendscale) }
}
/* the following segments are NOT scaled for spines */
/* these include the axon, soma, 1st 100 um of apical trunk, */
/* and the 1st 20 um of basals */
/* the reconstructed axon */
axon { g_pas=1/(Rm/somascale) cm=Cm*somascale }
soma { g_pas=1/(Rm/somascale) cm=Cm*somascale }
for i=0,7 {
access dend1[i]
dis=distance(0)
dend1[i] {g_pas=1/(rmsoma/somascale) cm=Cm*somascale }
}
/* the real soma */
for i=8,17 {
access dend1[i]
dis=distance(0)
rmpoint=(rmsoma-rmend)*(1-(-dis/maxdis))+rmend
dend1[i] {g_pas=1/(rmpoint/somascale) }
}
/* the 1st 100 um of the apical trunk */
for i=18,22 {
access dend1[i]
dis=distance(0)
rmpoint=(rmsoma-rmend)*exp(-dis/lambdadis)+rmend
dend1[i] {g_pas=1/(rmpoint/somascale) }
}
for i=31,34 {
access dend1[i]
dis=distance(0)
rmpoint=(rmsoma-rmend)*exp(-dis/lambdadis)+rmend
dend1[i] {g_pas=1/(rmpoint/somascale) }
}
for i=49,51 {
access dend1[i]
dis=distance(0)
rmpoint=(rmsoma-rmend)*exp(-dis/lambdadis)+rmend
dend1[i] {g_pas=1/(rmpoint/somascale) }
}
/* the 1st 20 um of the basals */
for i=750,755 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=762,764 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=881,885 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=858,860 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=886,889 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=959,960 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=991,992 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=1027,1029 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=1031,1032 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=1046,1047 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
}
proc init_nurm3() {
global_ra=$1*100
dendscale=spinescale*areascale
somascale=areascale*1.0
/* sigmoidal decrease in Rm from rmsoma to rmend */
/* rmsoma and rmend, and rmhalfdis and rmsteep are set in init_params */
maxdis=1220
dis=0
access dend1[13]
area(0.5)
distance()
print "init_nurm3: Initializing nonuniform passive membrane properties\n"
forall {g_pas=1/(rmsoma/dendscale) cm=Cm*dendscale Ra=global_ra e_pas=Vleak}
for i=14,749 {
access dend1[i]
dis=distance(0)
rmpoint=rmend+(rmsoma-rmend)/(1+exp((dis-rmhalfdis)/rmsteep))
dend1[i] {g_pas=1/(rmpoint/dendscale) }
}
/* the following segments are NOT scaled for spines */
/* these include the axon, soma, 1st 100 um of apical trunk, */
/* and the 1st 20 um of basals */
/* the reconstructed axon */
axon {g_pas=1/(Rm/somascale) cm=Cm*somascale }
soma {g_pas=1/(Rm/somascale) cm=Cm*somascale }
for i=0,7 {
access dend1[i]
dis=distance(0)
dend1[i] {g_pas=1/(rmsoma/somascale) cm=Cm*somascale }
}
/* the real soma */
for i=8,17 {
access dend1[i]
dis=distance(0)
rmpoint=rmend+(rmsoma-rmend)/(1+exp((dis-rmhalfdis)/rmsteep))
dend1[i] {g_pas=1/(rmpoint/somascale) }
}
/* the 1st 100 um of the apical trunk */
for i=18,22 {
access dend1[i]
dis=distance(0)
rmpoint=rmend+(rmsoma-rmend)/(1+exp((dis-rmhalfdis)/rmsteep))
dend1[i] {g_pas=1/(rmpoint/somascale) }
}
for i=31,34 {
access dend1[i]
dis=distance(0)
rmpoint=rmend+(rmsoma-rmend)/(1+exp((dis-rmhalfdis)/rmsteep))
dend1[i] {g_pas=1/(rmpoint/somascale) }
}
for i=49,51 {
access dend1[i]
dis=distance(0)
rmpoint=rmend+(rmsoma-rmend)/(1+exp((dis-rmhalfdis)/rmsteep))
dend1[i] {g_pas=1/(rmpoint/somascale) }
}
/* the 1st 20 um of the basals */
for i=750,755 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=762,764 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=881,885 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=858,860 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=886,889 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=959,960 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=991,992 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=1027,1029 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=1031,1032 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
for i=1046,1047 {
dend1[i] { g_pas=1/(rmsoma/somascale) }
}
}
proc init_nurm4() {
Cm=$1
dendscale=spinescale*areascale
somascale=areascale*1.0
/* sigmoidal decrease in Rm from rmsoma to rmend */
/* rmsoma and rmend, and rmhalfdis and rmsteep are set in init_params */
/* differs from nurm3 in that function applies to basal dendrites also */
maxdis=1220
dis=0
access dend1[13]
area(0.5)
distance()
print "Initializing nonuniform passive membrane properties with nurm4\n"
forall {g_pas=1/(rmsoma/dendscale) cm=Cm*dendscale Ra=global_ra e_pas=Vleak}
if (nuri>0) {
init_nuri() /* initialize nonuniform Ri */
}
for i=0,1103 {
access dend1[i]
dis=distance(0)
rmpoint=rmend+(rmsoma-rmend)/(1+exp((dis-rmhalfdis)/rmsteep))
dend1[i] {g_pas=1/(rmpoint/dendscale) }
}
/* the following segments are NOT scaled for spines */
/* these include the axon, soma, 1st 100 um of apical trunk, */
/* and the 1st 20 um of basals */
/* the reconstructed axon */
axon { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
soma { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
for i=0,7 {
dend1[i] { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
}
/* the real soma */
for i=8,17 {
dend1[i] { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
}
/* the 1st 100 um of the apical trunk */
for i=18,22 {
dend1[i] { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
}
for i=31,34 {
dend1[i] { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
}
for i=49,51 {
dend1[i] { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
}
/* the 1st 20 um of the basals */
for i=750,755 {
dend1[i] { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
}
for i=762,764 {
dend1[i] { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
}
for i=881,885 {
dend1[i] { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
}
for i=858,860 {
dend1[i] { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
}
for i=886,889 {
dend1[i] { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
}
for i=959,960 {
dend1[i] { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
}
for i=991,992 {
dend1[i] { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
}
for i=1027,1029 {
dend1[i] { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
}
for i=1031,1032 {
dend1[i] { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
}
for i=1046,1047 {
dend1[i] { g_pas=g_pas*somascale/dendscale cm=Cm*somascale/dendscale }
}
}
proc initq1() {
/* uniform sag in all compartments */
/* Vleak=-69 */
/* maxq=0.00015 */
/* a0_q=0.00057 */
/* b0_q=a0_q */
forall { gqbar_q=maxq*dendscale*(1-qblock)}
printf("Initializing sag conductance in all segments - %d pecent blocked\n",qblock*100)
/* the reconstructed axon */
axon { gqbar_q=0}
soma { gqbar_q=maxq*somascale*(1-qblock)}
for i=0,7 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock) }
}
/* the real soma */
for i=8,17 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
/* the 1st 100 um of the apical trunk */
for i=18,22 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=31,34 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=49,51 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
/* the 1st 20 um of the basals */
for i=750,755 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=762,764 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=881,885 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=858,860 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=886,889 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=959,960 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=991,992 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=1027,1029 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=1031,1032 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=1046,1047 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
}
proc initq2() {
/* sag scaled by a factor of qscale in nonspiny compartments */
qscale=0
Vleak=-70
maxq=0.00018
a0_q=0.00057
b0_q=a0_q
if (qblock<1) {
forall { gqbar_q=maxq*dendscale*(1-qblock)}
printf("Initializing sag conductance in all segments - %d pecent blocked\n",qblock*100)
}
/* the reconstructed axon */
axon { gqbar_q=0 }
soma { gqbar_q=0 }
for i=0,7 {
dend1[i] { gqbar_q=0 }
}
/* the real soma */
for i=8,17 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)*qscale}
}
/* the 1st 100 um of the apical trunk */
for i=18,22 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)*qscale}
}
for i=31,34 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)*qscale}
}
for i=49,51 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)*qscale}
}
/* the 1st 20 um of the basals */
for i=750,755 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)*qscale}
}
for i=762,764 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)*qscale}
}
for i=881,885 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)*qscale}
}
for i=858,860 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)*qscale}
}
for i=886,889 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)*qscale}
}
for i=959,960 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)*qscale}
}
for i=991,992 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)*qscale}
}
for i=1027,1029 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)*qscale}
}
for i=1031,1032 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)*qscale}
}
for i=1046,1047 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)*qscale}
}
}
proc initq3() {
/* sag scaled by a factor of qscale */
/* in all compartments beyond last oblique */
qscale=20
Vleak=-76
maxq=0.00009
a0_q=0.00057
b0_q=a0_q
forall { gqbar_q=maxq*dendscale*(1-qblock)}
printf("Initializing sag conductance in all segments\n %d pecent blocked\n",qblock*100)
/* the reconstructed axon */
axon { gqbar_q=0 }
soma { gqbar_q=0 }
for i=0,7 {
dend1[i] { gqbar_q=0 }
}
/* the real soma */
for i=8,17 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
/* the 1st 100 um of the apical trunk */
for i=18,22 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=31,34 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=49,51 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
/* the 1st 20 um of the basals */
for i=750,755 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=762,764 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=881,885 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=858,860 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=886,889 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=959,960 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=991,992 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=1027,1029 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=1031,1032 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
for i=1046,1047 {
dend1[i] { gqbar_q=maxq*somascale*(1-qblock)}
}
/* now scale up sag in all compartments distal to last oblique */
for i=204,749 {
dend1[i] { gqbar_q=maxq*dendscale*(1-qblock)*qscale}
}
}
proc initq4() {
/* scale up sag as a function of distance from the soma */
/* global linear function of distance doesn't seem to work, */
/* even for ridiculously steep gradients */
qscale=0.1
Vleak=-74
maxq=0.0000001
a0_q=0.00041
b0_q=a0_q
dis=0
access dend1[13]
area(0.5)
distance()
printf("Initializing sag conductance in all segments\n %d pecent blocked\n",qblock*100)
forall { gqbar_q=maxq*dendscale*(1-qblock)}
for i=0,1103 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq+(maxq*dendscale*(1-qblock)*dis/qscale)
}
/* the reconstructed axon */
axon { gqbar_q=0 }
soma { gqbar_q=0 }
for i=0,7 {
dend1[i] { gqbar_q=0 }
}
/* the real soma */
for i=8,17 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq+(maxq*somascale*(1-qblock)*dis/qscale)
}
/* the 1st 100 um of the apical trunk */
for i=18,22 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq+(maxq*somascale*(1-qblock)*dis/qscale)
}
for i=31,34 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq+(maxq*somascale*(1-qblock)*dis/qscale)
}
for i=49,51 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq+(maxq*somascale*(1-qblock)*dis/qscale)
}
/* the 1st 20 um of the basals */
for i=750,755 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq+(maxq*somascale*(1-qblock)*dis/qscale)
}
for i=762,764 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq+(maxq*somascale*(1-qblock)*dis/qscale)
}
for i=881,885 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq+(maxq*somascale*(1-qblock)*dis/qscale)
}
for i=858,860 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq+(maxq*somascale*(1-qblock)*dis/qscale)
}
for i=886,889 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq+(maxq*somascale*(1-qblock)*dis/qscale)
}
for i=959,960 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq+(maxq*somascale*(1-qblock)*dis/qscale)
}
for i=991,992 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq+(maxq*somascale*(1-qblock)*dis/qscale)
}
for i=1027,1029 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq+(maxq*somascale*(1-qblock)*dis/qscale)
}
for i=1031,1032 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq+(maxq*somascale*(1-qblock)*dis/qscale)
}
for i=1046,47 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq+(maxq*somascale*(1-qblock)*dis/qscale)
}
}
proc initq5() {
/* scale up sag as a function of distance from the soma */
/* try linear gradient restricted to apical dendrites */
/* q=maxq(qscale+(dis/maxdis)) */
/* qscale is fraction of maxq at soma, must be between 0 and 1 */
/* smaller qscale values give steeper gradients */
/* maxq set in init_params */
maxdis=1220
qscale=0.01
a0_q=0.00041
b0_q=a0_q
dis=0
access dend1[13]
area(0.5)
distance()
printf("Initializing nonuniform sag conductance in all segments\n %d pecent blocked\n",qblock*100)
forall { gqbar_q=maxq*qscale*(1-qblock)}
for i=14,749 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq*(qscale+(dis/maxdis))*dendscale*(1-qblock)
}
/* the reconstructed axon */
axon { gqbar_q=0 }
soma { gqbar_q=0 }
for i=0,7 {
dend1[i] { gqbar_q=0 }
}
/* the real soma */
for i=8,17 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq*(qscale+(dis/maxdis))*somascale*(1-qblock)
}
/* the 1st 100 um of the apical trunk */
for i=18,22 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq*(qscale+(dis/maxdis))*somascale*(1-qblock)
}
for i=31,34 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq*(qscale+(dis/maxdis))*somascale*(1-qblock)
}
for i=49,51 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq*(qscale+(dis/maxdis))*somascale*(1-qblock)
}
/* the 1st 20 um of the basals */
for i=750,755 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq*(qscale+(dis/maxdis))*somascale*(1-qblock)
}
for i=762,764 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq*(qscale+(dis/maxdis))*somascale*(1-qblock)
}
for i=881,885 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq*(qscale+(dis/maxdis))*somascale*(1-qblock)
}
for i=858,860 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq*(qscale+(dis/maxdis))*somascale*(1-qblock)
}
for i=886,889 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq*(qscale+(dis/maxdis))*somascale*(1-qblock)
}
for i=959,960 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq*(qscale+(dis/maxdis))*somascale*(1-qblock)
}
for i=991,992 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq*(qscale+(dis/maxdis))*somascale*(1-qblock)
}
for i=1027,1029 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq*(qscale+(dis/maxdis))*somascale*(1-qblock)
}
for i=1031,1032 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq*(qscale+(dis/maxdis))*somascale*(1-qblock)
}
for i=1046,1047 {
access dend1[i]
dis=distance(0)
gqbar_q=maxq*(qscale+(dis/maxdis))*somascale*(1-qblock)
}
}
proc initq8() {
/* scale up sag as a sigmoidal function of distance from the soma */
/* q=minq+(maxq-minq)/(1+exp((-dis-qhalfdis)/qsteep)) */
/* minq=qscale*maxq */
/* set maxq, qscale, and qhalfdis and qsteep in init_params */
maxdis=1220
minq=qscale*maxq
/* a0_q=0.00041 */
/* b0_q=a0_q */
dis=0
access dend1[13]
area(0.5)
distance()
printf("Initializing sag conductance in all segments\n %d pecent blocked\n",qblock*100)
/* forall { gqbar_q=qscale*maxq*dendscale*(1-qblock) } */
/* this method (next line) makes gqbar_q=0 in the basal dendrites */
forall { gqbar_q=0 }
for i=14,749 {
access dend1[i]
dis=distance(0)
gqbar_q=minq+(maxq-minq)/(1+exp(-(dis-qhalfdis)/qsteep))
gqbar_q=gqbar_q*dendscale*(1-qblock)
}
/* the reconstructed axon */
axon { gqbar_q=0 }
soma { gqbar_q=0 }
for i=0,7 {
dend1[i] { gqbar_q=0 }
}
/* the real soma */
for i=8,17 {
access dend1[i]
dis=distance(0)
gqbar_q=minq+(maxq-minq)/(1+exp(-(dis-qhalfdis)/qsteep))
gqbar_q=gqbar_q*somascale*(1-qblock)
}
/* the 1st 100 um of the apical trunk */
for i=18,22 {
access dend1[i]
dis=distance(0)
gqbar_q=minq+(maxq-minq)/(1+exp(-(dis-qhalfdis)/qsteep))
gqbar_q=gqbar_q*somascale*(1-qblock)
}
for i=31,34 {
access dend1[i]
dis=distance(0)
gqbar_q=minq+(maxq-minq)/(1+exp(-(dis-qhalfdis)/qsteep))
gqbar_q=gqbar_q*somascale*(1-qblock)
}
for i=49,51 {
access dend1[i]
dis=distance(0)
gqbar_q=minq+(maxq-minq)/(1+exp(-(dis-qhalfdis)/qsteep))
gqbar_q=gqbar_q*somascale*(1-qblock)
}
/* the 1st 20 um of the basals */
for i=750,755 {
access dend1[i]
dis=distance(0)
gqbar_q=minq+(maxq-minq)/(1+exp(-(dis-qhalfdis)/qsteep))
gqbar_q=gqbar_q*somascale*(1-qblock)
}
for i=762,764 {
access dend1[i]
dis=distance(0)
gqbar_q=minq+(maxq-minq)/(1+exp(-(dis-qhalfdis)/qsteep))
gqbar_q=gqbar_q*somascale*(1-qblock)
}
for i=881,885 {
access dend1[i]
dis=distance(0)
gqbar_q=minq+(maxq-minq)/(1+exp(-(dis-qhalfdis)/qsteep))
gqbar_q=gqbar_q*somascale*(1-qblock)
}
for i=858,860 {
access dend1[i]
dis=distance(0)
gqbar_q=minq+(maxq-minq)/(1+exp(-(dis-qhalfdis)/qsteep))
gqbar_q=gqbar_q*somascale*(1-qblock)
}
for i=886,889 {
access dend1[i]
dis=distance(0)
gqbar_q=minq+(maxq-minq)/(1+exp(-(dis-qhalfdis)/qsteep))
gqbar_q=gqbar_q*somascale*(1-qblock)
}
for i=959,960 {
access dend1[i]
dis=distance(0)
gqbar_q=minq+(maxq-minq)/(1+exp(-(dis-qhalfdis)/qsteep))
gqbar_q=gqbar_q*somascale*(1-qblock)
}
for i=991,992 {
access dend1[i]
dis=distance(0)
gqbar_q=minq+(maxq-minq)/(1+exp(-(dis-qhalfdis)/qsteep))
gqbar_q=gqbar_q*somascale*(1-qblock)
}
for i=1027,1029 {
access dend1[i]
dis=distance(0)
gqbar_q=minq+(maxq-minq)/(1+exp(-(dis-qhalfdis)/qsteep))
gqbar_q=gqbar_q*somascale*(1-qblock)
}
for i=1031,1032 {
access dend1[i]
dis=distance(0)
gqbar_q=minq+(maxq-minq)/(1+exp(-(dis-qhalfdis)/qsteep))
gqbar_q=gqbar_q*somascale*(1-qblock)
}
for i=1046,1047 {
access dend1[i]
dis=distance(0)
gqbar_q=minq+(maxq-minq)/(1+exp(-(dis-qhalfdis)/qsteep))
gqbar_q=gqbar_q*somascale*(1-qblock)
}
}
proc initq10() {
qten_qq=$1*10
/* scale up sag as a sigmoidal function of distance from the soma */
/* q=minq+(maxq-minq)/(1+exp((-dis-qhalfdis)/qsteep)) */
/* minq=qscale*maxq */
/* set maxq, qscale, and qhalfdis and qsteep in init_params */
/* differs from initq9 in that function applies to basals as well */
maxdis=1220
minq=qscale*maxq
dis=0
access dend1[13]
area(0.5)
distance()
printf("Initializing sag conductance in all segments with initq10\n")
forall { gqbar_qq=0 }
for i=0,1103 {
access dend1[i]
dis=distance(0)
gqbar_qq=minq+(maxq-minq)/(1+exp(-(dis-qhalfdis)/qsteep))
gqbar_qq=gqbar_qq*dendscale*(1-qblock)
}
/* the reconstructed axon */
axon { gqbar_qq=0 }
soma { gqbar_qq=0 }
for i=0,7 {
dend1[i] { gqbar_qq=0 }
}
/* the real soma */
for i=8,17 {
dend1[i] { gqbar_qq=gqbar_qq*somascale/dendscale }
}
/* the 1st 100 um of the apical trunk */
for i=18,22 {
dend1[i] { gqbar_qq=gqbar_qq*somascale/dendscale }
}
for i=31,34 {
dend1[i] { gqbar_qq=gqbar_qq*somascale/dendscale }
}
for i=49,51 {
dend1[i] { gqbar_qq=gqbar_qq*somascale/dendscale }
}
/* the 1st 20 um of the basals */
for i=750,755 {
dend1[i] { gqbar_qq=gqbar_qq*somascale/dendscale }
}
for i=762,764 {
dend1[i] { gqbar_qq=gqbar_qq*somascale/dendscale }
}
for i=881,885 {
dend1[i] { gqbar_qq=gqbar_qq*somascale/dendscale }
}
for i=858,860 {
dend1[i] { gqbar_qq=gqbar_qq*somascale/dendscale }
}
for i=886,889 {
dend1[i] { gqbar_qq=gqbar_qq*somascale/dendscale }
}
for i=959,960 {
dend1[i] { gqbar_qq=gqbar_qq*somascale/dendscale }
}
for i=991,992 {
dend1[i] { gqbar_qq=gqbar_qq*somascale/dendscale }
}
for i=1027,1029 {
dend1[i] { gqbar_qq=gqbar_qq*somascale/dendscale }
}
for i=1031,1032 {
dend1[i] { gqbar_qq=gqbar_qq*somascale/dendscale }
}
for i=1046,1047 {
dend1[i] { gqbar_qq=gqbar_qq*somascale/dendscale }
}
}