From b4747fc16b3f959f08115fb3e5d220fa01729717 Mon Sep 17 00:00:00 2001 From: jajupmochi Date: Tue, 7 Apr 2020 16:55:36 +0200 Subject: [PATCH] fix bug "AttributeError("'Graph' object has no attribute 'node'",)" for new version of NetworkX. --- gklearn/kernels/__init__.py | 1 + gklearn/kernels/graph_kernel.py | 2 +- gklearn/kernels/treeletKernel.py | 2 +- gklearn/kernels/untilHPathKernel.py | 2 +- gklearn/preimage/median_preimage_generator.py | 2 +- gklearn/utils/utils.py | 2 +- 6 files changed, 6 insertions(+), 5 deletions(-) diff --git a/gklearn/kernels/__init__.py b/gklearn/kernels/__init__.py index 951c04a..73147ba 100644 --- a/gklearn/kernels/__init__.py +++ b/gklearn/kernels/__init__.py @@ -9,3 +9,4 @@ __date__ = "November 2018" from gklearn.kernels.graph_kernel import GraphKernel from gklearn.kernels.structural_sp import StructuralSP +from gklearn.kernels.shortest_path import ShortestPath diff --git a/gklearn/kernels/graph_kernel.py b/gklearn/kernels/graph_kernel.py index e703981..6f667e1 100644 --- a/gklearn/kernels/graph_kernel.py +++ b/gklearn/kernels/graph_kernel.py @@ -44,7 +44,7 @@ class GraphKernel(object): elif len(graphs) == 2: if self.is_graph(graphs[0]) and self.is_graph(graphs[1]): - kernel = self.__compute_single_kernel(graphs[0], graphs[1]) + kernel = self.__compute_single_kernel(graphs[0].copy(), graphs[1].copy()) return kernel, self._run_time elif self.is_graph(graphs[0]) and isinstance(graphs[1], list): g1 = graphs[0].copy() diff --git a/gklearn/kernels/treeletKernel.py b/gklearn/kernels/treeletKernel.py index 85fc3c7..51cdd08 100644 --- a/gklearn/kernels/treeletKernel.py +++ b/gklearn/kernels/treeletKernel.py @@ -308,7 +308,7 @@ def get_canonkeys(G, node_label, edge_label, labeled, is_directed): for i in range(1, 6): # for i in range(1, 6): treelet = [] for pattern in patterns[str(i)]: - canonlist = list(chain.from_iterable((G.node[node][node_label], \ + canonlist = list(chain.from_iterable((G.nodes[node][node_label], \ G[node][pattern[idx+1]][edge_label]) for idx, node in enumerate(pattern[:-1]))) canonlist.append(G.node[pattern[-1]][node_label]) canonkey_t = canonlist if canonlist < canonlist[::-1] else canonlist[::-1] diff --git a/gklearn/kernels/untilHPathKernel.py b/gklearn/kernels/untilHPathKernel.py index 55649f7..052ea93 100644 --- a/gklearn/kernels/untilHPathKernel.py +++ b/gklearn/kernels/untilHPathKernel.py @@ -637,7 +637,7 @@ def paths2labelseqs(plist, G, ds_attrs, node_label, edge_label): (G.node[node][node_label], G[node][path[idx + 1]][edge_label]) for idx, node in enumerate(path[:-1]))) + - [G.node[path[-1]][node_label]]) for path in plist + [G.nodes[path[-1]][node_label]]) for path in plist ] # path_strs = [] # for path in all_paths: diff --git a/gklearn/preimage/median_preimage_generator.py b/gklearn/preimage/median_preimage_generator.py index b10a598..b4f4f80 100644 --- a/gklearn/preimage/median_preimage_generator.py +++ b/gklearn/preimage/median_preimage_generator.py @@ -704,7 +704,7 @@ class MedianPreimageGenerator(PreimageGenerator): # def __clean_graph(self, G, node_labels=[], edge_labels=[], node_attrs=[], edge_attrs=[]): - def __clean_graph(self, G): + def __clean_graph(self, G): # @todo: this may not be needed when datafile is updated. """ Cleans node and edge labels and attributes of the given graph. """ diff --git a/gklearn/utils/utils.py b/gklearn/utils/utils.py index 2a95ea2..d888591 100644 --- a/gklearn/utils/utils.py +++ b/gklearn/utils/utils.py @@ -134,7 +134,7 @@ def untotterTransformation(G, node_label, edge_label): gt.add_nodes_from(G.nodes(data=True)) for edge in G.edges(): gt.add_node(edge) - gt.node[edge].update({node_label: G.node[edge[1]][node_label]}) + gt.nodes[edge].update({node_label: G.node[edge[1]][node_label]}) gt.add_edge(edge[0], edge) gt.edges[edge[0], edge].update({ edge_label: