// $Id: x_control.g,v 16.1 2000/03/02 14:43:39 ajay Exp $ // genesis // x_control.g //--------------------------------- // CONTROL PANEL //-------------------------------- echo Setting up the XODUS control windows.... function step_tmax step {tmax} -time end function reset_sim reset end if ({exists /control}) delete /control end create xform /control [0,0,300,350] create xlabel /control/label -label "Control Panel" -bg cyan create xbutton /control/RUN -wgeom 20% -script step_tmax create xbutton /control/STEP -xgeom 0:RUN -ygeom 0:label \ -wgeom 20% -script step create xbutton /control/STOP -xgeom 0:STEP -ygeom 0:label \ -wgeom 20% -script "stop" create xbutton /control/RESET -xgeom 0:STOP -ygeom 0:label \ -wgeom 20% -script reset_sim create xbutton /control/QUIT -xgeom 0:RESET -ygeom 0:label \ -wgeom 20% -script "xshow /quitform" create xdialog /control/nstep -wgeom 50% -script "nstep " -value 100 create xdialog /control/dt_sec -xgeom 0:nstep -ygeom 0:QUIT \ -wgeom 50% -script "setdt " -value {dt} create xdialog /control/refresh_every_n_steps \ -script "setrefresh " -value {refresh_factor} create xtoggle /control/plot_toggle -wgeom 50% \ -onlabel "Plot ON" -offlabel "Plot OFF" \ -onfg green -offfg black \ -state 1 \ -script "toggle_plot " create xtoggle /control/save_toggle -xgeom 0:plot_toggle \ -ygeom 0:refresh_every_n_steps -wgeom 50% \ -onlabel "Save ON" -offlabel "Save OFF" \ -onfg green -offfg black \ -state 0 \ -script "toggle_save " create xdialog /control/outfile -value "data1" create xbutton /control/RUN_SEQUENCE -wgeom 50% -script "lrs" create xdialog /control/NumPatterns -xgeom 0:RUN_SEQUENCE -ygeom 0:outfile -wgeom 50% \ -value {num_aff_pat} -script "set_numpat " create xbutton /control/Plot_PYR_Spike_Times -script do_rplot create xbutton /control/Plot_PYR_Activity_Level -script do_plot_perc_active create xbutton /control/Plot_INTA_Spike_Times -script do_rplot_inta create xbutton /control/Plot_INTA_Activity_Level -script do_plot_perc_inta_active create xbutton /control/Plot_INTB_Spike_Times -script do_rplot_intb create xbutton /control/Plot_INTB_Activity_Level -script do_plot_perc_intb_active function toggle_plot(widget) str widget str formname if ({getfield {widget} state} == 1) // PLOT ON if ({exists /xout}) echo /xout already exists return else create xform /xout [312,0,600,600] create xlabel /xout/label [0,0,50%,4%] \ -label "Pyramidal firing pattern" -bg cyan make_raster /xout xshow /xout reset end else foreach formname ({el /xout#}) echo deleting {formname} delete {formname} end end end function toggle_save(widget) str widget str fn = {getfield /control/outfile value} int i if ({getfield {widget} state} == 1) // SAVE ON echo SAVING firing activity in {datadir}/{fn}.cdf // create files create diskio /dout \ -filename {datadir}/{fn}.cdf \ -accessmode w \ -leave_open 1 // add SAVE messages and reset for (i=0; i < {npyr_to_save}; i=i+1) addmsg /pyr_layer/pyr[{i}]/soma/spike /dout \ SAVE state end for (i=0; i < {ninta_to_save}; i=i+1) addmsg /int_a_layer/int_a[{i}]/soma/spike /dout \ SAVE state end for (i=0; i < {nintb_to_save}; i=i+1) addmsg /int_b_layer/int_b[{i}]/soma/spike /dout \ SAVE state end reset else echo NOT SAVING TO DISK end end if ({exists /quitform}) delete /quitform end create xform /quitform [0,40,300,100] -title "Do you really want to quit ?" disable /quitform create xbutton /quitform/yes -script quit create xbutton /quitform/no -script "xhide /quitform" function get_current_time setfield /control/current_time value {getstat -time} end function nstep(widget) str widget echo doing {getfield {widget} value} steps step {getfield {widget} value} end function setdt(widget) str widget echo setting timestep to {getfield {widget} value} dt = {getfield {widget} value} setclock 0 {dt} // sec setclock 1 {dt * refresh_factor} // sec : for the refresh views end function setrefresh(widget) str widget echo setting refresh_factor to {getfield {widget} value} refresh_factor = {getfield {widget} value} setclock 1 {dt * refresh_factor} // sec : for the refresh views end xshow /control function do_refresh // for calling refreshes get_current_time end function set_numpat(widget) str widget echo setting num_aff_pat (Number of patterns in Sequence) to {getfield {widget} value} num_aff_pat = {getfield {widget} value} end function do_rplot rplot {num_ILN} {tmax} end function do_plot_perc_active plot_perc_active {NSTAB_PYR} 0 {tmax} 1 // 1 => save activity to file end function do_rplot_inta rplot_inta {NSTAB_INTA} {tmax} end function do_plot_perc_inta_active plot_perc_inta_active {NSTAB_INTA} 0 {tmax} 1 end function do_rplot_intb rplot_intb {NSTAB_INTB} {tmax} end function do_plot_perc_intb_active plot_perc_intb_active {NSTAB_INTB} 0 {tmax} 1 end