//============= UTILITIES FOR VIEWING 4 SELECTED TIME SERIES =========//
// This file contains functions to display 4 time series plus a //
// control panel to start and stop the simulation. //
// //
// Setup: //
// 1. connect_compartments - connect adjacent cylindrical compartments//
// coordinates for the neurons, one neuron per line. //
// 2. Call make_geniculate_cells //
// //
//====================================================================//
include ../lib/global_constants.g
str FIRST_SERIES = "/network_lateral/cell321/soma"
str SECOND_SERIES ="/network_medial/cell279/soma"
str THIRD_SERIES = "/network_lateral/cell1/soma"
str FOURTH_SERIES = "/network_medial/cell1/soma"
function step_sim (num_steps)
int num_steps
if (ECHO_ON == 1); showstat; end
step {num_steps}
if (ECHO_ON == 1); showstat; showstat -process; end
end
/* ******************************************************************
make_graph
Creates 4 graphs called /data1/response, /data2/response,
/data3/response, and /data4/response.
Parameters:
tmin minimum time to be displayed on graphs
tmax
****************************************************************** */
function make_graph(name, tmin, tmax, ymin, ymax, x0, y0)
str name
int x0, y0
float tmin, tmax, ymin, ymax
int width = 300;
int height = 350;
create xform {name}
setfield ^ xgeom {x0} ygeom {y0} wgeom {width} hgeom {height}
str gname = {name}@"/response"
create xgraph {gname}
setfield ^ xmin {tmin} xmax {tmax} ymin {ymin} ymax {ymax} \
xlabel "Time (sec)" bg white hgeom 100%
xshow {name}
end
/************************************************************************
Function make_netview
This is specialized for the standard NGU model simulation, and creates
'xview' elements to display a color map of soma membrane potenial at
the location of the lateral (represented by squares) and medial
(represented by triangles) pyramidal cells.
*************************************************************************/
function make_netview // sets up xview widget to display Vm of each cell
create xform /netview [0,200,400,400] -title \
"Vm of lateral (squares) and medial (triangles) pyramidal cells"
create xdraw /netview/draw [0%,0%,100%, 100%]
// Make the display region = (or a little larger than) the cell coord range
setfield /netview/draw xmin 0 xmax 1.6 ymin 0 ymax 1.6 bg white
create xview /netview/draw/lateral_view
setfield /netview/draw/lateral_view path /network_lateral/cell# \
relpath soma field Vm \
value_min -0.08 value_max 0.03 viewmode colorview sizescale 0.04
create xview /netview/draw/medial_view
// The xview object needs a path to the elements that contain [xyz]
// coordinates for the network display. If the field to display (Vm) is
// not in this path, then the relpath field gives its location relative
// to 'path'. The wildcard 'cell#' will refer to all elements with
// names starting with 'cell' 'sizescale' sets the sie of the shapes.
setfield /netview/draw/medial_view path /network_medial/cell# \
relpath soma field Vm \
value_min -0.08 value_max 0.03 viewmode colorview sizescale 0.04
// hack to change the shape from default squares to triangles
// See docs for xview and xshape
setfield /netview/draw/medial_view/shape[0] \
coords [-0.02,-0.02,0][0,0.02,0][0.02,-0.02,0][-0.02,-0.02,0]
setfield /netview/draw/medial_view/shape[1] \
coords [-0.02,-0.02,0][0,0.02,0][0.02,-0.02,0][-0.02,-0.02,0]
xshow /netview
end
/*******************************************************************
make_control_panel
Creates a control panel to run the simulation for the specified
number of steps.
Parameters:
num_steps number of steps to run the simulation
Note: If you don't want to run the simulation without using
a control panel, you will need to use the step command in the
main script.
****************************************************************** */
function make_control_panel (num_steps)
int num_steps
create xform /control
setfield /control xgeom 10 ygeom 50 wgeom 250 hgeom 115
create xlabel /control/label
float label_w = {getfield /control/label wgeom}
setfield /control/label hgeom 50 bg cyan label "CONTROL PANEL"
create xbutton /control/RESET -wgeom 25% -script reset
create xbutton /control/RUN -xgeom 0:RESET -ygeom 0:label \
-wgeom 25% -script "step_sim "{num_steps}" "
create xbutton /control/STOP -xgeom 0:RUN -ygeom 0:label \
-wgeom 25% -script stop
create xbutton /control/QUIT -xgeom 0:STOP -ygeom 0:label \
-wgeom 25% -script quit
create xbutton /control/"CLOSE WINDOW" -wgeom {label_w}\
-script "delete /control; delete /data1; delete /data2; delete /data3; delete /data4"
xshow /control
end
/* ******************************************************************
run_simulation
Creates a control panel to run the simulation for the specified
number of steps. If view_flag is 1, it also creates four windows
to graph specified variables as the simulation runs.
Parameters:
num_steps number of steps to run the simulation
Note: If you don't want to run the simulation without using
a control panel, you will need to use the step command in the
main script.
****************************************************************** */
function run_simulation (tmax, ymin, ymax, num_steps, view_flag)
float tmax, ymin, ymax
int num_steps, view_flag
make_control_panel {num_steps}
if (view_flag == 1)
make_graph "/data1" 0 {tmax} {ymin} {ymax} 400 10
setfield /data1 title {FIRST_SERIES}
addmsg {FIRST_SERIES} /data1/response PLOT Vm *volts *red
make_graph "/data2" 0 {tmax} {ymin} {ymax} 700 10
setfield /data2 title {SECOND_SERIES}
addmsg {SECOND_SERIES} /data2/response PLOT Vm *volts *red
make_graph "/data3" 0 {tmax} {ymin} {ymax} 400 400
setfield /data3 title {THIRD_SERIES}
addmsg {THIRD_SERIES} /data3/response PLOT Vm *volts *red
make_graph "/data4" 0 {tmax} {ymin} {ymax} 700 400
setfield /data4 title {FOURTH_SERIES}
addmsg {FOURTH_SERIES} /data4/response PLOT Vm *volts *red
make_netview
end
if (ECHO_ON == 1 && view_flag == 1)
echo "Graphing selected voltages to monitor progress:"
echo " /data1/response:" {FIRST_SERIES}
echo " /data2/response:" {SECOND_SERIES}
echo " /data3/response:" {THIRD_SERIES}
echo " /data4/response:" {FOURTH_SERIES}
end
check
reset
end
/* ******************************************************************
run_simulation_no_graphics
Creates a control panel to run the simulation for the specified
number of steps. If view_flag is 1, it also creates four windows
to graph specified variables as the simulation runs.
Parameters:
num_steps number of steps to run the simulation
Note: If you don't want to run the simulation without using
a control panel, you will need to use the step command in the
main script.
****************************************************************** */
function run_simulation_no_graphics (num_steps)
int num_steps
check
reset
step {num_steps}
end