|
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """
- Created on Wed Dec 2 17:41:54 2020
-
- @author: ljia
-
- This script compares the results with and without FCSP.
- """
- from gklearn.dataset import Dataset
- from gklearn.utils import get_graph_kernel_by_name
- from gklearn.utils.kernels import deltakernel, gaussiankernel, kernelproduct
- from gklearn.experiments import DATASET_ROOT
- import functools
- import os
- import pickle
- import sys
- import logging
-
-
- # def run_all(fcsp):
-
- # from sklearn.model_selection import ParameterGrid
-
- # Dataset_List = ['Alkane_unlabeled', 'Alkane', 'Acyclic', 'MAO_lite', 'MAO',
- # 'PAH_unlabeled', 'PAH', 'MUTAG', 'Monoterpens',
- # 'Letter-high', 'Letter-med', 'Letter-low',
- # 'ENZYMES', 'AIDS', 'NCI1', 'NCI109', 'DD',
- # 'BZR', 'COX2', 'DHFR', 'PTC_FM', 'PTC_FR', 'PTC_MM', 'PTC_MR',
- # 'Cuneiform', 'KKI', 'OHSU', 'Peking_1', 'SYNTHETICnew',
- # 'Synthie', 'SYNTHETIC', 'Fingerprint', 'IMDB-BINARY',
- # 'IMDB-MULTI', 'COIL-DEL', 'PROTEINS', 'PROTEINS_full',
- # 'Mutagenicity', 'REDDIT-BINARY']
-
- # Kernel_List = ['ShortestPath', 'StructuralSP']
-
- # task_grid = ParameterGrid({'kernel': Kernel_List[:], 'dataset': Dataset_List[:]})
-
- # for task in list(task_grid):
-
- # save_file_suffix = '.' + task['kernel'] + '.' + task['dataset']
- # file_name = os.path.join(save_dir, 'run_time' + save_file_suffix + '.pkl')
- # if not os.path.isfile(file_name):
- # print()
- # print((task['kernel'], task['dataset']))
-
- # try:
- # gram_matrix, run_time = compute(task['kernel'], task['dataset'], fcsp)
-
- # except Exception as exp:
- # print('An exception occured when running this experiment:')
- # LOG_FILENAME = save_dir + 'error.txt'
- # logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
- # logging.exception('\n--------------' + save_file_suffix + '------------------')
- # print(repr(exp))
- # else:
- # save_file_suffix = '.' + task['kernel'] + task['dataset']
-
- # with open(file_name, 'wb') as f:
- # pickle.dump(run_time, f)
-
-
-
- def run_task(kernel_name, ds_name, fcsp):
- save_file_suffix = '.' + kernel_name + '.' + ds_name + '.' + str(fcsp)
- file_name = os.path.join(save_dir, 'run_time' + save_file_suffix + '.pkl')
-
- if not os.path.isfile(file_name):
- print()
- print((kernel_name, ds_name, str(fcsp)))
-
- try:
- gram_matrix, run_time = compute(kernel_name, ds_name, fcsp)
-
- except Exception as exp:
- print('An exception occured when running this experiment:')
- LOG_FILENAME = os.path.join(save_dir, 'error' + save_file_suffix + '.txt')
- logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
- logging.exception('\n--------------' + save_file_suffix + '------------------')
- print(repr(exp))
-
- else:
- with open(file_name, 'wb') as f:
- pickle.dump(run_time, f)
-
-
- def compute(kernel_name, ds_name, fcsp):
- dataset = Dataset(ds_name, root=DATASET_ROOT, verbose=True)
- if kernel_name == 'ShortestPath':
- dataset.trim_dataset(edge_required=True)
-
-
- mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel)
- node_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
- edge_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel}
-
- graph_kernel = get_graph_kernel_by_name(name=kernel_name,
- node_labels=dataset.node_labels,
- edge_labels=dataset.edge_labels,
- node_attrs=dataset.node_attrs,
- edge_attrs=dataset.edge_attrs,
- ds_infos=dataset.get_dataset_infos(keys=['directed']),
- fcsp=fcsp,
- compute_method='naive',
- node_kernels=node_kernels,
- edge_kernels=edge_kernels,
- )
- gram_matrix, run_time = graph_kernel.compute(dataset.graphs,
- parallel=None,
- normalize=True,
- verbose=2
- )
- return gram_matrix, run_time
-
-
- if __name__ == '__main__':
- if len(sys.argv) > 1:
- kernel_name = sys.argv[1]
- ds_name = sys.argv[2]
- fcsp = True if sys.argv[3] == 'True' else False
- else:
- kernel_name = 'ShortestPath'
- ds_name = 'Acyclic'
- fcsp = True
-
- save_dir = 'outputs/'
- os.makedirs(save_dir, exist_ok=True)
-
- run_task(kernel_name, ds_name, fcsp)
|