def construct_neural_populations(self, neuron_eqs, threshold_eqs, reset_eqs): self.G_TL2 = nc.generate_neuron_groups(self.N_TL2, neuron_eqs, threshold_eqs, reset_eqs, TL2_neuron_params, name='TL2') self.G_CL1 = nc.generate_neuron_groups(self.N_CL1, neuron_eqs, threshold_eqs, reset_eqs, CL1_neuron_params, name='CL1') self.G_TB1 = nc.generate_neuron_groups(self.N_TB1, neuron_eqs, threshold_eqs, reset_eqs, TB1_neuron_params, name='TB1') self.G_TN2 = nc.generate_neuron_groups(self.N_TN2, neuron_eqs, threshold_eqs, reset_eqs, TN2_neuron_params, name='TN2') self.G_CPU4 = nc.generate_neuron_groups(self.N_CPU4, neuron_eqs, threshold_eqs, reset_eqs, CPU4_neuron_params, name='CPU4') self.G_CPU1A = nc.generate_neuron_groups(self.N_CPU1A, neuron_eqs, threshold_eqs, reset_eqs, neuron_params, name='CPU1A') self.G_CPU1B = nc.generate_neuron_groups(self.N_CPU1B, neuron_eqs, threshold_eqs, reset_eqs, neuron_params, name='CPU1B') self.G_PONTINE = nc.generate_neuron_groups(self.N_PONTINE, neuron_eqs, threshold_eqs, reset_eqs, neuron_params, name='PONTINE') self.G_MOTOR = nc.generate_neuron_groups(self.N_MOTOR, neuron_eqs, threshold_eqs, reset_eqs, neuron_params, name='MOTOR') return [ self.G_TL2, self.G_CL1, self.G_TB1, self.G_TN2, self.G_CPU4, self.G_CPU1A, self.G_CPU1B, self.G_PONTINE, self.G_MOTOR ]
start_scope() time_step = 20 # ms h_stimulus = TimedArray(headings * Hz, dt=1. * time_step * ms) P_HEADING = PoissonGroup(N_TL2, rates='h_stimulus(t,i)') SPM_H = SpikeMonitor(P_HEADING) f_stimulus = TimedArray(flow * Hz, dt=1. * time_step * ms) P_FLOW = PoissonGroup(N_TN2, rates='f_stimulus(t,i)') SPM_FLOW = SpikeMonitor(P_FLOW) # Neuron groups already optimised G_TL2 = nc.generate_neuron_groups(N_TL2, eqs, threshold_eqs, reset_eqs, TL2_neuron_params, name='TL2_source_network') G_CL1 = nc.generate_neuron_groups(N_CL1, eqs, threshold_eqs, reset_eqs, CL1_neuron_params, name='CL1_source_network') G_TB1 = nc.generate_neuron_groups(N_TB1, eqs, threshold_eqs, reset_eqs, TB1_neuron_params, name='TB1_source_network') G_TN2 = nc.generate_neuron_groups(N_TN2,
v[:T_outbound])) ###################################### ### SPIKE BASED CX ###################################### start_scope() time_step = 20 # ms h_stimulus = TimedArray(headings * Hz, dt=1. * time_step * ms) P_HEADING = PoissonGroup(N_TL2, rates='h_stimulus(t,i)') # Neuron group G_TL2 = nc.generate_neuron_groups(N_TL2, eqs, threshold_eqs, reset_eqs, neuron_params, name='TL2_source_network') # Add monitors #STM_TL2, SPM_TL2 = nc.add_monitors(G_TL2, name='TL2_source') # Connect heading to TL2 S_P_HEADING_TL2 = nc.connect_synapses(P_HEADING, G_TL2, W_HEADING_TL2, model=synapses_model, params=synapses_params, on_pre=synapses_eqs_ex) #### Target
### SPIKE BASED CX ###################################### start_scope() time_step = 60 # ms h_stimulus = TimedArray(headings * Hz, dt=1. * time_step * ms) P_HEADING = PoissonGroup(N_TL2, rates='h_stimulus(t,i)') f_stimulus = TimedArray(flow * Hz, dt=1. * time_step * ms) P_FLOW = PoissonGroup(N_TN2, rates='f_stimulus(t,i)') # Neuron groups already optimised G_TL2 = nc.generate_neuron_groups(N_TL2, eqs, threshold_eqs, reset_eqs, TL2_neuron_params, name='TL2_source_network') G_CL1 = nc.generate_neuron_groups(N_CL1, eqs, threshold_eqs, reset_eqs, CL1_neuron_params, name='CL1_source_network') G_TB1 = nc.generate_neuron_groups(N_TB1, eqs, threshold_eqs, reset_eqs, TB1_neuron_params, name='TB1_source_network') G_TN2 = nc.generate_neuron_groups(N_TN2,
f_stimulus = TimedArray(flow * Hz, dt=1. * time_step * ms) P_FLOW = PoissonGroup(N_TN2, rates='f_stimulus(t,i)') #global CPU4_memory_stimulus CPU_MEMORY_starting_value = 50 #Hz CPU4_memory_stimulus = CPU_MEMORY_starting_value * np.ones( (T_outbound, N_CPU4)) * Hz P_CPU4_MEMORY = PoissonGroup(N_CPU4, rates=CPU4_memory_stimulus[0, :], name='P_CPU4_MEMORY') # Neuron groups already optimised G_TL2 = nc.generate_neuron_groups(N_TL2, eqs, threshold_eqs, reset_eqs, TL2_neuron_params, name='TL2') G_CL1 = nc.generate_neuron_groups(N_CL1, eqs, threshold_eqs, reset_eqs, CL1_neuron_params, name='CL1') G_TB1 = nc.generate_neuron_groups(N_TB1, eqs, threshold_eqs, reset_eqs, TB1_neuron_params, name='TB1') G_TN2 = nc.generate_neuron_groups(N_TN2,
route=(h[:T_outbound], v[:T_outbound])) ###################################### ### SPIKE BASED CX ###################################### start_scope() time_step = 20 # ms P_CL1 = PoissonGroup(N_CL1, rates=CL1_spike_rates*Hz) # Neuron group G_CL1 = nc.generate_neuron_groups(N_CL1, eqs, threshold_eqs, reset_eqs, neuron_params, name='CL1_source_network') # Add monitors #STM_TL2, SPM_TL2 = nc.add_monitors(G_TL2, name='TL2_source') # Connect heading to TL2 S_P_CL1_CL1 = nc.connect_synapses(P_CL1, G_CL1, np.eye(N_CL1), model=synapses_model, params=synapses_params, on_pre=synapses_eqs_ex) #### Target # Scale spike rates from rate-based CX in the right range # transpose since log is neuron_index*time_step but we want the opposite #TL2_stimulus = TimedArray(TL2_spike_rates*cx_log.tl2.T*Hz, dt=1.*time_step*ms) P_CL1_TARGET = PoissonGroup(N_CL1, rates=CL1_spike_rates*Hz) # SPM_TL2_IDEAL = SpikeMonitor(P_TL2, name='TL2_target')