-
Notifications
You must be signed in to change notification settings - Fork 5
Description
[12-19 14:56:35] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/ilpy/solver_backends/_gurobi.py:126} INFO - Set parameter Threads to value 1
[12-19 14:56:35] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile/solver.py:169} INFO - ILP solver returned with: OPTIMAL
[12-19 14:56:35] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile_tracker/motile/backend/solve.py:102} INFO - Solution took 0.62 seconds
NotImplementedError Traceback (most recent call last)
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/vispy/app/backends/_qt.py:496, in QtBaseCanvasBackend.mousePressEvent(self=<vispy.app.backends._qt.CanvasBackendDesktop object>, ev=<PyQt5.QtGui.QMouseEvent object>)
494 if self._vispy_canvas is None:
495 return
--> 496 vispy_event = self._vispy_mouse_press(
self = <vispy.app.backends._qt.CanvasBackendDesktop object at 0x2d1dda3b0>
ev = <PyQt5.QtGui.QMouseEvent object at 0x35c489360>
BUTTONMAP = {0: 0, 1: 1, 2: 2, 4: 3, 8: 4, 16: 5} 497 native=ev,
498 pos=_get_event_xy(ev),
499 button=BUTTONMAP.get(ev.button(), 0),
500 modifiers=self._modifiers(ev),
501 )
502 # If vispy did not handle the event, clear the accept parameter of the qt event
503 if not vispy_event.handled:
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/vispy/app/base.py:184, in BaseCanvasBackend._vispy_mouse_press(self=<vispy.app.backends._qt.CanvasBackendDesktop object>, **kwargs={'button': 1, 'buttons': [], 'last_event': <MouseEvent blocked=False button=None buttons=[]...urces=[] time=1766174269.0166175 type=mouse_move>, 'last_mouse_press': None, 'modifiers': (), 'native': <PyQt5.QtGui.QMouseEvent object>, 'pos': (415, 124), 'press_event': None})
181 def _vispy_mouse_press(self, **kwargs):
182 # default method for delivering mouse press events to the canvas
183 kwargs.update(self._vispy_mouse_data)
--> 184 ev = self._vispy_canvas.events.mouse_press(**kwargs)
self._vispy_canvas.events.mouse_press = <vispy.util.event.EventEmitter object at 0x2d1eb8150>
kwargs = {'native': <PyQt5.QtGui.QMouseEvent object at 0x35c489360>, 'pos': (415, 124), 'button': 1, 'modifiers': (), 'buttons': [], 'press_event': None, 'last_event': <MouseEvent blocked=False button=None buttons=[] delta=[0. 0.] handled=False is_dragging=False last_event=MouseEvent modifiers=() native=<PyQt5.QtGui.QMouseEvent object at 0x35c489360> pos=[415 124] press_event=None source=None sources=[] time=1766174269.0166175 type=mouse_move>, 'last_mouse_press': None}
self = <vispy.app.backends._qt.CanvasBackendDesktop object at 0x2d1dda3b0>
self._vispy_canvas.events = <vispy.util.event.EmitterGroup object at 0x2c5bd6710>
self._vispy_canvas = <NapariSceneCanvas (PyQt5) at 0x2c5bf7490> 185 if self._vispy_mouse_data['press_event'] is None:
186 self._vispy_mouse_data['press_event'] = ev
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/vispy/util/event.py:453, in EventEmitter.call(self=<vispy.util.event.EventEmitter object>, *args=(), **kwargs={'button': 1, 'buttons': [], 'last_event': <MouseEvent blocked=False button=None buttons=[]...urces=[] time=1766174269.0166175 type=mouse_move>, 'last_mouse_press': None, 'modifiers': (), 'native': <PyQt5.QtGui.QMouseEvent object>, 'pos': (415, 124), 'press_event': None})
450 if self._emitting > 1:
451 raise RuntimeError('EventEmitter loop detected!')
--> 453 self._invoke_callback(cb, event)
event = <MouseEvent blocked=False button=1 buttons=[1] delta=[0. 0.] handled=False is_dragging=False last_event=MouseEvent modifiers=() native=<PyQt5.QtGui.QMouseEvent object at 0x35c489360> pos=[415 124] press_event=None source=None sources=[] time=1766174269.0669584 type=mouse_press>
self = <vispy.util.event.EventEmitter object at 0x2d1eb8150>
cb = <bound method VispyCanvas._on_mouse_press of <napari._vispy.canvas.VispyCanvas object at 0x2d1d7c650>> 454 if event.blocked:
455 break
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/vispy/util/event.py:471, in EventEmitter._invoke_callback(self=<vispy.util.event.EventEmitter object>, cb=<bound method VispyCanvas._on_mouse_press of <napari._vispy.canvas.VispyCanvas object>>, event=)
469 cb(event)
470 except Exception:
--> 471 _handle_exception(self.ignore_callback_errors,
self = <vispy.util.event.EventEmitter object at 0x2d1eb8150>
cb = <bound method VispyCanvas._on_mouse_press of <napari._vispy.canvas.VispyCanvas object at 0x2d1d7c650>>
event = <MouseEvent blocked=False button=1 buttons=[1] delta=[0. 0.] handled=False is_dragging=False last_event=MouseEvent modifiers=() native=<PyQt5.QtGui.QMouseEvent object at 0x35c489360> pos=[415 124] press_event=None source=None sources=[] time=1766174269.0669584 type=mouse_press>
(cb, event) = (<bound method VispyCanvas._on_mouse_press of <napari._vispy.canvas.VispyCanvas object at 0x2d1d7c650>>, <MouseEvent blocked=False button=1 buttons=[1] delta=[0. 0.] handled=False is_dragging=False last_event=MouseEvent modifiers=() native=<PyQt5.QtGui.QMouseEvent object at 0x35c489360> pos=[415 124] press_event=None source=None sources=[] time=1766174269.0669584 type=mouse_press>) 472 self.print_callback_errors,
473 self, cb_event=(cb, event))
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/vispy/util/event.py:469, in EventEmitter._invoke_callback(self=<vispy.util.event.EventEmitter object>, cb=<bound method VispyCanvas._on_mouse_press of <napari._vispy.canvas.VispyCanvas object>>, event=)
467 def _invoke_callback(self, cb, event):
468 try:
--> 469 cb(event)
cb = <bound method VispyCanvas._on_mouse_press of <napari._vispy.canvas.VispyCanvas object at 0x2d1d7c650>>
event = <MouseEvent blocked=False button=1 buttons=[1] delta=[0. 0.] handled=False is_dragging=False last_event=MouseEvent modifiers=() native=<PyQt5.QtGui.QMouseEvent object at 0x35c489360> pos=[415 124] press_event=None source=None sources=[] time=1766174269.0669584 type=mouse_press> 470 except Exception:
471 _handle_exception(self.ignore_callback_errors,
472 self.print_callback_errors,
473 self, cb_event=(cb, event))
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/napari/_vispy/canvas.py:597, in VispyCanvas._on_mouse_press(self=<napari._vispy.canvas.VispyCanvas object>, event=)
585 def _on_mouse_press(self, event: MouseEvent) -> None:
586 """Called whenever mouse pressed in canvas.
587
588 Parameters
(...) 595 None
596 """
--> 597 self._process_mouse_event(mouse_press_callbacks, event)
event = <MouseEvent blocked=False button=1 buttons=[1] delta=[0. 0.] handled=False is_dragging=False last_event=MouseEvent modifiers=() native=<PyQt5.QtGui.QMouseEvent object at 0x35c489360> pos=[415 124] press_event=None source=None sources=[] time=1766174269.0669584 type=mouse_press>
self = <napari._vispy.canvas.VispyCanvas object at 0x2d1d7c650>
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/napari/_vispy/canvas.py:542, in VispyCanvas._process_mouse_event(self=<napari._vispy.canvas.VispyCanvas object>, mouse_callbacks=, event=)
540 layer = self.viewer.layers.selection.active
541 if layer is not None:
--> 542 mouse_callbacks(layer, read_only_event)
read_only_event = <ReadOnlyWrapper at 0x37693a800 for NapariMouseEvent at 0x376938950>
layer = <Labels layer 'seg_voronoi_otsu_nuclear' at 0x2f686cdd0>
mouse_callbacks = <function mouse_press_callbacks at 0x2c4f7eca0> 544 event.handled = napari_event.handled
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/napari/utils/interactions.py:133, in mouse_press_callbacks(obj=<Labels layer 'seg_voronoi_otsu_nuclear'>, event=<ReadOnlyWrapper at 0x37693a800 for NapariMouseEvent>)
131 if inspect.isgenerator(gen):
132 try:
--> 133 next(gen)
gen = <generator object draw at 0x3754a0c40> 134 # now store iterated generator
135 obj._mouse_drag_gen[mouse_drag_func] = gen
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/napari/layers/labels/_labels_mouse_bindings.py:38, in draw(layer=<Labels layer 'seg_voronoi_otsu_nuclear'>, event=<ReadOnlyWrapper at 0x37693a800 for NapariMouseEvent>)
36 # on press
37 with layer.block_history():
---> 38 layer._draw(new_label, coordinates, coordinates)
coordinates = array([ 0. , 20. , 342.02808, 254.01015])
layer = <Labels layer 'seg_voronoi_otsu_nuclear' at 0x2f686cdd0>
new_label = np.uint64(9) 39 yield
41 last_cursor_coord = coordinates
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/napari/layers/labels/labels.py:1227, in Labels._draw(self=<Labels layer 'seg_voronoi_otsu_nuclear'>, new_label=np.uint64(9), last_cursor_coord=array([ 0. , 20. , 342.02808, 254.01015]), coordinates=array([ 0. , 20. , 342.02808, 254.01015]))
1225 self.paint(c, new_label, refresh=False)
1226 elif self._mode == Mode.FILL:
-> 1227 self.fill(c, new_label, refresh=False)
c = array([ 0. , 20. , 342.02808, 254.01015])
self = <Labels layer 'seg_voronoi_otsu_nuclear' at 0x2f686cdd0>
new_label = np.uint64(9) 1228 self._partial_labels_refresh()
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/napari/layers/labels/labels.py:1197, in Labels.fill(self=<Labels layer 'seg_voronoi_otsu_nuclear'>, coord=array([ 0. , 20. , 342.02808, 254.01015]), new_label=np.uint64(9), refresh=False)
1191 match_indices = match_indices_local
1193 match_indices = _coerce_indices_for_vectorization(
1194 self.data, match_indices
1195 )
-> 1197 self.data_setitem(match_indices, new_label, refresh)
match_indices = (array([0, 0, ..., 0, 0]), array([20, 20, ..., 20, 20]), array([322, 322, ..., 353, 353]), array([272, 273, ..., 267, 268]))
new_label = np.uint64(9)
self = <Labels layer 'seg_voronoi_otsu_nuclear' at 0x2f686cdd0>
refresh = False
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/napari/layers/labels/labels.py:1406, in Labels.data_setitem(self=<Labels layer 'seg_voronoi_otsu_nuclear'>, indices=(array([0, 0, ..., 0, 0]), array([20, 20, ..., 20, 20]), array([322, 322, ..., 353, 353]), array([272, 273, ..., 267, 268])), value=np.uint64(9), refresh=False)
1388 def data_setitem(self, indices, value, refresh=True):
1389 """Set indices in data to value, while writing to edit history.
1390
1391 Parameters
(...) 1404 .. [2] https://numpy.org/doc/stable/user/basics.indexing.html
1405 """
-> 1406 changed_indices = self.data[indices] != value
indices = (array([0, 0, ..., 0, 0]), array([20, 20, ..., 20, 20]), array([322, 322, ..., 353, 353]), array([272, 273, ..., 267, 268]))
value = np.uint64(9)
self = <Labels layer 'seg_voronoi_otsu_nuclear' at 0x2f686cdd0> 1407 indices = tuple(x[changed_indices] for x in indices)
1409 if isinstance(value, Sequence):
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/dask/array/core.py:2038, in Array.getitem(self=dask.array<array, shape=(9, 194, 904, 574), dtyp...unksize=(1, 64, 64, 64), chunktype=numpy.ndarray>, index=(array([0, 0, ..., 0, 0]), array([20, 20, ..., 20, 20]), array([322, 322, ..., 353, 353]), array([272, 273, ..., 267, 268])))
2036 out = "getitem-" + tokenize(self, index2)
2037 try:
-> 2038 dsk, chunks = slice_array(out, self.name, self.chunks, index2)
index2 = (array([0, 0, ..., 0, 0]), array([20, 20, ..., 20, 20]), array([322, 322, ..., 353, 353]), array([272, 273, ..., 267, 268]))
out = 'getitem-ef51856ee42a1cd1eeddf1535567f01a'
self = dask.array<array, shape=(9, 194, 904, 574), dtype=uint64, chunksize=(1, 64, 64, 64), chunktype=numpy.ndarray> 2039 except SlicingNoop:
2040 return self
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/contextlib.py:81, in ContextDecorator.call..inner(*args=('getitem-ef51856ee42a1cd1eeddf1535567f01a', 'array-bdbff925677abf004d69a9be58a3d143', ((1, 1, 1, 1, 1, 1, 1, 1, 1), (64, 64, 64, 2), (64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 8), (64, 64, 64, 64, 64, 64, 64, 64, 62)), (array([0, 0, ..., 0, 0]), array([20, 20, ..., 20, 20]), array([322, 322, ..., 353, 353]), array([272, 273, ..., 267, 268]))), **kwds={})
78 @wraps(func)
79 def inner(*args, **kwds):
80 with self._recreate_cm():
---> 81 return func(*args, **kwds)
func = <function slice_array at 0x12b121940>
args = ('getitem-ef51856ee42a1cd1eeddf1535567f01a', 'array-bdbff925677abf004d69a9be58a3d143', ((1, 1, 1, 1, 1, 1, 1, 1, 1), (64, 64, 64, 2), (64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 8), (64, 64, 64, 64, 64, 64, 64, 64, 62)), (array([0, 0, ..., 0, 0]), array([20, 20, ..., 20, 20]), array([322, 322, ..., 353, 353]), array([272, 273, ..., 267, 268])))
kwds = {}
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/dask/array/slicing.py:172, in slice_array(out_name='getitem-ef51856ee42a1cd1eeddf1535567f01a', in_name='array-bdbff925677abf004d69a9be58a3d143', blockdims=((1, 1, 1, 1, 1, 1, 1, 1, 1), (64, 64, 64, 2), (64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 8), (64, 64, 64, 64, 64, 64, 64, 64, 62)), index=(array([0, 0, ..., 0, 0]), array([20, 20, ..., 20, 20]), array([322, 322, ..., 353, 353]), array([272, 273, ..., 267, 268])))
169 index += (slice(None, None, None),) * missing
171 # Pass down to next function
--> 172 dsk_out, bd_out = slice_with_newaxes(out_name, in_name, blockdims, index)
blockdims = ((1, 1, 1, 1, 1, 1, 1, 1, 1), (64, 64, 64, 2), (64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 8), (64, 64, 64, 64, 64, 64, 64, 64, 62))
index = (array([0, 0, ..., 0, 0]), array([20, 20, ..., 20, 20]), array([322, 322, ..., 353, 353]), array([272, 273, ..., 267, 268]))
out_name = 'getitem-ef51856ee42a1cd1eeddf1535567f01a'
in_name = 'array-bdbff925677abf004d69a9be58a3d143' 174 bd_out = tuple(map(tuple, bd_out))
175 return dsk_out, bd_out
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/dask/array/slicing.py:194, in slice_with_newaxes(out_name='getitem-ef51856ee42a1cd1eeddf1535567f01a', in_name='array-bdbff925677abf004d69a9be58a3d143', blockdims=((1, 1, 1, 1, 1, 1, 1, 1, 1), (64, 64, 64, 2), (64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 8), (64, 64, 64, 64, 64, 64, 64, 64, 62)), index=(array([0, 0, ..., 0, 0]), array([20, 20, ..., 20, 20]), array([322, 322, ..., 353, 353]), array([272, 273, ..., 267, 268])))
191 where_none[i] -= n
193 # Pass down and do work
--> 194 dsk, blockdims2 = slice_wrap_lists(
index2 = (array([0, 0, ..., 0, 0]), array([20, 20, ..., 20, 20]), array([322, 322, ..., 353, 353]), array([272, 273, ..., 267, 268]))
where_none = []
out_name = 'getitem-ef51856ee42a1cd1eeddf1535567f01a'
in_name = 'array-bdbff925677abf004d69a9be58a3d143'
blockdims = ((1, 1, 1, 1, 1, 1, 1, 1, 1), (64, 64, 64, 2), (64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 8), (64, 64, 64, 64, 64, 64, 64, 64, 62))
not where_none = True 195 out_name, in_name, blockdims, index2, not where_none
196 )
198 if where_none:
199 expand = expander(where_none)
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/dask/array/slicing.py:249, in slice_wrap_lists(out_name='getitem-ef51856ee42a1cd1eeddf1535567f01a', in_name='array-bdbff925677abf004d69a9be58a3d143', blockdims=((1, 1, 1, 1, 1, 1, 1, 1, 1), (64, 64, 64, 2), (64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 8), (64, 64, 64, 64, 64, 64, 64, 64, 62)), index=(array([0, 0, ..., 0, 0]), array([20, 20, ..., 20, 20]), array([322, 322, ..., 353, 353]), array([272, 273, ..., 267, 268])), allow_getitem_optimization=True)
245 where_list = [
246 i for i, ind in enumerate(index) if is_arraylike(ind) and ind.ndim > 0
247 ]
248 if len(where_list) > 1:
--> 249 raise NotImplementedError("Don't yet support nd fancy indexing")
250 # Is the single list an empty list? In this case just treat it as a zero
251 # length slice
252 if where_list and not index[where_list[0]].size:
NotImplementedError: Don't yet support nd fancy indexing
[12-19 14:57:58] {/Users/malinmayorc/code/sgro_lab_experiments/src/sgro_lab_utils/visualization/save_seg_widget.py:64} INFO - Loading the current layer into memory so it is editable
/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/napari/layers/labels/labels.py:908: UserWarning: Contours are not displayed during 3D rendering!
[12-19 14:58:11] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/OpenGL/acceleratesupport.py:24} INFO - No OpenGL_accelerate module loaded: No module named 'OpenGL_accelerate'
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 9/9 [00:10<00:00, 1.21s/it]
[12-19 15:13:03] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile_toolbox/candidate_graph/compute_graph.py:41} INFO - Candidate nodes: 532
[12-19 15:13:03] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile_toolbox/candidate_graph/utils.py:183} INFO - Extracting candidate edges
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 9/9 [00:00<00:00, 343.51it/s]
[12-19 15:13:03] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile_toolbox/candidate_graph/compute_graph.py:54} INFO - Candidate edges: 24432
[12-19 15:13:03] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile/solver.py:107} INFO - Adding MaxChildren constraint...
[12-19 15:13:03] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile/solver.py:250} INFO - Adding EdgeSelected variables...
[12-19 15:13:03] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile/solver.py:250} INFO - Adding NodeSelected variables...
[12-19 15:13:04] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile/solver.py:107} INFO - Adding MaxParents constraint...
[12-19 15:13:04] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile/solver.py:107} INFO - Adding Pin constraint...
[12-19 15:13:04] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile/solver.py:88} INFO - Adding edge_const cost...
[12-19 15:13:04] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile/solver.py:88} INFO - Adding distance cost...
[12-19 15:13:05] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile/solver.py:266} INFO - Computing costs...
Set parameter NonConvex to value 2
[12-19 15:13:05] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/ilpy/solver_backends/_gurobi.py:63} INFO - Set parameter NonConvex to value 2
Set parameter Threads to value 1
[12-19 15:13:05] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/ilpy/solver_backends/gurobi.py:126} INFO - Set parameter Threads to value 1
[12-19 15:13:05] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile/solver.py:169} INFO - ILP solver returned with: OPTIMAL
[12-19 15:13:05] {/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile_tracker/motile/backend/solve.py:102} INFO - Solution took 0.52 seconds
/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile_tracker/data_views/views_coordinator/tracks_viewer.py:283: UserWarning: Cannot delete non-existing edge!!
INFO: Mouse is not over the canvas. You may need to click on the canvas.
INFO: Mouse is not over the canvas. You may need to click on the canvas.
FileExistsError Traceback (most recent call last)
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile_tracker/data_views/views_coordinator/tracks_list.py:199, in TracksList.save_tracks(self=<motile_tracker.data_views.views_coordinator.tracks_list.TracksList object>, item=<PyQt5.QtWidgets.QListWidgetItem object>)
197 if self.save_dialog.exec():
198 directory = Path(self.save_dialog.selectedFiles()[0])
--> 199 tracks.save(directory)
tracks = <motile_tracker.motile.backend.motile_run.MotileRun object at 0x5813b4810>
directory = PosixPath('/Users/malinmayorc/experiments/motile_tracker')
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile_tracker/motile/backend/motile_run.py:106, in MotileRun.save(self=<motile_tracker.motile.backend.motile_run.MotileRun object>, base_path=PosixPath('/Users/malinmayorc/experiments/motile_tracker'))
104 base_path = Path(base_path)
105 run_dir = base_path / self._make_id()
--> 106 Path.mkdir(run_dir)
run_dir = PosixPath('/Users/malinmayorc/experiments/motile_tracker/12192025_151252_curation for real') 107 super().save(run_dir)
108 self._save_params(run_dir)
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/pathlib.py:1116, in Path.mkdir(self=PosixPath('/Users/malinmayorc/experiments/motile_tracker/12192025_151252_curation for real'), mode=511, parents=False, exist_ok=False)
1112 """
1113 Create a new directory at this given path.
1114 """
1115 try:
-> 1116 os.mkdir(self, mode)
self = PosixPath('/Users/malinmayorc/experiments/motile_tracker/12192025_151252_curation for real')
mode = 511 1117 except FileNotFoundError:
1118 if not parents or self.parent == self:
FileExistsError: [Errno 17] File exists: '/Users/malinmayorc/experiments/motile_tracker/12192025_151252_curation for real'
/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/geff/_graph_libs/_networkx.py:116: UserWarning: Node ids with dtype float64 are being cast to uint!
AttributeError Traceback (most recent call last)
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile_tracker/data_views/views_coordinator/tracks_list.py:182, in TracksList.show_export_dialog(self=<motile_tracker.data_views.views_coordinator.tracks_list.TracksList object>, item=<PyQt5.QtWidgets.QListWidgetItem object>)
179 tracks: Tracks = widget.tracks
180 name: str = widget.name.text()
--> 182 ExportDialog.show_export_dialog(
self = <motile_tracker.data_views.views_coordinator.tracks_list.TracksList object at 0x376d87370>
tracks = <motile_tracker.motile.backend.motile_run.MotileRun object at 0x5813b4810>
name = 'curation for real' 183 self,
184 tracks=tracks,
185 name=name,
186 )
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/motile_tracker/import_export/menus/export_dialog.py:82, in ExportDialog.show_export_dialog(parent=<motile_tracker.data_views.views_coordinator.tracks_list.TracksList object>, tracks=<motile_tracker.motile.backend.motile_run.MotileRun object>, name='curation for real', nodes_to_keep=None)
80 file_path = Path(file_dialog.selectedFiles()[0])
81 try:
---> 82 export_to_geff(
nodes_to_keep = None
file_path = PosixPath('/Users/malinmayorc/experiments/motile_tracker/curation for real_geff.zarr')
tracks = <motile_tracker.motile.backend.motile_run.MotileRun object at 0x5813b4810> 83 tracks, file_path, overwrite=True, node_ids=nodes_to_keep
84 )
85 return True
86 except ValueError as e:
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/funtracks/import_export/geff/_export.py:142, in export_to_geff(tracks=<motile_tracker.motile.backend.motile_run.MotileRun object>, directory=PosixPath('/Users/malinmayorc/experiments/motile_tracker/curation for real_geff.zarr'), overwrite=True, node_ids=None, zarr_format=2)
140 # Save the graph in a 'tracks' folder
141 tracks_path = directory / "tracks"
--> 142 geff.write(
graph = <networkx.classes.digraph.DiGraph object at 0x560580710>
tracks_path = PosixPath('/Users/malinmayorc/experiments/motile_tracker/curation for real_geff.zarr/tracks')
metadata = GeffMetadata(geff_version='1.1.1', directed=True, axes=None, node_props_metadata={}, edge_props_metadata={}, sphere=None, ellipsoid=None, track_node_props=None, related_objects=[RelatedObject(type='labels', path='../segmentation', label_prop='seg_id')], display_hints=None, extra={})
axis_names = ['time', 'z', 'y', 'x']
axis_types = ['time', 'space', 'space', 'space']
tracks = <motile_tracker.motile.backend.motile_run.MotileRun object at 0x5813b4810>
tracks.scale = array([1. , 0.25 , 0.108, 0.108])
overwrite = True
zarr_format = 2 143 graph=graph,
144 store=tracks_path,
145 metadata=metadata,
146 axis_names=axis_names,
147 axis_types=axis_types,
148 axis_scales=tracks.scale,
149 overwrite=overwrite,
150 zarr_format=zarr_format,
151 )
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/geff/_graph_libs/_api_wrapper.py:357, in write(graph=<networkx.classes.digraph.DiGraph object>, store=PosixPath('/Users/malinmayorc/experiments/motile_tracker/curation for real_geff.zarr/tracks'), metadata=GeffMetadata(geff_version='1.1.1', directed=True...el_prop='seg_id')], display_hints=None, extra={}), axis_names=['time', 'z', 'y', 'x'], axis_units=None, axis_types=['time', 'space', 'space', 'space'], axis_scales=array([1. , 0.25 , 0.108, 0.108]), scaled_units=None, axis_offset=None, zarr_format=2, structure_validation=True, overwrite=True, *args=(), **kwargs={})
350 raise FileExistsError(
351 "Found an existing geff present in store. "
352 "Please use overwrite=True or provide an alternative "
353 "store to write to."
354 )
356 backend_io = get_backend_from_graph_type(graph)
--> 357 backend_io.write(
backend_io = <geff._graph_libs._networkx.NxBackend object at 0x14f43ff90>
graph = <networkx.classes.digraph.DiGraph object at 0x560580710>
store = PosixPath('/Users/malinmayorc/experiments/motile_tracker/curation for real_geff.zarr/tracks')
metadata = GeffMetadata(geff_version='1.1.1', directed=True, axes=None, node_props_metadata={}, edge_props_metadata={}, sphere=None, ellipsoid=None, track_node_props=None, related_objects=[RelatedObject(type='labels', path='../segmentation', label_prop='seg_id')], display_hints=None, extra={})
axis_names = ['time', 'z', 'y', 'x']
axis_units = None
axis_types = ['time', 'space', 'space', 'space']
axis_scales = array([1. , 0.25 , 0.108, 0.108])
scaled_units = None
axis_offset = None
zarr_format = 2
structure_validation = True
args = ()
kwargs = {} 358 graph,
359 store,
360 metadata,
361 axis_names,
362 axis_units,
363 axis_types,
364 axis_scales,
365 scaled_units,
366 axis_offset,
367 zarr_format,
368 structure_validation,
369 *args,
370 **kwargs,
371 )
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/geff/_graph_libs/_networkx.py:116, in NxBackend.write(graph=<networkx.classes.digraph.DiGraph object>, store=PosixPath('/Users/malinmayorc/experiments/motile_tracker/curation for real_geff.zarr/tracks'), metadata=GeffMetadata(geff_version='1.1', directed=True, ...el_prop='seg_id')], display_hints=None, extra={}), axis_names=['time', 'z', 'y', 'x'], axis_units=None, axis_types=['time', 'space', 'space', 'space'], axis_scales=array([1. , 0.25 , 0.108, 0.108]), scaled_units=None, axis_offset=None, zarr_format=2, structure_validation=True)
114 edge_data = [((u, v), data) for u, v, data in graph.edges(data=True)]
115 edge_props = list({k for _, _, data in graph.edges(data=True) for k in data})
--> 116 write_dicts(
store = PosixPath('/Users/malinmayorc/experiments/motile_tracker/curation for real_geff.zarr/tracks')
graph = <networkx.classes.digraph.DiGraph object at 0x560580710>
graph.nodes = NodeView((1, 3, 6, 7, 8, 9, 12, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 92, 93, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 537, 538, 539, np.uint64(49), np.uint64(91), np.uint64(540), np.uint64(541)))
edge_data = [((1, 65), {}), ((3, 72), {}), ((6, 68), {}), ((6, 71), {}), ((7, 67), {}), ((7, 70), {}), ((8, 69), {}), ((8, 74), {}), ((9, 66), {}), ((9, 77), {}), ((12, 73), {}), ((12, 76), {}), ((15, 75), {}), ((15, 78), {}), ((16, 79), {}), ((17, 81), {}), ((18, 80), {}), ((20, 82), {}), ((21, 83), {}), ((22, 84), {}), ((25, 85), {}), ((28, 86), {}), ((30, 88), {}), ((31, 89), {}), ((32, 87), {}), ((33, 90), {}), ((38, 92), {}), ((41, 93), {}), ((42, 99), {}), ((43, 96), {}), ((44, 95), {}), ((44, 98), {}), ((45, 101), {}), ((46, 100), {}), ((48, 97), {}), ((48, 106), {}), ((50, 103), {}), ((51, 105), {}), ((51, 107), {}), ((52, 102), {}), ((52, 108), {}), ((53, 109), {}), ((55, 110), {}), ((56, 114), {}), ((57, 111), {}), ((58, 112), {}), ((60, 113), {}), ((64, 116), {}), ((65, 117), {}), ((65, 119), {}), ((66, 121), {}), ((67, 118), {}), ((68, 120), {}), ((69, 122), {}), ((69, 134), {}), ((70, 139), {}), ((71, 123), {}), ((73, 126), {}), ((73, 127), {}), ((74, 124), {}), ((74, 125), {}), ((75, 131), {}), ((77, 129), {}), ((79, 128), {}), ((79, 132), {}), ((80, 130), {}), ((80, 133), {}), ((82, 136), {}), ((82, 137), {}), ((83, 140), {}), ((84, 138), {}), ((85, 141), {}), ((86, 142), {}), ((87, 145), {}), ((88, 147), {}), ((89, 143), {}), ((89, 144), {}), ((90, 135), {}), ((90, 146), {}), ((92, 150), {}), ((93, 154), {}), ((95, 158), {}), ((96, 153), {}), ((99, 155), {}), ((100, 156), {}), ((101, 157), {}), ((101, 160), {}), ((103, 159), {}), ((105, 162), {}), ((106, 167), {}), ((108, 163), {}), ((110, 161), {}), ((110, 165), {}), ((113, 166), {}), ((113, 168), {}), ((114, 164), {}), ((114, 169), {}), ((116, 171), {}), ((116, 172), {}), ((117, 173), {}), ((118, 174), {}), ((118, 176), {}), ((119, 179), {}), ((120, 178), {}), ((121, 177), {}), ((121, 180), {}), ((122, 175), {}), ((122, 181), {}), ((123, 187), {}), ((123, 188), {}), ((124, 182), {}), ((124, 190), {}), ((125, 183), {}), ((126, 184), {}), ((126, 186), {}), ((129, 189), {}), ((130, 185), {}), ((131, 191), {}), ((132, 192), {}), ((134, 194), {}), ((135, 193), {}), ((136, 196), {}), ((138, 195), {}), ((140, 198), {}), ((140, 200), {}), ((141, 197), {}), ((142, 199), {}), ((142, 203), {}), ((143, 201), {}), ((144, 205), {}), ((144, 217), {}), ((145, 202), {}), ((146, 206), {}), ((147, 204), {}), ((149, 207), {}), ((150, 208), {}), ((152, 211), {}), ((153, 216), {}), ((154, 214), {}), ((155, 213), {}), ((155, 222), {}), ((156, 220), {}), ((157, 218), {}), ((158, 212), {}), ((158, 215), {}), ((159, 210), {}), ((159, 219), {}), ((160, 224), {}), ((161, 225), {}), ((162, 223), {}), ((162, 227), {}), ((163, 221), {}), ((163, 228), {}), ((164, 229), {}), ((165, 230), {}), ((167, 231), {}), ((168, 226), {}), ((169, 232), {}), ((172, 234), {}), ((174, 236), {}), ((175, 242), {}), ((176, 261), {}), ((177, 237), {}), ((177, 240), {}), ((178, 239), {}), ((179, 235), {}), ((179, 238), {}), ((180, 250), {}), ((181, 253), {}), ((182, 243), {}), ((182, 255), {}), ((183, 241), {}), ((184, 248), {}), ((185, 245), {}), ((186, 244), {}), ((188, 247), {}), ((188, 249), {}), ((189, 246), {}), ((190, 258), {}), ((191, 252), {}), ((193, 251), {}), ((193, 254), {}), ((194, 257), {}), ((195, 256), {}), ((195, 259), {}), ((197, 262), {}), ((198, 260), {}), ((199, 266), {}), ((201, 263), {}), ((201, 264), {}), ((202, 269), {}), ((202, 270), {}), ((204, 267), {}), ((205, 265), {}), ((206, 268), {}), ((207, 277), {}), ((208, 272), {}), ((210, 275), {}), ((212, 276), {}), ((213, 280), {}), ((214, 274), {}), ((216, 279), {}), ((217, 281), {}), ((220, 286), {}), ((221, 284), {}), ((222, 285), {}), ((224, 278), {}), ((224, 283), {}), ((225, 287), {}), ((227, 288), {}), ((228, 289), {}), ((229, 290), {}), ((229, 295), {}), ((230, 293), {}), ((231, 292), {}), ((232, 291), {}), ((234, 296), {}), ((234, 297), {}), ((235, 298), {}), ((235, 299), {}), ((236, 300), {}), ((237, 302), {}), ((238, 303), {}), ((239, 301), {}), ((241, 304), {}), ((242, 305), {}), ((245, 306), {}), ((246, 309), {}), ((248, 307), {}), ((249, 310), {}), ((250, 312), {}), ((250, 314), {}), ((251, 308), {}), ((251, 311), {}), ((253, 316), {}), ((254, 313), {}), ((255, 317), {}), ((256, 326), {}), ((256, 327), {}), ((257, 315), {}), ((258, 329), {}), ((259, 318), {}), ((260, 385), {}), ((261, 319), {}), ((261, 321), {}), ((262, 322), {}), ((262, 323), {}), ((263, 324), {}), ((264, 325), {}), ((265, 331), {}), ((265, 332), {}), ((266, 328), {}), ((267, 330), {}), ((268, 333), {}), ((270, 334), {}), ((272, 337), {}), ((274, 338), {}), ((275, 339), {}), ((277, 336), {}), ((279, 340), {}), ((280, 341), {}), ((281, 348), {}), ((282, 343), {}), ((283, 344), {}), ((284, 342), {}), ((286, 345), {}), ((287, 347), {}), ((287, 350), {}), ((288, 346), {}), ((288, 351), {}), ((289, 349), {}), ((290, 352), {}), ((291, 354), {}), ((292, 353), {}), ((295, 357), {}), ((297, 355), {}), ((298, 358), {}), ((298, 359), {}), ((299, 361), {}), ((299, 363), {}), ((300, 362), {}), ((301, 365), {}), ((302, 364), {}), ((303, 360), {}), ((303, 368), {}), ((304, 369), {}), ((304, 370), {}), ((305, 367), {}), ((307, 374), {}), ((308, 371), {}), ((309, 375), {}), ((310, 376), {}), ((312, 373), {}), ((313, 377), {}), ((314, 378), {}), ((315, 380), {}), ((316, 379), {}), ((317, 366), {}), ((317, 381), {}), ((318, 372), {}), ((319, 382), {}), ((321, 383), {}), ((325, 384), {}), ((328, 386), {}), ((330, 389), {}), ((331, 388), {}), ((333, 387), {}), ((334, 390), {}), ((336, 393), {}), ((337, 392), {}), ((338, 395), {}), ((339, 396), {}), ((339, 401), {}), ((340, 394), {}), ((341, 397), {}), ((342, 398), {}), ((342, 400), {}), ((343, 399), {}), ((344, 403), {}), ((345, 402), {}), ((347, 412), {}), ((348, 404), {}), ((349, 406), {}), ((349, 409), {}), ((350, 405), {}), ((351, 407), {}), ((352, 408), {}), ((353, 411), {}), ((354, 410), {}), ((357, 414), {}), ((358, 415), {}), ((359, 416), {}), ((360, 417), {}), ((361, 418), {}), ((362, 419), {}), ((364, 425), {}), ((364, 428), {}), ((365, 420), {}), ((366, 421), {}), ((366, 430), {}), ((367, 422), {}), ((367, 434), {}), ((368, 424), {}), ((369, 423), {}), ((370, 427), {}), ((371, 426), {}), ((372, 432), {}), ((373, 435), {}), ((374, 431), {}), ((375, 433), {}), ((376, 429), {}), ((377, 436), {}), ((378, 437), {}), ((380, 438), {}), ((381, 440), {}), ((382, 439), {}), ((383, 441), {}), ((384, 446), {}), ((384, 448), {}), ((385, 444), {}), ((386, 443), {}), ((387, 445), {}), ((388, 447), {}), ((389, 442), {}), ((389, 449), {}), ((392, 451), {}), ((393, 450), {}), ((394, 452), {}), ((395, 455), {}), ((396, 454), {}), ((397, 457), {}), ((398, 459), {}), ((399, 456), {}), ((400, 458), {}), ((401, 460), {}), ((402, 463), {}), ((403, 462), {}), ((405, 461), {}), ((405, 466), {}), ((406, 465), {}), ((407, 464), {}), ((407, 467), {}), ((408, 468), {}), ((410, 469), {}), ((411, 470), {}), ((411, 473), {}), ((412, 471), {}), ((414, 474), {}), ((414, 475), {}), ((415, 476), {}), ((416, 477), {}), ((418, 478), {}), ((419, 479), {}), ((420, 480), {}), ((421, 481), {}), ((421, 482), {}), ((422, 484), {}), ((423, 485), {}), ((424, 488), {}), ((426, 486), {}), ((426, 487), {}), ((427, 489), {}), ((428, 491), {}), ((429, 493), {}), ((430, 490), {}), ((430, 499), {}), ((431, 483), {}), ((431, 492), {}), ((432, 495), {}), ((432, 502), {}), ((433, 494), {}), ((436, 496), {}), ((437, 497), {}), ((438, 498), {}), ((439, 500), {}), ((440, 501), {}), ((441, 503), {}), ((442, 504), {}), ((442, 508), {}), ((443, 507), {}), ((444, 509), {}), ((445, 506), {}), ((447, 510), {}), ((448, 505), {}), ((451, 512), {}), ((452, 511), {}), ((454, 516), {}), ((455, 515), {}), ((456, 520), {}), ((457, 517), {}), ((458, 518), {}), ((458, 519), {}), ((459, 524), {}), ((460, 521), {}), ((461, 522), {}), ((462, 523), {}), ((463, 525), {}), ((464, 526), {}), ((465, 528), {}), ((466, 529), {}), ((467, 527), {}), ((467, 531), {}), ((468, 530), {}), ((469, 533), {}), ((470, 532), {}), ((470, 535), {}), ((471, 534), {}), ((473, 537), {}), ((474, 538), {}), ((475, 539), {}), ((np.uint64(49), 104), {}), ((np.uint64(91), 148), {})]
node_props = ['area', 'y', 'correct', 'time', 'x', 'z', 'seg_id', 'temp', 'track_id']
edge_props = []
metadata = GeffMetadata(geff_version='1.1', directed=True, axes=[Axis(name='time', type='time', unit=None, min=None, max=None, scale=1.0, scaled_unit=None, offset=None), Axis(name='z', type='space', unit=None, min=None, max=None, scale=0.25, scaled_unit=None, offset=None), Axis(name='y', type='space', unit=None, min=None, max=None, scale=0.108, scaled_unit=None, offset=None), Axis(name='x', type='space', unit=None, min=None, max=None, scale=0.108, scaled_unit=None, offset=None)], node_props_metadata={}, edge_props_metadata={}, sphere=None, ellipsoid=None, track_node_props=None, related_objects=[RelatedObject(type='labels', path='../segmentation', label_prop='seg_id')], display_hints=None, extra={})
zarr_format = 2
structure_validation = True 117 store,
118 graph.nodes(data=True),
119 edge_data,
120 node_props,
121 edge_props,
122 metadata,
123 zarr_format=zarr_format,
124 structure_validation=structure_validation,
125 )
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/geff/core_io/_base_write.py:98, in write_dicts(geff_store=PosixPath('/Users/malinmayorc/experiments/motile_tracker/curation for real_geff.zarr/tracks'), node_data=[(1, {'area': np.float64(383.25571199999996), 'seg_id': 1, 'time': 0, 'track_id': 1, 'x': np.float64(19.530499878264045), 'y': np.float64(51.580899263497464), 'z': np.float64(2.3196710085823846)}), (3, {'area': np.float64(499.69742399999996), 'seg_id': 3, 'time': 0, 'track_id': 2, 'x': np.float64(30.50604904180575), 'y': np.float64(59.42920583086297), 'z': np.float64(2.675925223500852)}), (6, {'area': np.float64(402.41966399999995), 'seg_id': 6, 'time': 0, 'track_id': 3, 'x': np.float64(20.66132799049303), 'y': np.float64(59.09868951624592), 'z': np.float64(3.119592548042086)}), (7, {'area': np.float64(549.765144), 'seg_id': 7, 'time': 0, 'track_id': 4, 'x': np.float64(25.0279823480115), 'y': np.float64(71.19593902426088), 'z': np.float64(3.0241402081322204)}), (8, {'area': np.float64(1003.5414), 'seg_id': 8, 'time': 0, 'track_id': 5, 'x': np.float64(36.40563825076276), 'y': np.float64(68.9734021211681), 'z': np.float64(5.3773064070899315)}), (9, {'area': np.float64(333.99280799999997), 'seg_id': 9, 'time': 0, 'track_id': 6, 'x': np.float64(29.332985943529664), 'y': np.float64(38.19423799961585), 'z': np.float64(3.64012380170773)}), (12, {'area': np.float64(310.12243199999995), 'seg_id': 12, 'time': 0, 'track_id': 7, 'x': np.float64(43.2225440048142), 'y': np.float64(67.14569659244772), 'z': np.float64(6.5665878403791185)}), (15, {'area': np.float64(487.823472), 'seg_id': 15, 'time': 0, 'track_id': 8, 'x': np.float64(36.836025177533884), 'y': np.float64(51.238748224661066), 'z': np.float64(5.168289577505201)}), (16, {'area': np.float64(294.52766399999996), 'seg_id': 16, 'time': 0, 'track_id': 9, 'x': np.float64(50.87868943804206), 'y': np.float64(65.70168943804205), 'z': np.float64(7.959786246089264)}), (17, {'area': np.float64(290.34612), 'seg_id': 17, 'time': 0, 'track_id': 10, 'x': np.float64(34.43844495329918), 'y': np.float64(77.39454956312142), 'z': np.float64(8.444674600783369)}), (18, {'area': np.float64(364.52041199999996), 'seg_id': 18, 'time': 0, 'track_id': 11, 'x': np.float64(50.87063937219515), 'y': np.float64(58.92904787731888), 'z': np.float64(9.84870847232555)}), (19, {'area': np.float64(180.057168), 'seg_id': 19, 'time': 0, 'track_id': 12, 'x': np.float64(48.15585463496793), 'y': np.float64(65.81858929843881), 'z': np.float64(10.808564649867202)}), (20, {'area': np.float64(289.640448), 'seg_id': 20, 'time': 0, 'track_id': 13, 'x': np.float64(45.83094950064433), 'y': np.float64(66.47329759987113), 'z': np.float64(10.877909552190722)}), (21, {'area': np.float64(446.812848), 'seg_id': 21, 'time': 0, 'track_id': 14, 'x': np.float64(48.99755979324927), 'y': np.float64(43.85950920197353), 'z': np.float64(11.093807920223458)}), (22, {'area': np.float64(410.362848), 'seg_id': 22, 'time': 0, 'track_id': 15, 'x': np.float64(28.915978540162584), 'y': np.float64(75.35749729975555), 'z': np.float64(10.978778210448525)}), (23, {'area': np.float64(244.66989599999997), 'seg_id': 23, 'time': 0, 'track_id': 16, 'x': np.float64(39.022612876313964), 'y': np.float64(76.24799356422665), 'z': np.float64(11.299492884895)}), (24, {'area': np.float64(145.254708), 'seg_id': 24, 'time': 0, 'track_id': 17, 'x': np.float64(38.649840081906326), 'y': np.float64(73.22780286270651), 'z': np.float64(10.870696404553028)}), (25, {'area': np.float64(530.300844), 'seg_id': 25, 'time': 0, 'track_id': 18, 'x': np.float64(23.22641138464415), 'y': np.float64(84.2797261174866), 'z': np.float64(12.83065726744346)}), (26, {'area': np.float64(90.754668), 'seg_id': 26, 'time': 0, 'track_id': 19, 'x': np.float64(54.28900054621984), 'y': np.float64(74.7464450085146), 'z': np.float64(13.98016740031488)}), (27, {'area': np.float64(206.17577999999997), 'seg_id': 27, 'time': 0, 'track_id': 20, 'x': np.float64(49.18682774909836), 'y': np.float64(71.62576191217028), 'z': np.float64(13.211049430733329)}), ...], edge_data=[((1, 65), {}), ((3, 72), {}), ((6, 68), {}), ((6, 71), {}), ((7, 67), {}), ((7, 70), {}), ((8, 69), {}), ((8, 74), {}), ((9, 66), {}), ((9, 77), {}), ((12, 73), {}), ((12, 76), {}), ((15, 75), {}), ((15, 78), {}), ((16, 79), {}), ((17, 81), {}), ((18, 80), {}), ((20, 82), {}), ((21, 83), {}), ((22, 84), {}), ...], node_prop_names=['area', 'y', 'correct', 'time', 'x', 'z', 'seg_id', 'temp', 'track_id'], edge_prop_names=[], metadata=GeffMetadata(geff_version='1.1', directed=True, ...el_prop='seg_id')], display_hints=None, extra={}), zarr_format=2, structure_validation=True)
95 node_props_dict = dict_props_to_arr(node_data, node_prop_names)
97 edge_props_dict = dict_props_to_arr(edge_data, edge_prop_names)
---> 98 write_arrays(
geff_store = PosixPath('/Users/malinmayorc/experiments/motile_tracker/curation for real_geff.zarr/tracks')
nodes_arr = array([ 1, 3, ..., 540, 541], dtype=uint64)
node_props_dict = {'area': {'missing': None, 'values': array([383.25571, 499.69742, ..., 31.81939, 34.76455])}, 'y': {'missing': None, 'values': array([51.5809 , 59.42921, ..., 32.12773, 25.73141])}, 'correct': {'missing': array([ True, True, ..., True, True]), 'values': array([0, 0, ..., 0, 0])}, 'time': {'missing': None, 'values': array([0, 0, ..., 1, 5])}, 'x': {'missing': None, 'values': array([19.5305 , 30.50605, ..., 25.16521, 29.02992])}, 'z': {'missing': None, 'values': array([ 2.31967, 2.67593, ..., 16.22581, 21.83979])}, 'seg_id': {'missing': array([False, False, ..., True, True]), 'values': array([1, 3, ..., 0, 0])}, 'temp': {'missing': array([ True, True, ..., False, True]), 'values': array([0, 0, ..., None, 0], dtype=object)}, 'track_id': {'missing': None, 'values': array([ 1, 2, ..., 245, 246])}}
edges_arr = array([[ 1, 65],
[ 3, 72],
...,
[ 49, 104],
[ 91, 148]], dtype=uint64)
edge_props_dict = {}
metadata = GeffMetadata(geff_version='1.1', directed=True, axes=[Axis(name='time', type='time', unit=None, min=None, max=None, scale=1.0, scaled_unit=None, offset=None), Axis(name='z', type='space', unit=None, min=None, max=None, scale=0.25, scaled_unit=None, offset=None), Axis(name='y', type='space', unit=None, min=None, max=None, scale=0.108, scaled_unit=None, offset=None), Axis(name='x', type='space', unit=None, min=None, max=None, scale=0.108, scaled_unit=None, offset=None)], node_props_metadata={}, edge_props_metadata={}, sphere=None, ellipsoid=None, track_node_props=None, related_objects=[RelatedObject(type='labels', path='../segmentation', label_prop='seg_id')], display_hints=None, extra={})
zarr_format = 2
structure_validation = True 99 geff_store,
100 nodes_arr,
101 node_props_dict,
102 edges_arr,
103 edge_props_dict,
104 metadata,
105 zarr_format=zarr_format,
106 structure_validation=structure_validation,
107 )
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/geff/core_io/_base_write.py:277, in write_arrays(geff_store=PosixPath('/Users/malinmayorc/experiments/motile_tracker/curation for real_geff.zarr/tracks'), node_ids=array([ 1, 3, ..., 540, 541], dtype=uint64), node_props={'area': {'missing': None, 'values': array([383.25571, 499.69742, ..., 31.81939, 34.76455])}, 'correct': {'missing': array([ True, True, ..., True, True]), 'values': array([0, 0, ..., 0, 0])}, 'seg_id': {'missing': array([False, False, ..., True, True]), 'values': array([1, 3, ..., 0, 0])}, 'temp': {'missing': array([ True, True, ..., False, True]), 'values': array([0, 0, ..., None, 0], dtype=object)}, 'time': {'missing': None, 'values': array([0, 0, ..., 1, 5])}, 'track_id': {'missing': None, 'values': array([ 1, 2, ..., 245, 246])}, 'x': {'missing': None, 'values': array([19.5305 , 30.50605, ..., 25.16521, 29.02992])}, 'y': {'missing': None, 'values': array([51.5809 , 59.42921, ..., 32.12773, 25.73141])}, 'z': {'missing': None, 'values': array([ 2.31967, 2.67593, ..., 16.22581, 21.83979])}}, edge_ids=array([[ 1, 65],
[ 3, 72],
...... [ 49, 104],
[ 91, 148]], dtype=uint64), edge_props={}, metadata=GeffMetadata(geff_version='1.1', directed=True, ...el_prop='seg_id')], display_hints=None, extra={}), node_props_unsquish=None, edge_props_unsquish=None, zarr_format=2, structure_validation=True, overwrite=False)
272 node_props[ax.name] = PropDictNpArray(
273 values=np.empty(shape=(0), dtype="float64"), missing=None
274 )
276 if node_props is not None:
--> 277 node_meta = write_props_arrays(
geff_store = PosixPath('/Users/malinmayorc/experiments/motile_tracker/curation for real_geff.zarr/tracks')
node_props = {'area': {'missing': None, 'values': array([383.25571, 499.69742, ..., 31.81939, 34.76455])}, 'y': {'missing': None, 'values': array([51.5809 , 59.42921, ..., 32.12773, 25.73141])}, 'correct': {'missing': array([ True, True, ..., True, True]), 'values': array([0, 0, ..., 0, 0])}, 'time': {'missing': None, 'values': array([0, 0, ..., 1, 5])}, 'x': {'missing': None, 'values': array([19.5305 , 30.50605, ..., 25.16521, 29.02992])}, 'z': {'missing': None, 'values': array([ 2.31967, 2.67593, ..., 16.22581, 21.83979])}, 'seg_id': {'missing': array([False, False, ..., True, True]), 'values': array([1, 3, ..., 0, 0])}, 'temp': {'missing': array([ True, True, ..., False, True]), 'values': array([0, 0, ..., None, 0], dtype=object)}, 'track_id': {'missing': None, 'values': array([ 1, 2, ..., 245, 246])}}
zarr_format = 2
_path.NODES = 'nodes'
node_props_unsquish = None
_path = <module 'geff._path' from '/Users/malinmayorc/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/geff/_path.py'> 278 geff_store, _path.NODES, node_props, node_props_unsquish, zarr_format=zarr_format
279 )
280 else:
281 node_meta = []
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/geff/core_io/_base_write.py:404, in write_props_arrays(geff_store=PosixPath('/Users/malinmayorc/experiments/motile_tracker/curation for real_geff.zarr/tracks'), group='nodes', props={'area': {'missing': None, 'values': array([383.25571, 499.69742, ..., 31.81939, 34.76455])}, 'correct': {'missing': array([ True, True, ..., True, True]), 'values': array([0, 0, ..., 0, 0])}, 'seg_id': {'missing': array([False, False, ..., True, True]), 'values': array([1, 3, ..., 0, 0])}, 'temp': {'missing': array([ True, True, ..., False, True]), 'values': array([0, 0, ..., None, 0], dtype=object)}, 'time': {'missing': None, 'values': array([0, 0, ..., 1, 5])}, 'track_id': {'missing': None, 'values': array([ 1, 2, ..., 245, 246])}, 'x': {'missing': None, 'values': array([19.5305 , 30.50605, ..., 25.16521, 29.02992])}, 'y': {'missing': None, 'values': array([51.5809 , 59.42921, ..., 32.12773, 25.73141])}, 'z': {'missing': None, 'values': array([ 2.31967, 2.67593, ..., 16.22581, 21.83979])}}, props_unsquish=None, zarr_format=2)
402 metadata = []
403 for prop, prop_dict in props.items():
--> 404 prop_metadata = create_props_metadata(prop, prop_dict)
prop = 'temp'
prop_dict = {'missing': array([ True, True, ..., False, True]), 'values': array([0, 0, ..., None, 0], dtype=object)}
prop_metadata = PropMetadata(identifier='seg_id', dtype='int64', varlength=False, unit=None, name=None, description=None) 405 metadata.append(prop_metadata)
407 if prop_metadata.varlength:
File ~/code/sgro_lab_experiments/.pixi/envs/default/lib/python3.11/site-packages/geff_spec/utils.py:303, in create_props_metadata(identifier='temp', prop_data={'missing': array([ True, True, ..., False, True]), 'values': array([0, 0, ..., None, 0], dtype=object)}, unit=None, name=None, description=None)
300 else:
301 # variable length property case
302 varlength = True
--> 303 dtype = values[0].dtype
values = array([0, 0, ..., None, 0], dtype=object) 304 # check that all arrays have the same dtype while we are here
305 for array in values:
AttributeError: 'int' object has no attribute 'dtype'
Metadata
Metadata
Assignees
Labels
Type
Projects
Status