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
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
# 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)
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], \
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"
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)