Esempio n. 1
0
 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])
Esempio n. 2
0
 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])
Esempio n. 3
0
 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])
Esempio n. 4
0
 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') == [])
Esempio n. 5
0
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
Esempio n. 6
0
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')
Esempio n. 7
0
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()