//genesis
//net_conn.g - Description of the FS and SP connections to the SP network
//This file sets up the SP-SP connections based on the factor sent to the netconn function
////////////////////////////////Connecting Inhibitory SP network/////////////////////////////////////////////////
//1- soma, 2- primary dendrite, 3-secondary dendrite, 4- tertiary dendrite
function rannum_new (tablename)
str tablename
int i
int last={getfield {tablename} X_A->xmax} //get the index of last element from the value of xmax
//echo "last=" {last}
int index={ round {rand -0.499 {last+0.499}} } //choose a random index
int filenum={getfield {tablename} X_A->table[{index}]} //return filenum associated with index selected above
setfield {tablename} X_A->table[{filenum}] {getfield {tablename} X_A->table[{last}]} //replace selected filenum with last element
setfield {tablename} X_A->xmax {last-1} //set xmax to be {last-1}
return {filenum}
end
function rannum_net (tablename,net,min_SP,max_FS,int_perc)
str tablename,net
int i,min_SP,max_FS
float int_perc
int last={getfield {tablename} X_A->xmax} //get the index of last element from the value of xmax
//echo "last=" {last}
if ({net}=="FS")
int index={ round {rand -0.499 {max_FS+0.499}} } //choose a random index
elif ({net}=="SP")
int index={ round {rand {min_SP-0.499} {last+0.499}} } //choose a random index
elif ({int_perc}!=1)
int index={ round {rand -0.499 {last+0.499}} } //choose a random index
end
int filenum={getfield {tablename} X_A->table[{index}]} //return filenum associated with index selected above
setfield {tablename} X_A->table[{filenum}] {getfield {tablename} X_A->table[{last}]} //replace selected filenum with last element
setfield {tablename} X_A->xmax {last-1} //set xmax to be {last-1}
return {filenum}
end
function connectGap(compA, compB, resistance)
str compA
str compB
float resistance
// Gap junctions go both ways...
addmsg {compA} {compB} RAXIAL {resistance} Vm
addmsg {compB} {compA} RAXIAL {resistance} Vm
end
function gapconn
int gapCtr
// Create gap junctions required in file
for(gapCtr = 1; gapCtr < {numGaps}+1; gapCtr = {gapCtr} + 1)
if({getglobal gapRes_{gapCtr}} > 0)
connectGap {getglobal gapSrc_{gapCtr}} {getglobal gapDest_{gapCtr}} {getglobal gapRes_{gapCtr}}
echo {getglobal gapSrc_{gapCtr}}"-->"{getglobal gapDest_{gapCtr}}" res: "{getglobal gapRes_{gapCtr}}
else
echo "WARNING: gapRes: "{getglobal gapRes_{gapCtr}}" ohm, no gap junction created"
end
end
end
function netconn(net,net2,network,network2,fact,loops,syn_weight1,chem_gap,ind_gap, gap_prob, ind_prob, gap_res)
//Receives the network to connect and the factor to connect it with
//Was first made to connect either FS or SP networks but has been changed to only include FS network
//Purposely did not add tab completion after start of function
str net,net2,network,network2
float fact, gap_res
int ctrpre, ctrpost, dctr, densityMax_3_SP = 2, densityMax_4_SP = 2, increment=1, loops, syn_weight1
float xpre, ypre, xpost, ypost, dist2parent, prob, connect, dist_f, alpha, beta, gap_conn, gap_prob, gap_ind_conn, ind_prob
int compt_pre_select, compt_post_select=0, compt_sub_select, cellCtr, branch_select, inter=1
str compt_1 = "soma", compt_2 = "primdend", compt_3 = "secdend", compt_4 = "tertdend"
str compname_pre, compname_post, compname, comn, comn2, comn_t, comn_t2
int n_syn, n_syn_allowed, n_ind, c_ctr=0, a_ctr=0, index1, index2, index2_2, gap_rand
int chem_gap, ind_gap, i
for(ctrpre = 0; ctrpre < {getglobal numCells_{net}}; ctrpre = {ctrpre + 1}) //loops through presynaptic cells
xpre={getfield {network}[{ctrpre}]/soma/ x} //get x location
ypre={getfield {network}[{ctrpre}]/soma/ y} //get y location
for(ctrpost = 0; ctrpost < {getglobal numCells_{net2}}; ctrpost= {ctrpost +1}) //loops through postsynaptic cells
if ({ctrpre}!={ctrpost}) //only if pre & post synaptic cells are different, start connecting
xpost={getfield {network2}[{ctrpost}]/soma/ x} //get x location
ypost={getfield {network2}[{ctrpost}]/soma/ y} //get y location
dist2parent={{pow {xpost-xpre} 2 } + {pow {ypost-ypre} 2}} // calculating distance between the cells
//echo {dist2parent} >> dist.log
dist_f= {-dist2parent}/{pow {fact} 2}
prob = {exp {dist_f}} //probability as a function of distance, so farther it is, lower the probability of connection
connect = {rand 0 1}
if ({connect}<{prob})
c_ctr=0 //counter to be incremented each time connection between pair is established
while ({c_ctr} < {loops}) //loop till reaches # of synaptic connections allowed between each pair of cells
if ({net}=="FS" && {net2}=="FS")
compt_post_select = {rand 1 5} //randomly select the post-synaptic compartment
end
if ({compt_post_select}==1)
n_syn = {getfield {network2}[{ctrpost}]/soma/GABA nsynapses} //1 represents soma
if ({n_syn}==0)
n_ind = 0
else
n_ind = {n_syn-1}
end
n_syn_allowed = {getfield {network2}[{ctrpost}]/soma nsynallowed_g}
if (({n_syn}<{n_syn_allowed}) && ({connect}<{prob}))
addmsg {network}[{ctrpre}]/soma/spike \
{network2}[{ctrpost}]/soma/GABA SPIKE
setfield {network2}[{ctrpost}]/soma/GABA synapse[{n_ind}].weight {syn_weight1}
c_ctr = {c_ctr} + 1
end
elif ({compt_post_select}==2)
branch_select = {rand 1 {{getglobal prim_max_index1_{net2}}*{getglobal prim_max_index2_{net2}}}}
//since this morphology has multiple compartments for each primary dendrite
index1 = {branch_select}/{getglobal prim_max_index2_{net2}} //sets quotient as primdend number
index2_2 = {getglobal prim_max_index2_{net2}}
index2 = {branch_select}%{index2_2} //sets remainder as prim_dend number
if ({index1}==0)
comn_t ="primdend1"
else
comn_t = "primdend"@{index1}
end
if ({index2}==1 || {index2}==0) //no need to select tert_dend number for these cases
n_syn = {getfield {network2}[{ctrpost}]/{comn_t}/GABA nsynapses}
if ({n_syn}==0)
n_ind = 0
else
n_ind = {n_syn-1}
end
n_syn_allowed = {getfield {network2}[{ctrpost}]/{comn_t} nsynallowed_g}
if (({n_syn}<{n_syn_allowed}) && ({connect}<{prob}))
addmsg {network}[{ctrpre}]/soma/spike \
{network2}[{ctrpost}]/{comn_t}/GABA SPIKE
setfield {network2}[{ctrpost}]/{comn_t}/GABA synapse[{n_ind}].weight {syn_weight1}
c_ctr = {c_ctr} + 1
gap_conn = {rand 0 1}
if ({gap_conn}<{gap_prob})
connectGap {network}[{ctrpre}]/{comn_t} {network2}[{ctrpost}]/{comn_t} {gap_res}
echo {ctrpre} {ctrpost} {comn_t} >> gaps.log
end
end
else
comn_t2 = "prim_dend"@{index2}
n_syn = {getfield {network2}[{ctrpost}]/{comn_t}/{comn_t2}/GABA nsynapses}
if ({n_syn}==0)
n_ind = 0
else
n_ind = {n_syn-1}
end
n_syn_allowed = {getfield {network2}[{ctrpost}]/{comn_t}/{comn_t2} nsynallowed_g}
if (({n_syn}<{n_syn_allowed}) && ({connect}<{prob}))
addmsg {network}[{ctrpre}]/soma/spike \
{network2}[{ctrpost}]/{comn_t}/{comn_t2}/GABA SPIKE
setfield {network2}[{ctrpost}]/{comn_t}/{comn_t2}/GABA synapse[{n_ind}].weight {syn_weight1}
c_ctr = {c_ctr} + 1
gap_conn = {rand 0 1} //connect gap junctions
if ({gap_conn}<{gap_prob})
connectGap {network}[{ctrpre}]/{comn_t}/{comn_t2} {network2}[{ctrpost}]/{comn_t}/{comn_t2} {gap_res}
echo {ctrpre} {ctrpost} {comn_t} >> gaps.log
end
end
end
elif ({compt_post_select}==3)
branch_select = {rand 1 {{getglobal sec_max_index1_{net2}}*{getglobal sec_max_index2_{net2}}}}
//since this morphology has multiple compartments for each secondary dendrite compartments
index1 = {branch_select}/{getglobal sec_max_index2_{net2}} //sets quotient as secdend number
index2_2 = {getglobal sec_max_index2_{net2}}
index2 = {branch_select}%{index2_2} //sets remainder as sec_dend number
if ({index1}==0)
comn_t ="secdend1"
else
comn_t = "secdend"@{index1}
end
if ({index2}==1 || {index2}==0) //no need to select tert_dend number for these cases
n_syn = {getfield {network2}[{ctrpost}]/{comn_t}/GABA nsynapses}
if ({n_syn}==0)
n_ind = 0
else
n_ind = {n_syn-1}
end
n_syn_allowed = {getfield {network2}[{ctrpost}]/{comn_t} nsynallowed_g}
if (({n_syn}<{n_syn_allowed}) && ({connect}<{prob}))
addmsg {network}[{ctrpre}]/soma/spike \
{network2}[{ctrpost}]/{comn_t}/GABA SPIKE
setfield {network2}[{ctrpost}]/{comn_t}/GABA synapse[{n_ind}].weight {syn_weight1}
c_ctr = {c_ctr} + 1
gap_conn = {rand 0 1} //connect gap junctions
if ({gap_conn}<{gap_prob})
connectGap {network}[{ctrpre}]/{comn_t} {network2}[{ctrpost}]/{comn_t} {gap_res}
echo {ctrpre} {ctrpost} {comn_t} >> gaps.log
end
end
else
comn_t2 = "sec_dend"@{index2}
n_syn = {getfield {network2}[{ctrpost}]/{comn_t}/{comn_t2}/GABA nsynapses}
if ({n_syn}==0)
n_ind = 0
else
n_ind = {n_syn-1}
end
n_syn_allowed = {getfield {network2}[{ctrpost}]/{comn_t}/{comn_t2} nsynallowed_g}
if (({n_syn}<{n_syn_allowed}) && ({connect}<{prob}))
addmsg {network}[{ctrpre}]/soma/spike \
{network2}[{ctrpost}]/{comn_t}/{comn_t2}/GABA SPIKE
setfield {network2}[{ctrpost}]/{comn_t}/{comn_t2}/GABA synapse[{n_ind}].weight {syn_weight1}
c_ctr = {c_ctr} + 1
gap_conn = {rand 0 1}
if ({gap_conn}<{gap_prob})
connectGap {network}[{ctrpre}]/{comn_t}/{comn_t2} {network2}[{ctrpost}]/{comn_t}/{comn_t2} {gap_res}
echo {ctrpre} {ctrpost} {comn_t} >> gaps.log
end
end
end
elif ({compt_post_select}==4)
branch_select = {rand 1 {{getglobal tert_max_index1_{net2}}*{getglobal tert_max_index2_{net2}}}}
//since this morphology has multiple compartments for each tertiary dendrite
index1 = {branch_select}/{getglobal tert_max_index2_{net2}} //sets quotient as tertdend number
index2_2 = {getglobal tert_max_index2_{net2}}
index2 = {branch_select}%{index2_2} //sets remainder as tert_dend number
if ({index1}==0)
comn_t ="tertdend1"
else
comn_t = "tertdend"@{index1}
end
if ({index2}==1 || {index2}==0) //no need to select tert_dend number for these cases
n_syn = {getfield {network2}[{ctrpost}]/{comn_t}/GABA nsynapses}
if ({n_syn}==0)
n_ind = 0
else
n_ind = {n_syn-1}
end
n_syn_allowed = {getfield {network2}[{ctrpost}]/{comn_t} nsynallowed_g}
if (({n_syn}<{n_syn_allowed}) && ({connect}<{prob}))
addmsg {network}[{ctrpre}]/soma/spike \
{network2}[{ctrpost}]/{comn_t}/GABA SPIKE
setfield {network2}[{ctrpost}]/{comn_t}/GABA synapse[{n_ind}].weight {syn_weight1}
c_ctr = {c_ctr} + 1
end
else
comn_t2 = "tert_dend"@{index2}
n_syn = {getfield {network2}[{ctrpost}]/{comn_t}/{comn_t2}/GABA nsynapses}
if ({n_syn}==0)
n_ind = 0
else
n_ind = {n_syn-1}
end
n_syn_allowed = {getfield {network2}[{ctrpost}]/{comn_t}/{comn_t2} nsynallowed_g}
if (({n_syn}<{n_syn_allowed}) && ({connect}<{prob}))
addmsg {network}[{ctrpre}]/soma/spike \
{network2}[{ctrpost}]/{comn_t}/{comn_t2}/GABA SPIKE
setfield {network2}[{ctrpost}]/{comn_t}/{comn_t2}/GABA synapse[{n_ind}].weight {syn_weight1}
c_ctr = {c_ctr} + 1
end
end
end
end //while
end
end
end
end
echo "End of netconn"
end
//Connect SP network
function netconn_SP(net,net2,network,network2,fact,SP,FS,int_perc)
int SP, FS, pre_rem, prev
str net,net2,network,network2,DA
float fact, gap_res, int_perc
int int_GABA= {round {{int_perc}*{getglobal nGABA_{net2}}}} //intrinsic GABAergic input calculated
int numCells_pre = {{SP}*{numCells_SP} + {FS}*{numCells_FS}} //# of SP and FS GABAergic input
int ctrpre, ctrpost, dctr, densityMax_3_SP = 2, densityMax_4_SP = 2, increment=1, loops, inCtr, ctr_pre
int break0=0, break1=0 , break2=0, break3=0, break4=0, break5=0, break6=0, break7=0
float xpre, ypre, xpost, ypost, dist2parent, prob, connect, dist_f, alpha, beta, gap_conn, gap_prob, gap_ind_conn, ind_prob
int compt_pre_select, compt_post_select=0, compt_sub_select, cellCtr, branch_select, inter=0
str compt_1 = "soma", compt_2 = "primdend", compt_3 = "secdend", compt_4 = "tertdend"
str compname_pre, compname_post, compname, comn, comn2, comn_t, comn_t2
int n_syn, n_syn_allowed, n_ind, c_ctr, a_ctr=0, index1, index2, index2_2, gap_rand
int chem_gap, ind_gap, i
//int proximal = {densityMax_soma_GABA_SP} + {densityMax_pd_GABA_SP}*{prim_dend_num_SP} + {densityMax_sd_GABA_SP}*{sec_dend_num_SP}
int i,j,k,x,p,w=0
int min_SP=1 //oorschot 18% somal
str InsignalPath=""
//setting the branches based on number of GABAergic synapses
for (i=1; i<{{densityMax_soma_GABA_SP}+1}; i={i+1})
addglobal str branch_{i} "soma"
addglobal str branch2_{i} ""
end
x={i}
j=0
k=1
for (i={x}; i<{{x}+{{densityMax_pd_GABA_SP}*{prim_dend_num_SP}}}; i={i+1})
j = {j+1}
if (({j}%{{densityMax_pd_GABA_SP}+1})==0)
k={k+1}
end
addglobal str branch_{i} "primdend"{k}""
addglobal str branch2_{i} ""
end
x={i}
j=0
k=1
for (i={x}; i<{{x}+{{densityMax_sd_GABA_SP}*{sec_dend_num_SP}}}; i={i+1})
j = {j+1}
if (({j}%{{densityMax_sd_GABA_SP}+1})==0)
k={k+1}
end
addglobal str branch_{i} "secdend"{k}""
addglobal str branch2_{i} ""
end
x={i}
int max_FS={x-4} //index starts from 0 and FS proximal
//echo "max_fs" {max_FS}
j=0
k=1
for (i={x}; i<{{x}+{{densityMax_td_GABA_SP}*{tert_dend_num_SP}}}; i={i+1})
j = {j+1}
w = {w+1}
if (({j}%{{{densityMax_td_GABA_SP}*11}+1})==0)
k={k+1}
w=1
end
addglobal str branch_{i} "tertdend"{k}""
if ({w}>1 && {w<12})
addglobal str branch2_{i} "tert_dend"{w}""
else
addglobal str branch2_{i} ""
end
end
if (!{exists synap})
create tabchannel synap
end
disable synap
int tablemax = {getglobal nGABA_{net2}}
if (!{exists pre})
create tabchannel pre
end
disable pre
if (!{exists pre_num})
create tabchannel pre_num
end
disable pre_num
call pre_num TABCREATE X {{getglobal numCells_{net2}}-1} 0 {{getglobal numCells_{net2}}-1}
for (i=0; i<{getglobal numCells_{net2}}; i={i+1})
setfield pre_num X_B->table[{i}] 1
end
if (!{exists pre_spk})
create tabchannel pre_spk
end
disable pre_spk
call pre_spk TABCREATE X {{getglobal numCells_{net2}}-1} 0 {{getglobal numCells_{net2}}-1}
call pre_spk TABCREATE Y {{getglobal numCells_{net2}}-1} 0 {{getglobal numCells_{net2}}-1}
call pre_spk TABCREATE Z {{getglobal numCells_{net2}}-1} 0 {{getglobal numCells_{net2}}-1}
for (i=0; i<{getglobal numCells_{net2}}; i={i+1})
setfield pre_spk X_A->table[{i}] 0
setfield pre_spk X_B->table[{i}] 0
setfield pre_spk Y_A->table[{i}] 0
end
//int nu = {getglobal nUnique_g_{net2}}
//create tabchannel for type of extrinsic input
//Following loops for writing distance log function
for(ctrpre = 0; ctrpre < {getglobal numCells_{net}}; ctrpre = {ctrpre + 1}) //loops through presynaptic cells
xpre={getfield {network}[{ctrpre}]/soma/ x} //get x location
ypre={getfield {network}[{ctrpre}]/soma/ y} //get y location
for(ctrpost = 0; ctrpost < {getglobal numCells_{net2}}; ctrpost= {ctrpost +1}) //loops through postsynaptic cells
if ({ctrpre}!={ctrpost})
xpost={getfield {network2}[{ctrpost}]/soma/ x} //get x location
ypost={getfield {network2}[{ctrpost}]/soma/ y} //get y location
dist2parent={{pow {xpost-xpre} 2 } + {pow {ypost-ypre} 2}} // calculating distance between the cells
echo {dist2parent} >> dist.log
end
end
end
//Following loops for connecting neurons to GABAergic input both extrinsic and intrinsic
//Loops through post-synaptic neuron and then decides pre-synaptic neuron for each one
for(ctrpost = 0; ctrpost < {getglobal numCells_{net2}}; ctrpost = {ctrpost + 1}) //loops through postsynaptic cells
xpost={getfield {network2}[{ctrpost}]/soma/ x} //get x location of post-synaptic neuron
ypost={getfield {network2}[{ctrpost}]/soma/ y} //get y location of post-synaptic neuron
//If extrinsic input exists then read in the unique input files
if ({int_perc}!=1)
readInputFromFile {net2} "GABAinsignal_u_"{ctrpost}"_" \
"INPUTDATA_SP/GABAinsignal_"{{ctrpost}+1}"_" \
{getglobal nGABA_{net2}} {nGABA_SP}
end
call synap TABCREATE X {{tablemax}-1} 0 {{tablemax}-1}
for (i=0; i<{tablemax}; i={i+1})
setfield synap X_A->table[{i}] {i}
end
//tabchannel for indices of intrinsic presynaptic neurons
call pre TABCREATE X {{numCells_pre}-1} 0 {{numCells_pre}-1}
for (i=0; i<{numCells_pre}; i={i+1})
setfield pre X_A->table[{i}] {i}
end
if ({getfield /SPnetwork/SPcell[{ctrpost}]/soma D1} == 1)
DA = "D1"
elif ({getfield /SPnetwork/SPcell[{ctrpost}]/soma D1} == 0)
DA = "D2"
end
c_ctr = 0
//Connect all intrinsic input by calling random number from the pre tabchannel
while ({c_ctr} < {int_GABA})
//if random number tabchannel empty replenish it
if ({pre_rem}==-1)
call pre TABCREATE X {{numCells_pre}-1} 0 {{numCells_pre}-1}
for (i=0; i<{numCells_pre}; i={i+1})
setfield pre X_A->table[{i}] {i}
end
prev = {getfield pre_num X_B->table[{ctrpost}]}
setfield pre_num X_B->table[{ctrpost}] {prev+1}
end
ctrpre = {rannum_new pre} //randomly select presynaptic neuron
pre_rem = {getfield pre X_A->xmax} //check number of elements left to make sure tabchannel not empty
//if the randomly selected number is in the FS range then use FS-SP connection probabilities
if ({ctrpre}>{{numCells_SP}-1})
ctr_pre = {{ctrpre}-{numCells_SP}}
net="FS"
prob=0.20
//echo "ctrpre FS" {ctrpre}
//else if either intrisic SP connections are present or extrinsic is absent and at the same time
//random number is in the SP range then use SP-SP presynaptic connection values
elif (({SP}==1 && {FS}==0)||({SP}==1 && {FS}==1 && {ctrpre}<{numCells_SP}))
ctr_pre={ctrpre}
net="SP"
//echo "ctrpre SP" {ctrpre}
xpre={getfield ""/{net}"network/"{net}"cell"[{ctr_pre}]/soma/ x} //get x location
ypre={getfield ""/{net}"network/"{net}"cell"[{ctr_pre}]/soma/ y} //get y location
dist2parent={{pow {xpost-xpre} 2 } + {pow {ypost-ypre} 2}} // calculating distance between the cells
dist_f= {-dist2parent}/{pow {fact} 2}
//echo "dist_f" {dist_f}
prob = {exp {dist_f}} //probability as a function of distance, so farther it is, lower the probability of connection
//else if FS are the only intrinsic connection just continue using the FS probability
elif ({SP}==0 && {FS}==1)
ctr_pre = {ctrpre}
net="FS"
prob=0.20
end
//echo "ctrpost" {ctrpost}
//Now after the appropriate connection probability is connected, connect it up
connect = {rand 0 1}
if ({connect}<{prob})
inCtr = {{rannum_net synap {net} {min_SP} {max_FS} {int_perc}} +1}
if ({net}=="SP")
echo {ctrpre} {ctrpost} >> sync_conn.log
p = {getfield pre_spk X_A->table[{ctrpost}]}
setfield pre_spk X_A->table[{ctrpost}] {p+1}
elif ({net}=="FS")
p = {getfield pre_spk X_B->table[{ctrpost}]}
setfield pre_spk X_B->table[{ctrpost}] {p+1}
end
//if branch does not have another sub-branch connect 1 way or connect it the other way
//the #of synapses obtained for the 2 cases
if ({getglobal branch2_{inCtr}}=="")
n_syn = {getfield {network2}[{ctrpost}]/{getglobal branch_{inCtr}}/GABA nsynapses}
else
n_syn = {getfield {network2}[{ctrpost}]/{getglobal branch_{inCtr}}/{getglobal branch2_{inCtr}}/GABA nsynapses}
end
//get synapse index
if ({n_syn}==0)
n_ind = 0
else
n_ind = {n_syn-1}
end
//connecting the neurons
if ({getglobal branch2_{inCtr}}=="")
addmsg ""/{net}"network/"{net}"cell"[{ctr_pre}]/soma/spike \
{network2}[{ctrpost}]/{getglobal branch_{inCtr}}/GABA SPIKE
setfield {network2}[{ctrpost}]/{getglobal branch_{inCtr}}/GABA synapse[{n_ind}].weight {getglobal weight_{net}_{DA}}
else
addmsg ""/{net}"network/"{net}"cell"[{ctr_pre}]/soma/spike \
{network2}[{ctrpost}]/{getglobal branch_{inCtr}}/{getglobal branch2_{inCtr}}/GABA SPIKE
setfield {network2}[{ctrpost}]/{getglobal branch_{inCtr}}/{getglobal branch2_{inCtr}}/GABA synapse[{n_ind}].weight {getglobal weight_{net}_{DA}}
end
c_ctr = {c_ctr} + 1
end
end
//if the counter is less than the total GABAergic input that means extrinsic input also exists
//in that case connect the extrinsic input to the neurons
setfield pre_num X_A->table[{ctrpost}] {{numCells_pre}-{pre_rem}+1}
if ({DA}=="D1")
echo {{getfield pre_spk X_A->table[{ctrpost}]}/227} >> SP_D1.log
echo {{getfield pre_spk X_B->table[{ctrpost}]}/227} >> FS_D1.log
echo {{getfield pre_spk Y_A->table[{ctrpost}]}/227} >> ext_D1.log
elif ({DA}=="D2")
echo {{getfield pre_spk X_A->table[{ctrpost}]}/227} >> SP_D2.log
echo {{getfield pre_spk X_B->table[{ctrpost}]}/227} >> FS_D2.log
echo {{getfield pre_spk Y_A->table[{ctrpost}]}/227} >> ext_D2.log
end
end
end