Exemplo n.º 1
0
def runSORN(c, src):
    # Initialize experiment (source and statictics)
    (source, stats_single, _) = experiment.start(src)

    # Initialize SORN network, has simulation() and step() function
    sorn = Sorn(c, source)

    # Create a StatsCollection and fill it with methods for all statistics
    # that should be tracked (and later plotted)
    stats = StatsCollection(sorn)
    stats.methods = stats_single
    sorn.stats = stats

    # Datalog is used to store all results and parameters
    #stats.dlog.set_handler('*',utils.StoreToH5,
    #                       utils.logfilename("result.h5"))
    #stats.dlog.append('c', utils.unbunchify(c))
    #stats.dlog.set_handler('*',utils.TextPrinter)

    # Final experimental preparations
    experiment.reset(sorn)

    # Start stats
    sorn.stats.start()
    sorn.stats.clear()

    # Run experiment once
    pickle_objects = experiment.run(sorn)

    # Save sources etc
    for key in pickle_objects:
        filename = os.path.join(c.logfilepath, "%s.pickle" % key)
        topickle = pickle_objects[key]
        pickle.dump(topickle, gzip.open(filename, "wb"),
                    pickle.HIGHEST_PROTOCOL)

    # Control: Firing-rate model: Substitute spikes by drawing random spikes
    # according to firing rate for each inputindex
    if sorn.c.stats.control_rates:
        experiment.control_rates(sorn)

    # Report stats and close
    stats.single_report()
    stats.disable = True
    #stats.dlog.close()
    sorn.quicksave(filename=os.path.join(c.logfilepath, 'net.pickle'))
Exemplo n.º 2
0
# 1. load param file
try:
    exp_dir = import_module(sys.argv[1])
except:
    raise ValueError('Please specify a valid experiment name as first argument.')
params = exp_dir.param

# 2. add experiment specific parameters
params.get_par()
params.get_aux()
params.aux.display = True
try:
    tag = sys.argv[2]
except:
    raise ValueError('Please specify a valid experiment tag.')
params.aux.experiment_tag = '_{}'.format(tag)

# 3. initialize experiment, sorn, and stats objects
#    the experiment class keeps a copy of the initial sorn main parameters
experiment = exp_dir.experiment.Experiment(params)
experiment.files_tosave = ['params', 'stats', 'scripts']
sorn = Sorn(params, experiment.inputsource)
stats = Stats(experiment.stats_cache, params)

# 4. run one experiment once
experiment.run(sorn, stats)

# 5. save initial sorn parameters and stats objects
backup_pickle(experiment, stats)
Exemplo n.º 3
0
    elif c.cluster.vary_param == 'source.control':
        pass
    else:
        experiment_param = c.cluster.vary_param

    # Prepare experiment
    experiment = getattr(experiment_module,
                         experiment_name)(param,
                                          cluster_param=experiment_param)
    # Save current parameter for logging
    c.cluster.current_param = current_param

    # Start experiment
    (source, _, stats_cluster) = experiment.start()

    sorn = Sorn(c, source)

    # Create a StatsCollection and fill it with methods for all
    # statistics that should be tracked (and later plotted)
    stats = StatsCollection(sorn, dlog)
    stats.methods = stats_cluster
    sorn.stats = stats

    # Run experiments
    experiment.reset(sorn)
    sorn.stats.start()
    dlog.progress("Start inner loop")
    for n in range(c.N_iterations):
        experiment.reset(sorn)
        stats.clear()