@@ -220,7 +220,7 @@ def get_stale_nodes(
220220 )
221221 stale_mask = layer_nodes != _nodes
222222 stale_nodes .append (layer_nodes [stale_mask ])
223- return np .concatenate (stale_nodes ), edge_supervoxels
223+ return np .concatenate (stale_nodes )
224224
225225
226226def get_latest_edges (
@@ -328,13 +328,18 @@ def _filter(node):
328328
329329 children_a = cg .get_children (_edges [mask ][:, 0 ], flatten = True )
330330 children_b = cg .get_children (_edges [mask ][:, 1 ], flatten = True )
331- if 85431849467249595 in children_a and 85502218144317440 in children_b :
332- print ("woohoo0" )
333- continue
334331
335- if 85502218144317440 in children_a and 85431849467249595 in children_b :
336- print ("woohoo1" )
337- continue
332+ parents_a = _edges [mask ][:, 0 ]
333+ parents_b = np .unique (cg .get_parents (children_b , time_stamp = parent_ts ))
334+ _cx_edges_d = cg .get_cross_chunk_edges (parents_b )
335+ parents_b = []
336+ for _node , _edges_d in _cx_edges_d .items ():
337+ for _edges in _edges_d .values ():
338+ _mask = np .isin (_edges [:,1 ], parents_a )
339+ if np .any (_mask ):
340+ parents_b .append (_node )
341+
342+ parents_b = np .array (parents_b , dtype = basetypes .NODE_ID )
338343 parents_a = np .unique (
339344 cg .get_roots (
340345 children_a , stop_layer = mlayer , ceil = False , time_stamp = parent_ts
@@ -348,10 +353,43 @@ def _filter(node):
348353
349354 parents_b = np .unique (
350355 cg .get_roots (
351- children_b , stop_layer = mlayer , ceil = False , time_stamp = parent_ts
356+ parents_b , stop_layer = mlayer , ceil = False , time_stamp = parent_ts
352357 )
353358 )
354359
355360 parents_a = np .array ([node_a ] * parents_b .size , dtype = basetypes .NODE_ID )
356361 result .append (np .column_stack ((parents_a , parents_b )))
357362 return np .concatenate (result )
363+
364+
365+ def get_latest_edges_wrapper (
366+ cg ,
367+ cx_edges_d : dict ,
368+ parent_ts : datetime .datetime = None ,
369+ ) -> np .ndarray :
370+ """Helper function to filter stale edges and replace with latest edges."""
371+ _cx_edges = [types .empty_2d ]
372+ _edge_layers = [types .empty_1d ]
373+ for k , v in cx_edges_d .items ():
374+ _cx_edges .append (v )
375+ _edge_layers .append ([k ] * len (v ))
376+ _cx_edges = np .concatenate (_cx_edges )
377+ _edge_layers = np .concatenate (_edge_layers , dtype = int )
378+
379+ edge_nodes = np .unique (_cx_edges )
380+ stale_nodes = get_stale_nodes (cg , edge_nodes , parent_ts = parent_ts )
381+ stale_nodes_mask = np .isin (edge_nodes , stale_nodes )
382+
383+ latest_edges = types .empty_2d .copy ()
384+ if np .any (stale_nodes_mask ):
385+ stalte_edges_mask = _cx_edges [:, 1 ] == stale_nodes
386+ stale_edges = _cx_edges [stalte_edges_mask ]
387+ stale_edge_layers = _edge_layers [stalte_edges_mask ]
388+ latest_edges = get_latest_edges (
389+ cg ,
390+ stale_edges ,
391+ stale_edge_layers ,
392+ parent_ts = parent_ts ,
393+ )
394+ print (list (stale_edges [:, 1 ]), list (latest_edges [:, 1 ]))
395+ return np .concatenate ([_cx_edges , latest_edges ])
0 commit comments