// genesis - outputs.g -
// Functions used for data save and changing cell parameter
// This file was developed by
// Akira Takashima.
// Department of Biological Sciences
// Faculry of Science
// Hokkaido University
// Sapporo Japan
//
// Last update on 22 Jan. 2007
//================================================
// functions used in the change cell parameter
//================================================
function change_dend
float diameter
float length
float Rm, Cm, Ra
float dia_mag
float length_mag
pushe /cell
int NumComp = 492
int i
for( i = 1; i <= {NumComp}; i = i+1 )
dia_mag = 1.27 //{getfield /output/cell_menu/diameter value}
length_mag = 1 //{getfield /output/cell_menu/length value}
diameter = {dia_mag}*{getfield /cell/dend[{i}] dia}
length = {length_mag}*{getfield /cell/dend[{i}] len}
Rm = {getfield /cell/dend[{i}] Rm}
Cm = {getfield /cell/dend[{i}] Cm}
Ra = {getfield /cell/dend[{i}] Ra}
setfield /cell/dend[{i}] dia {diameter} len {length}
Rm = {Rm}/({dia_mag}*{length_mag})
Cm = {Cm}*{dia_mag}*{length_mag}
// Ra = {Ra}*{length_mag}/({dia_mag}*{dia_mag})
setfield /cell/dend[{i}] Rm {Rm} Cm {Cm} Ra {Ra}
end
echo "All dendrite area were changed!"
pope
end
function shrink_comp
float diameter
float length
float Rm, Cm, Ra
float dia_mag
float length_mag
pushe /cell
dia_mag = {getfield /output/cell_menu/diameter value}
length_mag = {getfield /output/cell_menu/length value}
diameter = {dia_mag}*{getfield /cell/soma dia}
length = {length_mag}*{getfield /cell/soma len}
Rm = {getfield /cell/soma Rm}
Cm = {getfield /cell/soma Cm}
Ra = {getfield /cell/soma Ra}
setfield /cell/soma dia {diameter} len {length}
Rm = {Rm}/({dia_mag}*{length_mag})
Cm = {Cm}*{dia_mag}*{length_mag}
Ra = {Ra}*{length_mag}/({dia_mag}*{dia_mag})
setfield /cell/soma Rm {Rm} Cm {Cm} Ra {Ra}
int NumComp = 492
int i
for( i = 1; i <= {NumComp}; i = i+1 )
dia_mag = {getfield /output/cell_menu/diameter value}
length_mag = {getfield /output/cell_menu/length value}
diameter = {dia_mag}*{getfield /cell/dend[{i}] dia}
length = {length_mag}*{getfield /cell/dend[{i}] len}
Rm = {getfield /cell/dend[{i}] Rm}
Cm = {getfield /cell/dend[{i}] Cm}
Ra = {getfield /cell/dend[{i}] Ra}
setfield /cell/dend[{i}] dia {diameter} len {length}
Rm = {Rm}/({dia_mag}*{length_mag})
Cm = {Cm}*{dia_mag}*{length_mag}
Ra = {Ra}*{length_mag}/({dia_mag}*{dia_mag})
setfield /cell/dend[{i}] Rm {Rm} Cm {Cm} Ra {Ra}
end
echo "Shrinkage is compensated!"
pope
end
function change_soma
float diameter
float length
float Rm, Cm, Ra
float dia_mag
float length_mag
pushe /cell
dia_mag = 5
length_mag = 1
diameter = {dia_mag}*{getfield /cell/soma dia}
length = {length_mag}*{getfield /cell/soma len}
Rm = {getfield /cell/soma Rm}
Cm = {getfield /cell/soma Cm}
Ra = {getfield /cell/soma Ra}
setfield /cell/soma dia {diameter} len {length}
Rm = {Rm}/({dia_mag}*{length_mag})
Cm = {Cm}*{dia_mag}*{length_mag}
// Ra = {Ra}*{length_mag}/({dia_mag}*{dia_mag})
setfield /cell/soma Rm {Rm} Cm {Cm} Ra {Ra}
echo "Soma area was changed!"
end
//============================================
// functions used in the add/remove menu
//============================================
function add_cable_plot
// cable section to plot (numbered from 1)
int section
section = ({getfield /output/plot_menu/add value})
if ({exists /cell/dend[{section-1}]/logtable})
echo "Plot already exists!"
return
end
if ((section) < 1)
echo "In our notation, the first cable compartment is #1."
return
end
/* if ((section) = 0)
pushe /output/somagraphs
addmsg /cell/soma/K_tab_chan somaGm_grf PLOT Gk \
*"soma_" *blue
addmsg /cell/soma/Kfast_tab_chan somaGm_grf PLOT Gk \
*"soma" *red
addmsg /cell/soma/D_tab_chan somaGm_grf PLOT Gk \
*"soma" *green
pope
reset
end */
if ((section) > 493)
echo "There are only "493" dendrite compartments!"
else
pushe /output/somagraphs
addmsg /cell/dend[{section}] somaVm_grf PLOT Vm \
*"cable_"{section} *blue
addmsg /cell/dend[{section}]/K_tab_chan somaGm_grf PLOT Gk \
*"cable_"{section} *blue
addmsg /cell/dend[{section}]/Kfast_tab_chan somaGm_grf PLOT Gk \
*"cable_"{section} *red
addmsg /cell/dend[{section}]/D_tab_chan somaGm_grf PLOT Gk \
*"cable_"{section} *green
pope
echo "Vm and Gm plots added for dend compartment #"{section}
// needed to initialize the table
reset
end
end
function remove_cable_plots
int i, n, nmsg
int NCableSects
NCableSects = 492
for (i = 1; i < {NCableSects}; i = i + 1)
nmsg = {getmsg /cell/dend[{i}] -outgoing -count}
for (n = 0; n < nmsg; n = n + 1)
if ({getmsg /cell/dend[{i}] -outgoing -destination {n}} == "/output/somagraphs/somaVm_grf")
echo deleting message {n}
deletemsg /cell/dend[{i}]/K_tab_chan 1 -outgoing
deletemsg /cell/dend[{i}]/Kfast_tab_chan 1 -outgoing
deletemsg /cell/dend[{i}]/D_tab_chan 1 -outgoing
deletemsg /cell/dend[{i}] {n} -outgoing // should be"PLOT Vm" message
break // bail out of "for" loop - we found the message
end // if
end // for n
end // for i
setfield /output/plot_menu/add value 0
reset
echo "Plotting of Vm for cable compartments disabled."
end
//EOF