def test_dest_mask_conn(self): c = core.Connectivity(2, 2, 3, 3) c['A', 'gpot', 0, 'B', 'gpot', 1] = 1 assert all(c.dest_mask(src_type='gpot', dest_type='gpot') == [False, True, False]) assert all(c.dest_mask(src_type='gpot', dest_type='spike') == [False, False, False]) assert all(c.dest_mask(src_type='spike', dest_type='gpot') == [False, False, False]) assert all(c.dest_mask(src_type='spike', dest_type='spike') == [False, False, False])
def test_dest_mask_no_conn(self): c = core.Connectivity(2, 2, 3, 3) all(c.dest_mask() == [False, False, False, False, False, False]) assert all(c.dest_mask(src_type='gpot', dest_type='gpot') == [False, False, False]) assert all(c.dest_mask(src_type='gpot', dest_type='spike') == [False, False, False]) assert all(c.dest_mask(src_type='spike', dest_type='gpot') == [False, False, False]) assert all(c.dest_mask(src_type='spike', dest_type='gpot') == [False, False, False])
def test_src_mask_conn_slice(self): c = core.Connectivity(2, 2, 3, 3) c['A', 'all', :, 'B', 'gpot', 1] = 1 assert all(c.src_mask(src_type='gpot', dest_type='gpot') == [True, True]) assert all(c.src_mask(src_type='gpot', dest_type='spike') == [False, False]) assert all(c.src_mask(src_type='spike', dest_type='gpot') == [True, True]) assert all(c.src_mask(src_type='spike', dest_type='spike') == [False, False])
def test_src_mask_no_conn_no_spike_A(self): c = core.Connectivity(2, 0, 3, 3) all(c.src_mask() == [False, False]) assert all(c.src_mask(src_type='gpot', dest_type='gpot') == [False, False]) assert all(c.src_mask(src_type='gpot', dest_type='spike') == [False, False]) assert all(c.src_mask(src_type='spike', dest_type='gpot') == []) assert all(c.src_mask(src_type='spike', dest_type='gpot') == [])
N_int = 8 # number of public integration neurons N_al = 1540 # number of public antennal lobe neurons N_al_pn = 165 # number of antennal lobe projection neurons int_id = 'integrate' med_id = 'medulla' al_id = 'antennallobe' alphasynapse_type_params = { 'AlphaSynapse': ['reverse', 'gmax', 'id', 'ar', 'ad', 'class', 'conductance'] } power_gpot_type_params = {'power_gpot_gpot': ['id','class','slope','threshold','power',\ 'saturation','delay','reverse','conductance']} conn_med_int = core.Connectivity(N_med_gpot, 0, 0, N_int, 1, med_id, int_id, power_gpot_type_params) for id, i in enumerate(range(N_med_gpot - 8, N_med_gpot)): conn_med_int[med_id, 'gpot', i, int_id, 'spike', i - N_med_gpot + 8] = 1 conn_med_int[med_id, 'gpot', i, int_id, 'spike', i - N_med_gpot + 8, 0, 'id'] = id conn_med_int[med_id, 'gpot', i, int_id, 'spike', i - N_med_gpot + 8, 0, 'name'] = 'med_int_%s_%s' % (i, i) conn_med_int[med_id, 'gpot', i, int_id, 'spike', i - N_med_gpot + 8, 0, 'model'] = 'power_gpot_gpot' conn_med_int[med_id, 'gpot', i, int_id, 'spike', i - N_med_gpot + 8, 0, 'class'] = 2 conn_med_int[med_id, 'gpot', i, int_id, 'spike', i - N_med_gpot + 8, 0, 'conductance'] = True conn_med_int[med_id, 'gpot', i, int_id, 'spike', i - N_med_gpot + 8, 0, 'slope'] = 4e9
import neurokernel.core as core import neurokernel.tools.graph as graph # Create files containing module connectivity info: N_A_gpot = 4 N_A_spike = 3 g = nx.MultiDiGraph() for i in xrange(N_A_gpot + N_A_spike): g.add_node('%s' % i) for i in xrange(0, N_A_gpot): g.node['%s' % i]['neuron_type'] = 'gpot' for i in xrange(N_A_gpot, N_A_gpot + N_A_spike): g.node['%s' % i]['neuron_type'] = 'spike' nx.write_gexf(g, 'A.gexf') N_B_gpot = 3 N_B_spike = 2 g = nx.MultiDiGraph() for i in xrange(N_B_gpot + N_B_spike): g.add_node('%s' % i) for i in xrange(0, N_B_gpot): g.node['%s' % i]['neuron_type'] = 'gpot' for i in xrange(N_B_gpot, N_B_gpot + N_B_spike): g.node['%s' % i]['neuron_type'] = 'spike' nx.write_gexf(g, 'B.gexf') # Create files containing inter-module connectivity info: c = core.Connectivity(N_A_gpot, N_A_spike, N_B_gpot, N_B_spike) g = graph.conn_to_graph(c) nx.write_gexf(g, 'A_B.gexf')
def run(connected): if args.port_data is None and args.port_ctrl is None: port_data = get_random_port() port_ctrl = get_random_port() else: port_data = args.port_data port_ctrl = args.port_ctrl out_name = 'un' if not connected else 'co' man = core.Manager(port_data, port_ctrl) man.add_brok() lpu_file_0 = './data/generic_lpu_0.gexf.gz' lpu_file_1 = './data/generic_lpu_1.gexf.gz' (n_dict_0, s_dict_0) = LPU.lpu_parser(lpu_file_0) (n_dict_1, s_dict_1) = LPU.lpu_parser(lpu_file_1) ge_0_id = 'ge_0' ge_0 = LPU(dt, n_dict_0, s_dict_0, input_file='./data/generic_input_0.h5', output_file='generic_output_0_%s.h5' % out_name, port_ctrl=port_ctrl, port_data=port_data, device=args.gpu_dev[0], id=ge_0_id, debug=args.debug) man.add_mod(ge_0) ge_1_id = 'ge_1' ge_1 = LPU(dt, n_dict_1, s_dict_1, input_file='./data/generic_input_1.h5', output_file='generic_output_1_%s.h5' % out_name, port_ctrl=port_ctrl, port_data=port_data, device=args.gpu_dev[1], id=ge_1_id, debug=args.debug) man.add_mod(ge_1) # Connect the public neurons in the two LPUs: df_neu_0, df_syn_0 = neurokernel.tools.graph.graph_to_df( nx.read_gexf(lpu_file_0)) df_neu_1, df_syn_1 = neurokernel.tools.graph.graph_to_df( nx.read_gexf(lpu_file_1)) # Number of public neurons in each LPU: N_spike_0 = len(df_neu_0[(df_neu_0['spiking'] == True) & (df_neu_0['public'] == True)]) N_gpot_0 = len(df_neu_0[(df_neu_0['spiking'] == False) & (df_neu_0['public'] == True)]) N_spike_1 = len(df_neu_1[(df_neu_1['spiking'] == True) & (df_neu_1['public'] == True)]) N_gpot_1 = len(df_neu_1[(df_neu_1['spiking'] == False) & (df_neu_1['public'] == True)]) # Alpha function synaptic parameters: alphasynapse_type_params = { 'AlphaSynapse': ['ad', 'ar', 'gmax', 'id', 'class', 'conductance', 'reverse'] } if connected: conn = core.Connectivity(N_gpot_0, N_spike_0, N_gpot_1, N_spike_1, 1, ge_0.id, ge_1.id, alphasynapse_type_params) for id, (i, j) in enumerate( itertools.product(xrange(N_spike_0), xrange(N_spike_1))): conn[ge_0_id, 'spike', i, ge_1_id, 'spike', j] = 1 conn[ge_0_id, 'spike', i, ge_1_id, 'spike', j, 0, 'name'] = 'int_0to1_%s_%s' % (i, j) conn[ge_0_id, 'spike', i, ge_1_id, 'spike', j, 0, 'model'] = 'AlphaSynapse' conn[ge_0_id, 'spike', i, ge_1_id, 'spike', j, 0, 'ad'] = 0.19 * 1000 conn[ge_0_id, 'spike', i, ge_1_id, 'spike', j, 0, 'ar'] = 1.1 * 100 conn[ge_0_id, 'spike', i, ge_1_id, 'spike', j, 0, 'class'] = 0 conn[ge_0_id, 'spike', i, ge_1_id, 'spike', j, 0, 'conductance'] = True conn[ge_0_id, 'spike', i, ge_1_id, 'spike', j, 0, 'gmax'] = 0.003 conn[ge_0_id, 'spike', i, ge_1_id, 'spike', j, 0, 'id'] = id conn[ge_0_id, 'spike', i, ge_1_id, 'spike', j, 0, 'reverse'] = 0.065 man.connect(ge_0, ge_1, conn) man.start(steps=args.steps) man.stop()