load_file("nrngui.hoc") objref ocbox_, ocbox_list_, scene_, scene_list_ objref sph, ms objref grph0 objref scene_vector_[8] strdef tmpstr {ocbox_list_ = new List() scene_list_ = new List()} scene_vector_[4] = new Graph(0) scene_vector_[5] = new Graph(0) scene_vector_[6] = new Graph(0) scene_vector_[7] = new PlotShape(0) proc RunControlWindow() { //open RunControl Window. requires "stdrun.hoc" to be loaded xpanel("RunControl", 0) xvalue("Init","v_init", 1,"stdinit()", 1, 1 ) xbutton("Init & Run","run()") xbutton("Stop","stoprun=1") xvalue("Continue til","runStopAt", 1,"{continuerun(runStopAt) stoprun=1}", 1, 1 ) xvalue("Continue for","runStopIn", 1,"{continuerun(t + runStopIn) stoprun=1}", 1, 1 ) xbutton("Single Step","steprun()") xvalue("t","t", 2 ) xvalue("Tstop","tstop", 1,"tstop_changed()", 0, 1 ) xvalue("dt","dt", 1,"setdt()", 0, 1 ) xvalue("Points plotted/ms","steps_per_ms", 1,"setdt()", 0, 1 ) xvalue("Scrn update invl","screen_update_invl", 1,"", 0, 1 ) xvalue("Real Time","realtime", 0,"", 0, 1 ) xpanel(680,8) } proc vplot() { local i,count, flag, k, n //vplot( sections ). generate time vs. membrane potential plot //vplot( flag, sections ). if flag==1 create new window. flag==0 is default //sections can be a sectionlist or a series of section names i.e. vplot("soma[0]","dendrite[1]", ...) count = numarg() if (argtype(1)==0) { // is first input a number flag=$1 // set flag to input k=2 // sections/compartment now starts with 2nd input } else { flag=0 // set flag to 0 (default) k=1 // sections starts with 1st input } grph0 = scene_vector_[4] if ( (grph0.view_count()==0) || (flag==1) ) { {grph0.view(0, -69, tstop, 40, 800, 400, 800, 350)} //(mleft, mbottom, mwidth, mheight, wleft,wtop, wwidth, wheight) // in a window with user-specified location (5th and 6th args) and size (last 2 args) graphList[0].append(grph0) } if ((count>0) && (flag==0)) grph0.erase_all() // check flag if (argtype(k) == 1) { // check whether 1st non-flag input is an object n=0 // index changing for each section to use different colors i=k // use i because $ok returns error forsec $oi { // loop through sectionlist object n+=1 sprint(tmpstr, "%s.v(0.5)", secname() ) grph0.addvar(tmpstr, n,1) // add section to plot } } else { for i=k,count { // loop through input strings sprint(tmpstr, "%s.v(0.5)", $si ) grph0.addvar(tmpstr, i,1) } } } proc gplot() { local i,count localobj sl // gplot( stringlist ) grph0 = scene_vector_[6] if (grph0.view_count()==0) { {grph0.view(0, 0, 500, 0.001, 50, 400, 700, 350)} //(mleft, mbottom, mwidth, mheight, wleft,wtop, wwidth, wheight) // in a window with user-specified location (5th and 6th args) and size (last 2 args) graphList[0].append(grph0) } if ((numarg()>0) && (argtype(1)==1)) { grph0.erase_all() sl = $o1 for i=0,sl.count()-1 { grph0.addexpr(sl.o[i].s, i+1,1) } } else if (grph0.view_count()==0) { grph0.addvar("Tines[621].g_h(0.5)", 2,1) grph0.addvar("Tines[786].g_h(0.5)", 4,1) grph0.addvar("Tines[621].g_KD(0.5)", 2,1) grph0.addvar("Tines[786].g_KD(0.5)", 4,1) } } proc stateplot() {local i localobj sl // stateplot( stringlist ) grph0 = scene_vector_[5] if (grph0.view_count()==0) { {grph0.view(0, 0, 500, 1, 50, 400, 700, 350)} //(mleft, mbottom, mwidth, mheight, wleft, wtop, wwidth, wheight) graphList[0].append(grph0) } if ((numarg() > 0) && (argtype(1)==1)) { grph0.erase_all() sl = $o1 for i=0,sl.count()-1 { grph0.addexpr(sl.o[i].s, i+1,1) } } else if (grph0.view_count()==0) { grph0.addexpr("Handle[0].cai(0.5)*100", 9, 1) grph0.addexpr("Handle[0].g_KCa(0.5)/Handle[0].gmax_KCa(0.5)", 6,1) grph0.addvar("Tines[621].n_hcn(0.5)", 1,1) grph0.addexpr("Tines[621].g_NaP(0.5)/Tines[621].gmax_NaP(0.5)", 3,1) grph0.addexpr("Tines[621].g_KD_ca3(0.5)/Tines[621].gmax_KD_ca3(0.5)", 2,1) grph0.addexpr("Tines[786].g_KD_ca3(0.5)/Tines[786].gmax_KD_ca3(0.5)", 4,1) } } proc shapeplot() {local mx, mn // shapeplot( variable, maxvalue, minvalue ) sph = scene_vector_[7] if ((numarg()>0) && (argtype(1)==2)) { sph.variable($s1) } else sph.variable("cai") if ((numarg()>1) && (argtype(2)==0)) { mx = $2 } else mx=5e-3 if ((numarg()>2) && (argtype(3)==0)) { mn = $3 } else mn=0 sph.scale(mn, mx) if (sph.view_count()==0) { sph.size(60.6917,540.608,62.739,324.261) sph.show(0) sph.observe(FieldA) {sph.view(66, 100, 420, 230, 960, 10, 640, 333)} fast_flush_list.append(sph) sph.save_name("fast_flush_list.") sph.rotate(0,0,0,0.7,0,0) sph.exec_menu("Shape Plot") } } /*0 white 1 black 2 red 3 blue 4 green 5 orange 6 brown 7 violet 8 yellow 9 gray*/ /*