/*
File iniziale per lo studio del motoneurone spinale
Balbi, marzo 2013 - settembre 2013
*/
load_file("nrngui.hoc")
objref sh, box1, box2, gr1, gr2 // variabili per i grafici iniziali
strdef curr_mod // variabile stringa per il modello in esecuzione
box1 = new VBox()
// paragrafo per l'inizializzazione ad uno steady state (precedentemente creato)
// se non utilizzato settare flag_svstate=1
objref svstate, f
strdef filename
svstate = new SaveState()
proc init() {
finitialize(v_init)
if (flag_svstate==0) {svstate.restore()}
t=0
if (cvode.active()) {
cvode.re_init()
} else {
fcurrent()
}
frecord_init()
}
// fine paragrafo
proc load_cell() { // loading soma and dendrites
forall delete_section() // cancella le sezioni di precedenti modelli
curr_mod = $s1
chdir("../cat_spinal_mn/")
load_file(1,curr_mod)
chdir("../channels/") // ritorna alla directory iniziale
box2 = new VBox(2)
box2.intercept(1)
sh = new Shape()
box2.intercept(0)
box2.map("Shape",500,25,350,350)
}
proc compl() { // completamento dei singoli neuroni (con i rispettivi steady-states)
chdir("../")
load_file(1,"2_complete_cell.hoc")
chdir("channels/")
// load save-states, utilizzando l'argomento della procedura
sprint(filename,"state%g.dat",$1)
chdir("../States/")
f = new File(filename)
svstate.fread(f)
chdir("../channels/")
}
// controlli
celsius=37
{
xpanel("RunControl", 0)
v_init = -70
xvalue("Init","v_init", 1,"stdinit()", 1, 1 )
xbutton("Init & Run","run()")
xbutton("Stop","stoprun=1")
runStopAt = 5
xvalue("Continue til","runStopAt", 1,"{continuerun(runStopAt) stoprun=1}", 1, 1 )
runStopIn = 1
xvalue("Continue for","runStopIn", 1,"{continuerun(t + runStopIn) stoprun=1}", 1, 1 )
xbutton("Single Step","steprun()")
t = 1
xvalue("t","t", 2 )
tstop = 20
xvalue("Tstop","tstop", 1,"tstop_changed()", 0, 1 )
dt = 0.025
xvalue("dt","dt", 1,"setdt()", 0, 1 )
steps_per_ms = 40
xvalue("Points plotted/ms","steps_per_ms", 1,"setdt()", 0, 1 )
screen_update_invl = 0.2
xvalue("Scrn update invl","screen_update_invl", 1,"", 0, 1 )
xcheckbox("Quiet",&stdrun_quiet,"")
realtime = 0
xvalue("Real Time","realtime", 0,"", 0, 1 )
xpanel(45,80)
}
// scegli il motoneurone!
box1.intercept(1)
xpanel("")
xbutton("AlphaMN1","{load_cell(\"AlphaMN1.hoc\") compl(1)}")
xbutton("AlphaMN2","{load_cell(\"AlphaMN2.hoc\") compl(2)}")
xbutton("AlphaMN3","{load_cell(\"AlphaMN3.hoc\") compl(3)}")
xbutton("AlphaMN4","{load_cell(\"AlphaMN4.hoc\") compl(4)}")
xbutton("AlphaMN5","{load_cell(\"AlphaMN5.hoc\") compl(5)}")
xbutton("AlphaMN6","{load_cell(\"AlphaMN6.hoc\") compl(6)}")
xbutton("AlphaMN8","{load_cell(\"AlphaMN8.hoc\") compl(7)}")
xbutton("AlphaMN9","{load_cell(\"AlphaMN9.hoc\") compl(8)}")
xbutton("v_e_moto1","{load_cell(\"v_e_moto1.hoc\") compl(9)}")
xbutton("v_e_moto2","{load_cell(\"v_e_moto2.hoc\") compl(10)}")
xbutton("v_e_moto3","{load_cell(\"v_e_moto3.hoc\") compl(11)}")
xbutton("v_e_moto4","{load_cell(\"v_e_moto4.hoc\") compl(12)}")
xbutton("v_e_moto5","{load_cell(\"v_e_moto5.hoc\") compl(13)}")
xbutton("v_e_moto6","{load_cell(\"v_e_moto6.hoc\") compl(14)}")
xpanel(400,25)
box1.intercept(0)
box1.map("pick up a neuron!",300,25,200,400)