import ConfigParser import io import sys # default config as string def_config = """ [set] boost_every = 0.0 boost_halfw = 5.0 er_scale = 1.0 ca_stim = 0.0 ca_stimT = 2000.0 ip3rtau = 400 ip3_notorigin = 120400.0 ip3_origin = 120400.0 gserca = 1.9565 gleak = 18.06 stim_minx = 498 stim_maxx = 502 ip3_stim = 1.25 ip3_stimT = 2000 IP3ForceInit = 0 ip3_init = 0.1 cacyt_init = 0.0001 caAvg_init = 0.0017 cadiff = 0.080 ip3diff = 1.415 gCaChannels = 1.e-6 spaceum = 1.0 synLoclist = [0.5] nstimStart = 1000 nstimInterval = 1 nstimNumber = 40 nconnThreshold = 0 nconnDelay = 0 nconnWeight = 20 nconnActive = 1 electrical = 0 [run] recdt = 5 tstop = 30000 dt = 1 cvodeactive = 1 runit = 0 simstr = '14aug5_A' saveout = 0 dodraw = 0 loadState = 0 ipydebug = 0 statestr = 'mystate' savestate = 0 useInitDict = 0 loadRXDStateOnly = 1 """ # write config file starting with defaults and new entries # specified in section (sec) , option (opt), and value (val) # saves to output filepath fn def writeconf (fn,sec,opt,val): conf = ConfigParser.ConfigParser() conf.readfp(io.BytesIO(def_config)) # start with defaults # then change entries by user-specs for i in xrange(len(sec)): conf.set(sec[i],opt[i],val[i]) # write config file with open(fn, 'wb') as cfile: conf.write(cfile) # read config file def readconf (fn="cawave.cfg"): config = ConfigParser.ConfigParser() config.read(fn) def conffloat (base,var,defa): # defa is default value val = defa try: val=config.getfloat(base,var) except: pass return val def confint (base,var,defa): val = defa try: val=config.getint(base,var) except: pass return val def confstr (base,var,defa): val = defa try: val = config.get(base,var) except: pass return val def conflist (base, var, defa): val = defa try: val = config.get(base, var) except: pass return eval(val) # eval will convert the string to a list er_scale = conffloat("set","er_scale", 1.0) ip3_notorigin = conffloat("set","ip3_notorigin", 120400.0) ip3_origin = conffloat("set","ip3_origin", 120400.0) gserca0 = conffloat("set","gserca", 1.9565) boost_every = conffloat("set","boost_every", 0.0) boost_halfw = conffloat("set","boost_halfw", 5.0) gleak0 = conffloat("set","gleak", 18.06) ip3rtau = conffloat("set","ip3rtau", 400.0) recdt = conffloat("run","recdt", 5.0) tstop = conffloat("run","tstop", 30000.0) cvodeactive = confint("run","cvodeactive", 1) dt = conffloat("run","dt", 50.0) runit = conffloat("run","runit", 0.0) simstr = confstr("run","simstr","13nov18_") saveout = conffloat("run","saveout",0.0) stim_minx = conffloat("set","stim_minx",123)#498.0) stim_maxx = conffloat("set","stim_maxx",127)#502.0) dodraw = conffloat("run","dodraw",0.0) loadState = confint('run', 'loadState', 0) loadRXDStateOnly = confint('run','loadRXDStateOnly',1) ipydebug = confint('run','ipydebug',0) savestate = confint("run","savestate",0) useInitDict = confint("run","useInitDict",0) # whether to use sstvars init dict statestr = confstr('run', 'statestr', 'mystate') ip3_stim = conffloat("set","ip3_stim", 1.25) ip3_stimT = conffloat("set","ip3_stimT",2000.0) IP3ForceInit = confint("set","IP3ForceInit",0) ip3_init = conffloat("set","ip3_init",0.1) caCYT_init = conffloat("set","caCYT_init",0.0001) caAvg_init = conffloat("set","caAvg_init",0.0017) caDiff = conffloat("set","caDiff",0.080) # calcium diffusion coefficient ip3Diff = conffloat("set","ip3Diff",1.415) # ip3 diffusion coefficient gCaChannels = conffloat('set', 'gCaChannels', 1.e-6) spaceum = conffloat("set","spaceum",1.0) # spatial resolution for each segment, in um (nseg=L/spaceum) ca_stim = conffloat("set","ca_stim",0.0) ca_stimT = conffloat("set","ca_stimT",2000.0) synLoclist = conflist('set', 'synLoclist', []) # list of locations to insert depolarizing synapses nstimStart = conffloat('set', 'nstimStart', 1000) nstimInterval = conffloat('set', 'nstimInterval', 1) nstimNumber = conffloat('set', 'nstimNumber', 40) nconnThreshold = conffloat('set', 'nconnThreshold', 0) nconnDelay = conffloat('set', 'nconnDelay', 0) nconnWeight = conffloat('set', 'nconnWeight', 20) nconnActive = confint('set', 'nconnActive', 1) electrical = confint('set', 'electrical', 0) # whether to include ion channels and synapses sys.stdout = open("./simconfloaded.log", "w") # will direct the print output to simconfloaded.log file print "er_scale:",er_scale,",ip3_notorigin:",ip3_notorigin,",ip3_origin:",ip3_origin,\ ",gserca:",gserca0,",boost_every:",boost_every,",ip3_stim:",ip3_stim, ",ip3rtau:",ip3rtau,\ "cvodeactive:",cvodeactive," ,dt:",dt," ,runit:",runit," ,simstr:",simstr," ,saveout:",saveout,\ "stim_minx:",stim_minx," ,stim_maxx:",stim_maxx," ,dodraw:",dodraw, ', loadState:',loadState, ", ip3_stimT:",ip3_stimT,\ " ,ip3_init:",ip3_init, " ,caCYT_init:",caCYT_init, " ,caAvg_init:",caAvg_init,\ " ,caDiff:",caDiff, " ,ip3Diff:",ip3Diff, " ,gCaChannels:",gCaChannels, " ,spaceum:",spaceum,\ " ,ca_stim:",ca_stim, " ,ca_stimT:",ca_stimT," ,recdt:",recdt,\ " ,boost_halfw:",boost_halfw," ,gleak0:",gleak0, ' ,synLoclist:', synLoclist, ' ,nstimStart:', nstimStart,\ ' ,nstimInterval:', nstimInterval, ' ,nstimNumber:', nstimNumber, ' ,nconnThreshold:', nconnThreshold,\ ' ,nconnDelay:', nconnDelay, ' ,nconnWeight:', nconnWeight, ' ,nconnActive:', nconnActive, \ ' ,ipydebug:', ipydebug, ' ,statestr:', statestr, ' ,savestate:', savestate, ' ,useInitDict:', useInitDict, \ ' ,IP3ForceInit:', IP3ForceInit, ' ,loadRXDStateOnly:', loadRXDStateOnly, ' ,electrical:', electrical sys.stdout = sys.__stdout__ return er_scale,ip3_notorigin,ip3_origin,gserca0,boost_every,ip3_stim,\ gleak0,ip3rtau,recdt,tstop,cvodeactive,dt,runit,simstr,saveout,\ stim_minx,stim_maxx,dodraw,loadState,ip3_stimT,ip3_init,caCYT_init,caAvg_init,\ caDiff,ip3Diff,gCaChannels,spaceum,ca_stim,ca_stimT,boost_halfw,synLoclist,\ nstimStart, nstimInterval, nstimNumber, nconnThreshold, nconnDelay, nconnWeight, nconnActive, \ ipydebug, statestr, savestate, useInitDict, IP3ForceInit, loadRXDStateOnly, electrical