def test_add_edges(): net = NetworkBuilder('V1') net.add_nodes(N=10, cell_type='Scnna1', ei='e') net.add_nodes(N=10, cell_type='PV1', ei='i') net.add_nodes(N=10, cell_type='PV2', ei='i') net.add_edges( source={'ei': 'i'}, target={'ei': 'e'}, connection_rule=lambda s, t: 1, edge_arg='i2e' ) net.add_edges( source=net.nodes(cell_type='Scnna1'), target=net.nodes(cell_type='PV1'), connection_rule=2, edge_arg='e2i' ) net.build() assert(net.nedges == 200 + 200) assert(net.edges_built is True) for e in net.edges(target_nodes=net.nodes(cell_type='Scnna1')): assert(e['edge_arg'] == 'i2e') assert(e['nsyns'] == 1) for e in net.edges(target_nodes=net.nodes(cell_type='PV1')): assert(e['edge_arg'] == 'e2i') assert(e['nsyns'] == 2)
def test_mulitnet_iterator(): net1 = NetworkBuilder('NET1') net1.add_nodes(N=50, cell_type='Rorb', ei='e') net1.build() net2 = NetworkBuilder('NET2') net2.add_nodes(N=100, cell_type='Scnna1', ei='e') net2.add_nodes(N=100, cell_type='PV1', ei='i') net2.add_edges(source={'ei': 'e'}, target={'ei': 'i'}, connection_rule=5, syn_type='e2i', net_type='rec') net2.add_edges(source=net1.nodes(), target={'ei': 'e'}, connection_rule=1, syn_type='e2e', net_type='fwd') net2.build() assert (len(net2.edges()) == 50 * 100 + 100 * 100) assert (len(net2.edges(source_network='NET2', target_network='NET1')) == 0) assert (len(net2.edges(source_network='NET1', target_network='NET2')) == 50 * 100) assert (len(net2.edges(target_network='NET2', net_type='rec')) == 100 * 100) edges = net2.edges(source_network='NET1') assert (len(edges) == 50 * 100) for e in edges: assert (e['net_type'] == 'fwd')
def test_add_edges_custom_params(): # Uses connection map functionality to create edges with unique parameters net = NetworkBuilder('V1') net.add_nodes(N=10, arg_list=range(10), arg_ctype='e') net.add_nodes(N=5, arg_list=range(10, 15), arg_ctype='i') cm = net.add_edges( source={'arg_ctype': 'e'}, target={'arg_ctype': 'i'}, connection_rule=2 ) cm.add_properties('syn_weight', rule=0.5, dtypes=float) cm.add_properties( ['src_num', 'trg_num'], rule=lambda s, t: [s['node_id'], t['node_id']], dtypes=[int, int] ) net.build() assert(net.nedges == 2*50) assert(net.edges_built is True) for e in net.edges(): assert(e['syn_weight'] == 0.5) assert(e['src_num'] == e.source_node_id) assert(e['trg_num'] == e.target_node_id)
def test_basic(): net = NetworkBuilder('CA1') assert(net.name == 'CA1') assert(net.nnodes == 0) assert(net.nedges == 0) assert(net.nodes_built is False) assert(net.edges_built is False) assert(len(net.nodes()) == 0) assert(len(net.edges()) == 0) assert(net.nodes_built is True) assert(net.edges_built is True)
def test_itr_basic(): net = NetworkBuilder('NET1') net.add_nodes(N=100, position=[(0.0, 1.0, -1.0)] * 100, cell_type='Scnna1', ei='e') net.add_nodes(N=100, position=[(0.0, 1.0, -1.0)] * 100, cell_type='PV1', ei='i') net.add_edges(source={'ei': 'e'}, target={'ei': 'i'}, connection_rule=5, syn_type='e2i') net.add_edges(source={'cell_type': 'PV1'}, target={'cell_type': 'Scnna1'}, connection_rule=5, syn_type='i2e') net.build() edges = net.edges() assert (len(edges) == 100 * 100 * 2) assert (edges[0]['nsyns'] == 5)
def test_itr_advanced_search(): net = NetworkBuilder('NET1') net.add_nodes(N=1, cell_type='Scnna1', ei='e') net.add_nodes(N=50, cell_type='PV1', ei='i') net.add_nodes(N=100, cell_type='PV2', ei='i') net.add_edges(source={'ei': 'e'}, target={'ei': 'i'}, connection_rule=5, syn_type='e2i', nm='A') net.add_edges(source={'cell_type': 'PV1'}, target={'cell_type': 'PV2'}, connection_rule=5, syn_type='i2i', nm='B') net.add_edges(source={'cell_type': 'PV2'}, target={'ei': 'i'}, connection_rule=5, syn_type='i2i', nm='C') net.build() edges = net.edges(target_nodes=net.nodes(cell_type='Scnna1')) assert (len(edges) == 0) edges = net.edges(source_nodes={'ei': 'e'}, target_nodes={'ei': 'i'}) assert (len(edges) == 50 + 100) edges = net.edges(source_nodes=[n.node_id for n in net.nodes(ei='e')]) assert (len(edges) == 50 + 100) edges = net.edges(source_nodes={'ei': 'i'}) assert (len(edges) == 100 * 100 * 2) for e in edges: assert (e['syn_type'] == 'i2i') edges = net.edges(syn_type='i2i') print len(edges) == 100 * 100 * 2 for e in edges: assert (e['nm'] != 'A') edges = net.edges(syn_type='i2i', nm='C') assert (len(edges) == 100 * 150)