print("Performing stochastic block partitioning") # begin partitioning by finding the best partition with the optimal number of blocks evaluation = Evaluation(args, graph) partition = sbp.stochastic_block_partition(graph.num_nodes, graph.num_edges, graph.out_neighbors, graph.in_neighbors) t_end = timeit.default_timer() print('\nGraph partition took {} seconds'.format(t_end - t_start)) evaluation.total_runtime(t_start, t_end) if args.sample_type != "none": evaluation.evaluate_subgraph_sampling(full_graph, subgraph, full_graph_partition, subgraph_partition, block_mapping, vertex_mapping) evaluation.num_nodes = full_graph.num_nodes evaluation.num_edges = full_graph.num_edges # evaluate output partition against the true partition evaluate_subgraph_partition(subgraph.true_block_assignment, subgraph_partition.block_assignment, evaluation) evaluate_partition(full_graph.true_block_assignment, full_graph_partition.block_assignment, evaluation) else: evaluate_partition(graph.true_block_assignment, partition.block_assignment, evaluation)