/*
Uses the makeCell*.hoc files in parallel. Also the new ball and stick template.
This version of runParallel is for the new synapse trials (NMDA only), 12.21.17
*/
/************* Loading necessary files *********************/
xopen("makeSv.hoc")
load_file("RealThresh_Soma.hoc")
// Uses 50 um range for threshold test, and 50 ms width Gaussian.
// Assumes savestates are already made and in the folder. Use 'makeSavestates.hoc' for each machine
/************* The procs ****************/
strdef mcVS,ThName,fName,filename,togStr
objref savestate
proc mcVolt() { local voltInput,startS,thType,toggle,brInd localobj cell
// Inputs:
// $1 is v_init
// $2 is starting seed
// $3 is the threshold trial type (0 for somatic, 1 for dendritic)
// $4 is the toggle (0 Both/1 AMPA/2 NMDA)
// $5 is the branch index (1-10)
voltInput = $1
startS = $2
thType = $3
toggle = $4
brInd = $5
// Makes cell with desired voltage and length
cell = new Cell(voltInput)
v_init = voltInput
savestate = new SaveState()
savestate = loadSv(voltInput*-1)
// Loads the savestate to a variable 'savestate'
// Running the test
runTh(cell,startS,brInd,thType,toggle)
}
proc runTh() { local nSpines,startS,brInd,sVT
// $o1 is the cell
// $2 is the starting seed for the trials
// $3 is the branch index for the DGC (1-17)
// $4 is 0 for somatic threshold, 1 for dendritic
// $5 is the usual 0 Both/1 AMPA/2 NMDA toggle
startS = $2
brInd = $3
thToggle = $4
toggle = $5
if (toggle==0) togStr = "B"
if (toggle==1) togStr = "A"
if (toggle==2) togStr = "N"
if (!thToggle) {
// Somatic threshold
init()
sVT = $o1.soma.v(.5) + 5 // the soma voltage threshold
sprint(ThName,"V%d_CA3%dBr%d_%sSoma.dat",v_init*-1,startS,brInd,togStr)
ThreshSpaceS(50,50,brInd,10,toggle,ThName,"CA3Branches2.dat",startS*startS+2,sVT,$o1)
// Using CA3Branches2 because those are longer than Branches1
// Inputs:
// $1: locRange is the range to be uniformly sampled in space
// $2: gaussTime is the width of the Gaussian to be sampled for timing
// $3: branchNum is the column to be read in the spine index file.
// $4: incrBy is the distance in microns each trial is separated by.
// $5: toggle is the kind of synapse: 0 BOTH, 1 AMPA, 2 NMDA
// $s6: filename.
// $s7: name of the spine map file.
// $8: seed
// $9: soma threshold voltage
// $o10: the cell
} else {
// Dendritic threshold
init()
sprint(ThName,"V%d_CA3%dBr%d_%sDend.dat",v_init*-1,startS,brInd,togStr)
ThreshSpaceD(50,50,brInd,20,toggle,ThName,"CA3Branches2.dat",startS*startS+2,$o1)
// Inputs:
// $1: locRange is the range to be uniformly sampled in space
// $2: gaussTime is the width of the Gaussian to be sampled for timing
// $3: branchNum is the column to be read in the spine index file.
// $4: incrBy is the distance in microns each trial is separated by.
// $5: toggle is the kind of synapse: 0 BOTH, 1 AMPA, 2 NMDA
// $s6: filename.
// $s7: name of the spine map file.
// $8: the seed
// $o9: the cell
}
}
proc init() {
// The right savestate must be loaded
finitialize(v_init)
savestate.restore(1)
t=0
fcurrent()
frecord_init()
}
obfunc loadSv() { localobj f,svstate
// Loads the right savestate
// $1 is the voltage*-1
sprint(filename,"CA3stdstt%d.dat",$1)
svstate = new SaveState()
f = new File(filename)
svstate.fread(f)
return svstate
}
/************************************************************/
/**************** The actual script *************************/
/************************************************************/
for vo_ind = 1,7 { // Sets RMP from -55 (1) to -85 (7) mV
for br_ind = 1,10 { // sets the dendritic branch to test
for tr_ind = 0,9 { // Sets the number of stochastic patterns, typically 10
for tog_ind = 0,2 { // 0 = BOTH AMPA & NMDA, 1 = AMPA, 2 = NMDA
mcVolt(((vo_ind*5)+50)*-1,tr_ind,0,tog_ind,br_ind)
}
}
}
}