/*
Uses the makeCell*.hoc files in parallel. Also the new ball and stick template.
*/
/************* Loading necessary files *********************/
load_file("BigNeuron_3Dend.hoc")
// Makes savestates for dendrites 200-1000 microns and voltages -55 to -85 mV.
/************* The procs ****************/
strdef mcVS,fName,filename
objref savestate
proc mcVolt() { local voltInput,length localobj cell
// Inputs:
// $1 is v_init
// $2 is length
voltInput = $1
length = $2
// Makes cell with desired voltage and length
cell = new Cell(length,voltInput)
v_init = voltInput
makeSv(length)
// makeSv() makes the savestate for the cell type; the file is labelled with length and Vm
}
proc makeSv() { localobj f,sv
// Makes a savestate with labels for length and voltage.
// Does not set v_init: that must be declared before calling makeSv()
// Input:
// $1 is the length of the ball and stick model's dendrite.
tstop = 1000
init1()
// init1 used because no savestate has been made yet
while (t<tstop) {
fadvance()
}
sprint(fName,"BLen%dstdstt%d.dat",$1,v_init*-1)
f = new File(fName)
sv = new SaveState()
sv.save()
sv.fwrite(f)
f.close()
}
proc init1() {
// An init proc if no savestate has been made yet.
// Needs v_init to be declared prior to calling.
finitialize(v_init)
t=0
fcurrent()
frecord_init()
}
/************************************************************/
/**************** The actual script *************************/
/************************************************************/
objref pc
pc = new ParallelContext()
pc.runworker()
if (pc.nhost==1) {
for vo_ind = 1,7 {
for le_ind = 1,1 {
mcVolt(((vo_ind*5)+50)*-1,le_ind*200)
}
}
}else{
for vo_ind = 1,7 {
for le_ind = 1,1 {
pc.submit("mcVolt",((vo_ind*5)+50)*-1,le_ind*200)
// Inputs:
// $1 is v_init
// $2 is length
}
}
while (pc.working) {
s = pc.retval
}
}
pc.done()