| @@ -0,0 +1,126 @@ | |||
| #!/usr/bin/env python3 | |||
| # -*- coding: utf-8 -*- | |||
| """ | |||
| Created on Thu Jun 25 11:31:46 2020 | |||
| @author: ljia | |||
| """ | |||
| def xp_check_results_of_GEDEnv(): | |||
| """Compare results of GEDEnv to GEDLIB. | |||
| """ | |||
| """**1. Get dataset.**""" | |||
| from gklearn.utils import Dataset | |||
| # Predefined dataset name, use dataset "MUTAG". | |||
| ds_name = 'MUTAG' | |||
| # Initialize a Dataset. | |||
| dataset = Dataset() | |||
| # Load predefined dataset "MUTAG". | |||
| dataset.load_predefined_dataset(ds_name) | |||
| results1 = compute_geds_by_GEDEnv(dataset) | |||
| results2 = compute_geds_by_GEDLIB(dataset) | |||
| # Show results. | |||
| import pprint | |||
| pp = pprint.PrettyPrinter(indent=4) # pretty print | |||
| print('Restuls using GEDEnv:') | |||
| pp.pprint(results1) | |||
| print() | |||
| print('Restuls using GEDLIB:') | |||
| pp.pprint(results2) | |||
| return results1, results2 | |||
| def compute_geds_by_GEDEnv(dataset): | |||
| from gklearn.ged.env import GEDEnv | |||
| import numpy as np | |||
| graph1 = dataset.graphs[0] | |||
| graph2 = dataset.graphs[1] | |||
| ged_env = GEDEnv() # initailize GED environment. | |||
| ged_env.set_edit_cost('CONSTANT', # GED cost type. | |||
| edit_cost_constants=[3, 3, 1, 3, 3, 1] # edit costs. | |||
| ) | |||
| for g in dataset.graphs[0:10]: | |||
| ged_env.add_nx_graph(g, '') | |||
| # ged_env.add_nx_graph(graph1, '') # add graph1 | |||
| # ged_env.add_nx_graph(graph2, '') # add graph2 | |||
| listID = ged_env.get_all_graph_ids() # get list IDs of graphs | |||
| ged_env.init(init_type='LAZY_WITHOUT_SHUFFLED_COPIES') # initialize GED environment. | |||
| options = {'threads': 1 # parallel threads. | |||
| } | |||
| ged_env.set_method('BIPARTITE', # GED method. | |||
| options # options for GED method. | |||
| ) | |||
| ged_env.init_method() # initialize GED method. | |||
| ged_mat = np.empty((10, 10)) | |||
| for i in range(0, 10): | |||
| for j in range(i, 10): | |||
| ged_env.run_method(i, j) # run. | |||
| ged_mat[i, j] = ged_env.get_upper_bound(i, j) | |||
| ged_mat[j, i] = ged_mat[i, j] | |||
| results = {} | |||
| results['pi_forward'] = ged_env.get_forward_map(listID[0], listID[1]) # forward map. | |||
| results['pi_backward'] = ged_env.get_backward_map(listID[0], listID[1]) # backward map. | |||
| results['upper_bound'] = ged_env.get_upper_bound(listID[0], listID[1]) # GED bewteen two graphs. | |||
| results['runtime'] = ged_env.get_runtime(listID[0], listID[1]) | |||
| results['init_time'] = ged_env.get_init_time() | |||
| results['ged_mat'] = ged_mat | |||
| return results | |||
| def compute_geds_by_GEDLIB(dataset): | |||
| from gklearn.gedlib import librariesImport, gedlibpy | |||
| from gklearn.ged.util import ged_options_to_string | |||
| import numpy as np | |||
| graph1 = dataset.graphs[5] | |||
| graph2 = dataset.graphs[6] | |||
| ged_env = gedlibpy.GEDEnv() # initailize GED environment. | |||
| ged_env.set_edit_cost('CONSTANT', # GED cost type. | |||
| edit_cost_constant=[3, 3, 1, 3, 3, 1] # edit costs. | |||
| ) | |||
| # ged_env.add_nx_graph(graph1, '') # add graph1 | |||
| # ged_env.add_nx_graph(graph2, '') # add graph2 | |||
| for g in dataset.graphs[0:10]: | |||
| ged_env.add_nx_graph(g, '') | |||
| listID = ged_env.get_all_graph_ids() # get list IDs of graphs | |||
| ged_env.init(init_option='LAZY_WITHOUT_SHUFFLED_COPIES') # initialize GED environment. | |||
| options = {'initialization-method': 'RANDOM', # or 'NODE', etc. | |||
| 'threads': 1 # parallel threads. | |||
| } | |||
| ged_env.set_method('BIPARTITE', # GED method. | |||
| ged_options_to_string(options) # options for GED method. | |||
| ) | |||
| ged_env.init_method() # initialize GED method. | |||
| ged_mat = np.empty((10, 10)) | |||
| for i in range(0, 10): | |||
| for j in range(i, 10): | |||
| ged_env.run_method(i, j) # run. | |||
| ged_mat[i, j] = ged_env.get_upper_bound(i, j) | |||
| ged_mat[j, i] = ged_mat[i, j] | |||
| results = {} | |||
| results['pi_forward'] = ged_env.get_forward_map(listID[0], listID[1]) # forward map. | |||
| results['pi_backward'] = ged_env.get_backward_map(listID[0], listID[1]) # backward map. | |||
| results['upper_bound'] = ged_env.get_upper_bound(listID[0], listID[1]) # GED bewteen two graphs. | |||
| results['runtime'] = ged_env.get_runtime(listID[0], listID[1]) | |||
| results['init_time'] = ged_env.get_init_time() | |||
| results['ged_mat'] = ged_mat | |||
| return results | |||
| if __name__ == '__main__': | |||
| results1, results2 = xp_check_results_of_GEDEnv() | |||