# -*- coding: utf-8 -*- """compute_graph_edit_distance.ipynb Automatically generated by Colaboratory. Original file is located at https://colab.research.google.com/drive/1Wfgn7WVuyOQQgwOvdUQBz0BzEVdp0YM3 **This script demonstrates how to compute a graph edit distance.** --- **0. Install `graphkit-learn`.** """ """**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) graph1 = dataset.graphs[0] graph2 = dataset.graphs[1] print(graph1, graph2) """**2. Compute graph edit distance.**""" from gklearn.ged.env import GEDEnv 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. ) 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 = {'initialization_method': 'RANDOM', # or 'NODE', etc. 'threads': 1 # parallel threads. } ged_env.set_method('BIPARTITE', # GED method. options # options for GED method. ) ged_env.init_method() # initialize GED method. ged_env.run_method(listID[0], listID[1]) # run. pi_forward = ged_env.get_forward_map(listID[0], listID[1]) # forward map. pi_backward = ged_env.get_backward_map(listID[0], listID[1]) # backward map. dis = ged_env.get_upper_bound(listID[0], listID[1]) # GED bewteen two graphs. print(pi_forward) print(pi_backward) print(dis)