// This is the main genesis file for running the HE model simulations.
// It is called by the model specific file (e.g. 45_23_22_07_06_07_19_02_29_41_15_11_33.g).
// Parameters for the simulation are set by the model itself (conductances), the input (duration, synaptic weights), and general simulation parameters ( in defaults.g and constants.g)
// Additional simulation and output options may be adjusted below
int verbose = 1 // Where possible, additional information will be written to stdout
// May override HEganglia in .g files below if desired -- e.g. to simulation only one ganglion.
// str HEganglia = "12"
float slowratio = 0.33 // Ratio between slow and fast portions of the HN to HE synapse. Default is 0.33.
str sgetaskid = {getenv SGE_TASK_ID}
// set the environment variable SGE_TASK_ID to '' (blank string) if desired. Used for array-jobs of simulations on a cluster using Sun Grid Engine.
str inputsamplerate = 1000 //Hz. This is the sampling rate for the mod function, should be 1kHz unless mod functions are adjusted/recreated
//----------------------------
// generic parameters and variables
str coordmodes = "peri sync"
str HNganglia = "3 4 6 7"
str currentHE, currentMode
//
if ({verbose} == 1)
setprompt " HE Model Version 9.2"
echo " * * * * ** * * * * "
end
//include files
include defaults.g
include HEchan.g
include synEobj.g
include SynapticInput.g
include outputfile_multigang.g
include compartments.g // Added for compatibility with readcell library
//include protocols.g // Note: the protocols contained in this file are not 100% functional
// simulation timestep //
float dt = {5*10**-5} // simulation timestep in s
// Note: Be careful adjusting this, although there should be no reason to do so!
// It is easy to get a superficially acceptable simulation with a insufficiently small time step.
setclock 0 {dt} //set the simulation clock to dt
setclock 1 {5*10**-4}// {2**-14}*2**3 = 2**-11 : 2048 samples/second saved
// build library of generic compartments and channels
pushe /library
make_cylind_compartment // makes "asymmetric cylindrical compartment" - the only type used in this simulation
// These are some standard channels used in .p files
make_Na_ron // makes "Na_ron"
make_K1_ron // makes "K1_ron"
make_K2_ron // makes "K2_ron"
make_P_ron // makes "P_ron"
make_CaS_ron // makes "CaS_ron"
make_Ca_conc // makes "Ca_conc"
make_K_Ca // makes "K_Ca"
make_A_ron // makes "A_ron"
createHNsyn {HNganglia} // creates SynS objects from each HN/mode
createSynE
pope // returning to the root element
echo Making neuron(s)
foreach currentMode({arglist {coordmodes}})
foreach currentHE({arglist {HEganglia}})
echo " " /HE{currentHE}_{currentMode}
readcell {pfile} /HE{currentHE}_{currentMode} -hsolve // using hines solver
end
end
loadHNinput {coordmodes} {HNganglia} {inputdir} {inputduration} {inputsamplerate}
make_syn_connections {coordmodes} {HNganglia} {HEganglia} 0.020 {dt} 0.1
// Set synaptic weights for each HE ganglion
foreach currentHE({arglist {HEganglia}})
set_syn_wts{currentHE}
set_gbar {syne_gbar} {currentHE}
end
set_slowsyn_wts {coordmodes} {HNganglia} {HEganglia} {slowratio}
// Note: We must setup output (save) messages before calling SETUP on hines-solved elements
save_soma_Vm {HEganglia}
// Uncomment the below for additional outputs if desired.
//save_all_Vm {coordmodes} {HEganglia} // saves all compartment membrane voltages
//save_syn_connections {coordmodes} {HNganglia} {HEganglia}
// First argument for the below are verbosity level from 0 (none) to 2 (all).
//saveAllCurrents 2 {HEganglia} {coordmodes} // saves all currents
//saveSynapseCurrents 2 {HEganglia} {coordmodes}
//saveMembraneCurrents 0 {HEganglia} {coordmodes}
// After all external messages have been setup (assuming chanmode 1):
// for each cell, setup hines solver options and method.
foreach currentMode({arglist {coordmodes}})
foreach currentHE({arglist {HEganglia}})
setfield /HE{currentHE}_{currentMode} \
path /HE{currentHE}_{currentMode}/##[][TYPE=compartment] \
comptmode 1 \
chanmode 1 \
outclock 1 \
storemode 1 // calcmode 0
setmethod 11
call /HE{currentHE}_{currentMode} SETUP
end
end
reset
// test for output file existence before simulation if desired by uncommenting the below (helpful if hitting disk space or file count limits)
//foreach currentHE({arglist {HEganglia}})
// sh "test -e HE"{currentHE}"soma_Vm.txt && echo HE"{currentHE}"soma_Vm.txt exists before simulation"
//end
step {inputduration} -t
bye // Flushes and closes open file handles, then gracefully quits.