def single_neuron_time(time, dt, scale, step_size, I_function, shape, spike_trace, additive_spike_trace, tau_s, trace_scale, is_inhibitory, learning, R, C, delta_t, threshold_rh, threshold_r=-55): I = I_function(time, step_size, scale) neuron = ELIFPopulation(shape, spike_trace, additive_spike_trace, tau_s, trace_scale, is_inhibitory, learning, R, C, delta_t, threshold_rh, threshold_r) neuron.dt = dt monitor = Monitor(neuron, state_variables=["s", "u"]) monitor.set_time_steps(time, dt) monitor.reset_state_variables() for i in range(len(I)): neuron.forward(I[i][0]) monitor.record() return neuron, I, torch.transpose(monitor.get("s") * 1, 0, 1), monitor.get("u")
shape = shape1, spike_trace = True, additive_spike_trace = True, tau_s = 4, trace_scale = 1., is_inhibitory = False, learning = False, R = 1, C = 20, threshold = -40 ) n1.dt = dt n2 = LIFPopulation( shape = shape2, spike_trace = True, additive_spike_trace = True, tau_s = 4, trace_scale = 1., is_inhibitory = False, learning = False, R = 1, C = 20, threshold = -40 ) n2.dt = dt con1 = ConvolutionalConnection( pre = n1, post = n2, kernel = kernel, J = 1000, padding = 0, stride = 1 ) monitor1 = Monitor(n1, state_variables=["s"]) monitor1.set_time_steps(time, dt) monitor1.reset_state_variables() monitor2 = Monitor(n2, state_variables=["s"]) monitor2.set_time_steps(time, dt) monitor2.reset_state_variables() I_ex = 0 for i in range(len(I)): n1.forward(I[i]) n2.forward(I_ex) I_ex = con1.compute() monitor1.record() monitor2.record()
wmean=21., wstd=5.) con3 = Connection(pre=pn1, post=pn2, lr=None, weight_decay=0.0, J=1, tau_s=10, trace_scale=1., dt=dt, connectivity=randomNormalConnect, wmean=20., wstd=5.) monitor1 = Monitor(pn1, state_variables=["s", "u"]) monitor1.set_time_steps(time, dt) monitor1.reset_state_variables() monitor2 = Monitor(pn2, state_variables=["s", "u"]) monitor2.set_time_steps(time, dt) monitor2.reset_state_variables() I_in = 0 I_self = 0 I_ex = 0 for i in range(len(I1)): pn1.forward(I1[i] + I_self - I_in) pn2.forward(I2[i] + I_ex) I_self = con1.compute() I_in = con2.compute()
connectivity=randomNormalConnect, wmean=20., wstd=5.) con_ep2_ep2 = Connection(pre=ep2, post=ep2, lr=None, weight_decay=0.0, J=1, tau_s=10, trace_scale=1., dt=dt, connectivity=randomNormalConnect, wmean=20., wstd=5.) monitor_ep1 = Monitor(ep1, state_variables=["s", "u"]) monitor_ep1.set_time_steps(time, dt) monitor_ep1.reset_state_variables() monitor_ep2 = Monitor(ep2, state_variables=["s", "u"]) monitor_ep2.set_time_steps(time, dt) monitor_ep2.reset_state_variables() monitor_ip1 = Monitor(ip1, state_variables=["s", "u"]) monitor_ip1.set_time_steps(time, dt) monitor_ip1.reset_state_variables() out_ep1_ip1 = 0 out_ep2_ip1 = 0 out_ip1_ep1 = 0 out_ip1_ep2 = 0