diff --git a/lang/fr/gklearn/kernels/structural_sp.py b/lang/fr/gklearn/kernels/structural_sp.py index 4b9fb26..254f2cc 100644 --- a/lang/fr/gklearn/kernels/structural_sp.py +++ b/lang/fr/gklearn/kernels/structural_sp.py @@ -18,7 +18,7 @@ from tqdm import tqdm # import networkx as nx import numpy as np from gklearn.utils.parallel import parallel_gm, parallel_me -from gklearn.utils.utils import get_shortest_paths +from gklearn.utils.utils import get_shortest_paths, compute_vertex_kernels from gklearn.kernels import GraphKernel @@ -57,7 +57,7 @@ class StructuralSP(GraphKernel): from itertools import combinations_with_replacement itr = combinations_with_replacement(range(0, len(self._graphs)), 2) if self._verbose >= 2: - iterator = tqdm(itr, desc='calculating kernels', file=sys.stdout) + iterator = tqdm(itr, desc='Computing kernels', file=sys.stdout) else: iterator = itr if self.__compute_method == 'trie': @@ -135,7 +135,7 @@ class StructuralSP(GraphKernel): # compute kernel list. kernel_list = [None] * len(g_list) if self._verbose >= 2: - iterator = tqdm(range(len(g_list)), desc='calculating kernels', file=sys.stdout) + iterator = tqdm(range(len(g_list)), desc='Computing kernels', file=sys.stdout) else: iterator = range(len(g_list)) if self.__compute_method == 'trie': @@ -193,7 +193,7 @@ class StructuralSP(GraphKernel): itr = range(len(g_list)) len_itr = len(g_list) parallel_me(do_fun, func_assign, kernel_list, itr, len_itr=len_itr, - init_worker=init_worker, glbv=(sp1, splist, g1, g_list), method='imap_unordered', n_jobs=self._n_jobs, itr_desc='calculating kernels', verbose=self._verbose) + init_worker=init_worker, glbv=(sp1, splist, g1, g_list), method='imap_unordered', n_jobs=self._n_jobs, itr_desc='Computing kernels', verbose=self._verbose) return kernel_list @@ -273,7 +273,7 @@ class StructuralSP(GraphKernel): if len(p1) == len(p2): kernel += 1 try: - kernel = kernel / (len(spl1) * len(spl2)) # calculate mean average + kernel = kernel / (len(spl1) * len(spl2)) # Compute mean average except ZeroDivisionError: print(spl1, spl2) print(g1.nodes(data=True)) @@ -318,40 +318,7 @@ class StructuralSP(GraphKernel): def __get_all_node_kernels(self, g1, g2): - # compute shortest path matrices, method borrowed from FCSP. - vk_dict = {} # shortest path matrices dict - if len(self.__node_labels) > 0: - # node symb and non-synb labeled - if len(self.__node_attrs) > 0: - kn = self.__node_kernels['mix'] - for n1, n2 in product(g1.nodes(data=True), g2.nodes(data=True)): - n1_labels = [n1[1][nl] for nl in self.__node_labels] - n2_labels = [n2[1][nl] for nl in self.__node_labels] - n1_attrs = [n1[1][na] for na in self.__node_attrs] - n2_attrs = [n2[1][na] for na in self.__node_attrs] - vk_dict[(n1[0], n2[0])] = kn(n1_labels, n2_labels, n1_attrs, n2_attrs) - # node symb labeled - else: - kn = self.__node_kernels['symb'] - for n1 in g1.nodes(data=True): - for n2 in g2.nodes(data=True): - n1_labels = [n1[1][nl] for nl in self.__node_labels] - n2_labels = [n2[1][nl] for nl in self.__node_labels] - vk_dict[(n1[0], n2[0])] = kn(n1_labels, n2_labels) - else: - # node non-synb labeled - if len(self.__node_attrs) > 0: - kn = self.__node_kernels['nsymb'] - for n1 in g1.nodes(data=True): - for n2 in g2.nodes(data=True): - n1_attrs = [n1[1][na] for na in self.__node_attrs] - n2_attrs = [n2[1][na] for na in self.__node_attrs] - vk_dict[(n1[0], n2[0])] = kn(n1_attrs, n2_attrs) - # node unlabeled - else: - pass - - return vk_dict + return compute_vertex_kernels(g1, g2, self._node_kernels, node_labels=self._node_labels, node_attrs=self._node_attrs) def __get_all_edge_kernels(self, g1, g2):