Ejemplo n.º 1
0
    def full_run(self):
        net, input_indices, _, input_times = self.scm.build(
            params=self.params,
            weights=self.weights,
            delay=self.delay,
            terminating_neurons=self.terminating_neurons,
            flag=self.flag)
        res = self.sim.run(net)
        output_times, output_indices = network.NetworkInstance.match_static(
            input_times, input_indices, res[0]["spikes"])
        analysis = network.NetworkAnalysis(input_times=input_times,
                                           input_indices=input_indices,
                                           output_times=output_times,
                                           output_indices=output_indices,
                                           data_params=self.data_params,
                                           mat_in=self.mat_in,
                                           mat_out=self.mat_out)

        I, I_norm, fp, fn, I_start, I_norm_start, fp_start, fn_start = pyscm.scm_analysis(
            analysis, res[2]["spikes"], self.delay, self.flag)
        return I, I_norm, fp, fn, I_start, I_norm_start, fp_start, fn_start
Ejemplo n.º 2
0
    def full_run(self):
        net, input_indices, _, input_times = self.scm.build(params=self.params,
                                                            weights=self.weights,
                                                            delay=self.delay,
                                                            terminating_neurons=self.terminating_neurons,
                                                            flag=self.flag)
        res = self.sim.run(net)
        output_times, output_indices = network.NetworkInstance.match_static(
            input_times,
            input_indices,
            res[0][
                "spikes"])
        analysis = network.NetworkAnalysis(input_times=input_times,
                                           input_indices=input_indices,
                                           output_times=output_times,
                                           output_indices=output_indices,
                                           data_params=self.data_params,
                                           mat_in=self.mat_in,
                                           mat_out=self.mat_out)

        I, I_norm, fp, fn, I_start, I_norm_start, fp_start, fn_start = pyscm.scm_analysis(
            analysis, res[2]["spikes"], self.delay, self.flag)
        return I, I_norm, fp, fn, I_start, I_norm_start, fp_start, fn_start
Ejemplo n.º 3
0
# Plot
for pIdx, pop in enumerate(res):
    if (not "spikes" in pop):
        continue
    output_times = pop["spikes"]
    fig = plt.figure()
    ax = fig.gca()
    for i, spikes in enumerate(output_times):
        ax.plot(spikes, [i + 1] * len(spikes), '.', color=[0, 0, 0])
    ax.set_xlabel("Spike time [ms]")
    ax.set_ylabel("Neuron index")
    ax.set_title("Population " + str(pIdx))
# plt.show()

# Analyse
output_times, output_indices = netw.NetworkInstance.match_static(input_times,
                                                                 input_indices,
                                                                 res[0][
                                                                     "spikes"])

analysis = netw.NetworkAnalysis(input_times=input_times,
                                input_indices=input_indices,
                                output_times=output_times,
                                output_indices=output_indices,
                                data_params=data_params,
                                mat_in=mat_in, mat_out=mat_out)

I, I_norm, fp, fn, I_start, I_norm_start, fp_start, fn_start = pyscm.scm_analysis(
    analysis, res[2]["spikes"], delay, flag)
Ejemplo n.º 4
0
                                                   flag=flag)
    res = sim.run(net)
    # In case the max operation in analysis throws an exception, which is the
    # case for unvalid runs caused by wrong weights, e.g. no spiking at all
    try:
        output_times, output_indices = netw.NetworkInstance.match_static(
            input_times, input_indices, res[0]["spikes"])

        analysis = netw.NetworkAnalysis(input_times=input_times,
                                        input_indices=input_indices,
                                        output_times=output_times,
                                        output_indices=output_indices,
                                        data_params=data_params,
                                        mat_in=mat_in, mat_out=mat_out)
        I[i], I_norm[i], fp[i], fn[i], I_start[i], I_norm_start[i], fp_start[i], \
        fn_start[i] = pyscm.scm_analysis(analysis, res[2]["spikes"], delay)
        if (fp[i] > data_params["n_samples"] * data_params["n_bits_out"] * 0.5):
            break

        # Assure that system doesn't terminate without auto-associative spiking
        times = np.zeros(len(res[0]["spikes"]))
        for l in xrange(len(res[0]["spikes"])):
            for j in res[0]["spikes"][l]:
                if (j < 199):
                    times[l] += 1
        if (np.amax(times) <= 2):
            I[i], I_norm[i], fp[i], fn[i], I_start[i], I_norm_start[i], \
            fp_start[i], fn_start[i] = 0, 0, 0, 0, 0, 0, 0, 0
    except:
        print "except"
        I[i], I_norm[i], fp[i], fn[i], I_start[i], I_norm_start[i], fp_start[i], \
Ejemplo n.º 5
0
    res = sim.run(net)
    # In case the max operation in analysis throws an exception, which is the
    # case for unvalid runs caused by wrong weights, e.g. no spiking at all
    try:
        output_times, output_indices = netw.NetworkInstance.match_static(
            input_times, input_indices, res[0]["spikes"])

        analysis = netw.NetworkAnalysis(input_times=input_times,
                                        input_indices=input_indices,
                                        output_times=output_times,
                                        output_indices=output_indices,
                                        data_params=data_params,
                                        mat_in=mat_in,
                                        mat_out=mat_out)
        I[i], I_norm[i], fp[i], fn[i], I_start[i], I_norm_start[i], fp_start[i], \
        fn_start[i] = pyscm.scm_analysis(analysis, res[2]["spikes"], delay)
        if (fp[i] >
                data_params["n_samples"] * data_params["n_bits_out"] * 0.5):
            break

        # Assure that system doesn't terminate without auto-associative spiking
        times = np.zeros(len(res[0]["spikes"]))
        for l in xrange(len(res[0]["spikes"])):
            for j in res[0]["spikes"][l]:
                if (j < 199):
                    times[l] += 1
        if (np.amax(times) <= 2):
            I[i], I_norm[i], fp[i], fn[i], I_start[i], I_norm_start[i], \
            fp_start[i], fn_start[i] = 0, 0, 0, 0, 0, 0, 0, 0
    except:
        print "except"
Ejemplo n.º 6
0
print "Simulation done"

# Plot
for pIdx, pop in enumerate(res):
    if (not "spikes" in pop):
        continue
    output_times = pop["spikes"]
    fig = plt.figure()
    ax = fig.gca()
    for i, spikes in enumerate(output_times):
        ax.plot(spikes, [i + 1] * len(spikes), '.', color=[0, 0, 0])
    ax.set_xlabel("Spike time [ms]")
    ax.set_ylabel("Neuron index")
    ax.set_title("Population " + str(pIdx))
# plt.show()

# Analyse
output_times, output_indices = netw.NetworkInstance.match_static(
    input_times, input_indices, res[0]["spikes"])

analysis = netw.NetworkAnalysis(input_times=input_times,
                                input_indices=input_indices,
                                output_times=output_times,
                                output_indices=output_indices,
                                data_params=data_params,
                                mat_in=mat_in,
                                mat_out=mat_out)

I, I_norm, fp, fn, I_start, I_norm_start, fp_start, fn_start = pyscm.scm_analysis(
    analysis, res[2]["spikes"], delay, flag)