/*
Uses the makeCell*.hoc files in parallel. Also the new ball and stick template.
*/
/************* Loading necessary files *********************/
xopen("makeSavestates.hoc")
load_file("Threshold_Template.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
objref savestate
proc mcVolt() { local voltInput,length,startS,AMPAc localobj cell
// Inputs:
// $1 is v_init
// $2 is length
// $3 is starting seed
// $4 is AMPA conductance, normal .0005 umho
voltInput = $1
length = $2
startS = $3
AMPAc = $4
// Makes cell with desired voltage and length
cell = new Cell(length,voltInput)
v_init = voltInput
savestate = new SaveState()
savestate = loadSv(length,voltInput*-1)
// Loads the savestate to a variable 'savestate'
// Running the test
runTh(length,cell,startS,AMPAc)
}
proc runTh() { local nSpines,startS,AMPAc
// $1 is the number of spines (dendrite length)
// $o2 is the cell
// $3 is the starting seed for the trials
// $4 is the AMPA conductance
nSpines = $1
startS = $3
AMPAc = $4
// 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: repStat is the number of repetitions for each location, to collect statistics in variation
// $4: incrBy is the distance in microns each trial is separated by.
// $5: branchLength is the number of spines on the tested branch.
// $6: toggle is the kind of synapse: 0 BOTH, 1 AMPA, 2 NMDA
// $s7: filename.
// $8: the starting seed
// $o9: the cell itself
// $10: AMPA conductance, with normal .0005 umho
sprint(ThName,"A%dTr%dThLen%dV%dB.dat",AMPAc*10000,startS,nSpines,v_init*-1)
ThreshSpace(50,50,10,10,nSpines,0,ThName,startS,$o2,AMPAc)
sprint(ThName,"A%dTr%dThLen%dV%dA.dat",AMPAc*10000,startS,nSpines,v_init*-1)
ThreshSpace(50,50,10,10,nSpines,1,ThName,startS,$o2,AMPAc)
}
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 dendrite length
// $2 is the voltage*-1
sprint(filename,"BLen%dstdstt%d.dat",$1,$2)
svstate = new SaveState()
f = new File(filename)
svstate.fread(f)
return svstate
}
/************************************************************/
/**************** The actual script *************************/
/************************************************************/
for vo_ind = 1,7 { // sets the RMP from -55 (1) to -85 (7) mV in 5 mV steps
for le_ind = 1,5 { // sets the dendritic length to 200, 400, 600, 800, or 1,000 um (1-5)
for ac_ind = 1,10 { // modifies the AMPA conductance; 1 = 100 pS, 10 = 1 nS
for tr_ind = 0,0 { // redundant
mcVolt(((vo_ind*5)+50)*-1,le_ind*200,tr_ind,ac_ind*.0001)
}
}
}
}