|
5 | 5 |
|
6 | 6 |
|
7 | 7 | class SyntheticNetwork:
|
8 |
| - class SynthNodeInfo(NodeInfo): |
9 |
| - def __init__(self, nodes=pd.DataFrame()): |
10 |
| - self.nodes = nodes |
| 8 | + class SynthNodeInfo(NodeInfo): |
| 9 | + def __init__(self, nodes=pd.DataFrame()): |
| 10 | + self.nodes = nodes |
11 | 11 |
|
12 |
| - def update(self, new_info): |
13 |
| - return |
| 12 | + def update(self, new_info): |
| 13 | + return |
14 | 14 |
|
15 |
| - def get_nodes(self): |
16 |
| - return self.nodes |
| 15 | + def get_nodes(self): |
| 16 | + return self.nodes |
17 | 17 |
|
18 |
| - def __init__(self, g, config): |
19 |
| - # Instantiate an object |
20 |
| - self.G = g |
21 |
| - self.config = config |
| 18 | + def __init__(self, g, config): |
| 19 | + # Instantiate an object |
| 20 | + self.G = g |
| 21 | + self.config = config |
22 | 22 |
|
23 |
| - def create_node_info(self): |
24 |
| - return self.SynthNodeInfo() |
| 23 | + def create_node_info(self): |
| 24 | + return self.SynthNodeInfo() |
25 | 25 |
|
26 |
| - def get_neighbors(self, node_id): |
27 |
| - # collect info on the node and its (out going) edges |
28 |
| - # return 2 dataframes, one with edges info and the other with the node info |
29 |
| - G = self.G |
30 |
| - if node_id not in G: |
31 |
| - return self.SynthNodeInfo(pd.DataFrame()), pd.DataFrame() |
32 |
| - # node data |
33 |
| - node_df = pd.DataFrame([{'source': node_id, **G.nodes[node_id]}]) |
34 |
| - # Edges and edge data |
35 |
| - if nx.is_directed(G): |
36 |
| - edges = G.out_edges(node_id, data=True) |
37 |
| - else: |
38 |
| - edges = G.edges(node_id, data=True) |
| 26 | + def get_neighbors(self, node_id): |
| 27 | + # collect info on the node and its (out going) edges |
| 28 | + # return 2 dataframes, one with edges info and the other with the node info |
| 29 | + G = self.G |
| 30 | + if node_id not in G: |
| 31 | + return self.SynthNodeInfo(pd.DataFrame()), pd.DataFrame() |
| 32 | + # node data |
| 33 | + node_df = pd.DataFrame([{"source": node_id, **G.nodes[node_id]}]) |
| 34 | + # Edges and edge data |
| 35 | + if nx.is_directed(G): |
| 36 | + edges = G.out_edges(node_id, data=True) |
| 37 | + else: |
| 38 | + edges = G.edges(node_id, data=True) |
39 | 39 |
|
40 |
| - edgeprop_dic_list = [] |
41 |
| - for source, target, data in edges: |
42 |
| - edge_dic = {'source': source, 'target': target, **data} |
43 |
| - edgeprop_dic_list.append(edge_dic) |
44 |
| - edges_df = pd.DataFrame(edgeprop_dic_list) |
45 |
| - edges_df['weight'] = 1.0 |
46 |
| - return self.SynthNodeInfo(node_df), edges_df |
| 40 | + edgeprop_dic_list = [] |
| 41 | + for source, target, data in edges: |
| 42 | + edge_dic = {"source": source, "target": target, **data} |
| 43 | + edgeprop_dic_list.append(edge_dic) |
| 44 | + edges_df = pd.DataFrame(edgeprop_dic_list) |
| 45 | + edges_df["weight"] = 1.0 |
| 46 | + return self.SynthNodeInfo(node_df), edges_df |
47 | 47 |
|
48 |
| - def filter(self, node_info, edges_df): |
49 |
| - if len(edges_df) < self.config.min_degree: |
50 |
| - # discard the node |
51 |
| - node_info = self.SynthNodeInfo(pd.DataFrame()) |
52 |
| - edges_df = pd.DataFrame() |
53 |
| - # filter the edges |
54 |
| - edges_df = self.filter_edges(edges_df) |
55 |
| - return node_info, edges_df |
| 48 | + def filter(self, node_info, edges_df): |
| 49 | + if len(edges_df) < self.config.min_degree: |
| 50 | + # discard the node |
| 51 | + node_info = self.SynthNodeInfo(pd.DataFrame()) |
| 52 | + edges_df = pd.DataFrame() |
| 53 | + # filter the edges |
| 54 | + edges_df = self.filter_edges(edges_df) |
| 55 | + return node_info, edges_df |
56 | 56 |
|
57 |
| - def filter_edges(self, edges_df): |
58 |
| - return edges_df |
| 57 | + def filter_edges(self, edges_df): |
| 58 | + return edges_df |
59 | 59 |
|
60 |
| - def neighbors_list(self, edges_df): |
61 |
| - if edges_df.empty: |
62 |
| - return edges_df |
63 |
| - neighbors = edges_df['target'].unique().tolist() |
64 |
| - return neighbors |
| 60 | + def neighbors_list(self, edges_df): |
| 61 | + if edges_df.empty: |
| 62 | + return edges_df |
| 63 | + neighbors = edges_df["target"].unique().tolist() |
| 64 | + return neighbors |
65 | 65 |
|
66 |
| - def neighbors_with_weights(self, edges_df): |
67 |
| - node_list = self.neighbors_list(edges_df) |
68 |
| - node_dic = {} |
69 |
| - for node in node_list: |
70 |
| - node_dic[node] = len(edges_df) # degree of the node |
71 |
| - return node_dic |
| 66 | + def neighbors_with_weights(self, edges_df): |
| 67 | + node_list = self.neighbors_list(edges_df) |
| 68 | + node_dic = {} |
| 69 | + for node in node_list: |
| 70 | + node_dic[node] = len(edges_df) # degree of the node |
| 71 | + return node_dic |
72 | 72 |
|
73 |
| - def reshape_node_data(self, nodes_df): |
74 |
| - nodes_df.set_index('source', inplace=True) |
75 |
| - return nodes_df |
| 73 | + def reshape_node_data(self, nodes_df): |
| 74 | + nodes_df.set_index("source", inplace=True) |
| 75 | + return nodes_df |
76 | 76 |
|
77 |
| - def add_graph_attributes(self, g, nodes_df, edges_df, nodes_info): |
78 |
| - g = add_edges_attributes(g, edges_df) |
79 |
| - g = add_node_attributes(g, self.reshape_node_data(nodes_df)) |
80 |
| - return g |
| 77 | + def add_graph_attributes(self, g, nodes_df, edges_df, nodes_info): |
| 78 | + g = add_edges_attributes(g, edges_df) |
| 79 | + g = add_node_attributes(g, self.reshape_node_data(nodes_df)) |
| 80 | + return g |
0 commit comments