soma[0] distance(0,0)
objref secref, secref2, term, sl, secmed, box3, box4, gr3
strdef lab
strdef med_dend
proc ca_chan() { // attribuisce i valori delle conduttanze di L_Ca e kca2
forsec secmed {
insert L_Ca
gcabar_L_Ca = $1
tau_m_L_Ca=60
theta_m_L_Ca = -40
insert kca2
g_kca2 = $2
depth2_kca2 = 200
taur2_kca2 = 60
// subroutine per ridurre le zone di PIC dendritica
flag1 = 0
loc1 = 0
loc2 = 1
if (distance(0)<min_d) { flag1 = 2 }
for(x,0) {
if ((flag1==0)&&(distance(x)>max_d)) {
loc1=x
flag1=1
}
if ((flag1==2)&&(distance(x)>min_d)) {
loc1=x
flag1=3
}
if ((flag1==3)&&(distance(x)>max_d)) {
loc2=x
flag1=4
}
}
// | ----|----
if (flag1==1) {
gcabar_L_Ca(0:loc1)=$1:$1
gcabar_L_Ca(loc1:1)=0:0
g_kca2(0:loc1)=$2:$2
g_kca2(loc1:1)=0:0
}
// ----|---- |
if (flag1==3) {
gcabar_L_Ca(0:loc1)=0:0
gcabar_L_Ca(loc1:1)=$1:$1
g_kca2(0:loc1)=0:0
g_kca2(loc1:1)=$2:$2
}
// --|----|--
if (flag1==4) {
gcabar_L_Ca(0:loc1)=0:0
gcabar_L_Ca(loc1:loc2)=$1:$1
gcabar_L_Ca(loc2:1)=0:0
g_kca2(0:loc1)=0:0
g_kca2(loc1:loc2)=$2:$2
g_kca2(loc2:1)=0:0
}
// | -------- |
}
// subroutine per il calcolo del punto medio (uno) dei canali del calcio dendritici
// med_dend stringa per nome sezione, secref2 riferimento alla sezione
// (utilizzato dal grafico delle variabili di attivazione)
med_d = (min_d + max_d)/2
in = 0
forsec secmed for(x,0) {
if ((distance(x)>=(med_d-5))&&(distance(x)<=(med_d+5))&&(in==0)) {
secref2 = new SectionRef()
index = x
sprint(med_dend,"%s",secname())
in = in + 1
}
}
}
proc soma_mech() {
forsec "soma" {
Ra=70
cm=1
insert pas
g_pas=0.0044
e_pas=-72
insert na3rp
gbar_na3rp=0.015 // original value 0.044
sh_na3rp=0 // original value 5
ar_na3rp=0.4
insert naps
gbar_naps=0.002 // original value 0.00044
sh_naps=15 // original value 0
ar_naps=0.4
insert kdrRL
gMax_kdrRL=0.035 // original value 0.07
insert gh
ghbar_gh = 0.0001325
half_gh=-75
insert mAHP
gcamax_mAHP = 8e-06
gkcamax_mAHP = 0.01 // original value 0.0076
taur_mAHP = 56.6666666666667
insert extracellular xraxial=1e9 xg=1e10 xc=0
}
}
proc dend_mech() {
forsec "dend" {
Ra=70
cm=1
nseg = 2*int(L/40)+1 // L/nseg max 20 micron
insert pas
g_pas = 7.22e-05
e_pas = -72
insert na3rp
gbar_na3rp = 1.5e-4
sh_na3rp = 0 // original value 5
ar_na3rp = 0.4
insert naps
gbar_naps = 1.5e-5
sh_naps = 15 // original value 0
ar_naps = 0.4
insert kdrRL
gMax_kdrRL = 3e-4
insert gh
ghbar_gh = 1.325e-4
half_gh = -75
insert extracellular xraxial=1e9 xg=1e10 xc=0
}
}
proc prim_mech() {
sl=new SectionList() // variabile lista dei tronchi dendritici primari
soma[0] sl.children() // memorizza i tronchi dendritici primari (piĆ¹ soma[1])
forsec sl {
ifsec "soma" {
sl.remove() // elimina soma[1] dalla lista dei dendriti primari
print "tronchi dendritici primari: sl"
sl.printnames() // flag per debugging
print ""
}
}
forsec sl { // valori particolari per i tronchi dendritici primari, poi modificati
gbar_na3rp = 0.015 // valore originario 0.044
gbar_naps = 0.002 // valore originario 0.00044
gMax_kdrRL = 0.035 // valore originario 0.07
insert mAHP
gcamax_mAHP = 8e-06
gkcamax_mAHP = 0.01 // original value 0.0076
taur_mAHP = 56.6666666666667
}
term=new Vector() // vettore per le distanze dal soma dei rami terminali
forsec "dend" {
secref=new SectionRef()
if (secref.nchild==0) { // ramificazioni terminali, prive di children
term.append(distance(1))
}
}
// subroutine per limitare la distribuzione dei canali ionici sui dendriti primari
// (simile a soma) al 10% della lunghezza media dei dendriti
print "\nRiduzione dendriti primari: "
forsec sl {
ind = 0
for(x,0) {
if ((distance(x)>=(term.mean()*0.1))&&(ind==0)) {
gbar_na3rp(0:x) = 0.015:0.015 //
gbar_na3rp(x:1) = 1.5e-4:1.5e-4
gbar_naps(0:x) = 0.002:0.002 //
gbar_naps(x:1) = 1.5e-5:1.5e-5
gMax_kdrRL(0:x) = 0.035:0.035 //
gMax_kdrRL(x:1) = 3e-4:3e-4
gcamax_mAHP(0:x) = 8e-6:8e-6
gcamax_mAHP(x:1) = 0:0
gkcamax_mAHP(0:x) = 0.01:0.01 //
gkcamax_mAHP(x:1) = 0:0
ind = 1
print secname(), "(", x, ")"
}
}
}
}
// routine per l'inserimento dei canali del calcio nei dendriti medi
proc med_mech() {
min_d=$1*term.mean()
max_d=$2*term.mean()
print "\nmin L_Ca dist.= ", min_d // distanza minima da soma dei rami 'medi'
print "max L_Ca dist.= ", max_d // distanza massima da soma dei rami 'medi'
print ""
secmed=new SectionList()
forsec "dend" {
flag = 0
for(x) if((flag==0)&&((distance(x)>=min_d)&&(distance(x)<=max_d))) {
flag = flag + 1
secmed.append
}
}
ca_chan(2.8e-4,1.6e-4)
}
// display graphics
proc disp1() {
box3 = new VBox()
box3.intercept(1)
gr1 = new Graph()
gr1.size(0,300,-80,40)
gr1.addvar("soma.v(.5)")
graphList[0].append(gr1)
gr2 = new Graph()
gr2.size(0,300,-80,40)
sprint(lab,"%s.v(%g)",med_dend,index)
gr2.label(.5,1)
gr2.addvar(lab,"secref2.sec.v(index)",3,1)
graphList[0].append(gr2)
box3.intercept(0)
box3.map("Voltage",850,25,350,600)
box4 = new VBox()
box4.intercept(1)
gr3 = new Graph()
gr3.size(0,300,0,1)
sprint(lab,"%s.m_L_Ca(%g)",med_dend,index)
gr3.label(.5,1)
gr3.addvar(lab,"secref2.sec.m_L_Ca(index)",3,1)
sprint(lab,"%s.n_kca2(%g)",med_dend,index)
gr3.addvar(lab,"secref2.sec.n_kca2(index)",1,1)
graphList[0].append(gr3)
box4.intercept(0)
box4.map("States",500,400,350,300)
}
soma_mech() // inserisce meccanismi in soma
dend_mech() // inserisce meccanismi nei dendriti
prim_mech() // meccanismi nei dendriti primari
med_mech(0.30,0.60) // conduttanza dei canali del calcio dendritici a distanza media da soma
// disp1() // grafici di base
print "\nca_chan() varia le conduttanze di L_Ca ($1) e kca2 ($2)"
print " valori di base: 2.8e-4 e 1.6e-4\n"
// parametri vari per files .mod
tmin_kdrRL = 0.8
taumax_kdrRL = 20
qinf_na3rp = 4.8
thinf_na3rp = -50.5
Rd_na3rp = 0.06
qd_na3rp = 1.3
qg_na3rp = 1.3
thi1_na3rp = -35
thi2_na3rp = -35
vslope_naps = 5
V0 = -3.88888888888889