Beispiel #1
0
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()
Beispiel #2
0
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()
Beispiel #3
0
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)
Beispiel #4
0
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()