#!/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()