//
// This genesis script runs four FS neurons, and allows different channel
// parameters to be changed for two of the neurons, the other two neurons
// are kept as normal.
//
// A1, A2, B1, B2
// A1 and A2 are identical (and modified from default)
// B1 and B2 are identical (and kept at default values)
//
//
// Johannes Hjorth, March 2009
// hjorth@nada.kth.se
//
echo "### Start of script ###################"
echo "Johannes Hjorth (hjorth@nada.kth.se)"
echo "Last updated: March 2009"
echo " "
if({argc} != 1)
echo "This script requires a parameter file specified"
echo "genesis simFourFSsaveGJcur myparams.txt"
quit
end
//
str parFile = "INDATA/"@{getarg {argv} -arg 1}
openfile {parFile} r
str outputName = {readfile {parFile}}
float maxTime = {readfile {parFile}}
int numCells = {readfile {parFile}}
echo "Simulating "{numCells}" FS neurons for "{maxTime}" seconds"
echo "Writing output to "{outputName}
// Read Sobol parametervariations
str sobolPars = {readfile {parFile} -linemode}
float NaCondMod = {getarg {arglist {sobolPars}} -arg 1}
float ACondMod = {getarg {arglist {sobolPars}} -arg 2}
float K3132CondMod = {getarg {arglist {sobolPars}} -arg 3}
float K13CondMod = {getarg {arglist {sobolPars}} -arg 4}
float mNaTauSobolMod = {getarg {arglist {sobolPars}} -arg 5}
float hNaTauSobolMod = {getarg {arglist {sobolPars}} -arg 6}
float mATauSobolMod = {getarg {arglist {sobolPars}} -arg 7}
float hATauSobolMod = {getarg {arglist {sobolPars}} -arg 8}
float mK3132TauSobolMod = {getarg {arglist {sobolPars}} -arg 9}
float mK13TauSobolMod = {getarg {arglist {sobolPars}} -arg 10}
// Simulation time and time steps
float spikeoutdt=1e-3
float vmOutDt=1e-4
float simDt=1e-5 //1e-6 needed for voltage clamp
// Number of synapse sites
int nAMPA = 127 // per cell
int nGABA = 93
//read in functions for creating and running simulations
include protodefsMOD
include fsInputFromFile
include fsSomaOutput
//setclocks
setclock 1 {vmOutDt}
setclock 0 {simDt}
// Use the SPRNG random number generator
setrand -sprng
// Read in and connect synaptic input
// Previously I read in insignal and noise separately, here they are
// in the same file (optimisation).
int cellCtr
echo "!! Neurons with index i = 2*n, share input with neuron i = 2*n + 1"
for(cellCtr = 0; cellCtr < numCells/2; cellCtr = cellCtr + 1)
readInputFromFile "AMPAinsignal_"{cellCtr}"_" \
"INDATA/AMPAinsignal_"{{cellCtr}+1}"_" \
{nAMPA}
readInputFromFile "GABAinsignal_"{cellCtr}"_" \
"INDATA/GABAinsignal_"{{cellCtr}+1}"_" \
{nGABA}
end
// OBS, input shared between neurons (see above), or code below
for(cellCtr = 0; cellCtr < {numCells}; cellCtr = cellCtr + 1)
connectFsInsignalToCell /fs[{cellCtr}] "/input/AMPAinsignal_"{cellCtr/2}"_" "AMPA"
connectFsInsignalToCell /fs[{cellCtr}] "/input/GABAinsignal_"{cellCtr/2}"_" "GABA"
end
// Read location of gap junctions from parameter file
int numGaps = {readfile {parFile}}
int gapCtr
// Set up output
makeOutput "/fs" {outputName} {vmOutDt}
// Obs we also save the compartments next to GJ, see below.
// Create gap junctions required in file
str readGapLine
str gapSrc
str gapDest
float gapRes
for(gapCtr = 0; gapCtr < numGaps; gapCtr = gapCtr + 1)
readGapLine = {readfile {parFile} -linemode}
gapSrc = {getarg {arglist {readGapLine}} -arg 1}
gapDest = {getarg {arglist {readGapLine}} -arg 2}
gapRes = {getarg {arglist {readGapLine}} -arg 3}
if({gapRes} > 0)
connectGap {gapSrc} {gapDest} {gapRes}
echo {gapSrc}"-->"{gapDest}" res: "{gapRes}
// Save the voltage so we can calculate the current later
addCompartmentOutput {gapSrc} {outputName}
addCompartmentOutput {gapDest} {outputName}
else
echo "WARNING: gapRes: "{gapRes}" ohm, no gap junction created"
end
end
closefile {parFile}
str chanName
foreach chanName ({el /fs[]/#/Na_channel_MOD} {el /fs[]/#/#/Na_channel_MOD})
echo "Na: "{chanName}" * "{NaCondMod}
setfield {chanName} Gbar {{getfield {chanName} Gbar} * {NaCondMod}}
end
foreach chanName ({el /fs[]/#/A_channel_MOD} {el /fs[]/#/#/A_channel_MOD})
echo "A: "{chanName}" * "{ACondMod}
setfield {chanName} Gbar {{getfield {chanName} Gbar} * {ACondMod}}
end
foreach chanName ({el /fs[]/#/K3132_channel_MOD} {el /fs[]/#/#/K3132_channel_MOD})
echo "K3132: "{chanName}" * "{K3132CondMod}
setfield {chanName} Gbar {{getfield {chanName} Gbar} * {K3132CondMod}}
end
foreach chanName ({el /fs[]/#/K13_channel_MOD} {el /fs[]/#/#/K13_channel_MOD})
echo "K13: "{chanName}" * "{K13CondMod}
setfield {chanName} Gbar {{getfield {chanName} Gbar} * {K13CondMod}}
end
check
reset
reset
step {maxTime} -t
clearOutput {outputName}
// close files
quit
|