def test_top10_central_closeness(self, graph_path: Path, expected): measures = GraphMeasures(load_graphml(graph_path)) cc = measures.top10_central_closeness assert len(cc) == 10 for item in cc: assert isinstance(item, tuple) assert len(item) == 2 assert isinstance(item[1], float)
def test_largest_component_measures(self, graph_path: Path, expected): measures = GraphMeasures(load_graphml(graph_path)) assert isinstance(measures.largest_component_measures.node_count, int) assert isinstance(measures.largest_component_measures.edge_count, int) if measures.largest_component_measures.directed: assert measures.largest_component_measures.strongly_connected else: assert measures.largest_component_measures.connected
def test_top10_central_degree(self, graph_path: Path, expected): measures = GraphMeasures(load_graphml(graph_path)) dc = measures.top10_central_degree assert len(dc) == 10 for item in dc: assert isinstance(item, tuple) assert len(item) == 2 assert isinstance(item[1], float)
def test_avg_strength(self, graph_path: Path, expected): measures = GraphMeasures(load_graphml(graph_path)) if measures.weighted: if measures.directed: avg_strength_in, avg_strength_out = measures.avg_strength assert isinstance(avg_strength_in, float) assert isinstance(avg_strength_out, float) else: assert isinstance(measures.avg_strength, float) else: with pytest.raises(MeasureError): measures.avg_strength
def test_basic_measures(self, graph_path: Path, expected: Any): measure = GraphMeasures(load_graphml(graph_path)) if measure.directed: measure.strongly_connected measure.weakly_connected with pytest.raises(MeasureError): measure.connected else: measure.connected with pytest.raises(MeasureError): measure.weakly_connected with pytest.raises(MeasureError): measure.strongly_connected
def test_degree_distribution(self, graph_path: Path, expected): measures = GraphMeasures(load_graphml(graph_path)) if measures.directed: assert isinstance(measures.degree_distribution, tuple) assert len(measures.degree_distribution) == 2 assert isinstance(measures.degree_distribution[1], dict) for distribution in measures.degree_distribution: assert isinstance(distribution, dict) for degree, count in distribution.items(): assert isinstance(degree, int) assert isinstance(count, int) assert issorted(list(distribution.keys())) else: assert isinstance(measures.degree_distribution, dict) for degree, count in measures.degree_distribution.items(): assert isinstance(degree, int) assert isinstance(count, int) assert issorted(measures.degree_distribution.keys())
def test_edge_count(self, graph_path: Path, expected: int): measures = GraphMeasures(load_graphml(graph_path)) assert isclose(measures.edge_count, expected, rel_tol=0.1)
def test_avg_betweenness_centrality(self, graph_path: Path, expected): measures = GraphMeasures(load_graphml(graph_path)) assert isinstance(measures.avg_betweenness_centrality, float)
def test_component_count(self, graph_path: Path, expected): measures = GraphMeasures(load_graphml(graph_path)) assert isinstance(measures.component_count, int)
def test_avg_clustering_coefficient(self, graph_path: Path, expected): measures = GraphMeasures(load_graphml(graph_path)) assert isclose(measures.avg_clustering_coefficient, expected, rel_tol=0.12)
def test_global_efficiency(self, graph_path: Path, expected): measures = GraphMeasures(load_graphml(graph_path)) assert isinstance(measures.global_efficiency, float)
def test_eccentricity(self, graph_path: Path, expected): measures = GraphMeasures(load_graphml(graph_path)) assert isinstance(measures.eccentricity, (int, float))
def test_diameter(self, graph_path: Path, expected): measures = GraphMeasures(load_graphml(graph_path)) assert isinstance(measures.diameter, int)
def test_shortest_path_length(self, graph_path: Path, expected): measures = GraphMeasures(load_graphml(graph_path)) assert isinstance(measures.shortest_path_length, (int, float))
def test_avg_edge_count(self, graph_path: Path, expected: Any): measures = GraphMeasures(load_graphml(graph_path)) if measures.directed: assert trunc(sum(measures.avg_edge_count)) == expected else: assert trunc(measures.avg_edge_count) == expected
plt.savefig(results_hist_weight_out.as_posix()) plt.close() else: results_hist_weight: Path = results / f"{name}_hist_weight.png" plt.xlabel('Snaga') plt.xlabel('Frekvencija') weights = tuple(edge[2]['weight'] for edge in measures.graph.edges().data()) plt.hist(weights, bins=HISTOGRAM_BINS) plt.savefig(results_hist_weight.as_posix()) plt.close() print(f"{datetime.now()} - Graph {name}: FINISHED - histograms") stat_functions = (write_basic, write_histograms, write_centrality, write_modularity) if __name__ == '__main__': ''' path = graph_paths[4] p = Process(target=write_modularity, args=(GraphMeasures(load_graphml(path)), path.stem)) p.start() ''' for graph_id in (0, 1, 2, 3, 4): path = graph_paths[graph_id] graph_measures = GraphMeasures(load_graphml(path)) for func in stat_functions: process = Process(target=func, args=(graph_measures, path.stem)) process.start()
def test_degree_assortativity(self, graph_path: Path, expected): measures = GraphMeasures(load_graphml(graph_path)) assert isinstance(measures.degree_assortativity, float)