Skip to content

Commit 48ffb4f

Browse files
Split: Resort label method
1 parent 47e8fab commit 48ffb4f

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

yaramo/operations/split.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,9 @@ def _label_elements(
201201
new_end_nodes: Dict[Edge, Tuple[Node, Node]],
202202
node_label_assignments: Dict[Node, Label],
203203
) -> Tuple[Dict[Node, Label], Dict[Edge, Label], Dict[Signal, Label]]:
204+
if not new_end_nodes and not node_label_assignments:
205+
raise ValueError("No end nodes but also nothing labeled. Split not possible")
206+
204207
node_labels: Dict[Node, Label] = {}
205208
edge_labels: Dict[Edge, Label] = {}
206209
signal_labels: Dict[Signal, Label] = {}
@@ -226,23 +229,12 @@ def _dfs(_start_node: Node, _label):
226229
node_list.extend(cur_node.connected_nodes)
227230
visited.add(cur_node)
228231

229-
for node, label in node_label_assignments.items():
230-
_dfs(node, label)
231-
232232
def _get_any_unlabeled_end_node_pair():
233233
for pair in new_end_nodes.values():
234234
if pair[0] not in node_labels and pair[1] not in node_labels:
235235
return pair
236236
return None
237237

238-
if not node_labels:
239-
# Nothing labeled so far, start with any pair
240-
if not new_end_nodes:
241-
raise ValueError("No end nodes but also nothing labeled. Split not possible")
242-
any_end_node_pair = _get_any_unlabeled_end_node_pair()
243-
_dfs(any_end_node_pair[0], Label.A_Topology)
244-
_dfs(any_end_node_pair[1], Label.B_Topology)
245-
246238
def _get_next_end_node_pair():
247239
for pair in new_end_nodes.values():
248240
_node_a = pair[0]
@@ -253,6 +245,15 @@ def _get_next_end_node_pair():
253245
return pair
254246
return _get_any_unlabeled_end_node_pair()
255247

248+
if node_label_assignments:
249+
for node, label in node_label_assignments.items():
250+
_dfs(node, label)
251+
else:
252+
# Nothing labeled so far, start with any pair
253+
any_end_node_pair = _get_any_unlabeled_end_node_pair()
254+
_dfs(any_end_node_pair[0], Label.A_Topology)
255+
_dfs(any_end_node_pair[1], Label.B_Topology)
256+
256257
next_pair = _get_next_end_node_pair()
257258
while next_pair is not None:
258259
node_a = next_pair[0]

0 commit comments

Comments
 (0)