From 349d7a76caf583580aeabb6f37b365701d0cdc3e Mon Sep 17 00:00:00 2001 From: jajupmochi Date: Sun, 3 Jan 2021 15:17:26 +0100 Subject: [PATCH] Use get_iters function instead of tqdm in StructuralSP. --- gklearn/kernels/graph_kernel.py | 2 +- gklearn/kernels/structural_sp.py | 42 ++++++++++++++-------------------------- 2 files changed, 16 insertions(+), 28 deletions(-) diff --git a/gklearn/kernels/graph_kernel.py b/gklearn/kernels/graph_kernel.py index e9a4032..2692713 100644 --- a/gklearn/kernels/graph_kernel.py +++ b/gklearn/kernels/graph_kernel.py @@ -37,7 +37,7 @@ class GraphKernel(object): elif len(graphs[0]) == 0: raise Exception('The graph list given is empty. No computation was performed.') else: - self._graphs = [g.copy() for g in graphs[0]] + self._graphs = [g.copy() for g in graphs[0]] # @todo: might be very slow. self._gram_matrix = self._compute_gram_matrix() self._gram_matrix_unnorm = np.copy(self._gram_matrix) if self._normalize: diff --git a/gklearn/kernels/structural_sp.py b/gklearn/kernels/structural_sp.py index 5662d18..35ed9d1 100644 --- a/gklearn/kernels/structural_sp.py +++ b/gklearn/kernels/structural_sp.py @@ -14,7 +14,7 @@ import sys from itertools import product # from functools import partial from multiprocessing import Pool -from tqdm import tqdm +from gklearn.utils import get_iters # import networkx as nx import numpy as np from gklearn.utils.parallel import parallel_gm, parallel_me @@ -41,10 +41,7 @@ class StructuralSP(GraphKernel): def _compute_gm_series(self): # get shortest paths of each graph in the graphs. splist = [] - if self._verbose >= 2: - iterator = tqdm(self._graphs, desc='getting sp graphs', file=sys.stdout) - else: - iterator = self._graphs + iterator = get_iters(self._graphs, desc='getting sp graphs', file=sys.stdout, verbose=(self._verbose >= 2)) if self._compute_method == 'trie': for g in iterator: splist.append(self._get_sps_as_trie(g)) @@ -57,10 +54,9 @@ 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='Computing kernels', file=sys.stdout) - else: - iterator = itr + 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)) if self._compute_method == 'trie': for i, j in iterator: kernel = self._ssp_do_trie(self._graphs[i], self._graphs[j], splist[i], splist[j]) @@ -91,11 +87,9 @@ class StructuralSP(GraphKernel): get_sps_fun = self._wrapper_get_sps_trie else: get_sps_fun = self._wrapper_get_sps_naive - if self.verbose >= 2: - iterator = tqdm(pool.imap_unordered(get_sps_fun, itr, chunksize), - desc='getting shortest paths', file=sys.stdout) - else: - iterator = pool.imap_unordered(get_sps_fun, itr, chunksize) + iterator = get_iters(pool.imap_unordered(get_sps_fun, itr, chunksize), + desc='getting shortest paths', file=sys.stdout, + length=len(self._graphs), verbose=(self._verbose >= 2)) for i, sp in iterator: splist[i] = sp pool.close() @@ -122,10 +116,8 @@ class StructuralSP(GraphKernel): # get shortest paths of g1 and each graph in g_list. sp1 = get_shortest_paths(g1, self._edge_weight, self._ds_infos['directed']) splist = [] - if self._verbose >= 2: - iterator = tqdm(g_list, desc='getting sp graphs', file=sys.stdout) - else: - iterator = g_list + iterator = get_iters(g_list, desc='getting sp graphs', file=sys.stdout, + verbose=(self._verbose >= 2)) if self._compute_method == 'trie': for g in iterator: splist.append(self._get_sps_as_trie(g)) @@ -135,10 +127,8 @@ class StructuralSP(GraphKernel): # compute kernel list. kernel_list = [None] * len(g_list) - if self._verbose >= 2: - iterator = tqdm(range(len(g_list)), desc='Computing kernels', file=sys.stdout) - else: - iterator = range(len(g_list)) + iterator = get_iters(range(len(g_list)), desc='Computing kernels', + file=sys.stdout, length=len(g_list), verbose=(self._verbose >= 2)) if self._compute_method == 'trie': for i in iterator: kernel = self._ssp_do_trie(g1, g_list[i], sp1, splist[i]) @@ -166,11 +156,9 @@ class StructuralSP(GraphKernel): get_sps_fun = self._wrapper_get_sps_trie else: get_sps_fun = self._wrapper_get_sps_naive - if self.verbose >= 2: - iterator = tqdm(pool.imap_unordered(get_sps_fun, itr, chunksize), - desc='getting shortest paths', file=sys.stdout) - else: - iterator = pool.imap_unordered(get_sps_fun, itr, chunksize) + iterator = get_iters(pool.imap_unordered(get_sps_fun, itr, chunksize), + desc='getting shortest paths', file=sys.stdout, + length=len(g_list), verbose=(self._verbose >= 2)) for i, sp in iterator: splist[i] = sp pool.close()