コード例 #1
0
def activity(task):
    drawall = len(task) == 2
    fname = task[0]
    sfname = "analyzer_settings.txt"
    wind_size = int(fs.load_parameter(sfname, "WINDOWSIZE", 7))
    pstart = int(fs.load_parameter(sfname, "PACKSTART", 79))
    pend = int(fs.load_parameter(sfname, "PACKEND", 21))
    columns = int(fs.load_parameter(sfname, "HISTCOLUMNS", 7))
    params = (wind_size, pstart, pend)
    alldata = fs.load_matrix(fname)
    if alldata is not None:
        packs = []
        start_ind = 0
        flag = True
        while flag:
            pack = find_pack(alldata, start_ind, params)
            if pack is not None:
                packs.append(pack)
                start_ind = pack[1]
            else:
                flag = False

        packs = list(map(lambda x: alldata[x[0]:x[1]], packs))
        if drawall:
            draw_activity(alldata, "all activity")
            p_act_data = [get_population_activity(alldata)]
            fs.save_matrix(p_act_data, "output/analyzer/all activity.txt")
        process_burst(alldata, 0, columns)
        for i in range(len(packs)):
            process_burst(packs[i], i+1, columns)
            draw_activity(packs[i], "pack " + str(i+1) + " activity")
    else:
        print("cannot read file '" + fname + "'", flush=True)
コード例 #2
0
    def __init__(self):
        super().__init__()

        uic.loadUi("GUI/forms/main_form.ui", self)
        self.init_ui()

        self.worker = NetworkWorker(self)

        # TODO: load settings here
        self.create_new_network()
        buf = 0
        if fs.load_parameter(SETTINGS_FILEPATH, KEY_BUFFERED_OUTPUT_VALUE, DEFAULT_BUFFERED_OUTPUT_VALUE) == "True":
            buf = int(fs.load_parameter(SETTINGS_FILEPATH, KEY_BUFFERED_OUTPUT_VALUE, DEFAULT_BUFFERED_OUTPUT_VALUE))
        self.set_buffer(buf)

        if self.ntw.getNoize()[0]:
            self.NoizeTypeComboBox.setCurrentIndex(0)
            self.NoizeValueSpinBox.setMaximum(100)
            self.NoizeValueSpinBox.setValue(self.ntw.getNoize()[1])
        else:
            self.NoizeTypeComboBox.setCurrentIndex(1)
            self.NoizeValueSpinBox.setMaximum(self.ntw.get_neurons_count())
            self.NoizeValueSpinBox.setValue(self.ntw.getNoize()[1])

        self.worker.set_save_to_file(True)

        self.show()
コード例 #3
0
 def create_new_network(self):
     neurs = int(fs.load_parameter(SETTINGS_FILEPATH, KEY_NEURONS_COUNT, DEFAULT_NEURONS_COUNT))
     elects = int(fs.load_parameter(SETTINGS_FILEPATH, KEY_ELECTRODES_COUNT, DEFAULT_ELECTRODES_COUNT))
     neurs_con = int(fs.load_parameter(SETTINGS_FILEPATH, KEY_NEURONS_CONNECTIONS, DEFAULT_NEURONS_CONNECTIONS))
     elects_con = int(
         fs.load_parameter(SETTINGS_FILEPATH, KEY_ELECTRODES_CONNECTIONS, DEFAULT_ELECTRODES_CONNECTIONS)
     )
     self.ntw = Network(self.worker)
     self.ntw.add_electrodes(elects)
     self.ntw.add_neurons(neurs)
     self.ntw.add_connections(True, neurs_con, 0, neurs - 1, 0, neurs - 1)
     self.ntw.add_connections(False, elects_con, 0, neurs_con - 1, 0, elects - 1)
     self.ntw.setNoize(True, 5)
     self.ntw.setNoize(DEFAULT_NOIZE_TYPE, DEFAULT_NOIZE_VAL)
     print("New network created")
コード例 #4
0
def dynamics(task):
    try:
        numbers = list(map(lambda x: int(x), task))

        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))
        dtesttime = int(fs.load_parameter(fname, "DYNTESTTIME", 2000))

        data = []
        states = []
        for i in range(len(numbers)):
            states.append([])

        class Callback:
            @staticmethod
            def draw_info(info):
                data.append(info)

        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)

        for i in range(dtesttime):
            ntw.step()
            state = ntw.get_state()
            for j in range(len(numbers)):
                states[j].append(state[3 + numbers[j]])

        # processing data
        value_dynamics = []
        for n_states in states:
            potential = []
            strength = []
            resource = []
            incoming_current = []
            for state in n_states:
                potential.append(state[0])
                strength.append(state[1])
                resource.append(state[2])
                incoming_current.append(state[3])
            neuron_data = [potential, strength, resource, incoming_current]
            value_dynamics.append(neuron_data)

        fs.save_matrix(data, "output/analyzer/dynamics_activity.txt")
        for i in range(len(numbers)):
            fs.save_matrix([value_dynamics[i][0]], "output/analyzer/dynamics_" + str(numbers[i]) + "_potential" + ".txt")
            fs.save_matrix([value_dynamics[i][1]], "output/analyzer/dynamics_" + str(numbers[i]) + "_strength" + ".txt")
            fs.save_matrix([value_dynamics[i][2]], "output/analyzer/dynamics_" + str(numbers[i]) + "_resource" + ".txt")
            fs.save_matrix([value_dynamics[i][3]], "output/analyzer/dynamics_" + str(numbers[i]) + "_current" + ".txt")

    except Exception as e:
        print("error: " + str(e), flush=True)
コード例 #5
0
    def __init__(self, parent):
        super().__init__()

        self.__parent = parent
        parent.setEnabled(False)
        parent.worker.pause()

        uic.loadUi('GUI/forms/settings_form.ui', self)
        self.init_ui()

        # buffer
        self.BufferGroupBox.setChecked("True" == fs.load_parameter(KEY_BUFFERED_OUTPUT_FLAG, DEFAULT_BUFFERED_OUTPUT_FLAG))
        self.BufferValue.setValue(int(fs.load_parameter(KEY_BUFFERED_OUTPUT_VALUE, DEFAULT_BUFFERED_OUTPUT_VALUE)))

        self.StartupTabs.setCurrentIndex(int(fs.load_parameter(KEY_SETTINGS_TAB, DEFAULT_SETTINGS_TAB)))

        # 1 page
        self.NeuronsCountBox.setValue(int(fs.load_parameter(KEY_NEURONS_COUNT, DEFAULT_NEURONS_COUNT)))
        self.ElectrodesCountBox.setValue(int(fs.load_parameter(KEY_ELECTRODES_COUNT, DEFAULT_ELECTRODES_COUNT)))
        self.ElectrodesConnectionsBox.setValue(int(fs.load_parameter(KEY_ELECTRODES_CONNECTIONS, DEFAULT_ELECTRODES_CONNECTIONS)))
        self.NeuronsConnectionsBox.setValue(int(fs.load_parameter(KEY_NEURONS_CONNECTIONS, DEFAULT_NEURONS_CONNECTIONS)))

        # 2 page

        self.LoadTypeComboBox.setCurrentIndex(int(fs.load_parameter(KEY_LOAD_NETWORK_COMBOBOX, DEFAULT_LOAD_NETWORK_COMBOBOX)));
        self.__restore_state_flag = "True" == fs.load_parameter(KEY_RESTORE_STATE_FLAG, DEFAULT_RESTORE_STATE_FLAG)
        self.RestoreStateCheckBox.setChecked(self.__restore_state_flag)
        self.__savedFiles = get_saved_files()
        self.SelectSavedFileComboBox.addItems(self.__savedFiles)
        saved_file = fs.load_parameter(KEY_SAVED_FILE,DEFAULT_SAVED_FILE)
        for i in range(len(self.__savedFiles)):
            if self.__savedFiles[i] == saved_file:
                self.SelectSavedFileComboBox.setCurrentIndex(i+1)
                break;

        self.sub_load_type_combobox(self.LoadTypeComboBox.currentIndex())

        self.ElectrodesMatrixLineEdit.setText(fs.load_parameter(KEY_ELECTRODES_MATRIX_PATH, DEFAULT_ELECTRODES_MATRIX_PATH))
        self.NeuronsMatrixLineEdit.setText(fs.load_parameter(KEY_NEURONS_MATRIX_PATH, DEFAULT_NEURONS_MATRIX_PATH))
        self.show()
コード例 #6
0
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)