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