Esempio n. 1
0
def readconf(fn="hnn.cfg", nohomeout=False):
    config = ConfigParser()
    config.optionxform = str

    with open(fn, 'r') as cfg_file:
        cfg_txt = os.path.expandvars(cfg_file.read())

    config.readfp(StringIO(cfg_txt))

    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 confbool(base, var, defa):
        return str2bool(confstr(base, var, defa))

    def readtips(d):
        if not config.has_section('tips'): return None
        ltips = config.options('tips')
        for i, prm in enumerate(ltips):
            d[prm] = config.get('tips', prm).strip()

    def readoptprm(d):
        dparams = OrderedDict()
        d['params'] = dparams
        if not config.has_section('params'): return False
        lprm = config.options('params')
        #print 'params:', lprm
        for i, prm in enumerate(lprm):
            #print prm
            s = config.get('params', prm)
            sp = s.split()
            if len(sp) > 4:
                minval, maxval, origval, bounded, bestval = float(
                    sp[0]), float(sp[1]), float(sp[2]), str2bool(sp[3]), float(
                        sp[4])
                p = param(origval, minval, maxval, bounded, prm, bestval)
            else:
                minval, maxval, origval, bounded = float(sp[0]), float(
                    sp[1]), float(sp[2]), str2bool(sp[3])
                p = param(origval, minval, maxval, bounded, prm)
            dparams[prm] = p

    d = {}

    d['homeout'] = confint("paths", "homeout",
                           1)  # whether user home directory for output
    if nohomeout: d['homeout'] = 0  # override config file with commandline

    d['simf'] = confstr('sim', 'simf', 'run.py')
    d['paramf'] = confstr('sim', 'paramf',
                          os.path.join('param', 'default.param'))

    if d['homeout']:  # user home directory for output
        dbase = os.path.join(os.path.expanduser('~'),
                             'hnn')  # user home directory
        if not safemkdir(dbase):
            sys.exit(1)  # check existence of base hnn output dir
    else:  # cwd for output
        dbase = os.getcwd(
        )  # use os.getcwd instead for better compatability with NSG

    d['datdir'] = os.path.join(dbase, 'data')  # data output directory
    d['paramoutdir'] = os.path.join(dbase, 'param')
    d['paramindir'] = confstr('paths', 'paramindir',
                              'param')  # this depends on hnn install location
    d['dataf'] = confstr('paths', 'dataf', '')

    for k in ['datdir', 'paramindir', 'paramoutdir']:  # need these directories
        if not safemkdir(d[k]): sys.exit(1)

    d['dorun'] = confint("run", "dorun", 1)
    d['doquit'] = confint("run", "doquit", 1)
    d['debug'] = confint("run", "debug", 0)
    d['testlfp'] = confint("run", "testlfp", 0)
    d['testlaminarlfp'] = confint("run", "testlaminarlfp", 0)
    d['optrun'] = confint("run", "optrun", 0)
    d['nsgrun'] = confint("run", "nsgrun", 0)

    d['drawindivdpl'] = confint("draw", "drawindivdpl", 1)
    d['drawavgdpl'] = confint("draw", "drawavgdpl", 0)
    d['drawindivrast'] = confint("draw", "drawindivrast", 1)
    d['fontsize'] = confint("draw", "fontsize", 0)

    readtips(d)  # read tooltips for parameters

    if d['optrun']: readoptprm(d)

    return d
Esempio n. 2
0
def readconf(fn="hnn.cfg", nohomeout=False):
    config = ConfigParser()
    config.optionxform = str

    with open(fn, 'r') as cfg_file:
        cfg_txt = os.path.expandvars(cfg_file.read())

    config.readfp(StringIO(cfg_txt))

    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 confbool(base, var, defa):
        return str2bool(confstr(base, var, defa))

    def readtips(d):
        if not config.has_section('tips'): return None
        ltips = config.options('tips')
        for i, prm in enumerate(ltips):
            d[prm] = config.get('tips', prm).strip()

    d = {}

    d['homeout'] = confint("paths", "homeout",
                           1)  # whether user home directory for output
    if nohomeout: d['homeout'] = 0  # override config file with commandline

    d['simf'] = confstr('sim', 'simf', 'run.py')
    d['paramf'] = confstr('sim', 'paramf',
                          os.path.join('param', 'default.param'))

    # dbase - optional config setting to change base output directory
    if config.has_option('paths', 'dbase'):
        dbase = config.get('paths', 'dbase').strip()
        if not safemkdir(dbase):
            sys.exit(1)  # check existence of base hnn output dir
    else:
        if d['homeout']:  # user home directory for output
            dbase = os.path.join(os.path.expanduser('~'),
                                 'hnn_out')  # user home directory
            if not safemkdir(dbase):
                sys.exit(1)  # check existence of base hnn output dir
        else:  # cwd for output
            dbase = os.getcwd(
            )  # use os.getcwd instead for better compatability with NSG

    d['dbase'] = dbase
    d['datdir'] = os.path.join(dbase, 'data')  # data output directory
    d['paramoutdir'] = os.path.join(dbase, 'param')
    d['paramindir'] = confstr('paths', 'paramindir',
                              'param')  # this depends on hnn install location
    d['dataf'] = confstr('paths', 'dataf', '')

    for k in ['datdir', 'paramindir', 'paramoutdir']:  # need these directories
        if not safemkdir(d[k]): sys.exit(1)

    d['dorun'] = confint("run", "dorun", 1)
    d['doquit'] = confint("run", "doquit", 1)
    d['debug'] = confint("run", "debug", 0)
    d['testlfp'] = confint("run", "testlfp", 0)
    d['testlaminarlfp'] = confint("run", "testlaminarlfp", 0)
    d['nsgrun'] = confint("run", "nsgrun", 0)

    d['drawindivdpl'] = confint("draw", "drawindivdpl", 1)
    d['drawavgdpl'] = confint("draw", "drawavgdpl", 0)
    d['drawindivrast'] = confint("draw", "drawindivrast", 1)
    d['fontsize'] = confint("draw", "fontsize", 0)

    d['decay_multiplier'] = conffloat('opt', 'decay_multiplier', 1.6)

    readtips(d)  # read tooltips for parameters

    return d