act0 = "act0"
act1 = "act1"
act2 = "act2"
act3 = "act3"
act4 = "act4"
act5 = "act5"
act6 = "act6"
act7 = "act7"
act8 = "act8"
act9 = "act9"
act10 = "act10"
proc get_settings() {
get_standard()
active_get(ActiveModel)
cell_name(cell)
activecell = cellname
print "loading ", cellname
}
proc active_get() {
if (strcmp($s1,act0) == 0) act0_set()
if (strcmp($s1,act1) == 0) act1_set()
if (strcmp($s1,act2) == 0) act2_set()
if (strcmp($s1,act3) == 0) act3_set()
if (strcmp($s1,act4) == 0) act4_set()
if (strcmp($s1,act5) == 0) act5_set()
if (strcmp($s1,act6) == 0) act6_set()
if (strcmp($s1,act7) == 0) act7_set()
if (strcmp($s1,act8) == 0) act8_set()
if (strcmp($s1,act9) == 0) act9_set()
if (strcmp($s1,act10) == 0) act10_set()
}
proc activemodel_set() {
xmenu("Conductances")
xradiobutton("Standard ","actname_set(0)")
xradiobutton("Standard (A. Destexhe)","actname_set(1)")
xradiobutton("high Rax","actname_set(2)")
xradiobutton("low Rax","actname_set(3)")
xradiobutton("high Cm","actname_set(4)")
xradiobutton("low Cm","actname_set(5)")
xradiobutton("high Rax (A. Destexhe)","actname_set(6)")
xradiobutton("Migliore both","actname_set(7)")
xradiobutton("high Rax (A. Destexhe)","actname_set(8)")
xradiobutton("high Rax (A. Destexhe)","actname_set(9)")
xradiobutton("high Rax (A. Destexhe)","actname_set(10)")
xmenu()
}
proc actname_set() { local n
n = $1
if (n==0) actname = "standard"
if (n==1) actname = "standard (A. Destexhe)"
if (n==2) actname = "high Rax"
if (n==3) actname = "low Rax"
if (n==4) actname = "high Cm"
if (n==5) actname = "low Cm"
if (n==6) actname = "high Rax (A. Destexhe)"
if (n==7) actname = "Migliore both abs"
if (n==8) actname = "Migliore both rel"
sprint(ActiveModel,"act%d",n)
sprint(cellnameact,"%s using %s conductances",activecell,actname)
if (numarg()<2) print cellnameact
doEvents()
}
proc act0_set() {
Rax = 150
Rm = 12000
C_m = 1
G_kv = 30
G_kvnode = 500
G_na = 35
G_nanode = 35000
}
proc act1_set() {
Rax = 150
Rm = 12000
C_m = 1.0
G_kv = 40
G_kvnode = 1200
G_na = 50
G_nanode = 40000
}
proc act2_set() {
Rax = 200
Rm = 12000
C_m = 1.0
G_kv = 20
G_kvnode = 100
G_na = 28
G_nanode = 30000
}
proc act3_set() {
Rax = 70
Rm = 12000
C_m = 1.0
G_kv = 35
G_kvnode = 500
G_na = 32
G_nanode = 32000
}
proc act4_set() {
Rax = 150
Rm = 8500
C_m = 1.5
G_kv = 35
G_kvnode = 35
G_na = 42
G_nanode = 35000
}
proc act5_set() {
Rax = 150
Rm = 18500
C_m = 0.65
G_kv = 50
G_kvnode = 85
G_na = 24
G_nanode = 24000
}
proc act6_set() {
Rax = 200
Rm = 12000
C_m = 1.0
G_kv = 40
G_kvnode = 2000
G_na = 50
G_nanode = 40000
}
proc act7_set() {
Rax = 150
Rm = 12000
C_m = 1
G_kv = 0
G_kvnode = 500
G_na = 380
G_nanode = 35000
Kad_current = 1
Gbar_kad = 0.048
Kad_rel = 0
Kad_slope = 1
Kap_current = 1
Gbar_kap = 0.048
Kap_rel = 0
Kap_slope = 1
}
proc act8_set() {
Rax = 150
Rm = 12000
C_m = 1
G_kv = 0
G_kvnode = 500
G_na = 380
G_nanode = 35000
Kad_current = 1
Gbar_kad = 0.048
Kad_rel = 1
Kad_slope = 1
Kap_current = 1
Gbar_kap = 0.048
Kap_rel = 1
Kap_slope = 1
}
proc get_standard() {
Kap_current = 0
Kad_current = 0
Iq_current = 0
Ca_current = 0
KCa_current = 0
Km_current = 0
nonuniform_Rm = 0
electrotonicL = 0
activespine = 1
currentdist = 1
currentcell = 0
simMode = 0
celsius = 37
originx = 0.5
Ek = -90
Ena = 60
cells = 1
swc = 0
synthetic = 0
St_del = 0
St_amp = 1
St_dur = 9999
Sim_durI = 0
Sim_dtI = 0.25
Sim_dur = 15
Sim_dt = 0.025
Rec_del = Sim_durI
Rec_dur = Sim_dur
Rec_dt = Sim_dt
Rm_node = 50
Cm_myelin = 0.04
G_ca = .3
G_kca = .1
G_km = 3
Rm_end = Rm_half = Rm_steep = 0
G_qq = 0.02
Qq_end = 20
Qq_steep = 439
Qq_half = 50
Gbar_kad = 0.048
Kad_rel = 0
Kad_slope = 1
Gbar_kap = 0.048
Kap_rel = 0
Kap_slope = 1
}
diam_int = 0.01
Rest_dur = 100
purkinjestep = 0.25
figcurrent = -1
fsize = 1
movie = 0
proc passive_ref() {
n = numarg()
if (n < 2) {
Rin = 32.1
Tau = 12.4
Slope = -0.0014029
Offset = 0.95564 }
if (n == 2) {
Rin = 51.7
Tau = 20.9
Slope = -0.00088573
Offset = 0.9856 }
}
amp_max = 46.8
amp_bas = 50
amp_lmd = 155
vmax_lmd = 246
vmax_amp = 697
plat_s = 500
olat_s = 1200
half_s = 0.002
half_b = 0.46
asections_max = -9999
adarea_max = -9999
adarea_maxdist = -9999
diam_mean = -9999
deq_max = -9999
deq_maxdist = -9999
sections_mean = -9999
taper = -9999
branchdensityII = -9999
branchdensity = -9999
branchdensityII_noend = -9999
branchdensity_noend = -9999
mean_stem_dendrite_diam = -9999
darea_max = -9999
ataper = -9999
abranchdensityII = -9999
abranchdensity = -9999
abranchdensityII_noend = -9999
abranchdensity_noend = -9999
amean_stem_dendrite_diam = -9999
sections_max = -9999
sections_maxdist = -9999
taper_mean = -9999
powers = 0
geometric = 0
equiv = 0
forward = 0
Yval = 3014
Xval1= 1000
Xval2= 1000
Xval3= 1000
Axon = 0
actname_set(0,"don't")
proc rec_set() {
n = numarg()
if (n>0) rec_del = $1 else rec_del = Rec_del
if (n>1) rec_dur = $2 else rec_dur = Rec_dur
if (n>2) rec_dt = $3 else rec_dt = Rec_dt
time.indgen(rec_del,rec_del+rec_dur,rec_dt)
vsoma.record(&Soma.sec.v(0.5),time)
vnode.record(&node[0].v(0.5),time)
vdend.record(&Distal.sec.v(1),time)
voltrec.record(&Vclamp.sec.v(Vclampx),time)
synapserec.record(&Synapse.sec.v(Synapsex),time)
}
proc st_set() {
n = numarg()
if (n>0) st_amp = $1 else st_amp = St_amp
if (n>1) st_del = $2 else st_del = St_del
if (n>2) st_dur = $3 else st_dur = St_dur
st.dur = st_dur
st.del = st_del
st.amp = st_amp
vclamp.dur1 = st_dur
synapse.onset = 2
}
proc set_synapse() { local i
n = numarg()
if (n>0) synapse_gmax = $1 else synapse_gmax = 0.1
if (n>1) synapse_tau0 = $2 else synapse_tau0 = 0.2
if (n>2) synapse_tau1 = $3 else synapse_tau1 = 3.0
if (n>3) synapse_onset = $4 else synapse_onset = 2
if (n>4) synapse_e = $5 else synapse_e = 0
synapse.gmax = synapse_gmax
synapse.tau0 = synapse_tau0
synapse.tau1 = synapse_tau1
synapse.onset = synapse_onset
synapse.e = synapse_e
}
proc sim_set() { local i
n = numarg()
if (n>0) sim_dur = $1 else sim_dur = Sim_dur
if (n>1) sim_dt = $2 else sim_dt = Sim_dt
if (n>2) sim_durI = $3 else sim_durI = Sim_durI
if (n>3) sim_dtI = $4 else sim_dtI = Sim_dtI
rec_set(sim_durI,sim_dur,sim_dt)
}
proc spine_set() {
if (numarg()) activespine = $1
forall { spine_pk =1 }
forsec dendritesI { spine_pk = spinescale }
forsec dendritesII { spine_pk = spinescaleII }
forsec dendritesIII { dendarea = 0
for(x) dendarea+= area(x)
spinarea = 10*L
spine_pk = (spinarea+dendarea)/dendarea
}
forall for(x) if (!activespine) { active_pk = 1/spine_pk(x)} else { active_pk(x)=1 }
}
proc active_set() {
n = numarg()
if (n>0) g_na = $1 else g_na = G_na
if (n>1) g_kv = $2 else g_kv = G_kv
if (n>2) g_nanode = $3 else g_nanode = G_nanode
if (n>3) g_kvnode = $4 else g_kvnode = G_kvnode
if (n>4) g_qq = $5 else g_qq = G_qq
if (n>5) qq_end = $6 else qq_end = Qq_end
if (n>6) qq_steep = $7 else qq_steep = Qq_steep
if (n>7) qq_half = $8 else qq_half = Qq_half
if (Iq_current) forsec all \
gbar_qq=qq_end+(g_qq-qq_end)/(1+exp((distance(0)-qq_half)/qq_steep))
forsec all for(x) { gbar_kv = g_kv*spine_pk(x)*active_pk(x)
gbar_na = g_na*spine_pk(x)*active_pk(x)
if (Iq_current) gbar_qq *spine_pk(x)*active_pk(x) }
forsec "myelin" gbar_na = g_na
forsec "node" { gbar_na = g_nanode
gbar_kv = g_kvnode}
forsec "hill" { gbar_na = g_nanode
gbar_kv = g_kvnode }
forsec "iseg" { gbar_na = g_nanode
gbar_kv = g_kvnode }
}
proc passive_set() {
n = numarg()
if (n>0) rm = $1 else rm = Rm
if (n>1) rax = abs($2) else rax = Rax
if (n>2) c_m = $3 else c_m = C_m
if (n>3) cm_myelin = $4 else cm_myelin = Cm_myelin
if (n>4) rm_node = $5 else rm_node = Rm_node
if (n>5) rm_end = $6 else rm_end = Rm_end
if (n>6) rm_steep = $7 else rm_steep = Rm_steep
if (n>7) rm_half = $8 else rm_half = Rm_half
if (!nonuniform_Rm) rm_end = rm
origin.sec distance(0,originx)
forall {if (rm-rm_end==0) g_pas =1/rm else \
g_pas = 1/(rm+(rm-rm_end)/(1+exp((distance(0)-rm_half)/rm_steep)))
cm = c_m
Ra = rax
}
forsec "myelin" cm = cm_myelin
forsec "node" g_pas = 1/rm_node
forsec "iseg" g_pas = 1/rm
forsec "hill" g_pas = 1/rm
forsec dendrites { cm *= spine_pk
g_pas *= spine_pk }
}
proc ca_set() {
n = numarg()
if (n>0) g_ca = $1 else g_ca = G_ca
if (Ca_current) {
forsec all gbar_ca = g_ca*spine_pk*active_pk
}}
proc kca_set() {
n = numarg()
if (n>0) g_kca = $1 else g_kca = G_kca
if (KCa_current){
forsec all for(x) gbar_kca = g_kca*spine_pk(x)*active_pk(x)
}}
proc set_vclamp() { local n
n = numarg()
if (n>0) forsec $s1 Vclamp = new SectionRef()
if (n>1) Vclampx = $2
Vclamp.sec vclamp.loc(Vclampx)
vclamp.rs = 0.001
vclamp.dur1 = rec_dur
}
proc km_set() {
n = numarg()
if (n>0) g_km = $1 else g_km = G_km
if (Km_current) {
forsec all gbar_ca = g_km*spine_pk(x)*active_pk(x)
}}
proc set_waveform() { local n
n = numarg()
if (n==1) waveform = $o1.c
if (n==0) { sprint(cellvar,"../data/%s/simvclamp_p18",ActiveModel)
fileob.ropen(cellvar)
waveform.vread(fileob) }
if (n==2) { fileob.ropen($s1)
waveform.vread(fileob) }
if (n==3) { fileob.chooser("", "Browse for waveforms", "*","Type file name","Cancel")
while (fileob.chooser()) {
fileob.getname(str1)
fileob.ropen(str1)
waveform.vread(fileob) } }
}
proc reset() {
threshold_dur = 20
if (synthetic) threshold_dur = 50
if (forward) threshold_dur = 40
simMode=0
st_set()
set_vclamp()
if (numarg()!=1) sim_set()
rec_set()
spine_set()
active_set()
set_synapse()
passive_set()
ca_set()
kca_set()
km_set()
lkad_set()
lkap_set()
}
proc distal_vclamp() { local n
n = numarg()
if (n>1) scaling = $2 else scaling = 1
set_dendrite($s1)
set_vclamp($s1)
passive_set(rm,rax,c_m,cm_myelin,rm_node,rm_end,rm_steep,rm_half)
active_set(g_na,g_kv,g_nanode,g_kvnode)
st_set(st_amp,st_del,st_dur)
rinput_calc()
simMode = 1
if (n>2) { fileob.ropen($s3)
histx.vread(fileob)
sim(scaling,histx)
sim(scaling,histx) } \
else { sim(scaling)
sim(scaling) }
sim_calc()
if (n>3) sim_plot()
}
proc set_dendrite() {
sprint(str1,"%s Distal = new SectionRef()",$s1)
execute(str1)
}
proc save_dendrite() { fileob.wopen($s1)
vdend.vwrite(fileob)
}
proc lkad_set() {
n = numarg()
if (n>0) gbar_kad = $1 else gbar_kad = Gbar_kad
if (n>1) kad_slope = $2 else kad_slope = Kad_slope
if (n>2) kad_rel = $3 else kad_rel = Kad_rel
insert_channels()
forsec dendrites if(ismembrane("kad")) for(x) gkabar_kad(x) = gbar_kad*factor_kad(x)*spine_pk*active_pk
}
proc lkap_set() {
n = numarg()
if (n>0) gbar_kap = $1 else gbar_kap = Gbar_kap
if (n>1) kap_slope = $2 else kap_slope = Kap_slope
if (n>2) kap_rel = $3 else kap_rel = Kap_rel
insert_channels()
forsec dendrites if(ismembrane("kap")) for(x) gkabar_kap(x) = gbar_kap*factor_kap(x)*spine_pk*active_pk
}