def graph(task): lims = len(task) != 1 if lims: fname = task[2] else: fname = task[0] axis_name = fname try: fname_index = axis_name.rindex('\\') + 1 axis_name = axis_name[fname_index:] except ValueError: pass try: fname_index = axis_name.rindex('/') + 1 axis_name = axis_name[fname_index:] except ValueError: pass try: dot_index =axis_name.rindex('.') axis_name = axis_name[:dot_index] except ValueError: pass matrix_act = fs.load_matrix(fname) if matrix_act is not None: act = matrix_act[0] result_name = "output/analyzer/graph_" + axis_name plt.figure(figsize=(max(8, len(act)/50), 6)) plt.xlabel("time") plt.ylabel(axis_name) if lims: plt.ylim(task[:2]) plt.plot(act) plt.savefig(result_name + ".png") plt.close() stat = calculate_statistics_sequence(act) output = "m = {0}\nD = {1}\na = {2}\nk = {3}".format(stat[0], stat[1], stat[2], stat[3]) fs.write_file(result_name + ".txt", output) else: print("cannot read file '" + fname + "'", flush=True)
def parameter(task): id = task[0] mn = task[1] mx = task[2] if len(task) == 4: st = task[3] else: st = 1 val = mn pool = [mn] while mx - mn - st > EVALUATIONS_EPSILON: mn += st pool.append(mn) pool.append(mx) fname = "analyzer_settings.txt" neurs = int(fs.load_parameter(fname, "NEURONS", 100)) elects = int(fs.load_parameter(fname, "ELECTRODES", 30)) cons = int(fs.load_parameter(fname, "CONNECTIONS", 2000)) elecons = int(fs.load_parameter(fname, "ELECONS", 150)) noize = int(fs.load_parameter(fname, "NOIZEVAL", 5)) testtime = int(fs.load_parameter(fname, "TESTTIME", 500)) tests = int(fs.load_parameter(fname, "TESTS", 10)) wind_size = int(fs.load_parameter(fname, "WINDOWSIZE", 7)) pstart = int(fs.load_parameter(fname, "PACKSTART", 79)) pend = int(fs.load_parameter(fname, "PACKEND", 21)) params = (wind_size, pstart, pend) data = [] pool_burst_len = [] pool_noburst_len = [] pool_burst_percent = [] class Callback: @staticmethod def draw_info(info): data.append(info) for i in range(len(pool)): sbl = 0 snbl = 0 sbp = 0 for j in range(tests): data = [] callback = Callback() ntw = Network(callback) ntw.add_neurons(neurs) ntw.add_electrodes(elects) ntw.add_connections(True, cons, 0, neurs - 1, 0, neurs - 1) ntw.add_connections(False, elecons, 0, cons - 1, 0, elects - 1) ntw.setNoize(True, noize) ntw.set_parameter(id, pool[i]) for k in range(testtime): ntw.step() bl, nbl, bp = analyze_activity(data, params) sbl += bl snbl +=nbl sbp += bp sbl /= tests snbl /= tests sbp /= tests pool_burst_len.append(sbl) pool_noburst_len.append(snbl) pool_burst_percent.append(sbp) lims = [0, max(max(pool_burst_len), max(pool_noburst_len))] plt.xlabel("parameter " + str(id)) plt.ylabel("burst period length") plt.ylim(lims) plt.plot(pool, pool_burst_len) plt.savefig("output/analyzer/id " + str(id) + " burst length" + ".png") plt.close() plt.xlabel("parameter " + str(id)) plt.ylabel("interburst period length") plt.ylim(lims) plt.plot(pool, pool_noburst_len) plt.savefig("output/analyzer/id " + str(id) + " interburst length" + ".png") plt.close() plt.xlabel("parameter " + str(id)) plt.ylabel("burst percent") plt.ylim([0, 1]) plt.plot(pool, pool_burst_percent) plt.savefig("output/analyzer/id " + str(id) + " burst percent" + ".png") plt.close() output = "id {0}\nvalues: {1}\nburst length: {2}\ninterburst length: {3}\nburst percent {4}"\ .format(id, pool, pool_burst_len, pool_noburst_len, pool_burst_percent) fs.write_file("output/analyzer/id " + str(id) + " testing results" + ".txt", output)