def test_network_degrees(): """Test node degrees of a network""" a = Node('a') net = Network(directed=False) net.add_edges((a, 'b'), ('b', 'c'), ('c', 'a')) assert isinstance(list(net.nodes.keys())[0], (str, int))
def test_mean_degree(): """Test the mean degree calculation.""" # net = pp.generators.Molloy_Reed([2]*500) net = Network(directed=False) net.add_edges(('a', 'b'), ('b', 'c'), ('c', 'a')) mean_degree = pp.statistics.mean_degree(net) assert mean_degree == 2.0
def test_remove_edge(): """Test to remove an edge from the network.""" net = Network() a = Node('a') b = Node('b') c = Node('c') e = Edge(a, b, uid='e') f = Edge(b, a, uid='f') g = Edge(b, c, uid='g') net.add_edge(e) net.add_edge(f) net.remove_edge(g) assert net.number_of_edges() == 2 assert isinstance(net.edges['e'], Edge) assert g not in net.edges assert net.edges['a', 'b'] in net.edges assert net.successors['a'] == {b} assert net.outgoing['a'] == {e} assert net.incident_edges['a'] == {e, f} net.remove_edge(e) assert net.number_of_edges() == 1 assert net.successors['a'] == set() assert net.outgoing['a'] == set() assert net.incident_edges['a'] == {f} net.remove_edge('f') assert net.number_of_edges() == 0 assert net.incident_edges['a'] == set() a = Node('a') b = Node('b') e = Edge(a, b, uid='e') f = Edge(a, b, uid='f') g = Edge(a, b, uid='g') net = Network(multiedges=True) net.add_edges(e, f, g) assert net.number_of_edges() == 3 assert e and f and g in net.edges['a', 'b'] net.remove_edge('a', 'b', uid='g') assert net.number_of_edges() == 2 assert g not in net.edges['a', 'b'] net.remove_edge('a', 'b') assert net.number_of_edges() == 0 assert len(net.edges['a', 'b']) == 0
def test_adjacency_matrix(): """Test the adjacency matrix of a network.""" net = Network() net.add_edges(('a', 'b'), ('b', 'c')) A1 = net.adjacency_matrix() assert A1[0, 1] == 1.0 assert A1[1, 2] == 1.0 A2 = pp.algorithms.matrices.adjacency_matrix(net) assert A2[0, 1] == 1.0 assert A2[1, 2] == 1.0
def test_network_edges(): """Test the edges of a network""" net = Network(directed=False) net.add_edges(('a', 'b'), ('b', 'c'), ('c', 'd')) assert net.number_of_edges() == 3 assert isinstance(list(net.edges), list) # np does not allow to sample from iterables # edge = np.random.choice(list(net.edges.values())) edge = random.choice(list(net.edges)) assert edge in net.edges
def test_sql_write_network(): """Write network to sql database.""" net = Network() net.add_edges(('a', 'b'), ('a', 'c')) pp.io.sql.write(net, filename='network.db', table='test', if_exists='replace') net = pp.io.sql.read_network(db_file='network.db', table='test') assert isinstance(net, Network) assert net.number_of_nodes() == 3 assert net.number_of_edges() == 2
def test_adjacency_matrix(): """Test the adjacency matrix of a network.""" net = Network() net.add_edges(('a', 'b'), ('b', 'c')) n = net.nodes.index A1 = net.adjacency_matrix() assert A1[n['a'], n['b']] == 1.0 assert A1[n['b'], n['c']] == 1.0 A2 = pp.algorithms.matrices.adjacency_matrix(net) assert A2[n['a'], n['b']] == 1.0 assert A2[n['b'], n['c']] == 1.0
def test_add_edges(): """Test assigning edges form a list.""" net = Network() ab = Edge(Node('a'), Node('b')) net.add_edges(ab, ('b', 'c')) assert net.number_of_edges() == 2 net = Network() edges = [("A", "B"), ("B", "C")] net.add_edges(edges) assert net.number_of_edges() == 2 assert net.number_of_nodes() == 3 net = Network() edges = [("a", "b"), ("b", "c"), ("c", "d"), ("c", "e")] edges = [tuple(Node(x) for x in e) for e in edges] # with pytest.raises(Exception): # net.add_edges(edges) net = Network() net.add_edges(('a', 'b'), ('b', 'c'))
def test_iadd_networks(): """Test to add networks together""" net_1 = Network() net_1.add_edges(('a', 'b'), ('b', 'c')) net_2 = Network() net_2.add_edges(('x', 'y'), ('y', 'z')) net_1 += net_2 assert net_1.number_of_nodes() == 6 assert net_1.number_of_edges() == 4 assert net_2.number_of_nodes() == 3 assert net_2.number_of_edges() == 2 # test same node objects a = Node('a') b = Node('b') c = Node('c') net_1 = Network() net_2 = Network() net_1.add_edge(a, b) net_2.add_edge(b, c) net_1 += net_2 assert net_1.number_of_nodes() == 3 assert net_1.number_of_edges() == 2 assert net_2.number_of_nodes() == 2 assert net_2.number_of_edges() == 1 # nodes with same uids but different objects net_1 = Network() net_2 = Network() net_1.add_edge(a, b) net_2.add_edge('b', c) with pytest.raises(Exception): net_1 += net_2 # test same edge objects a = Node('a') b = Node('b') c = Node('c') net_1 = Network() net_2 = Network() net_1.add_edge(a, b, uid='e1') net_2.add_edge(a, b, uid='e2') with pytest.raises(Exception): net_1 += net_2 # assert net_1.number_of_edges() == 2 # assert net_1.number_of_nodes() == 2 # assert 'e1' in net_1.edges and 'e2' in net_1.edges # edges with same uids but different objects net_1 = Network() net_2 = Network() net_1.add_edge(a, b, uid='e1') net_2.add_edge(a, b, uid='e1') with pytest.raises(Exception): net_1 += net_2 # add multiple networks net_1 = Network() net_2 = Network() net_3 = Network() net_1.add_edge('a', 'b') net_2.add_edge('c', 'd') net_3.add_edge('e', 'f') net_1 += net_2 + net_3 assert net_1.number_of_edges() == 3 assert net_1.number_of_nodes() == 6
def test_csv_write_network(): """Write network to csv.""" net = Network() net.add_edges(('a', 'b'), ('a', 'c')) pp.io.csv.write(net, 'network.csv')