def write_cluster_csv(btw_data, graph_data, file_pre): clusters = {} iqr_vals = [] for q in btw_data.keys(): iqr_vals.append(q) for n in graph_data[iqr_vals[0]].nodes: if graph_data[iqr_vals[0]].nodes[n]["cluster"] not in clusters: clusters[graph_data[iqr_vals[0]].nodes[n]["cluster"]] = 1 else: clusters[graph_data[iqr_vals[0]].nodes[n]["cluster"]] += 1 retstr = 'cluster, size, group_betweenness_centrality_25, group_betweenness_centrality_50, group_betweenness_centrality_75\n' for c in clusters: cnodes = [x for x,y in graph_data[iqr_vals[0]].nodes(data=True) if y['cluster']== c] c_obj = { "cluster" : c, "size" : clusters[c], "group_betweenness_25" : nx.group_betweenness_centrality(graph_data[iqr_vals[0]], cnodes, weight="score"), "group_betweenness_50" : 0,#nx.group_betweenness_centrality(graph_data[iqr_vals[1]], cnodes, weight="score"), "group_betweenness_75" : 0#nx.group_betweenness_centrality(graph_data[iqr_vals[2]], cnodes, weight="score") } lstr = '{}, {}, {}, {}, {}\n'.format(c_obj["cluster"], c_obj["size"], c_obj["group_betweenness_25"], c_obj["group_betweenness_50"], c_obj["group_betweenness_75"]) retstr = retstr + lstr with open('centrality_files/' + file_pre + "_clusters.csv", 'w') as wf: wf.write(retstr) return
def test_group_betweenness_value_zero(self): """ Group betweenness centrality value of 0 """ G = nx.cycle_graph(6) C = [0, 1, 5] b = nx.group_betweenness_centrality(G, C, weight=None) b_answer = 0.0 assert b == b_answer
def test_group_betweenness_single_node(self): """ Group betweenness centrality for single node group """ G = nx.path_graph(5) C = [1] b = nx.group_betweenness_centrality(G, C, weight=None, normalized=False) b_answer = 3.0 assert b == b_answer
def test_two_group_betweenness_value_zero(self): """ Group betweenness centrality value of 0 """ G = nx.cycle_graph(7) C = [[0, 1, 6], [0, 1, 5]] b = nx.group_betweenness_centrality(G, C, weight=None, normalized=False) b_answer = [0.0, 3.0] assert b == b_answer
def test_group_betweenness_value_zero(self): """ Group betweenness centrality value of 0 """ G = nx.cycle_graph(6) C = [0, 1, 5] b = nx.group_betweenness_centrality(G, C, weight=None) b_answer = 0.0 assert_equal(b, b_answer)
def test_group_betweenness_disconnected_graph(self): """ Group betweenness centrality in a disconnected graph """ G = nx.path_graph(5) G.remove_edge(0, 1) C = [1] b = nx.group_betweenness_centrality(G, C, weight=None) b_answer = 0.0 assert b == b_answer
def test_group_betweenness_normalized(self): """ Group betweenness centrality for group with more than 1 node and normalized """ G = nx.path_graph(5) C = [1, 3] b = nx.group_betweenness_centrality(G, C, weight=None, normalized=True) b_answer = 1.0 assert b == b_answer
def test_group_betweenness_disconnected_graph(self): """ Group betweenness centrality in a disconnected graph """ G = nx.path_graph(5) G.remove_edge(0, 1) C = [1] b = nx.group_betweenness_centrality(G, C, weight=None) b_answer = 0.0 assert_equal(b, b_answer)
def test_group_betweenness_single_node(self): """ Group betweenness centrality for single node group """ G = nx.path_graph(5) C = [1] b = nx.group_betweenness_centrality(G, C, weight=None, normalized=False) b_answer = 3.0 assert_equal(b, b_answer)
def test_group_betweenness_with_endpoints(self): """ Group betweenness centrality for single node group """ G = nx.path_graph(5) C = [1] b = nx.group_betweenness_centrality( G, C, weight=None, normalized=False, endpoints=True ) b_answer = 7.0 assert b == b_answer
def test_group_betweenness_normalized(self): """ Group betweenness centrality for group with more than 1 node and normalized """ G = nx.path_graph(5) C = [1, 3] b = nx.group_betweenness_centrality(G, C, weight=None, normalized=True) b_answer = 1.0 assert_equal(b, b_answer)
def groupBetweenCentrality(G): pos = nx.spring_layout(G) gbCent = nx.group_betweenness_centrality(G) node_color = [20000.0 * G.degree(v) for v in G] node_size = [v * 10000 for v in gbCent.values()] plt.figure(figsize=(13, 13)) nx.draw_networkx(G1, pos=pos, with_labels=False, node_color=node_color, node_size=node_size) plt.axis('off') #Printing Top 10 Nodes as per Closeness Centrality sorted_degree = sorted(gbCent, key=gbCent.get, reverse=True)[:10] for d in sorted_degree[:10]: print("Node Label: ", d, "=> Degree: ", G.degree[d])
def test_group_betweenness_directed_weighted(self): """ Group betweenness centrality in a directed and weighted graph """ G = nx.DiGraph() G.add_edge(1, 0, weight=1) G.add_edge(0, 2, weight=2) G.add_edge(1, 2, weight=3) G.add_edge(3, 1, weight=4) G.add_edge(2, 3, weight=1) G.add_edge(4, 3, weight=6) G.add_edge(2, 4, weight=7) C = [1, 2] b = nx.group_betweenness_centrality(G, C, weight="weight", normalized=False) b_answer = 5.0 assert b == b_answer
def test_group_betweenness_node_not_in_graph(self): """ Node(s) in C not in graph, raises NodeNotFound exception """ with pytest.raises(nx.NodeNotFound): b = nx.group_betweenness_centrality(nx.path_graph(5), [6, 7, 8])