def _compute_single_kernel_series(self, g1, g2): self.__add_dummy_labels([g1] + [g2]) if self.__remove_totters: g1 = untotterTransformation(g1, self.__node_label, self.__edge_label) # @todo: this may not work. g2 = untotterTransformation(g2, self.__node_label, self.__edge_label) kernel = self.__kernel_do(g1, g2) return kernel
def _compute_kernel_list_series(self, g1, g_list): self._add_dummy_labels(g_list + [g1]) if self._remove_totters: g1 = untotterTransformation( g1, self._node_labels, self._edge_labels) # @todo: this may not work. iterator = get_iters(g_list, desc='removing tottering', file=sys.stdout, verbose=(self._verbose >= 2)) # @todo: this may not work. g_list = [ untotterTransformation(G, self._node_labels, self._edge_labels) for G in iterator ] # compute kernel list. kernel_list = [None] * len(g_list) iterator = get_iters(range(len(g_list)), desc='Computing kernels', file=sys.stdout, length=len(g_list), verbose=(self._verbose >= 2)) for i in iterator: kernel = self._kernel_do(g1, g_list[i]) kernel_list[i] = kernel return kernel_list
def _compute_gm_series(self): self.__add_dummy_labels(self._graphs) if self.__remove_totters: if self._verbose >= 2: iterator = tqdm(self._graphs, desc='removing tottering', file=sys.stdout) else: iterator = self._graphs # @todo: this may not work. self._graphs = [untotterTransformation(G, self.__node_label, self.__edge_label) for G in iterator] # compute Gram matrix. gram_matrix = np.zeros((len(self._graphs), len(self._graphs))) 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) else: iterator = itr for i, j in iterator: kernel = self.__kernel_do(self._graphs[i], self._graphs[j]) gram_matrix[i][j] = kernel gram_matrix[j][i] = kernel # @todo: no directed graph considered? return gram_matrix
def _compute_gm_series(self): self._add_dummy_labels(self._graphs) if self._remove_totters: iterator = get_iters(self._graphs, desc='removing tottering', file=sys.stdout, verbose=(self._verbose >= 2)) # @todo: this may not work. self._graphs = [ untotterTransformation(G, self._node_labels, self._edge_labels) for G in iterator ] # compute Gram matrix. gram_matrix = np.zeros((len(self._graphs), len(self._graphs))) from itertools import combinations_with_replacement itr = combinations_with_replacement(range(0, len(self._graphs)), 2) len_itr = int(len(self._graphs) * (len(self._graphs) + 1) / 2) iterator = get_iters(itr, desc='Computing kernels', file=sys.stdout, length=len_itr, verbose=(self._verbose >= 2)) for i, j in iterator: kernel = self._kernel_do(self._graphs[i], self._graphs[j]) gram_matrix[i][j] = kernel gram_matrix[j][i] = kernel # @todo: no directed graph considered? return gram_matrix
def _compute_kernel_list_imap_unordered(self, g1, g_list): self._add_dummy_labels(g_list + [g1]) if self._remove_totters: g1 = untotterTransformation( g1, self._node_labels, self._edge_labels) # @todo: this may not work. pool = Pool(self._n_jobs) itr = range(0, len(g_list)) if len(g_list) < 100 * self._n_jobs: chunksize = int(len(g_list) / self._n_jobs) + 1 else: chunksize = 100 remove_fun = self._wrapper_untotter iterator = get_iters(pool.imap_unordered(remove_fun, itr, chunksize), desc='removing tottering', file=sys.stdout, length=len(g_list), verbose=(self._verbose >= 2)) for i, g in iterator: g_list[i] = g pool.close() pool.join() # compute kernel list. kernel_list = [None] * len(g_list) def init_worker(g1_toshare, g_list_toshare): global G_g1, G_g_list G_g1 = g1_toshare G_g_list = g_list_toshare do_fun = self._wrapper_kernel_list_do def func_assign(result, var_to_assign): var_to_assign[result[0]] = result[1] 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=(g1, g_list), method='imap_unordered', n_jobs=self._n_jobs, itr_desc='Computing kernels', verbose=self._verbose) return kernel_list
def _compute_kernel_list_series(self, g1, g_list): self.__add_dummy_labels(g_list + [g1]) if self.__remove_totters: g1 = untotterTransformation(g1, self.__node_label, self.__edge_label) # @todo: this may not work. if self._verbose >= 2: iterator = tqdm(g_list, desc='removing tottering', file=sys.stdout) else: iterator = g_list # @todo: this may not work. g_list = [untotterTransformation(G, self.__node_label, self.__edge_label) for G in iterator] # 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) else: iterator = range(len(g_list)) for i in iterator: kernel = self.__kernel_do(g1, g_list[i]) kernel_list[i] = kernel return kernel_list
def _wrapper_untotter(self, i): return i, untotterTransformation(self._graphs[i], self.__node_label, self.__edge_label) # @todo: this may not work.
def wrapper_untotter(Gn, node_label, edge_label, i): return i, untotterTransformation(Gn[i], node_label, edge_label)