Browse Source

Fix bugs.

v0.2.x
jajupmochi 5 years ago
parent
commit
78999e859c
4 changed files with 504 additions and 70 deletions
  1. +13
    -3
      gklearn/kernels/weisfeiler_lehman.py
  2. +454
    -63
      gklearn/preimage/experiments/xp_median_preimage.py
  3. +3
    -0
      gklearn/utils/dataset.py
  4. +34
    -4
      gklearn/utils/utils.py

+ 13
- 3
gklearn/kernels/weisfeiler_lehman.py View File

@@ -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):


+ 454
- 63
gklearn/preimage/experiments/xp_median_preimage.py View File

@@ -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()
#### xp 4_1: COLORS-3, StructuralSP, using NON_SYMBOLIC.
# xp_median_preimage_4_1()

+ 3
- 0
gklearn/utils/dataset.py View File

@@ -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':


+ 34
- 4
gklearn/utils/utils.py View File

@@ -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




Loading…
Cancel
Save