def test_connection_map_dict(net):
    cm = ConnectionMap(sources=net.nodes(ei='i'),
                       targets=net.nodes(ei='e'),
                       connector={'nsyn': 10})
    for v in cm.connection_itr():
        src_id, trg_id, val = v
        assert ('nsyn' in val and val['nsyn'] == 10)
def test_connection_map_num(net):
    cm = ConnectionMap(sources=net.nodes(ei='i'),
                       targets=net.nodes(ei='e'),
                       connector=10)
    count = 0
    for v in cm.connection_itr():
        src_id, trg_id, val = v
        assert (val == 10)
        count += 1
    assert (count == 5000)
def test_connection_map_list(net):
    cm = ConnectionMap(
        sources=net.nodes(ei='i'),
        targets=net.nodes(ei='e'),
        connector=[
            s.node_id * t.node_id
            for s, t in product(net.nodes(ei='i'), net.nodes(ei='e'))
        ])
    count = 0
    for v in cm.connection_itr():
        src_id, trg_id, val = v
        assert (val == src_id * trg_id)
        count += 1
    assert (count == 5000)
def test_cm_params3(net):
    cm = ConnectionMap(sources=net.nodes(ei='i'),
                       targets=net.nodes(ei='e'),
                       connector=lambda s, t: 3,
                       edge_type_properties={
                           'prop1': 'prop1',
                           'node_type_id': 101
                       })
    cm.add_properties(names=['w', 'c'], rule=0.15, dtypes=[float, str])
    cm.add_properties(names='a', rule=(1, 2, 3), dtypes=dict)

    assert (len(cm.params) == 2)
    edge_props_1 = cm.params[0]
    assert (edge_props_1.names == ['w', 'c'])
    assert (edge_props_1.get_prop_dtype('w'))
    assert (edge_props_1.get_prop_dtype('c'))
    for v in cm.connection_itr():
        src_id, trg_id, nsyn = v
        assert (nsyn == 3)
        assert (edge_props_1.rule() == 0.15)

    edge_props_2 = cm.params[1]
    assert (edge_props_2.names == 'a')
    assert (edge_props_2.get_prop_dtype('a'))
    assert (edge_props_2.rule() == (1, 2, 3))
def test_cm_params1(net):
    cm = ConnectionMap(sources=net.nodes(ei='i'),
                       targets=net.nodes(ei='e'),
                       connector=lambda s, t: 3,
                       edge_type_properties={
                           'prop1': 'prop1',
                           'node_type_id': 101
                       })
    cm.add_properties(names='syn_weight',
                      rule=lambda a: a + 0.15,
                      rule_params={'a': 0.20},
                      dtypes=float)

    assert (len(cm.params) == 1)
    edge_props_1 = cm.params[0]
    assert (edge_props_1.names == 'syn_weight')
    assert (edge_props_1.get_prop_dtype('syn_weight') == float)
    for v in cm.connection_itr():
        src_id, trg_id, nsyn = v
        assert (nsyn == 3)
        assert (edge_props_1.rule() == 0.35)
def test_connection_map_fnc(net):
    cm = ConnectionMap(
        sources=net.nodes(ei='i'),
        targets=net.nodes(ei='e'),
        connector=lambda s, t, a, b: s['node_id'] * t['node_id'],
        connector_params={
            'a': 1,
            'b': 0
        },
        iterator='one_to_one',
        edge_type_properties={
            'prop1': 'prop1',
            'node_type_id': 101
        })
    assert (len(cm.source_nodes) == 100)
    assert (len(cm.target_nodes) == 50)
    assert (cm.params == [])
    assert (cm.iterator == 'one_to_one')
    assert (len(cm.edge_type_properties.keys()) == 2)
    assert (cm.edge_type_id == 101)
    for v in cm.connection_itr():
        src_id, trg_id, val = v
        assert (val == src_id * trg_id)