Skip to content

Commit 51b4eaf

Browse files
committed
bug fix with empty edge list interpretation.py
1 parent 62d5007 commit 51b4eaf

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

pyreason/scripts/interpretation/interpretation.py

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,10 @@ def __init__(self, graph, ipl, annotation_functions, reverse_graph, atom_trace,
7878
self.rule_trace_edge = numba.typed.List.empty_list(numba.types.Tuple((numba.types.uint16, numba.types.uint16, edge_type, label.label_type, interval.interval_type)))
7979

8080
# Nodes and edges of the graph
81-
self.nodes = numba.typed.List(self.graph.nodes())
82-
self.edges = numba.typed.List(self.graph.edges())
81+
self.nodes = numba.typed.List.empty_list(node_type)
82+
self.edges = numba.typed.List.empty_list(edge_type)
83+
self.nodes.extend(numba.typed.List(self.graph.nodes()))
84+
self.edges.extend(numba.typed.List(self.graph.edges()))
8385

8486
# Make sure they are correct type
8587
if len(self.available_labels_node)==0:
@@ -91,8 +93,8 @@ def __init__(self, graph, ipl, annotation_functions, reverse_graph, atom_trace,
9193
else:
9294
self.available_labels_edge = numba.typed.List(self.available_labels_edge)
9395

94-
self.interpretations_node = self._init_interpretations_node(numba.typed.List(self.graph.nodes()), self.available_labels_node, self.specific_node_labels)
95-
self.interpretations_edge = self._init_interpretations_edge(numba.typed.List(self.graph.edges()), self.available_labels_edge, self.specific_edge_labels)
96+
self.interpretations_node = self._init_interpretations_node(self.nodes, self.available_labels_node, self.specific_node_labels)
97+
self.interpretations_edge = self._init_interpretations_edge(self.edges, self.available_labels_edge, self.specific_edge_labels)
9698

9799
# Setup graph neighbors and reverse neighbors
98100
self.neighbors = numba.typed.Dict.empty(key_type=node_type, value_type=numba.types.ListType(node_type))
@@ -687,6 +689,10 @@ def delete_edge(self, edge):
687689
# This function is useful for pyreason gym, called externally
688690
_delete_edge(edge, self.neighbors, self.reverse_neighbors, self.edges, self.interpretations_edge)
689691

692+
def delete_node(self, node):
693+
# This function is useful for pyreason gym, called externally
694+
_delete_node(node, self.neighbors, self.reverse_neighbors, self.nodes, self.interpretations_node)
695+
690696
def get_interpretation_dict(self):
691697
# This function can be called externally to retrieve a dict of the interpretation values
692698
# Only values in the rule trace will be added
@@ -1928,6 +1934,22 @@ def _delete_edge(edge, neighbors, reverse_neighbors, edges, interpretations_edge
19281934
reverse_neighbors[target].remove(source)
19291935

19301936

1937+
@numba.njit(cache=True)
1938+
def _delete_node(node, neighbors, reverse_neighbors, nodes, interpretations_node):
1939+
nodes.remove(node)
1940+
del interpretations_node[node]
1941+
del neighbors[node]
1942+
del reverse_neighbors[node]
1943+
1944+
# Remove all occurrences of node in neighbors
1945+
for n in neighbors.keys():
1946+
if node in neighbors[n]:
1947+
neighbors[n].remove(node)
1948+
for n in reverse_neighbors.keys():
1949+
if node in reverse_neighbors[n]:
1950+
reverse_neighbors[n].remove(node)
1951+
1952+
19311953
@numba.njit(cache=True)
19321954
def float_to_str(value):
19331955
number = int(value)

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
setup(
1010
name='pyreason',
11-
version='2.0.0',
11+
version='2.0.1',
1212
author='Dyuman Aditya',
1313
author_email='dyuman.aditya@gmail.com',
1414
description='An explainable inference software supporting annotated, real valued, graph based and temporal logic',

0 commit comments

Comments
 (0)