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')
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])
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)
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()
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()
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()
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"]))