#!/usr/bin/python from optparse import OptionParser # Generates a series of commands that, in aggregate, produce a parameter space # of neuron firing rates, where the parameters that vary are maximim sodium # conductance (gNa) and maximum potassium conductance (gKv). Each is specified # by an argument consisting of the minumum and maximum parameter value, # separated by a comma. The --stepsize parameter specifies the amount by which # each parameter is varied. The --stims parameter is a comma-separated list of # the different stimulation levels that should be applied to the simulated # neuron. The --neurons argument is a comma-separated list of the neurons # for which a map should be generated. Neurons can be specified by any name (or # group name) recognized by the 'list.py' script. # # Example: # Scripts/Python/generateParameterSpaceCommands --params=testing --gNa=0,200 --gKv=0,200 \ # --stepSize=5 --stims=230,330 --neurons=Aug3a-all,Aug3b-all parser = OptionParser() parser.add_option("--headers", action="store_true", dest="headersOption", default=False, help="Prints the CSV-formatted headers for results") parser.add_option("--params", action="store", type="string", default="Christina-standard-testing", help=("Name of the set of parameters that will be used in " + "NEURON simulations supporting this computation, as " + "specified in Scripts/ParameterSets.csv")) parser.add_option("--gNa", action="store", type="string", help="Maximal sodium conductance. Must be an integer.") parser.add_option("--gKv", action="store", type="string", help="Maximal potassium conductance. Must be an integer.") parser.add_option("--stepSize", action="store", type="string", help="amount by which the parameters vary. Must be an integer.") parser.add_option("--stims", action="store", type="string", help="levels of current (pA) to be applied to each neuron") parser.add_option("--neurons", action="store", type="string", help="neurons for which a parameter space should be computed") (options, args) = parser.parse_args() headersOption = options.headersOption if (headersOption): print ("cellName,parameterSet,gNa,gKv,stim,firingRate") exit(0) parameterSetName = options.params gNaParam = options.gNa gKvParam = options.gKv stepSize = int(options.stepSize) stimsParam = options.stims neuronsParam = options.neurons gNaLevels = gNaParam.split(",") gNaLow = int(gNaLevels[0]) gNaHigh = int(gNaLevels[1]) gKvLevels = gKvParam.split(",") gKvLow = int(gKvLevels[0]) gKvHigh = int(gKvLevels[1]) stims = [float(x) for x in stimsParam.split(",")] neuronNames = neuronsParam.split(",") def commandForNaKvStim(gNa, gKv, stim, neuronName): return ("./Scripts/Python/firingRate.py --appliedCurrent=330 " + "--params=%s --gNa=%d --gKv=%d --appliedCurrent=%d %s") % ( parameterSetName, gNa, gKv, stim, neuronName) commands = [commandForNaKvStim(eachNa, eachKv, eachStim, eachNeuronName) for eachNeuronName in neuronNames for eachStim in stims for eachKv in xrange(gKvLow, gKvHigh + 1, stepSize) for eachNa in xrange(gNaLow, gNaHigh + 1, stepSize)] for eachCommand in commands: print eachCommand