@@ -9,3 +9,4 @@ __date__ = "November 2018" | |||||
from gklearn.kernels.graph_kernel import GraphKernel | from gklearn.kernels.graph_kernel import GraphKernel | ||||
from gklearn.kernels.structural_sp import StructuralSP | from gklearn.kernels.structural_sp import StructuralSP | ||||
from gklearn.kernels.shortest_path import ShortestPath |
@@ -44,7 +44,7 @@ class GraphKernel(object): | |||||
elif len(graphs) == 2: | elif len(graphs) == 2: | ||||
if self.is_graph(graphs[0]) and self.is_graph(graphs[1]): | 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 | return kernel, self._run_time | ||||
elif self.is_graph(graphs[0]) and isinstance(graphs[1], list): | elif self.is_graph(graphs[0]) and isinstance(graphs[1], list): | ||||
g1 = graphs[0].copy() | g1 = graphs[0].copy() | ||||
@@ -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): | for i in range(1, 6): # for i in range(1, 6): | ||||
treelet = [] | treelet = [] | ||||
for pattern in patterns[str(i)]: | 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]))) | G[node][pattern[idx+1]][edge_label]) for idx, node in enumerate(pattern[:-1]))) | ||||
canonlist.append(G.node[pattern[-1]][node_label]) | canonlist.append(G.node[pattern[-1]][node_label]) | ||||
canonkey_t = canonlist if canonlist < canonlist[::-1] else canonlist[::-1] | canonkey_t = canonlist if canonlist < canonlist[::-1] else canonlist[::-1] | ||||
@@ -637,7 +637,7 @@ def paths2labelseqs(plist, G, ds_attrs, node_label, edge_label): | |||||
(G.node[node][node_label], | (G.node[node][node_label], | ||||
G[node][path[idx + 1]][edge_label]) | G[node][path[idx + 1]][edge_label]) | ||||
for idx, node in enumerate(path[:-1]))) + | 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 = [] | # path_strs = [] | ||||
# for path in all_paths: | # for path in all_paths: | ||||
@@ -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, 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. | Cleans node and edge labels and attributes of the given graph. | ||||
""" | """ | ||||
@@ -134,7 +134,7 @@ def untotterTransformation(G, node_label, edge_label): | |||||
gt.add_nodes_from(G.nodes(data=True)) | gt.add_nodes_from(G.nodes(data=True)) | ||||
for edge in G.edges(): | for edge in G.edges(): | ||||
gt.add_node(edge) | 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.add_edge(edge[0], edge) | ||||
gt.edges[edge[0], edge].update({ | gt.edges[edge[0], edge].update({ | ||||
edge_label: | edge_label: | ||||