Пример #1
0
import neurongpu as ngpu
import numpy as np

neuron = ngpu.Create("aeif_cond_beta", 100000)

ngpu.SetStatus(
    neuron, {
        "V_m": {
            "distribution": "normal_clipped",
            "mu": -70.0,
            "low": -90.0,
            "high": -50.0,
            "sigma": 5.0
        }
    })
l = ngpu.GetStatus(neuron, "V_m")
d = []
for elem in l:
    d.append(elem[0])

print(len(d))
import matplotlib.pyplot as plt

# An "interface" to matplotlib.axes.Axes.hist() method
n, bins, patches = plt.hist(d,
                            bins='auto',
                            color='#0504aa',
                            alpha=0.7,
                            rwidth=0.85)
plt.grid(axis='y', alpha=0.75)
plt.xlabel('Value')
Пример #2
0
syn_group = ngpu.CreateSynGroup \
            ("stdp", {"tau_plus":tau_plus, "tau_minus":tau_minus, \
                      "lambda":lambd, "alpha":alpha, "mu_plus":mu_plus, \
                      "mu_minus":mu_minus,  "Wmax":Wmax})

syn_dict_stdp={"weight":weight_stdp, "delay":delay, \
               "synapse_group":syn_group, "receptor":1}

ngpu.SetStatus(neuron_post, {"den_delay": den_delay})

ngpu.Connect(neuron_pre, neuron_post, conn_dict, syn_dict_stdp)

ngpu.Simulate(sim_time)

conn_id = ngpu.GetConnections(neuron_pre, neuron_post)
w = ngpu.GetStatus(conn_id, "weight")

print("Initial weight: ", weight_stdp)
print("Simulated weight: ", w[0])

Wplus = Wmax * lambd
Dt = -2.0
w1 = STDPUpdate(weight_stdp, Dt, tau_plus, tau_minus, Wplus, \
                alpha, mu_plus, mu_minus, Wmax)

print("Expected theoretical weight: ", w1)

print("dw/w: ", (w1 - w[0]) / w1)

#spike_times0=ngpu.GetRecSpikeTimes(neuron_post[0])
#spike_times1=ngpu.GetRecSpikeTimes(neuron_pre[0])
Пример #3
0
ngpu.Connect(pg, neuron, pg_conn_dict, pg_syn_dict)


filename = "test_brunel_net.dat"
i_neuron_arr = [neuron[37], neuron[randrange(n_neurons)], neuron[n_neurons-1]]
i_receptor_arr = [0, 0, 0]
# any set of neuron indexes
# create multimeter record of V_m
var_name_arr = ["V_m", "V_m", "V_m"]
record = ngpu.CreateRecord(filename, var_name_arr, i_neuron_arr,
                                i_receptor_arr)

ngpu.Simulate(sim_time*1000.0)

spike_count = ngpu.GetStatus(neuron, "spike_count")
spike_count = [s[0] for s in spike_count] 
print("Average firing rate: ", sum(spike_count)/len(spike_count)/sim_time)

data_list = ngpu.GetRecordData(record)
t=[row[0] for row in data_list]
V1=[row[1] for row in data_list]
V2=[row[2] for row in data_list]
V3=[row[3] for row in data_list]

import matplotlib.pyplot as plt

plt.figure(1)
plt.plot(t, V1)

plt.figure(2)
Пример #4
0
even_to_odd_syn_dict = {
    "weight_array": even_to_odd_weight,
    "delay_array": even_to_odd_delay
}

odd_to_even_syn_dict = {
    "weight_array": odd_to_even_weight,
    "delay_array": odd_to_even_delay
}

ngpu.Connect(neuron_even, neuron_odd, conn_dict, even_to_odd_syn_dict)
ngpu.Connect(neuron_odd, neuron_even, conn_dict, odd_to_even_syn_dict)

# Even to all
conn_id = ngpu.GetConnections(neuron_even, neuron)
conn_status_dict = ngpu.GetStatus(conn_id)
print("########################################")
print("Even to all")
for i in range(len(conn_status_dict)):
    print(conn_status_dict[i])
print()
print()

# Even to all weight, delay
conn_status_dict = ngpu.GetStatus(conn_id, ["weight", "delay"])
print("########################################")
print("Even to all weight, delat")
for i in range(len(conn_status_dict)):
    print(conn_status_dict[i])
print()
print()
Пример #5
0
print("read1_Vth", read1_Vth)
print("read1_g1", read1_g1)

print(ngpu.GetNScalVar(neuron[0]))
print(ngpu.GetScalVarNames(neuron[0]))
print(ngpu.GetNPortVar(neuron[0]))
print(ngpu.GetPortVarNames(neuron[0]))

print(ngpu.GetNScalParam(neuron[0]))
print(ngpu.GetScalParamNames(neuron[0]))
print(ngpu.GetNPortParam(neuron[0]))
print(ngpu.GetPortParamNames(neuron[0]))

print()

print(ngpu.GetStatus(neuron[0]))

print()

print(ngpu.GetStatus(neuron_odd))

print()

print(ngpu.GetStatus(neuron_even, "tau_rise"))

print()

print(ngpu.GetStatus(neuron_odd, "tau_rise"))

print()
Пример #6
0
ngpu.SetStatus(spike0, {
    "spike_times": spike_time0,
    "spike_heights": spike_height0
})

ngpu.SetStatus(spike1, {
    "spike_times": spike_time1,
    "spike_heights": spike_height1
})

ngpu.SetStatus(spike2, {
    "spike_times": spike_time2,
    "spike_heights": spike_height2
})

print(ngpu.GetStatus(spike0, "spike_times"))
print(ngpu.GetStatus(spike0, "spike_heights"))
print()
print(ngpu.GetStatus(spike1, "spike_times"))
print(ngpu.GetStatus(spike1, "spike_heights"))
print()
print(ngpu.GetStatus(spike2, "spike_times"))
print(ngpu.GetStatus(spike2, "spike_heights"))

print()
print()
neuron_list = [spike[2], spike[3], spike[0], spike[1]]
print(ngpu.GetStatus(neuron_list, "spike_times"))
print(ngpu.GetStatus(neuron_list, "spike_heights"))
print()
print()
Пример #7
0
import sys
import neurongpu as ngpu

syn_group = ngpu.CreateSynGroup("test_syn_model", {"fact": 1.0, "offset": 2.0})
print(ngpu.GetStatus(syn_group))
ngpu.SetStatus(syn_group, "fact", 3.0)
ngpu.SetStatus(syn_group, "offset", 4.0)
print(ngpu.GetStatus(syn_group))

ngpu.SetStatus(syn_group, {"fact": 5.0, "offset": 6.0})
print(ngpu.GetStatus(syn_group))

fact = ngpu.GetSynGroupParam(syn_group, "fact")
print("fact: ", fact)
offset = ngpu.GetSynGroupParam(syn_group, "offset")
print("offset: ", offset)

print(ngpu.GetStatus(syn_group, "fact"))

print(ngpu.GetStatus(syn_group, "offset"))

print(ngpu.GetStatus(syn_group, ["fact", "offset"]))

print(ngpu.GetStatus(syn_group, ["offset", "fact"]))