def run( attrs={ 'name': 'maze', 'ind': [], 'N_e': 900, 'TS': [1], 'ff': True, 'fb': True, 'plastic': 15000 }): so = True print_info = attrs.get('print', True) if print_info: print(attrs) sm = StorageManager(attrs, random_nr=True, print_msg=print_info) sm.save_param_dict(attrs) #source = LongDelayGrammar(tag='grammar_act', output_size=attrs['N_e'], random_blocks=True, mode=['simple'], input_density=0.01) maze = Maze(level='default') SORN = Network() #behaviour={maze.get_network_behaviour()} SORN.maze = maze for layer, timescale in enumerate(attrs['TS']): e_location = NeuronGroup( net=SORN, tag='E_location_{}'.format(timescale), size=maze.get_location_neuron_dimension(), behaviour={ 2: SORN_init_neuron_vars(timescale=timescale), 3: SORN_init_afferent_synapses( transmitter='GLU', density='full', distribution='uniform(0.1,0.11)', normalize=True, partition_compensation=True ), # 0.89 uniform(0.1,0.11)uniform(0,[0.95#0]) 4: SORN_init_afferent_synapses( transmitter='GABA', density='full', distribution='uniform(0.1,0.11)', normalize=True ), # 0.80222 uniform(0.1,0.11) lognormal(0,[0.4#1]) 9: maze.get_location_neuron_behaviour(), ############### 12: SORN_slow_syn(transmitter='GLU', strength='[0.1383#2]', so=so), 13: SORN_slow_syn(transmitter='GABA', strength='-[0.1698#3]', so=False), 17: SORN_fast_syn(transmitter='GABA', strength='-[0.1#4]', so=False), # 0.11045 18: SORN_generate_output(init_TH='0.1;+-100%'), 19: SORN_buffer_variables(), 20: SORN_Refractory_Analog(factor='0.5;+-50%'), 21: SORN_STDP(eta_stdp='[0.0015#5]', weight_attr='W_temp', STDP_F={ -5: 0.2, -4: 0.4, -3: 0.6, -2: 0.8, -1: 1 }), 22: SORN_temporal_synapses(syn_type='GLU', behaviour_norm_factor=1.0), #22: SORN_SN(syn_type='GLU', clip_max=None, behaviour_norm_factor=1.0), 23: SORN_IP_TI(h_ip='lognormal_real_mean([0.004#6], [0.2944#7])', eta_ip='[0.0006#8];+-50%', integration_length='[15#18];+-50%', clip_min=None), 25: SORN_NOX(mp='self.partition_sum(n)', eta_nox='[0.5#9];+-50%'), 26: SORN_SC_TI(h_sc='lognormal_real_mean([0.015#10], [0.2944#11])', eta_sc='[0.1#12];+-50%', integration_length='1'), # 60;+-50% #0.05 27: SORN_iSTDP(h_ip='same(SCTI, th)', eta_istdp='[0.0001#13]'), #29: SORN_dopamine(), }) i_location = NeuronGroup( net=SORN, tag='I_location{}'.format(timescale), size=maze.get_inhibitory_location_neuron_dimension(), behaviour={ 2: SORN_init_neuron_vars(timescale=timescale), 3: SORN_init_afferent_synapses( transmitter='GLU', density='50%', distribution='uniform(0.1,0.11)', normalize=True), #lognormal(0,[0.87038#14]) 4: SORN_init_afferent_synapses( transmitter='GABA', density='20%', distribution='uniform(0.1,0.11)', normalize=True), #lognormal(0,[0.82099#15]) 11: SORN_slow_syn(transmitter='GABA', strength='-[0.1838#16]', so=so), 14: SORN_fast_syn(transmitter='GLU', strength='[1.5#16]', so=so), # 1.5353 15: SORN_fast_syn(transmitter='GABA', strength='-[0.08#17]', so=False), # 0.08 18: SORN_generate_output(init_TH='0.1;+-0%'), 19: SORN_buffer_variables(), 20: SORN_Refractory_Analog(factor='0.2;0.7'), }) ''' e_vision = NeuronGroup(net=SORN, tag='E_vision_{}'.format(timescale), size=maze.get_vision_neuron_dimension(), behaviour={ 2: SORN_init_neuron_vars(timescale=timescale), 3: SORN_init_afferent_synapses(transmitter='GLU', density='full', distribution='lognormal(0,[0.95#0])', normalize=True, partition_compensation=True), # 0.89 uniform(0.1,0.11) 4: SORN_init_afferent_synapses(transmitter='GABA', density='45%', distribution='lognormal(0,[0.4#1])', normalize=True), # 0.80222 uniform(0.1,0.11) 9: maze.get_vision_neuron_behaviour(), 12: SORN_slow_syn(transmitter='GLU', strength='[0.1383#2]', so=so), 13: SORN_slow_syn(transmitter='GABA', strength='-[0.1698#3]', so=False), 17: SORN_fast_syn(transmitter='GABA', strength='-[0.1#4]', so=False), # 0.11045 18: SORN_generate_output(init_TH='0.01'), 19: SORN_buffer_variables(), #20: SORN_Refractory(factor='0.5;+-50%'), #21: SORN_STDP(eta_stdp='[0.00015#5]'), #22: SORN_SN(syn_type='GLU', clip_max=None, behaviour_norm_factor=5.0), #23: SORN_IP_TI(h_ip='0.04', eta_ip='0.001', integration_length='[15#18];+-50%', clip_min=None), #25: SORN_NOX(mp='self.partition_sum(n)', eta_nox='[0.5#9];+-50%'), #26: SORN_SC_TI(h_sc='lognormal_real_mean([0.015#10], [0.2944#11])', eta_sc='[0.1#12];+-50%',integration_length='1'), # 60;+-50% #0.05 #27: SORN_iSTDP(h_ip='same(SCTI, th)', eta_istdp='[0.0001#13]') }) ''' e_action = NeuronGroup( net=SORN, tag='E_action_{}'.format(timescale), size=maze.get_action_neuron_dimension(), behaviour={ 2: SORN_init_neuron_vars(timescale=timescale), 3: SORN_init_afferent_synapses( transmitter='GLU', density='full', distribution='uniform(0.1,0.11)', normalize=True, partition_compensation=True), # 0.89 lognormal(0,[0.5#0]) 12: SORN_slow_syn(transmitter='GLU', strength='[0.1383#2]', so=so), 13: SORN_slow_syn(transmitter='GABA', strength='-[0.1698#3]', so=False), 17: SORN_fast_syn(transmitter='GABA', strength='-[0.1#4]', so=False), # 0.11045 18: SORN_generate_output(init_TH='0.01'), 19: SORN_buffer_variables(), 20: SORN_Refractory_Analog(factor='0.7;+-50%'), 21: SORN_STDP(eta_stdp='[0.0015#5]', STDP_F={ -1: 1, 1: 0 }, weight_attr='W_temp'), #bigger #todo!!!! #22: SORN_SN(syn_type='GLU', clip_max=None, behaviour_norm_factor=5.0), 22: SORN_temporal_synapses(syn_type='GLU', behaviour_norm_factor=5.0), 23: SORN_IP_TI(h_ip='0.04', eta_ip='0.001', integration_length='[15#18];+-50%', clip_min=None), #25: SORN_NOX(mp='self.partition_sum(n)', eta_nox='[0.5#9];+-50%'), #26: SORN_SC_TI(h_sc='lognormal_real_mean([0.015#10], [0.2944#11])', eta_sc='[0.1#12];+-50%',integration_length='1'), # 60;+-50% #0.05 #27: SORN_iSTDP(h_ip='same(SCTI, th)', eta_istdp='[0.0001#13]') 29: SORN_dopamine(), 30: maze.get_action_neuron_behaviour() }) ''' e_reward = NeuronGroup(net=SORN, tag='E_reward_{}'.format(timescale), size=maze.get_reward_neuron_dimension(), behaviour={ 2: SORN_init_neuron_vars(timescale=timescale), 3: SORN_init_afferent_synapses(transmitter='GLU', density='full', distribution='lognormal(0,[0.95#0])', normalize=True, partition_compensation=True), 9: maze.get_reward_neuron_behaviour(), 12: SORN_slow_syn(transmitter='GLU', strength='[0.1383#2]', so=so), 18: SORN_generate_output(init_TH='0.01'), 19: SORN_buffer_variables(), #20: SORN_Refractory(factor='0.5;+-50%'), 21: SORN_STDP(eta_stdp='[0.00015#5]'), 22: SORN_SN(syn_type='GLU', clip_max=None, behaviour_norm_factor=0.1), #23: SORN_IP_TI(h_ip='0.04', eta_ip='0.001', integration_length='[15#18];+-50%', clip_min=None), #25: SORN_NOX(mp='self.partition_sum(n)', eta_nox='[0.5#9];+-50%'), #26: SORN_SC_TI(h_sc='lognormal_real_mean([0.015#10], [0.2944#11])', eta_sc='[0.1#12];+-50%',integration_length='1'), # 60;+-50% #0.05 #27: SORN_iSTDP(h_ip='same(SCTI, th)', eta_istdp='[0.0001#13]') }) ''' e_punishment = NeuronGroup( net=SORN, tag='E_punishment_{}'.format(timescale), size=maze.get_punishment_neuron_dimension(), behaviour={ 2: SORN_init_neuron_vars(timescale=timescale), 3: SORN_init_afferent_synapses( transmitter='GLU', density='full', distribution='lognormal(0,[0.95#0])', normalize=True, partition_compensation=True), 9: maze.get_punishment_neuron_behaviour(), 12: SORN_slow_syn(transmitter='GLU', strength='[0.1383#2]', so=so), 18: SORN_generate_output(init_TH='0.01'), 19: SORN_buffer_variables(), #20: SORN_Refractory(factor='0.5;+-50%'), 21: SORN_STDP(eta_stdp='[0.00015#5]'), #todo!!!! 22: SORN_SN(syn_type='GLU', clip_max=None, behaviour_norm_factor=0.1), #23: SORN_IP_TI(h_ip='0.04', eta_ip='0.001', integration_length='[15#18];+-50%', clip_min=None), #25: SORN_NOX(mp='self.partition_sum(n)', eta_nox='[0.5#9];+-50%'), #26: SORN_SC_TI(h_sc='lognormal_real_mean([0.015#10], [0.2944#11])', eta_sc='[0.1#12];+-50%',integration_length='1'), # 60;+-50% #0.05 #27: SORN_iSTDP(h_ip='same(SCTI, th)', eta_istdp='[0.0001#13]') }) i_location['structure', 0].stretch_to_equal_size(e_location) SynapseGroup(net=SORN, src=e_location, dst=e_location, tag='GLU,GLU_same', connectivity='(s_id!=d_id)*in_box(10)', partition=True) SynapseGroup(net=SORN, src=e_location, dst=i_location, tag='GLU', connectivity='in_box(10)', partition=True) SynapseGroup(net=SORN, src=i_location, dst=e_location, tag='GABA', connectivity='in_box(10)', partition=True) SynapseGroup(net=SORN, src=i_location, dst=i_location, tag='GABA', connectivity='(s_id!=d_id)*in_box(10)', partition=True) #SynapseGroup(net=SORN, src=e_vision, dst=e_location, tag='GLU', partition=True) SynapseGroup(net=SORN, src=e_location, dst=e_action, tag='GLU', partition=True) #SynapseGroup(net=SORN, src=e_location, dst=e_reward, tag='GLU', partition=True) #SynapseGroup(net=SORN, src=e_reward, dst=e_location, tag='DOP+', partition=True) #SynapseGroup(net=SORN, src=e_reward, dst=e_action, tag='DOP+', partition=True) SynapseGroup(net=SORN, src=e_location, dst=e_punishment, tag='GLU', partition=True) SynapseGroup(net=SORN, src=e_punishment, dst=e_location, tag='DOP-', partition=True) SynapseGroup(net=SORN, src=e_punishment, dst=e_action, tag='DOP-', partition=True) if __name__ == '__main__' and attrs.get('UI', False): e_location.color = (0, 0, 255, 255) i_location.color = (255, 0, 0, 255) e_action.color = (255, 255, 0, 255) #e_vision.color = (0, 255, 255, 255) #e_reward.color = (100, 255, 100, 255) e_punishment.color = (255, 100, 100, 255) SORN.set_marked_variables(attrs['ind'], info=print_info, storage_manager=sm) SORN.initialize(info=False) ################################################################################################################### if __name__ == '__main__' and attrs.get('UI', False): #default_modules.insert(0, maze_tab()) #Network_UI(SORN, label='SORN UI default setup', storage_manager=sm, group_display_count=4, reduced_layout=True).show() Network_UI(SORN, modules=get_default_UI_modules() + [maze_tab()], label='SORN UI K_WTA', storage_manager=sm, group_display_count=1, reduced_layout=False).show() return 0
def run( attrs={ 'name': 'maze', 'ind': [], 'N_e': 900, 'TS': [1], 'ff': True, 'fb': True, 'plastic': 15000 }): so = True print_info = attrs.get('print', True) if print_info: print(attrs) sm = StorageManager(attrs, random_nr=True, print_msg=print_info) sm.save_param_dict(attrs) #source = LongDelayGrammar(tag='grammar_act', output_size=attrs['N_e'], random_blocks=True, mode=['simple'], input_density=0.01) maze = Maze(level='default', same_color=False) SORN = Network() #behaviour={maze.get_network_behaviour()} SORN.maze = maze e_location = NeuronGroup( net=SORN, tag='PC_{},prediction_source'.format(1), size=maze.get_location_neuron_dimension(), behaviour={ 2: SORN_init_neuron_vars(timescale=1), 3: SORN_init_afferent_synapses( transmitter='GLU', density='90%', distribution='uniform(0.1,1.0)', normalize=True ), #20%#lognormal(0,[0.95#1]) #[13#0]% #, partition_compensation=True , partition_compensation=True #lognormal(0,0.95) #4: SORN_init_afferent_synapses(transmitter='GABA', density='[30#1]%', distribution='uniform(0.0,1.0)', normalize=True), 5: SORN_init_afferent_synapses(transmitter='GLU_cluster', density='90%', distribution='uniform(0.1,1.0)', normalize=True), 8: maze.get_vision_neuron_behaviour(), 9: maze.get_location_neuron_behaviour(), #10.0: SORN_slow_syn 10.0: SORN_slow_syn_simple(transmitter='GLU', strength='1.0', so=so), #todo: SORN_slow_syn_simple?????? 10.1: SORN_IP_WTA_apply(), #10.15: WTA_refrac_apply(strengthfactor='[0.1#0]'),#0.1 #attrs['refrac'] 10.2: SORN_generate_output_K_WTA_partitioned(partition_size=7, K='[0.02#1]'), 10.3: SORN_slow_syn_simple(transmitter='GLU_cluster', strength='1.0'), 10.4: SORN_generate_output_K_WTA_partitioned( partition_size=7, K='[0.02#1]', filter_temporal_output=False), 10.5: SORN_slow_syn_simple(transmitter='GLU_cluster', strength='1.0'), 10.6: SORN_generate_output_K_WTA_partitioned( partition_size=7, K='[0.02#1]', filter_temporal_output=False), 10.7: SORN_slow_syn_simple(transmitter='GLU_cluster', strength='1.0'), 10.8: SORN_generate_output_K_WTA_partitioned( partition_size=7, K='[0.02#1]', filter_temporal_output=False), # 12.1: SORN_WTA_iSTDP(eta_iSTDP='[0.00015#2]'), # 12.2: SORN_SN(syn_type='GABA'), #13.4: SORN_generate_output_K_WTA_partitioned(K='[0.12#4]'), #13.5: SORN_WTA_fast_syn(transmitter='GABA', strength='-[0.5#5]', so=so),#[0.1383#2]SORN_fast_syn #14: WTA_refrac(), #, filter_temporal_output=True 15: SORN_buffer_variables(random_temporal_output_shift=False), 18: WTA_refrac(decayfactor=0.5), 20: SORN_IP_WTA(h_ip='lognormal_real_mean([0.02#1], [0.2944#2])', eta_ip='[0.007#3]', target_clip_min=None, target_clip_max=None), #-1.0 #1.0 #0.007 21.1: SORN_STDP(transmitter='GLU', eta_stdp='[0.00015#4]', STDP_F={ -1: 0.2, 1: -1 }), #, 0: 1 #[0.00015#7] #0.5, 0: 3.0 21.2: SORN_STDP(transmitter='GLU_cluster', eta_stdp='[0.00015#5]', STDP_F={0: 2.0}), #[0.00015#7] 22: SORN_SN(syn_type='GLU', behaviour_norm_factor=1.0), 23: SORN_SN(syn_type='GLU_cluster', behaviour_norm_factor='[0.3#6]'), #0.1 }) ''' e_action = NeuronGroup(net=SORN, tag='E_action_{}'.format(timescale), size=maze.get_action_neuron_dimension(), behaviour={ 2: SORN_init_neuron_vars(timescale=timescale), 3: SORN_init_afferent_synapses(transmitter='GLU', density='full', distribution='uniform(0.1,0.11)', normalize=True, partition_compensation=True), # 0.89 lognormal(0,[0.5#0]) 12: SORN_slow_syn(transmitter='GLU', strength='[0.1383#2]', so=so), 13: SORN_slow_syn(transmitter='GABA', strength='-[0.1698#3]', so=False), 17: SORN_fast_syn(transmitter='GABA', strength='-[0.1#4]', so=False), # 0.11045 18: SORN_generate_output(init_TH='0.01'), 19: SORN_buffer_variables(), 20: SORN_Refractory_Analog(factor='0.7;+-50%'), 21: SORN_STDP(eta_stdp='[0.0015#5]', STDP_F={-1: 1, 1:0}, weight_attr='W_temp'),#bigger #todo!!!! #22: SORN_SN(syn_type='GLU', clip_max=None, behaviour_norm_factor=5.0), 22: SORN_temporal_synapses(syn_type='GLU', behaviour_norm_factor=5.0), 23: SORN_IP_TI(h_ip='0.04', eta_ip='0.001', integration_length='[15#18];+-50%', clip_min=None), #25: SORN_NOX(mp='self.partition_sum(n)', eta_nox='[0.5#9];+-50%'), #26: SORN_SC_TI(h_sc='lognormal_real_mean([0.015#10], [0.2944#11])', eta_sc='[0.1#12];+-50%',integration_length='1'), # 60;+-50% #0.05 #27: SORN_iSTDP(h_ip='same(SCTI, th)', eta_istdp='[0.0001#13]') 29: SORN_dopamine(), 30: maze.get_action_neuron_behaviour() }) 29: SORN_dopamine(), 30: maze.get_action_neuron_behaviour() ''' ''' e_reward = NeuronGroup(net=SORN, tag='E_reward_{}'.format(timescale), size=maze.get_reward_neuron_dimension(), behaviour={ 2: SORN_init_neuron_vars(timescale=timescale), 3: SORN_init_afferent_synapses(transmitter='GLU', density='full', distribution='lognormal(0,[0.95#0])', normalize=True, partition_compensation=True), 9: maze.get_reward_neuron_behaviour(), 12: SORN_slow_syn(transmitter='GLU', strength='[0.1383#2]', so=so), 18: SORN_generate_output(init_TH='0.01'), 19: SORN_buffer_variables(), #20: SORN_Refractory(factor='0.5;+-50%'), 21: SORN_STDP(eta_stdp='[0.00015#5]'), 22: SORN_SN(syn_type='GLU', clip_max=None, behaviour_norm_factor=0.1), #23: SORN_IP_TI(h_ip='0.04', eta_ip='0.001', integration_length='[15#18];+-50%', clip_min=None), #25: SORN_NOX(mp='self.partition_sum(n)', eta_nox='[0.5#9];+-50%'), #26: SORN_SC_TI(h_sc='lognormal_real_mean([0.015#10], [0.2944#11])', eta_sc='[0.1#12];+-50%',integration_length='1'), # 60;+-50% #0.05 #27: SORN_iSTDP(h_ip='same(SCTI, th)', eta_istdp='[0.0001#13]') }) ''' ''' e_punishment = NeuronGroup(net=SORN, tag='E_punishment_{}'.format(timescale), size=maze.get_punishment_neuron_dimension(), behaviour={ 2: SORN_init_neuron_vars(timescale=timescale), 3: SORN_init_afferent_synapses(transmitter='GLU', density='full', distribution='lognormal(0,[0.95#0])', normalize=True, partition_compensation=True), 9: maze.get_punishment_neuron_behaviour(), 12: SORN_slow_syn(transmitter='GLU', strength='[0.1383#2]', so=so), 18: SORN_generate_output(init_TH='0.01'), 19: SORN_buffer_variables(), #20: SORN_Refractory(factor='0.5;+-50%'), 21: SORN_STDP(eta_stdp='[0.00015#5]'), #todo!!!! 22: SORN_SN(syn_type='GLU', clip_max=None, behaviour_norm_factor=0.1), #23: SORN_IP_TI(h_ip='0.04', eta_ip='0.001', integration_length='[15#18];+-50%', clip_min=None), #25: SORN_NOX(mp='self.partition_sum(n)', eta_nox='[0.5#9];+-50%'), #26: SORN_SC_TI(h_sc='lognormal_real_mean([0.015#10], [0.2944#11])', eta_sc='[0.1#12];+-50%',integration_length='1'), # 60;+-50% #0.05 #27: SORN_iSTDP(h_ip='same(SCTI, th)', eta_istdp='[0.0001#13]') }) ''' SynapseGroup(net=SORN, src=e_location, dst=e_location, tag='GLU,GLU_same') SynapseGroup(net=SORN, src=e_location, dst=e_location, tag='GLU_cluster,syn') #SynapseGroup(net=SORN, src=e_vision, dst=e_location, tag='GLU', partition=True) #SynapseGroup(net=SORN, src=e_location, dst=e_action, tag='GLU', partition=True) #SynapseGroup(net=SORN, src=e_location, dst=e_reward, tag='GLU', partition=True) #SynapseGroup(net=SORN, src=e_reward, dst=e_location, tag='DOP+', partition=True) #SynapseGroup(net=SORN, src=e_reward, dst=e_action, tag='DOP+', partition=True) #SynapseGroup(net=SORN, src=e_location, dst=e_punishment, tag='GLU', partition=True) #SynapseGroup(net=SORN, src=e_punishment, dst=e_location, tag='DOP-', partition=True) #SynapseGroup(net=SORN, src=e_punishment, dst=e_action, tag='DOP-', partition=True) if __name__ == '__main__' and attrs.get('UI', False): e_location.color = (0, 0, 255, 255) #e_action.color = (255, 255, 0, 255) #e_vision.color = (0, 255, 255, 255) #e_reward.color = (100, 255, 100, 255) #e_punishment.color = (255, 100, 100, 255) SORN.set_marked_variables(attrs['ind'], info=print_info, storage_manager=sm) SORN.initialize(info=False) ################################################################################################################### if __name__ == '__main__' and attrs.get('UI', False): #default_modules.insert(0, maze_tab()) #Network_UI(SORN, label='SORN UI default setup', storage_manager=sm, group_display_count=4, reduced_layout=True).show() Network_UI( SORN, modules=get_default_UI_modules(neuron_parameters=['activity']) + [maze_tab()], label='SORN UI K_WTA', storage_manager=sm, group_display_count=1, reduced_layout=False).show() return 0