def test_temporal_snapshots_ids(self): g = dn.DynGraphTN() g.add_path([0, 1, 2, 3, 4], t=5) g.add_path([4, 5, 6, 7, 8], t=6) tsd = g.temporal_snapshots_ids() self.assertEqual(tsd, [5, 6])
def test_has_interaction(self): g = dn.DynGraphTN() g.add_path([0, 1, 2, 3, 4], t=5) g.add_path([4, 5, 6, 7, 8], t=6) self.assertEqual(g.has_interaction(0, 1), True) self.assertEqual(g.has_interaction(0, 1, 5), True) self.assertEqual(g.has_interaction(0, 1, 6), False) self.assertEqual(g.has_interaction(0, 1, 9), False)
def __init__(self): self.dynGraph = dn.DynGraphTN() self.dynCom = dn.dynamicCommunitiesSN() self.currentT = 0 self.currentNetwork=nx.Graph() self.communities=dict() #type:{str:communityAgent} self.currentID=0 self.listOfActions = [] self.indegrees = 0.5 self.outdegrees = 0.1 self.interComEdges=set()
def node_link_graph(data, directed=False, attrs=_attrs): """Return graph from node-link data format. Parameters ---------- data : dict node-link formatted graph data directed : bool If True, and direction not specified in data, return a directed graph. attrs : dict A dictionary that contains three keys 'id', 'source', 'target'. The corresponding values provide the attribute names for storing Dynetx-internal graph data. Default value: :samp:`dict(id='id', source='source', target='target')`. Returns ------- G : DyNetx graph A DyNetx graph object Examples -------- >>> from dynetx.readwrite import json_graph >>> G = dn.DynGraphTN([(1,2)]) >>> data = json_graph.node_link_data(G) >>> H = json_graph.node_link_graph(data) See Also -------- node_link_data """ directed = data.get('directed', directed) graph = dn.DynGraphTN() if directed: graph = graph.to_directed() id_ = attrs['id'] mapping = [] graph.graph = data.get('graph', {}) c = count() for d in data['nodes']: node = d.get(id_, next(c)) mapping.append(node) nodedata = dict((make_str(k), v) for k, v in d.items() if k != id_) graph.add_node(node, **nodedata) for d in data['links']: graph.add_interaction(d['source'], d["target"], d['time']) return graph
def test_interactions_per_snapshots(self): g = dn.DynGraphTN() g.add_path([0, 1, 2, 3, 4], t=5) g.add_path([4, 5, 6, 7, 8], t=6) tsd = g.interactions_per_snapshots() self.assertDictEqual(tsd, {5: 4, 6: 4}) tsd = g.interactions_per_snapshots(t=5) self.assertEqual(tsd, 4) tsd = g.interactions_per_snapshots(t=0) self.assertEqual(tsd, 0)
def test_number_of_nodes(self): g = dn.DynGraphTN() g.add_path([0, 1, 2, 3, 4], t=5) g.add_path([4, 5, 6, 7, 8], t=6) nn = g.number_of_nodes() self.assertEqual(nn, 9) nn = g.number_of_nodes(t=5) self.assertEqual(nn, 5) nn = g.number_of_nodes(t=0) self.assertEqual(nn, 0)
def test_degree(self): g = dn.DynGraphTN() g.add_path([0, 1, 2, 3, 4], t=5) g.add_path([4, 5, 6, 7, 8], t=6) ng = g.degree(4) self.assertEqual(ng, 2) ng = g.degree(4, 5) self.assertEqual(ng, 1) ng = g.degree(4, 6) self.assertEqual(ng, 1) ng = g.degree(4, 0) self.assertEqual(ng, 0)
def test_neighbores(self): g = dn.DynGraphTN() g.add_path([0, 1, 2, 3, 4], t=5) g.add_path([4, 5, 6, 7, 8], t=6) ng = len(g.neighbors(0)) self.assertEqual(ng, 1) ng = len(g.neighbors(0, 5)) self.assertEqual(ng, 1) ng = len(g.neighbors(0, 6)) self.assertEqual(ng, 0) ng = len(g.neighbors(0, 0)) self.assertEqual(ng, 0)
def test_stream_interactions(self): g = dn.DynGraphTN() g.add_interaction(1, 2, 2) g.add_interaction(1, 2, 2, e=6) g.add_interaction(1, 2, 7, e=11) g.add_interaction(1, 2, 8, e=15) g.add_interaction(1, 2, 18) g.add_interaction(1, 2, 19) g.add_interactions_from([(1, 3), (1, 5)], t=2, e=3) sres = list(g.stream_interactions()) cres = [(1, 2, '+', 2), (1, 3, '+', 2), (1, 5, '+', 2), (1, 3, '-', 3), (1, 5, '-', 3), (1, 2, '-', 6), (1, 2, '+', 7), (1, 2, '-', 15), (1, 2, '+', 18)] self.assertEquals(sorted(sres), sorted(cres))
def test_inter_event_time(self): g = dn.DynGraphTN() g.add_path([0, 1, 2, 3, 4], t=2) g.add_path([4, 5, 6, 7, 8], t=3) ivt = g.inter_event_time_distribution() self.assertDictEqual(ivt, {0: 6, 1: 1}) ivt = g.inter_event_time_distribution(4) self.assertDictEqual(ivt, {1: 1}) ivt = g.inter_event_time_distribution(0) self.assertDictEqual(ivt, {}) ivt = g.inter_event_time_distribution(0, 1) self.assertDictEqual(ivt, {})
def test_accumulative_growth(self): g = dn.DynGraphTN(edge_removal=False) g.add_interaction(1, 2, 2) g.add_interaction(1, 2, 2, e=6) g.add_interaction(1, 2, 7, e=11) g.add_interaction(1, 2, 8, e=15) g.add_interaction(1, 2, 18) g.add_interaction(1, 2, 19) g.add_interactions_from([(1, 3), (1, 5)], t=2, e=3) sres = list(g.stream_interactions()) cres = [(1, 2, '+', 2), (1, 5, '+', 2), (1, 3, '+', 2)] self.assertEquals(sorted(sres), sorted(cres)) self.assertEqual(g.has_interaction(1, 2, 18), True) self.assertEqual(g.has_interaction(1, 2, 40), False) try: g.add_interaction(2, 1, 7) except: pass
def test_number_of_interactions(self): g = dn.DynGraphTN() g.add_path([0, 1, 2, 3, 4], t=5) g.add_path([4, 5, 6, 7, 8], t=6) its = g.number_of_interactions() self.assertEqual(its, 8) its = g.number_of_interactions(0) self.assertEqual(its, None) its = g.number_of_interactions(0, 1) self.assertEqual(its, 1) its = g.number_of_interactions(0, 1, 5) self.assertEqual(its, 1) its = g.number_of_interactions(0, 1, 6) self.assertEqual(its, 0)
def test_nodes(self): g = dn.DynGraphTN() g.add_star([0, 1, 2, 3, 4], t=5) nds = len(g.nodes()) self.assertEqual(nds, 5) g.add_star([5, 1, 2, 3, 4], t=6) nds = len(g.nodes()) self.assertEqual(nds, 6) nds = len(g.nodes(t=6)) self.assertEqual(nds, 5) nds = len(g.nodes(t=9)) self.assertEqual(nds, 0) self.assertEqual(g.has_node(0), True) self.assertEqual(g.has_node(0, 5), True) self.assertEqual(g.has_node(0, 6), False) self.assertEqual(g.has_node(0, 0), False)
def read_SG(fileInput): aDynGraph = dn.DynGraphTN() f = open(fileInput) for l in f: # for each line parts = l.split("\t") if parts[0] == "N": nodeName = parts[1] parts = parts[2:] for i in range(0, len(parts), 2): start = int(parts[i]) end = int(parts[i + 1]) aDynGraph.add_node(nodeName, start, end) if parts[0] == "E": n1 = parts[1] n2 = parts[2] parts = parts[3:] for i in range(0, len(parts), 2): start = int(parts[i]) end = int(parts[i + 1]) aDynGraph.add_edge(n1, n2, start, end) return aDynGraph
def test_time_slice(self): g = dn.DynGraphTN() g.add_path([0, 1, 2, 3, 4], t=5) g.add_path([4, 5, 6, 7, 8], t=6) h = g.time_slice(5) self.assertIsInstance(h, dn.DynGraphTN) self.assertEqual(h.number_of_nodes(), 5) self.assertEqual(h.number_of_interactions(), 4) h = g.time_slice(5, 5) self.assertIsInstance(h, dn.DynGraphTN) self.assertEqual(h.number_of_nodes(), 5) self.assertEqual(h.number_of_interactions(), 4) h = g.time_slice(5, 6) self.assertIsInstance(h, dn.DynGraphTN) self.assertEqual(h.number_of_nodes(), 9) self.assertEqual(h.number_of_interactions(), 8) h = g.time_slice(0) self.assertIsInstance(h, dn.DynGraphTN) self.assertEqual(h.number_of_nodes(), 0) self.assertEqual(h.number_of_interactions(), 0)
def test_functions(self): g = dn.DynGraphTN() g.add_interaction(1, 2, 2) g.add_interaction(1, 2, 2, e=6) g.add_interaction(1, 2, 7, e=11) g.add_interaction(1, 2, 8, e=15) g.add_interaction(1, 2, 18) g.add_interaction(1, 2, 19) self.assertEqual(len(dn.nodes(g)), 2) self.assertEqual(len(dn.nodes(g, t=0)), 0) self.assertEqual(len(dn.nodes(g, t=2)), 2) self.assertEqual(len(dn.interactions(g)), 1) self.assertEqual(len(dn.interactions(g, t=0)), 0) self.assertEqual(len(dn.interactions(g, t=2)), 1) self.assertDictEqual(dn.degree(g), {1: 1, 2: 1}) self.assertDictEqual(dn.degree(g, t=0), {1: 0, 2: 0}) self.assertDictEqual(dn.degree(g, [1, 2]), {1: 1, 2: 1}) self.assertEqual(len(dn.neighbors(g, 1)), 1) self.assertEqual(len(dn.neighbors(g, 1, t=2)), 1) self.assertEqual(len(dn.neighbors(g, 1, t=0)), 0) self.assertEqual(dn.number_of_nodes(g), 2) self.assertEqual(dn.number_of_nodes(g, t=0), 0) self.assertEqual(dn.number_of_nodes(g, t=2), 2) self.assertEqual(dn.number_of_interactions(g, t=0), 0) self.assertEqual(dn.number_of_interactions(g, t=2), 1) self.assertEqual(dn.number_of_interactions(g), 1) self.assertEqual(dn.density(g), 1.0) self.assertEqual(dn.density(g, t=0), 0) self.assertEqual(dn.density(g, t=2), 0) self.assertEqual(dn.degree_histogram(g), [0, 2]) self.assertEqual(dn.degree_histogram(g, t=0), [2]) self.assertEqual(dn.degree_histogram(g, t=2), [0, 2]) self.assertEqual(dn.is_directed(g), False) dn.add_cycle(g, [1, 2, 3, 4], t=30) dn.add_path(g, [4, 6, 7, 8], t=40) dn.add_star(g, [1, 2, 3, 4], t=50) dn.subgraph(g, [1, 3, 4]) dn.create_empty_copy(g) self.assertEqual(len(dn.all_neighbors(g, 1, t=0)), 0) self.assertEqual(len(dn.all_neighbors(g, 1)), 3) self.assertEqual(len(dn.all_neighbors(g, 1, t=2)), 1) self.assertEqual(len(list(dn.non_neighbors(g, 1, t=0))), 6) self.assertEqual(len(list(dn.non_neighbors(g, 1))), 3) self.assertEqual(len(list(dn.non_neighbors(g, 1, t=2))), 5) dn.non_interactions(g, 2) dn.non_interactions(g, 0) dn.non_interactions(g) self.assertEqual(dn.is_empty(g), False) h = dn.DynGraphTN() self.assertEqual(dn.is_empty(h), True) h = dn.time_slice(g, 2, 4) self.assertEqual(len(h.nodes()), 2) dn.stream_interactions(g) dn.temporal_snapshots_ids(g) dn.interactions_per_snapshots(g, 0) dn.interactions_per_snapshots(g, 2) dn.interactions_per_snapshots(g) dn.inter_event_time_distribution(g) dn.inter_event_time_distribution(g, 1) dn.inter_event_time_distribution(g, 1, 2) dn.set_node_attributes(g, values={n: 0 for n in g.nodes()}, name="test") try: dn.set_node_attributes(g, values={90000: 0}, name="test") except: pass try: dn.set_node_attributes(g, "test1", name="test") except: pass dn.set_node_attributes(g, values={n: {"a": 3} for n in g.nodes()}) try: dn.set_node_attributes(g, values={9000: {"a": 3}}) except: pass dn.get_node_attributes(g, name="test") try: dn.set_edge_attributes(g, 3, "dog") except: pass try: dn.get_edge_attributes(g, "test") except: pass dn.freeze(g) self.assertEqual(dn.is_frozen(g), True) h = g.to_directed() dn.all_neighbors(h, 1) self.assertEqual(len(list(dn.non_interactions(g))), 13)
def test_dyngraph_add_interaction(self): g = dn.DynGraphTN() self.assertIsInstance(g, dn.DynGraphTN) g.add_interaction(1, 2, 2) g.add_interaction(1, 2, 2, e=6) g.add_interaction(1, 2, 7, e=11) g.add_interaction(1, 2, 8, e=15) g.add_interaction(1, 2, 18) g.add_interaction(1, 2, 19) its = g.interactions() self.assertEqual(len(its), 1) g.add_interactions_from([(1, 3), (1, 5)], t=2) its = g.interactions() self.assertEqual(len(its), 3) its = g.interactions(t=18) self.assertEqual(len(its), 1) its = g.interactions(t=20) self.assertEqual(len(its), 0) self.assertEqual(len(list(g.neighbors_iter(1))), 3) self.assertEqual(len(list(g.neighbors_iter(1, 7))), 1) self.assertEqual(len(list(g.neighbors_iter(1, 0))), 0) self.assertEqual(g.order(), len(g.nodes())) self.assertEqual(g.has_node(42), False) self.assertEqual(g.has_node(42, 3), False) g.add_cycle([3, 4, 5, 6], t=34) try: g.time_slice(2, 1) except: pass g.interactions_iter([1, 2]) try: g.add_interaction(1, 5) except: pass try: g.add_interactions_from([(1, 4), (3, 6)]) except: pass try: g.remove_edge(1, 2) except: pass try: g.remove_edges_from([(1, 2)]) except: pass try: g.remove_node(1) except: pass try: g.remove_nodes_from([1, 2]) except: pass self.assertEqual(g.number_of_interactions(1, 90), 0)