/************************************************************************ * FILE GUI_FR_analysis.hoc * * GUI for analyzing motoneuron properties ************************************************************************/ {xpanel("FR motoneuron control panel")} { strdef FRchoice, anaChoice} // Use this menu to select one of the model cell parameter sets { xvarlabel(FRchoice)} { xbutton("pick a file", "chooseCell\(\)")} { xmenu()} { xvarlabel(anaChoice)} { xmenu("Choose analysis")} { xbutton("passive", "assign_ana\(\"passive\"\)")} { xbutton("AP/AHP", "assign_ana\(\"AP/AHP\"\)")} { xbutton("FI", "assign_ana\(\"FI\"\)")} { xbutton("IV", "assign_ana\(\"IV\"\)")} //{ xbutton("G ramp", "assign_ana(\"G\")")} { xmenu()} { xbutton("GO", "run_ana\(ana\)")} {xpanel()} // PROC assign_model() begin // user selected a cell file from the GUI strdef model proc assign_model() { if (numarg() < 1) { print "assign_model(): missing model cell argument" } model = $s1 printf("model = %s\n", model) sprint(FRchoice, "Cell: %s", model) } // PROC assign_model() end // PROC ramp_suggestions() begin proc ramp_suggestions() { print "Suggested parameters for current clamp ramp:" print "Cell\tFRvar61\tFRv61lt\tFRv61ht\tFRv61B\tFRv61BltFRv61Bht" print "V0\t-5\t-10\t5\t-5\t-10\t5" print "SLOPE\t0.006\t0.006\t0.006\t0.006\t0.006\t0.006" print "TR\t10000\t10000\t10000\t10000\t10000\t10000\n" } // PROC ramp_suggestions() end // PROC assign_ana() begin // called from menu selection on top level GUI strdef ana proc assign_ana() { if (numarg() < 1) { print "assign_ana(): missing analyze type argument" } // show user suggested values for the popup window ramp_suggestions() ana = $s1 printf("ana = %s\n", ana) sprint(anaChoice, "Analyze: %s", ana) if (strcmp(ana,"FI")==0) { xpanel("FI current clamp parameters") xvalue("Baseline current, I0", "V0", 1, "print \"V0=\",V0") xvalue("Ramp rate, SLOPE", "SLOPE", 1, "print \"SLOPE=\",SLOPE") xvalue("Time of ramp, TR", "TR", 1, "print \"TR=\",TR") xpanel() } if (strcmp(ana,"IV")==0) { xpanel("With or Without Synaptic Activity?") xcheckbox("enable synaptic input", &mult_synss) xpanel() } } // PROC assign_ana() end // initial assignments for ramp parameters // NOTE that V0 is used for current, in cc mode {V0=0} {SLOPE=.006} // low threshold cells may need lower SLOPE, like .004, to keep firing {TR=10000} // PROC run_ana() begin // hit the go button to get this procedure to run proc run_ana() { if (numarg() < 1) { print "run_ana(): missing analyze type argument" } ana = $s1 if (strcmp(ana,"passive") == 0) { {ana_passive(model)} } if (strcmp(ana,"AP/AHP") == 0) { {ana_AP_AHP(model)} } if (strcmp(ana,"FI") == 0) { {ana_FI(model)} } if (strcmp(ana,"IV") == 0) { {ana_IV(model)} } if (strcmp(ana,"G") == 0) { {ana_G(model)} } } // PROC run_ana() end // Assign default values; these are countermanded by user setting via the GUI assign_model("") assign_ana("passive") /*********************************************** * PROC chooseCell() * * pick a model using GUI ***********************************************/ strdef chosenCell, bn, dir objref myCell, strobj proc chooseCell() { chdir(start_dir) objref myCell, strobj myCell = new File() myCell.chooser("r", "browse to cell", "*.hoc", "click to pick", "Exit", start_dir) while (myCell.chooser()) { myCell.getname(chosenCell) } printf("Chosen cell is %s\n", chosenCell) printf("directory\n%s\n", getcwd()) // chosenCell now contains the relative path to the selected file strobj = new StringFunctions() bnloc = strobj.tail(chosenCell, ".*/", bn) // bn now contains the basename of the chosen file strobj.left(chosenCell, bnloc) // chosenCell now contains the relative directory location of the file printf("bn = %s, bnloc = %s\n", bn, chosenCell) chdir(chosenCell) assign_model(bn) } /******************************* * END chooseCell() *******************************/