diff --git a/gklearn/kernels/weisfeiler_lehman.py b/gklearn/kernels/weisfeiler_lehman.py index 4ecb13f..0c1bb34 100644 --- a/gklearn/kernels/weisfeiler_lehman.py +++ b/gklearn/kernels/weisfeiler_lehman.py @@ -32,6 +32,10 @@ class WeisfeilerLehman(GraphKernel): # @todo: total parallelization and sp, edge def _compute_gm_series(self): + if self._verbose >= 2: + import warnings + warnings.warn('A part of the computation is parallelized.') + self.__add_dummy_node_labels(self._graphs) # for WL subtree kernel @@ -55,11 +59,16 @@ class WeisfeilerLehman(GraphKernel): # @todo: total parallelization and sp, edge def _compute_gm_imap_unordered(self): if self._verbose >= 2: - raise Warning('Only a part of the computation is parallelized due to the structure of this kernel.') + import warnings + warnings.warn('Only a part of the computation is parallelized due to the structure of this kernel.') return self._compute_gm_series() def _compute_kernel_list_series(self, g1, g_list): # @todo: this should be better. + if self._verbose >= 2: + import warnings + warnings.warn('A part of the computation is parallelized.') + self.__add_dummy_node_labels(g_list + [g1]) # for WL subtree kernel @@ -83,8 +92,9 @@ class WeisfeilerLehman(GraphKernel): # @todo: total parallelization and sp, edge def _compute_kernel_list_imap_unordered(self, g1, g_list): if self._verbose >= 2: - raise Warning('Only a part of the computation is parallelized due to the structure of this kernel.') - return self._compute_gm_imap_unordered() + import warnings + warnings.warn('Only a part of the computation is parallelized due to the structure of this kernel.') + return self._compute_kernel_list_series(g1, g_list) def _wrapper_kernel_list_do(self, itr): diff --git a/gklearn/preimage/experiments/xp_median_preimage.py b/gklearn/preimage/experiments/xp_median_preimage.py index 903faaa..2c73ca9 100644 --- a/gklearn/preimage/experiments/xp_median_preimage.py +++ b/gklearn/preimage/experiments/xp_median_preimage.py @@ -12,6 +12,318 @@ from gklearn.preimage.utils import generate_median_preimages_by_class from gklearn.utils import compute_gram_matrices_by_class +def xp_median_preimage_12_1(): + """xp 12_1: PAH, StructuralSP, using NON_SYMBOLIC, unlabeled. + """ + # set parameters. + ds_name = 'PAH' # + mpg_options = {'fit_method': 'k-graphs', + 'init_ecc': [4, 4, 0, 1, 1, 0], # + 'ds_name': ds_name, + 'parallel': True, # False + 'time_limit_in_sec': 0, + 'max_itrs': 100, # + 'max_itrs_without_update': 3, + 'epsilon_residual': 0.01, + 'epsilon_ec': 0.1, + 'verbose': 2} + mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel) + sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel} + kernel_options = {'name': 'StructuralSP', + 'edge_weight': None, + 'node_kernels': sub_kernels, + 'edge_kernels': sub_kernels, + 'compute_method': 'naive', + 'parallel': 'imap_unordered', + # 'parallel': None, + 'n_jobs': multiprocessing.cpu_count(), + 'normalize': True, + 'verbose': 2} + ged_options = {'method': 'IPFP', + 'initialization_method': 'RANDOM', # 'NODE' + 'initial_solutions': 10, # 1 + 'edit_cost': 'NON_SYMBOLIC', # + 'attr_distance': 'euclidean', + 'ratio_runs_from_initial_solutions': 1, + 'threads': multiprocessing.cpu_count(), + 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'} + mge_options = {'init_type': 'MEDOID', + 'random_inits': 10, + 'time_limit': 600, + 'verbose': 2, + 'refine': False} + save_results = True + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.unlabeled/' + irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # + edge_required = False # + + # print settings. + print('parameters:') + print('dataset name:', ds_name) + print('mpg_options:', mpg_options) + print('kernel_options:', kernel_options) + print('ged_options:', ged_options) + print('mge_options:', mge_options) + print('save_results:', save_results) + print('irrelevant_labels:', irrelevant_labels) + print() + + # generate preimages. + for fit_method in ['k-graphs', 'expert'] + ['random'] * 5: + print('\n-------------------------------------') + print('fit method:', fit_method, '\n') + mpg_options['fit_method'] = fit_method + generate_median_preimages_by_class(ds_name, mpg_options, kernel_options, ged_options, mge_options, save_results=save_results, save_medians=True, plot_medians=True, load_gm='auto', dir_save=dir_save, irrelevant_labels=irrelevant_labels, edge_required=edge_required) + + +def xp_median_preimage_12_2(): + """xp 12_2: PAH, PathUpToH, using CONSTANT, unlabeled. + """ + # set parameters. + ds_name = 'PAH' # + mpg_options = {'fit_method': 'k-graphs', + 'init_ecc': [4, 4, 2, 1, 1, 1], # + 'ds_name': ds_name, + 'parallel': True, # False + 'time_limit_in_sec': 0, + 'max_itrs': 100, # + 'max_itrs_without_update': 3, + 'epsilon_residual': 0.01, + 'epsilon_ec': 0.1, + 'verbose': 2} + kernel_options = {'name': 'PathUpToH', + 'depth': 1, # + 'k_func': 'MinMax', # + 'compute_method': 'trie', + 'parallel': 'imap_unordered', + # 'parallel': None, + 'n_jobs': multiprocessing.cpu_count(), + 'normalize': True, + 'verbose': 2} + ged_options = {'method': 'IPFP', + 'initialization_method': 'RANDOM', # 'NODE' + 'initial_solutions': 10, # 1 + 'edit_cost': 'CONSTANT', # + 'attr_distance': 'euclidean', + 'ratio_runs_from_initial_solutions': 1, + 'threads': multiprocessing.cpu_count(), + 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'} + mge_options = {'init_type': 'MEDOID', + 'random_inits': 10, + 'time_limit': 600, + 'verbose': 2, + 'refine': False} + save_results = True + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.unlabeled/' + irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # + edge_required = False # + + # print settings. + print('parameters:') + print('dataset name:', ds_name) + print('mpg_options:', mpg_options) + print('kernel_options:', kernel_options) + print('ged_options:', ged_options) + print('mge_options:', mge_options) + print('save_results:', save_results) + print('irrelevant_labels:', irrelevant_labels) + print() + + # generate preimages. + for fit_method in ['k-graphs', 'expert'] + ['random'] * 5: + print('\n-------------------------------------') + print('fit method:', fit_method, '\n') + mpg_options['fit_method'] = fit_method + generate_median_preimages_by_class(ds_name, mpg_options, kernel_options, ged_options, mge_options, save_results=save_results, save_medians=True, plot_medians=True, load_gm='auto', dir_save=dir_save, irrelevant_labels=irrelevant_labels, edge_required=edge_required) + + +def xp_median_preimage_12_3(): + """xp 12_3: PAH, Treelet, using CONSTANT, unlabeled. + """ + from gklearn.utils.kernels import gaussiankernel + # set parameters. + ds_name = 'PAH' # + mpg_options = {'fit_method': 'k-graphs', + 'init_ecc': [4, 4, 2, 1, 1, 1], # + 'ds_name': ds_name, + 'parallel': True, # False + 'time_limit_in_sec': 0, + 'max_itrs': 100, # + 'max_itrs_without_update': 3, + 'epsilon_residual': 0.01, + 'epsilon_ec': 0.1, + 'verbose': 2} + pkernel = functools.partial(gaussiankernel, gamma=None) # @todo + kernel_options = {'name': 'Treelet', # + 'sub_kernel': pkernel, + 'parallel': 'imap_unordered', + # 'parallel': None, + 'n_jobs': multiprocessing.cpu_count(), + 'normalize': True, + 'verbose': 2} + ged_options = {'method': 'IPFP', + 'initialization_method': 'RANDOM', # 'NODE' + 'initial_solutions': 10, # 1 + 'edit_cost': 'CONSTANT', # + 'attr_distance': 'euclidean', + 'ratio_runs_from_initial_solutions': 1, + 'threads': multiprocessing.cpu_count(), + 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'} + mge_options = {'init_type': 'MEDOID', + 'random_inits': 10, + 'time_limit': 600, + 'verbose': 2, + 'refine': False} + save_results = True + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.unlabeled/' + irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # + edge_required = False # + + # print settings. + print('parameters:') + print('dataset name:', ds_name) + print('mpg_options:', mpg_options) + print('kernel_options:', kernel_options) + print('ged_options:', ged_options) + print('mge_options:', mge_options) + print('save_results:', save_results) + print('irrelevant_labels:', irrelevant_labels) + print() + + # generate preimages. + for fit_method in ['k-graphs', 'expert'] + ['random'] * 5: + print('\n-------------------------------------') + print('fit method:', fit_method, '\n') + mpg_options['fit_method'] = fit_method + generate_median_preimages_by_class(ds_name, mpg_options, kernel_options, ged_options, mge_options, save_results=save_results, save_medians=True, plot_medians=True, load_gm='auto', dir_save=dir_save, irrelevant_labels=irrelevant_labels, edge_required=edge_required) + + +def xp_median_preimage_12_4(): + """xp 12_4: PAH, WeisfeilerLehman, using CONSTANT, unlabeled. + """ + # set parameters. + ds_name = 'PAH' # + mpg_options = {'fit_method': 'k-graphs', + 'init_ecc': [4, 4, 2, 1, 1, 1], # + 'ds_name': ds_name, + 'parallel': True, # False + 'time_limit_in_sec': 0, + 'max_itrs': 100, # + 'max_itrs_without_update': 3, + 'epsilon_residual': 0.01, + 'epsilon_ec': 0.1, + 'verbose': 2} + kernel_options = {'name': 'WeisfeilerLehman', + 'height': 14, + 'base_kernel': 'subtree', + 'parallel': 'imap_unordered', + # 'parallel': None, + 'n_jobs': multiprocessing.cpu_count(), + 'normalize': True, + 'verbose': 2} + ged_options = {'method': 'IPFP', + 'initialization_method': 'RANDOM', # 'NODE' + 'initial_solutions': 10, # 1 + 'edit_cost': 'CONSTANT', # + 'attr_distance': 'euclidean', + 'ratio_runs_from_initial_solutions': 1, + 'threads': multiprocessing.cpu_count(), + 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'} + mge_options = {'init_type': 'MEDOID', + 'random_inits': 10, + 'time_limit': 600, + 'verbose': 2, + 'refine': False} + save_results = True + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.unlabeled/' + irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # + edge_required = False # + + # print settings. + print('parameters:') + print('dataset name:', ds_name) + print('mpg_options:', mpg_options) + print('kernel_options:', kernel_options) + print('ged_options:', ged_options) + print('mge_options:', mge_options) + print('save_results:', save_results) + print('irrelevant_labels:', irrelevant_labels) + print() + +# # compute gram matrices for each class a priori. +# print('Compute gram matrices for each class a priori.') +# compute_gram_matrices_by_class(ds_name, kernel_options, save_results=True, dir_save=dir_save, irrelevant_labels=irrelevant_labels) + + # generate preimages. + for fit_method in ['k-graphs', 'expert'] + ['random'] * 5: + print('\n-------------------------------------') + print('fit method:', fit_method, '\n') + mpg_options['fit_method'] = fit_method + generate_median_preimages_by_class(ds_name, mpg_options, kernel_options, ged_options, mge_options, save_results=save_results, save_medians=True, plot_medians=True, load_gm='auto', dir_save=dir_save, irrelevant_labels=irrelevant_labels, edge_required=edge_required) + + +def xp_median_preimage_12_5(): + """xp 12_5: PAH, ShortestPath, using NON_SYMBOLIC, unlabeled. + """ + # set parameters. + ds_name = 'PAH' # + mpg_options = {'fit_method': 'k-graphs', + 'init_ecc': [4, 4, 0, 1, 1, 0], # + 'ds_name': ds_name, + 'parallel': True, # False + 'time_limit_in_sec': 0, + 'max_itrs': 100, + 'max_itrs_without_update': 3, + 'epsilon_residual': 0.01, + 'epsilon_ec': 0.1, + 'verbose': 2} + mixkernel = functools.partial(kernelproduct, deltakernel, gaussiankernel) + sub_kernels = {'symb': deltakernel, 'nsymb': gaussiankernel, 'mix': mixkernel} + kernel_options = {'name': 'ShortestPath', + 'edge_weight': None, + 'node_kernels': sub_kernels, + 'parallel': 'imap_unordered', + # 'parallel': None, + 'n_jobs': multiprocessing.cpu_count(), + 'normalize': True, + 'verbose': 2} + ged_options = {'method': 'IPFP', + 'initialization_method': 'RANDOM', # 'NODE' + 'initial_solutions': 10, # 1 + 'edit_cost': 'NON_SYMBOLIC', # + 'attr_distance': 'euclidean', + 'ratio_runs_from_initial_solutions': 1, + 'threads': multiprocessing.cpu_count(), + 'init_option': 'EAGER_WITHOUT_SHUFFLED_COPIES'} + mge_options = {'init_type': 'MEDOID', + 'random_inits': 10, + 'time_limit': 600, + 'verbose': 2, + 'refine': False} + save_results = True + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.unlabeled/' # + irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # + edge_required = True # + + # print settings. + print('parameters:') + print('dataset name:', ds_name) + print('mpg_options:', mpg_options) + print('kernel_options:', kernel_options) + print('ged_options:', ged_options) + print('mge_options:', mge_options) + print('save_results:', save_results) + print('irrelevant_labels:', irrelevant_labels) + print() + + # generate preimages. + for fit_method in ['k-graphs', 'expert'] + ['random'] * 5: # + print('\n-------------------------------------') + print('fit method:', fit_method, '\n') + mpg_options['fit_method'] = fit_method + generate_median_preimages_by_class(ds_name, mpg_options, kernel_options, ged_options, mge_options, save_results=save_results, save_medians=True, plot_medians=True, load_gm='auto', dir_save=dir_save, irrelevant_labels=irrelevant_labels, edge_required=edge_required) + + def xp_median_preimage_9_1(): """xp 9_1: MAO, StructuralSP, using CONSTANT, symbolic only. """ @@ -53,7 +365,7 @@ def xp_median_preimage_9_1(): 'verbose': 2, 'refine': False} save_results = True - dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/' + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.symb/' irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # edge_required = False # @@ -114,7 +426,7 @@ def xp_median_preimage_9_2(): 'verbose': 2, 'refine': False} save_results = True - dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/' + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.symb/' irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # edge_required = False # @@ -138,7 +450,7 @@ def xp_median_preimage_9_2(): def xp_median_preimage_9_3(): - """xp 9_3: MAO, Treelet, using CONSTANT. + """xp 9_3: MAO, Treelet, using CONSTANT, symbolic only. """ from gklearn.utils.kernels import polynomialkernel # set parameters. @@ -175,8 +487,8 @@ def xp_median_preimage_9_3(): 'verbose': 2, 'refine': False} save_results = True - dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/' - irrelevant_labels = None # + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.symb/' + irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # edge_required = False # # print settings. @@ -199,7 +511,7 @@ def xp_median_preimage_9_3(): def xp_median_preimage_9_4(): - """xp 9_4: MAO, WeisfeilerLehman, using CONSTANT. + """xp 9_4: MAO, WeisfeilerLehman, using CONSTANT, symbolic only. """ # set parameters. ds_name = 'MAO' # @@ -235,8 +547,8 @@ def xp_median_preimage_9_4(): 'verbose': 2, 'refine': False} save_results = True - dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/' - irrelevant_labels = None # + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.symb/' + irrelevant_labels = {'node_attrs': ['x', 'y', 'z'], 'edge_labels': ['bond_stereo']} # edge_required = False # # print settings. @@ -250,6 +562,10 @@ def xp_median_preimage_9_4(): print('irrelevant_labels:', irrelevant_labels) print() +# # compute gram matrices for each class a priori. +# print('Compute gram matrices for each class a priori.') +# compute_gram_matrices_by_class(ds_name, kernel_options, save_results=True, dir_save=dir_save, irrelevant_labels=irrelevant_labels) + # generate preimages. for fit_method in ['k-graphs', 'expert'] + ['random'] * 5: print('\n-------------------------------------') @@ -1171,7 +1487,7 @@ def xp_median_preimage_2_1(): 'verbose': 2, 'refine': False} save_results = True - dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '/' + dir_save = '../results/xp_median_preimage/' + ds_name + '.' + kernel_options['name'] + '.node_attrs/' irrelevant_labels = {'edge_labels': ['valence']} # print settings. @@ -1565,77 +1881,152 @@ def xp_median_preimage_11_2(): if __name__ == "__main__": - #### xp 1_1: Letter-high, StructuralSP. - # xp_median_preimage_1_1() +# #### xp 1_1: Letter-high, StructuralSP. +# # xp_median_preimage_1_1() - #### xp 1_2: Letter-high, ShortestPath. -# xp_median_preimage_1_2() +# #### xp 1_2: Letter-high, ShortestPath. +# # xp_median_preimage_1_2() - #### xp 10_1: Letter-med, StructuralSP. - # xp_median_preimage_10_1() +# #### xp 10_1: Letter-med, StructuralSP. +# # xp_median_preimage_10_1() - #### xp 10_2: Letter-med, ShortestPath. - # xp_median_preimage_10_2() +# #### xp 10_2: Letter-med, ShortestPath. +# # xp_median_preimage_10_2() - #### xp 11_1: Letter-low, StructuralSP. - # xp_median_preimage_11_1() +# #### xp 11_1: Letter-low, StructuralSP. +# # xp_median_preimage_11_1() - #### xp 11_2: Letter-low, ShortestPath. -# xp_median_preimage_11_2() - - #### xp 2_1: COIL-DEL, StructuralSP, using LETTER2, only node attrs. -# xp_median_preimage_2_1() - - #### xp 3_1: Fingerprint, StructuralSP, using LETTER2, only node attrs. - # xp_median_preimage_3_1() +# #### xp 11_2: Letter-low, ShortestPath. +# # xp_median_preimage_11_2() +# +# #### xp 2_1: COIL-DEL, StructuralSP, using LETTER2, only node attrs. +# # xp_median_preimage_2_1() +# +# #### xp 3_1: Fingerprint, StructuralSP, using LETTER2, only node attrs. +# # xp_median_preimage_3_1() - #### xp 3_2: Fingerprint, ShortestPath, using LETTER2, only node attrs. -# xp_median_preimage_3_2() +# #### xp 3_2: Fingerprint, ShortestPath, using LETTER2, only node attrs. + # xp_median_preimage_3_2() - #### xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC. -# xp_median_preimage_4_1() - - #### xp 5_1: FRANKENSTEIN, StructuralSP, using NON_SYMBOLIC. -# xp_median_preimage_5_1() - - #### xp 6_1: COIL-RAG, StructuralSP, using NON_SYMBOLIC. - # xp_median_preimage_6_1() +# #### xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC. +# # xp_median_preimage_4_1() +# +# #### xp 5_1: FRANKENSTEIN, StructuralSP, using NON_SYMBOLIC. +# # xp_median_preimage_5_1() +# +# #### xp 6_1: COIL-RAG, StructuralSP, using NON_SYMBOLIC. +# # xp_median_preimage_6_1() - #### xp 6_2: COIL-RAG, ShortestPath, using NON_SYMBOLIC. -# xp_median_preimage_6_2() +# #### xp 6_2: COIL-RAG, ShortestPath, using NON_SYMBOLIC. + # xp_median_preimage_6_2() - #### xp 7_1: MUTAG, StructuralSP, using CONSTANT. - # xp_median_preimage_7_1() +# #### xp 7_1: MUTAG, StructuralSP, using CONSTANT. +# # xp_median_preimage_7_1() - #### xp 7_2: MUTAG, PathUpToH, using CONSTANT. - # xp_median_preimage_7_2() +# #### xp 7_2: MUTAG, PathUpToH, using CONSTANT. +# # xp_median_preimage_7_2() - #### xp 7_3: MUTAG, Treelet, using CONSTANT. - # xp_median_preimage_7_3() +# #### xp 7_3: MUTAG, Treelet, using CONSTANT. +# # xp_median_preimage_7_3() - #### xp 7_4: MUTAG, WeisfeilerLehman, using CONSTANT. -# xp_median_preimage_7_4() - - #### xp 8_1: Monoterpenoides, StructuralSP, using CONSTANT. -# xp_median_preimage_8_1() +# #### xp 7_4: MUTAG, WeisfeilerLehman, using CONSTANT. +# xp_median_preimage_7_4() +# +# #### xp 8_1: Monoterpenoides, StructuralSP, using CONSTANT. +# # xp_median_preimage_8_1() - #### xp 8_2: Monoterpenoides, PathUpToH, using CONSTANT. - # xp_median_preimage_8_2() +# #### xp 8_2: Monoterpenoides, PathUpToH, using CONSTANT. +# # xp_median_preimage_8_2() - #### xp 8_3: Monoterpenoides, Treelet, using CONSTANT. -# xp_median_preimage_8_3() +# #### xp 8_3: Monoterpenoides, Treelet, using CONSTANT. +# # xp_median_preimage_8_3() - #### xp 8_4: Monoterpenoides, WeisfeilerLehman, using CONSTANT. -# xp_median_preimage_8_4() +# #### xp 8_4: Monoterpenoides, WeisfeilerLehman, using CONSTANT. +# xp_median_preimage_8_4() - #### xp 9_1: MAO, StructuralSP, using CONSTANT, symbolic only. -# xp_median_preimage_9_1() +# #### xp 9_1: MAO, StructuralSP, using CONSTANT, symbolic only. + # xp_median_preimage_9_1() - #### xp 9_2: MAO, PathUpToH, using CONSTANT, symbolic only. +# #### xp 9_2: MAO, PathUpToH, using CONSTANT, symbolic only. # xp_median_preimage_9_2() - #### xp 9_3: MAO, Treelet, using CONSTANT. -# xp_median_preimage_9_3() +# #### xp 9_3: MAO, Treelet, using CONSTANT, symbolic only. + # xp_median_preimage_9_3() + +# #### xp 9_4: MAO, WeisfeilerLehman, using CONSTANT, symbolic only. + # xp_median_preimage_9_4() + + #### xp 12_1: PAH, StructuralSP, using NON_SYMBOLIC, unlabeled. + # xp_median_preimage_12_1() + + #### xp 12_2: PAH, PathUpToH, using CONSTANT, unlabeled. + # xp_median_preimage_12_2() + + #### xp 12_3: PAH, Treelet, using CONSTANT, unlabeled. +# xp_median_preimage_12_3() + + #### xp 12_4: PAH, WeisfeilerLehman, using CONSTANT, unlabeled. + # xp_median_preimage_12_4() + + #### xp 12_5: PAH, ShortestPath, using NON_SYMBOLIC, unlabeled. + xp_median_preimage_12_5() + + + + +# #### xp 7_4: MUTAG, WeisfeilerLehman, using CONSTANT. + # xp_median_preimage_7_4() + +# #### xp 8_4: Monoterpenoides, WeisfeilerLehman, using CONSTANT. + # xp_median_preimage_8_4() + +# #### xp 9_4: MAO, WeisfeilerLehman, using CONSTANT, symbolic only. + # xp_median_preimage_9_4() + +# #### xp 10_1: Letter-med, StructuralSP. +# xp_median_preimage_10_1() + +# #### xp 10_2: Letter-med, ShortestPath. +# xp_median_preimage_10_2() + +# #### xp 11_1: Letter-low, StructuralSP. +# xp_median_preimage_11_1() + +# #### xp 11_2: Letter-low, ShortestPath. +# xp_median_preimage_11_2() +# +# #### xp 1_1: Letter-high, StructuralSP. +# xp_median_preimage_1_1() + +# #### xp 1_2: Letter-high, ShortestPath. +# xp_median_preimage_1_2() + +# #### xp 3_1: Fingerprint, StructuralSP, using LETTER2, only node attrs. +# xp_median_preimage_3_1() +# + # #### xp 6_1: COIL-RAG, StructuralSP, using NON_SYMBOLIC. + # xp_median_preimage_6_1() + + # #### xp 6_2: COIL-RAG, ShortestPath, using NON_SYMBOLIC. + # xp_median_preimage_6_2() + # + # #### xp 3_2: Fingerprint, ShortestPath, using LETTER2, only node attrs. + # xp_median_preimage_3_2() + + #### xp 7_1: MUTAG, StructuralSP, using CONSTANT. + # xp_median_preimage_7_1() + + # #### xp 8_1: Monoterpenoides, StructuralSP, using CONSTANT. + # xp_median_preimage_8_1() + + # #### xp 9_1: MAO, StructuralSP, using CONSTANT, symbolic only. + # xp_median_preimage_9_1() + + # #### xp 2_1: COIL-DEL, StructuralSP, using LETTER2, only node attrs. + # xp_median_preimage_2_1() + + #### xp 5_1: FRANKENSTEIN, StructuralSP, using NON_SYMBOLIC. + # xp_median_preimage_5_1() - #### xp 9_4: MAO, WeisfeilerLehman, using CONSTANT. - xp_median_preimage_9_4() \ No newline at end of file + #### xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC. + # xp_median_preimage_4_1() diff --git a/gklearn/utils/dataset.py b/gklearn/utils/dataset.py index abd7edd..85f0d0b 100644 --- a/gklearn/utils/dataset.py +++ b/gklearn/utils/dataset.py @@ -113,6 +113,9 @@ class Dataset(object): elif ds_name == 'MUTAG': ds_file = current_path + '../../datasets/MUTAG/MUTAG_A.txt' self.__graphs, self.__targets, label_names = load_dataset(ds_file) + elif ds_name == 'PAH': + ds_file = current_path + '../../datasets/PAH/dataset.ds' + self.__graphs, self.__targets, label_names = load_dataset(ds_file) elif ds_name == 'SYNTHETIC': pass elif ds_name == 'SYNTHETICnew': diff --git a/gklearn/utils/utils.py b/gklearn/utils/utils.py index 17954f5..1a6f8d4 100644 --- a/gklearn/utils/utils.py +++ b/gklearn/utils/utils.py @@ -299,11 +299,41 @@ def get_edge_labels(Gn, edge_label): def get_graph_kernel_by_name(name, node_labels=None, edge_labels=None, node_attrs=None, edge_attrs=None, ds_infos=None, kernel_options={}): - if name == 'structuralspkernel': + if name == 'ShortestPath': + from gklearn.kernels import ShortestPath + graph_kernel = ShortestPath(node_labels=node_labels, + node_attrs=node_attrs, + ds_infos=ds_infos, + **kernel_options) + elif name == 'StructuralSP': from gklearn.kernels import StructuralSP - graph_kernel = StructuralSP(node_labels=node_labels, edge_labels=edge_labels, - node_attrs=node_attrs, edge_attrs=edge_attrs, - ds_infos=ds_infos, **kernel_options) + graph_kernel = StructuralSP(node_labels=node_labels, + edge_labels=edge_labels, + node_attrs=node_attrs, + edge_attrs=edge_attrs, + ds_infos=ds_infos, + **kernel_options) + elif name == 'PathUpToH': + from gklearn.kernels import PathUpToH + graph_kernel = PathUpToH(node_labels=node_labels, + edge_labels=edge_labels, + ds_infos=ds_infos, + **kernel_options) + elif name == 'Treelet': + from gklearn.kernels import Treelet + graph_kernel = Treelet(node_labels=node_labels, + edge_labels=edge_labels, + ds_infos=ds_infos, + **kernel_options) + elif name == 'WeisfeilerLehman': + from gklearn.kernels import WeisfeilerLehman + graph_kernel = WeisfeilerLehman(node_labels=node_labels, + edge_labels=edge_labels, + ds_infos=ds_infos, + **kernel_options) + else: + raise Exception('The graph kernel given is not defined. Possible choices include: "StructuralSP", "ShortestPath", "PathUpToH", "Treelet", "WeisfeilerLehman".') + return graph_kernel