def show_random_neuron_in_layer(time_sampled_range, data, net, layer_idx, num_neurons=1): THETA_D = nm.PlasticNMDASynapse.THETA_D THETA_P = nm.PlasticNMDASynapse.THETA_P pre_neurons = net.layers[layer_idx].nodes() display_neurons = random.sample(pre_neurons, num_neurons) fig, axes = plt.subplots(2, 1, sharex=True) for (n, neuron) in enumerate(display_neurons): ii = neuron.ii v_m = data[:, ii] i_inj = electrodes.sym2num(t, neuron.i_inj) i_inj = i_inj(time_sampled_range) axes[1].plot(time_sampled_range, i_inj, label=r"$I_{inj}$ Neuron %d" % neuron.ni) axes[1].set_ylabel("I [pA]") axes[1].legend() axes[0].plot(time_sampled_range, v_m, label="Neuron %d" % neuron.ni) axes[0].set_ylabel(r"$V_m$ [mV]") axes[0].legend() axes[-1].set_xlabel("time [ms]") plt.suptitle("Random Neuron in layer {}".format(layer_idx)) plt.show()
def show_all_neuron_in_layer(time_sampled_range, data, net, layer_idx): THETA_D = nm.PlasticNMDASynapse.THETA_D THETA_P = nm.PlasticNMDASynapse.THETA_P pre_neurons = net.layers[layer_idx].nodes() for (n, pre_neuron) in enumerate(pre_neurons): ii = pre_neuron.ii v_m = data[:, ii] ca = data[:, ii + 6] if pre_neuron.i_inj is None: fig, axes = plt.subplots(2, 1, sharex=True) else: fig, axes = plt.subplots(2, 1, sharex=True) i_inj = electrodes.sym2num(t, pre_neuron.i_inj) i_inj = i_inj(time_sampled_range) axes[1].plot(time_sampled_range, i_inj, label="i_inj") axes[1].set_ylabel("I [some unit]") axes[1].legend() axes[0].plot(time_sampled_range, v_m, label="V_m") axes[0].set_ylabel("V_m [mV]") axes[0].legend() # axes[1].plot(time_sampled_range, ca, label="[Ca]") # axes[1].set_ylabel(" Ca [a.u.]") # axes[1].axhline(THETA_D, color="orange", label="theta_d") # axes[1].axhline(THETA_P, color="green", label="theta_p") # axes[1].legend() axes[-1].set_xlabel("time [ms]") plt.suptitle("Neuron {} in layer {}".format(pre_neuron.ni, layer_idx)) plt.show()
def show_one_to_one_neuron_together(time_sampled_range, data, net): neurons = net.nodes() fig, axes = plt.subplots(2, 1, sharex=True) for (n, neuron) in enumerate(neurons): ii = neuron.ii v_m = data[:, ii] # ca = data[:, ii+6] i_inj = electrodes.sym2num(t, neuron.i_inj) i_inj = i_inj(time_sampled_range) axes[1].plot(time_sampled_range, i_inj, label="i_inj_{}".format(n)) axes[0].plot(time_sampled_range, v_m, label="V_m_{}".format(n)) axes[1].legend() axes[0].legend() axes[1].set_ylabel("I [some unit]") axes[0].set_ylabel("V_m [mV]") axes[-1].set_xlabel("time [ms]") plt.show(block=False)
def sample_plot(time_sampled_range, data, net): neuron_1 = list( net.layers[0].nodes)[0] # just pick one neuron from each layer neuron_2 = list(net.layers[1].nodes)[0] syn = net[neuron_1][neuron_2]["synapse"] THETA_D = syn.THETA_D THETA_P = syn.THETA_P for (n, neuron) in enumerate([neuron_1, neuron_2]): ii = neuron.ii v_m = data[:, ii] ca = data[:, ii + 6] i_inj = electrodes.sym2num(t, neuron.i_inj) i_inj = i_inj(time_sampled_range) fig, axes = plt.subplots(3, 1, sharex=True) axes[0].plot(time_sampled_range, v_m, label="V_m") axes[0].set_ylabel("V_m [mV]") axes[0].legend() axes[1].plot(time_sampled_range, ca, label="[Ca]") axes[1].set_ylabel("Calcium [a.u.]") axes[1].axhline(THETA_D, color="orange", label="theta_d") axes[1].axhline(THETA_P, color="green", label="theta_p") axes[1].legend() axes[2].plot(time_sampled_range, i_inj, label="i_inj") axes[2].set_ylabel(" Injected Current [some unit]") axes[2].legend() axes[-1].set_xlabel("time [ms]") plt.suptitle("Neuron {}".format(n)) ii = syn.ii plt.figure() syn_weight = data[:, ii] plt.plot(time_sampled_range, syn_weight, label="w_ij") plt.xlabel("time [ms]") plt.legend() plt.show()