mehta-lab / recOrder

3D quantitative label-free imaging with phase and polarization
BSD 3-Clause "New" or "Revised" License
11 stars 4 forks source link

[BUG] unhashable type: 'list' #479

Open alexleffell opened 2 months ago

alexleffell commented 2 months ago

I tried opening a .zarr folder using the napari-ome-zarr plugin but I got the error "unhashable type: 'list'"


MultipleReaderError Traceback (most recent call last) File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/_qt/qt_viewer.py:966, in QtViewer._qt_open(self=, filenames=['/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr'], stack=False, choose_plugin=False, plugin=None, layer_type=None, kwargs={}) 965 try: --> 966 self.viewer.open( self = <napari._qt.qt_viewer.QtViewer object at 0x7fd94f591550> self.viewer = Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, size=1, style=<CursorStyle.STANDARD: 'standard'>), dims=Dims(ndim=2, ndisplay=2, last_used=0, range=((0, 2, 1), (0, 2, 1)), current_step=(0, 0), order=(0, 1), axis_labels=('0', '1')), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='Ready', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=True, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x7fd964579a60>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, keymap={}) filenames = ['/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr'] stack = False plugin = None layer_type = None kwargs = {} 967 filenames, 968 stack=stack, 969 plugin=plugin, 970 layer_type=layer_type, 971 kwargs, 972 ) 973 except ReaderPluginError as e:

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/components/viewer_model.py:1105, in ViewerModel.open(self=Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoo...ouse_drag_gen={}, _mouse_wheel_gen={}, keymap={}), path=['/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr'], stack=False, plugin=None, layer_type=None, **kwargs={}) 1103 # no plugin choice was made 1104 else: -> 1105 layers = self._open_or_raise_error( layers = <module 'napari.layers' from '/Users/alexleffell/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/layers/init.py'> self = Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, size=1, style=<CursorStyle.STANDARD: 'standard'>), dims=Dims(ndim=2, ndisplay=2, last_used=0, range=((0, 2, 1), (0, 2, 1)), current_step=(0, 0), order=(0, 1), axis_labels=('0', '1')), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='Ready', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=True, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x7fd964579a60>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, keymap={}) _path = ['/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr'] _stack = False kwargs = {} layer_type = None 1106 _path, kwargs, layer_type, _stack 1107 ) 1108 added.extend(layers)

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/components/viewer_model.py:1225, in ViewerModel._open_or_raise_error(self=Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoo...ouse_drag_gen={}, _mouse_wheel_gen={}, keymap={}), paths=['/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr'], kwargs={}, layer_type=None, stack=False) 1223 # multiple plugins 1224 else: -> 1225 raise MultipleReaderError( trans = <napari.utils.translations.TranslationBundle object at 0x7fd9609aec70> path_message = '/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr' readers = {'recOrder-napari': 'recOrder-napari', 'napari': 'napari builtins', 'napari-ome-zarr': 'napari-ome-zarr'} paths = ['/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap16.zarr'] 1226 trans.( 1227 "Multiple plugins found capable of reading {path_message}. Select plugin from {plugins} and pass to reading function e.g. viewer.open(..., plugin=...).", 1228 path_message=path_message, 1229 plugins=readers, 1230 deferred=True, 1231 ), 1232 list(readers.keys()), 1233 paths, 1234 ) 1236 return added

MultipleReaderError: Multiple plugins found capable of reading /Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr. Select plugin from {'recOrder-napari': 'recOrder-napari', 'napari': 'napari builtins', 'napari-ome-zarr': 'napari-ome-zarr'} and pass to reading function e.g. viewer.open(..., plugin=...).

During handling of the above exception, another exception occurred:

TypeError Traceback (most recent call last) File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/_qt/qt_viewer.py:1331, in QtViewer.dropEvent(self=, event=) 1328 else: 1329 filenames.append(url.toString()) -> 1331 self._qt_open( self = <napari._qt.qt_viewer.QtViewer object at 0x7fd94f591550> filenames = ['/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr'] shift_down = <KeyboardModifier.NoModifier: 0> alt_down = <KeyboardModifier.NoModifier: 0> 1332 filenames, 1333 stack=bool(shift_down), 1334 choose_plugin=bool(alt_down), 1335 )

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/_qt/qt_viewer.py:984, in QtViewer._qt_open(self=, filenames=['/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr'], stack=False, choose_plugin=False, plugin=None, layer_type=None, kwargs={}) 974 handle_gui_reading( 975 filenames, 976 self, (...) 981 kwargs, 982 ) 983 except MultipleReaderError: --> 984 handle_gui_reading(filenames, self, stack, **kwargs) filenames = ['/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr'] self = <napari._qt.qt_viewer.QtViewer object at 0x7fd94f591550> stack = False kwargs = {}

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/_qt/dialogs/qt_reader_dialog.py:201, in handle_gui_reading(paths=['/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr'], qt_viewer=, stack=False, plugin_name=None, error=None, plugin_override=False, kwargs={}) 199 display_name, persist = readerDialog.get_user_choices() 200 if display_name: --> 201 open_with_dialog_choices( display_name = 'napari-ome-zarr' persist = True readerDialog = <napari._qt.dialogs.qt_reader_dialog.QtReaderDialog object at 0x7fd9566eaca0> readerDialog._extension = '/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr' readers = {'recOrder-napari': 'recOrder-napari', 'napari': 'napari builtins', 'napari-ome-zarr': 'napari-ome-zarr'} paths = ['/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr'] stack = False qt_viewer = <napari._qt.qt_viewer.QtViewer object at 0x7fd94f591550> kwargs = {} 202 display_name, 203 persist, 204 readerDialog._extension, 205 readers, 206 paths, 207 stack, 208 qt_viewer, 209 kwargs, 210 )

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/_qt/dialogs/qt_reader_dialog.py:294, in open_with_dialog_choices(display_name='napari-ome-zarr', persist=True, extension='/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr', readers={'napari': 'napari builtins', 'napari-ome-zarr': 'napari-ome-zarr', 'recOrder-napari': 'recOrder-napari'}, paths=['/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr'], stack=False, qt_viewer=, kwargs={}) 290 plugin_name = [ 291 p_name for p_name, d_name in readers.items() if d_name == display_name 292 ][0] 293 # may throw error, but we let it this time --> 294 qt_viewer.viewer.open(paths, stack=stack, plugin=plugin_name, kwargs) plugin_name = 'napari-ome-zarr' paths = ['/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr'] qt_viewer.viewer = Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, size=1, style=<CursorStyle.STANDARD: 'standard'>), dims=Dims(ndim=2, ndisplay=2, last_used=0, range=((0, 2, 1), (0, 2, 1)), current_step=(0, 0), order=(0, 1), axis_labels=('0', '1')), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='Ready', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=True, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x7fd964579a60>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, keymap={}) stack = False kwargs = {} qt_viewer = <napari._qt.qt_viewer.QtViewer object at 0x7fd94f591550> 296 if persist: 297 if not extension.endswith(os.sep):

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/components/viewer_model.py:1095, in ViewerModel.open(self=Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoo...ouse_drag_gen={}, _mouse_wheel_gen={}, keymap={}), path=['/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr'], stack=False, plugin='napari-ome-zarr', layer_type=None, **kwargs={}) 1092 _path = [_path] if not isinstance(_path, list) else _path 1093 if plugin: 1094 added.extend( -> 1095 self._add_layers_with_plugins( added = [] self = Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, size=1, style=<CursorStyle.STANDARD: 'standard'>), dims=Dims(ndim=2, ndisplay=2, last_used=0, range=((0, 2, 1), (0, 2, 1)), current_step=(0, 0), order=(0, 1), axis_labels=('0', '1')), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='Ready', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=True, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x7fd964579a60>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, keymap={}) _path = ['/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr'] kwargs = {} plugin = 'napari-ome-zarr' layer_type = None _stack = False 1096 _path, 1097 kwargs=kwargs, 1098 plugin=plugin, 1099 layer_type=layer_type, 1100 stack=_stack, 1101 ) 1102 ) 1103 # no plugin choice was made 1104 else: 1105 layers = self._open_or_raise_error( 1106 _path, kwargs, layer_type, _stack 1107 )

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/components/viewer_model.py:1321, in ViewerModel._add_layers_with_plugins(self=Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoo...ouse_drag_gen={}, _mouse_wheel_gen={}, keymap={}), paths=['/Users/alexleffell/Downloads/2024_07_08_dinoflagellate_birefringence_processed/snap_16.zarr'], stack=False, kwargs={}, plugin='napari-ome-zarr', layer_type=None) 1319 # actually add the layer 1320 with layer_source(path=filename, reader_plugin=plugin): -> 1321 added.extend(self._add_layer_from_data(*_data)) added = [] _data = ([dask.array<from-zarr, shape=(1, 6, 39, 2048, 2048), dtype=float32, chunksize=(1, 1, 1, 2048, 2048), chunktype=numpy.ndarray>], {'scale': (1.0, 1.0, 0.06499999895770306, 0.06499999895770306), 'channel_axis': 1, 'name': '0', 'visible': [True, True, True, True, True, False], 'contrast_limits': [[0.0, 100.0], [0.0, 3.141592653589793], [0.0, 5.0], [0.0, 65535.0], [-0.2, 0.2], [0.0, 65535.0]], 'colormap': [<vispy.color.colormap.Colormap object at 0x7fd95798f670>, <vispy.color.colormap.Colormap object at 0x7fd9579dc820>, <vispy.color.colormap.Colormap object at 0x7fd9579dcbe0>, <vispy.color.colormap.Colormap object at 0x7fd9579dc8e0>, <vispy.color.colormap.Colormap object at 0x7fd9579dc790>, <vispy.color.colormap.Colormap object at 0x7fd9567a43a0>], 'metadata': {'plate': {'acquisitions': [{'id': 0}], 'columns': [{'name': '0'}], 'rows': [{'name': '0'}], 'version': '0.4', 'wells': [{'columnIndex': 0, 'path': '0/0', 'rowIndex': 0}]}}}, 'image') self = Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, size=1, style=<CursorStyle.STANDARD: 'standard'>), dims=Dims(ndim=2, ndisplay=2, last_used=0, range=((0, 2, 1), (0, 2, 1)), current_step=(0, 0), order=(0, 1), axis_labels=('0', '1')), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='Ready', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=True, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x7fd964579a60>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, keymap={}) 1322 return added

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/components/viewer_model.py:1395, in ViewerModel._add_layer_from_data(self=Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoo...ouse_drag_gen={}, _mouse_wheel_gen={}, keymap={}), data=[dask.array<from-zarr, shape=(1, 6, 39, 2048, 204...e=(1, 1, 1, 2048, 2048), chunktype=numpy.ndarray>], meta={'channel_axis': 1, 'colormap': [, , , , , ], 'contrast_limits': [[0.0, 100.0], [0.0, 3.141592653589793], [0.0, 5.0], [0.0, 65535.0], [-0.2, 0.2], [0.0, 65535.0]], 'metadata': {'plate': {'acquisitions': [{'id': 0}], 'columns': [{'name': '0'}], 'rows': [{'name': '0'}], 'version': '0.4', 'wells': [{'columnIndex': 0, 'path': '0/0', 'rowIndex': 0}]}}, 'name': '0', 'scale': (1.0, 1.0, 0.06499999895770306, 0.06499999895770306), 'visible': [True, True, True, True, True, False]}, layer_type='image') 1393 try: 1394 addmethod = getattr(self, 'add' + layer_type) -> 1395 layer = add_method(data, **(meta or {})) add_method = <bound method ViewerModel.add_image of Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, size=1, style=<CursorStyle.STANDARD: 'standard'>), dims=Dims(ndim=2, ndisplay=2, last_used=0, range=((0, 2, 1), (0, 2, 1)), current_step=(0, 0), order=(0, 1), axis_labels=('0', '1')), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='Ready', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=True, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x7fd964579a60>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, keymap={})> data = [dask.array<from-zarr, shape=(1, 6, 39, 2048, 2048), dtype=float32, chunksize=(1, 1, 1, 2048, 2048), chunktype=numpy.ndarray>] meta or {} = {'scale': (1.0, 1.0, 0.06499999895770306, 0.06499999895770306), 'channel_axis': 1, 'name': '0', 'visible': [True, True, True, True, True, False], 'contrast_limits': [[0.0, 100.0], [0.0, 3.141592653589793], [0.0, 5.0], [0.0, 65535.0], [-0.2, 0.2], [0.0, 65535.0]], 'colormap': [<vispy.color.colormap.Colormap object at 0x7fd95798f670>, <vispy.color.colormap.Colormap object at 0x7fd9579dc820>, <vispy.color.colormap.Colormap object at 0x7fd9579dcbe0>, <vispy.color.colormap.Colormap object at 0x7fd9579dc8e0>, <vispy.color.colormap.Colormap object at 0x7fd9579dc790>, <vispy.color.colormap.Colormap object at 0x7fd9567a43a0>], 'metadata': {'plate': {'acquisitions': [{'id': 0}], 'columns': [{'name': '0'}], 'rows': [{'name': '0'}], 'version': '0.4', 'wells': [{'columnIndex': 0, 'path': '0/0', 'rowIndex': 0}]}}} meta = {'scale': (1.0, 1.0, 0.06499999895770306, 0.06499999895770306), 'channel_axis': 1, 'name': '0', 'visible': [True, True, True, True, True, False], 'contrast_limits': [[0.0, 100.0], [0.0, 3.141592653589793], [0.0, 5.0], [0.0, 65535.0], [-0.2, 0.2], [0.0, 65535.0]], 'colormap': [<vispy.color.colormap.Colormap object at 0x7fd95798f670>, <vispy.color.colormap.Colormap object at 0x7fd9579dc820>, <vispy.color.colormap.Colormap object at 0x7fd9579dcbe0>, <vispy.color.colormap.Colormap object at 0x7fd9579dc8e0>, <vispy.color.colormap.Colormap object at 0x7fd9579dc790>, <vispy.color.colormap.Colormap object at 0x7fd9567a43a0>], 'metadata': {'plate': {'acquisitions': [{'id': 0}], 'columns': [{'name': '0'}], 'rows': [{'name': '0'}], 'version': '0.4', 'wells': [{'columnIndex': 0, 'path': '0/0', 'rowIndex': 0}]}}} 1396 except TypeError as exc: 1397 if 'unexpected keyword argument' not in str(exc):

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/utils/migrations.py:62, in rename_argument.._wrapper.._update_from_dict(*args=(Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoo...ouse_drag_gen={}, _mouse_wheel_gen={}, keymap={}), [dask.array<from-zarr, shape=(1, 6, 39, 2048, 204...e=(1, 1, 1, 2048, 2048), chunktype=numpy.ndarray>]), *kwargs={'channel_axis': 1, 'colormap': [, , , , , ], 'contrast_limits': [[0.0, 100.0], [0.0, 3.141592653589793], [0.0, 5.0], [0.0, 65535.0], [-0.2, 0.2], [0.0, 65535.0]], 'metadata': {'plate': {'acquisitions': [{'id': 0}], 'columns': [{'name': '0'}], 'rows': [{'name': '0'}], 'version': '0.4', 'wells': [{'columnIndex': 0, 'path': '0/0', 'rowIndex': 0}]}}, 'name': '0', 'scale': (1.0, 1.0, 0.06499999895770306, 0.06499999895770306), 'visible': [True, True, True, True, True, False]}) 60 kwargs = kwargs.copy() 61 kwargs[to_name] = kwargs.pop(from_name) ---> 62 return func(args, **kwargs) func = <function ViewerModel.add_image at 0x7fd9646d9700> kwargs = {'scale': (1.0, 1.0, 0.06499999895770306, 0.06499999895770306), 'channel_axis': 1, 'name': '0', 'visible': [True, True, True, True, True, False], 'contrast_limits': [[0.0, 100.0], [0.0, 3.141592653589793], [0.0, 5.0], [0.0, 65535.0], [-0.2, 0.2], [0.0, 65535.0]], 'colormap': [<vispy.color.colormap.Colormap object at 0x7fd95798f670>, <vispy.color.colormap.Colormap object at 0x7fd9579dc820>, <vispy.color.colormap.Colormap object at 0x7fd9579dcbe0>, <vispy.color.colormap.Colormap object at 0x7fd9579dc8e0>, <vispy.color.colormap.Colormap object at 0x7fd9579dc790>, <vispy.color.colormap.Colormap object at 0x7fd9567a43a0>], 'metadata': {'plate': {'acquisitions': [{'id': 0}], 'columns': [{'name': '0'}], 'rows': [{'name': '0'}], 'version': '0.4', 'wells': [{'columnIndex': 0, 'path': '0/0', 'rowIndex': 0}]}}} args = (Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, mouse_pan=True, mouse_zoom=True), cursor=Cursor(position=(1.0, 1.0), scaled=True, size=1, style=<CursorStyle.STANDARD: 'standard'>), dims=Dims(ndim=2, ndisplay=2, last_used=0, range=((0, 2, 1), (0, 2, 1)), current_step=(0, 0), order=(0, 1), axis_labels=('0', '1')), grid=GridCanvas(stride=1, shape=(-1, -1), enabled=False), layers=[], help='', status='Ready', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_over_canvas=True, mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x7fd964579a60>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, keymap={}), [dask.array<from-zarr, shape=(1, 6, 39, 2048, 2048), dtype=float32, chunksize=(1, 1, 1, 2048, 2048), chunktype=numpy.ndarray>])

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/components/viewer_model.py:907, in ViewerModel.add_image(self=Viewer(camera=Camera(center=(0.0, 0.0, 0.0), zoo...ouse_drag_gen={}, _mouse_wheel_gen={}, keymap={}), data=[dask.array<from-zarr, shape=(1, 6, 39, 2048, 204...e=(1, 1, 1, 2048, 2048), chunktype=numpy.ndarray>], channel_axis=1, rgb=None, colormap=[Colormap(colors=<class 'numpy.ndarray'> (2, 4) f...>, controls=<class 'numpy.ndarray'> (2,) float32), Colormap(colors=<class 'numpy.ndarray'> (2, 4) f...>, controls=<class 'numpy.ndarray'> (2,) float32), Colormap(colors=<class 'numpy.ndarray'> (2, 4) f...>, controls=<class 'numpy.ndarray'> (2,) float32), Colormap(colors=<class 'numpy.ndarray'> (2, 4) f...>, controls=<class 'numpy.ndarray'> (2,) float32), Colormap(colors=<class 'numpy.ndarray'> (2, 4) f...>, controls=<class 'numpy.ndarray'> (2,) float32), Colormap(colors=<class 'numpy.ndarray'> (2, 4) f...>, controls=<class 'numpy.ndarray'> (2,) float32)], contrast_limits=[[0.0, 100.0], [0.0, 3.141592653589793], [0.0, 5.0], [0.0, 65535.0], [-0.2, 0.2], [0.0, 65535.0]], gamma=1, interpolation2d='nearest', interpolation3d='linear', rendering='mip', depiction='volume', iso_threshold=None, attenuation=0.05, name='0', metadata={'plate': {'acquisitions': [{'id': 0}], 'columns': [{'name': '0'}], 'rows': [{'name': '0'}], 'version': '0.4', 'wells': [{'columnIndex': 0, 'path': '0/0', 'rowIndex': 0}]}}, scale=(1.0, 1.0, 0.06499999895770306, 0.06499999895770306), translate=None, rotate=None, shear=None, affine=None, opacity=1, blending=None, visible=[True, True, True, True, True, False], multiscale=None, cache=True, plane=None, experimental_clipping_planes=None, custom_interpolation_kernel_2d=None) 903 return layer 905 layerdata_list = split_channels(data, channel_axis, kwargs) --> 907 layer_list = [ layerdata_list = [(dask.array<getitem, shape=(1, 39, 2048, 2048), dtype=float32, chunksize=(1, 1, 2048, 2048), chunktype=numpy.ndarray>, {'rgb': None, 'colormap': Colormap(colors=<class 'numpy.ndarray'> (2, 4) float32, name='[unnamed colormap 0]', interpolation=<ColormapInterpolationMode.LINEAR: 'linear'>, controls=<class 'numpy.ndarray'> (2,) float32), 'contrast_limits': [0.0, 100.0], 'gamma': 1, 'interpolation2d': 'nearest', 'interpolation3d': 'linear', 'rendering': 'mip', 'depiction': 'volume', 'iso_threshold': None, 'attenuation': 0.05, 'name': '0', 'metadata': {'plate': {'acquisitions': [{'id': 0}], 'columns': [{'name': '0'}], 'rows': [{'name': '0'}], 'version': '0.4', 'wells': [{'columnIndex': 0, 'path': '0/0', 'rowIndex': 0}]}}, 'scale': (1.0, 1.0, 0.06499999895770306, 0.06499999895770306), 'translate': None, 'rotate': None, 'shear': None, 'affine': None, 'opacity': 1, 'blending': 'translucent_no_depth', 'visible': True, 'multiscale': False, 'cache': True, 'plane': None, 'experimental_clipping_planes': None, 'custom_interpolation_kernel_2d': None}, 'image'), (dask.array<getitem, shape=(1, 39, 2048, 2048), dtype=float32, chunksize=(1, 1, 2048, 2048), chunktype=numpy.ndarray>, {'rgb': None, 'colormap': Colormap(colors=<class 'numpy.ndarray'> (2, 4) float32, name='[unnamed colormap 1]', interpolation=<ColormapInterpolationMode.LINEAR: 'linear'>, controls=<class 'numpy.ndarray'> (2,) float32), 'contrast_limits': [0.0, 3.141592653589793], 'gamma': 1, 'interpolation2d': 'nearest', 'interpolation3d': 'linear', 'rendering': 'mip', 'depiction': 'volume', 'iso_threshold': None, 'attenuation': 0.05, 'name': '0', 'metadata': {'plate': {'acquisitions': [{'id': 0}], 'columns': [{'name': '0'}], 'rows': [{'name': '0'}], 'version': '0.4', 'wells': [{'columnIndex': 0, 'path': '0/0', 'rowIndex': 0}]}}, 'scale': (1.0, 1.0, 0.06499999895770306, 0.06499999895770306), 'translate': None, 'rotate': None, 'shear': None, 'affine': None, 'opacity': 1, 'blending': 'additive', 'visible': True, 'multiscale': False, 'cache': True, 'plane': None, 'experimental_clipping_planes': None, 'custom_interpolation_kernel_2d': None}, 'image'), (dask.array<getitem, shape=(1, 39, 2048, 2048), dtype=float32, chunksize=(1, 1, 2048, 2048), chunktype=numpy.ndarray>, {'rgb': None, 'colormap': Colormap(colors=<class 'numpy.ndarray'> (2, 4) float32, name='[unnamed colormap 2]', interpolation=<ColormapInterpolationMode.LINEAR: 'linear'>, controls=<class 'numpy.ndarray'> (2,) float32), 'contrast_limits': [0.0, 5.0], 'gamma': 1, 'interpolation2d': 'nearest', 'interpolation3d': 'linear', 'rendering': 'mip', 'depiction': 'volume', 'iso_threshold': None, 'attenuation': 0.05, 'name': '0', 'metadata': {'plate': {'acquisitions': [{'id': 0}], 'columns': [{'name': '0'}], 'rows': [{'name': '0'}], 'version': '0.4', 'wells': [{'columnIndex': 0, 'path': '0/0', 'rowIndex': 0}]}}, 'scale': (1.0, 1.0, 0.06499999895770306, 0.06499999895770306), 'translate': None, 'rotate': None, 'shear': None, 'affine': None, 'opacity': 1, 'blending': 'additive', 'visible': True, 'multiscale': False, 'cache': True, 'plane': None, 'experimental_clipping_planes': None, 'custom_interpolation_kernel_2d': None}, 'image'), (dask.array<getitem, shape=(1, 39, 2048, 2048), dtype=float32, chunksize=(1, 1, 2048, 2048), chunktype=numpy.ndarray>, {'rgb': None, 'colormap': Colormap(colors=<class 'numpy.ndarray'> (2, 4) float32, name='[unnamed colormap 3]', interpolation=<ColormapInterpolationMode.LINEAR: 'linear'>, controls=<class 'numpy.ndarray'> (2,) float32), 'contrast_limits': [0.0, 65535.0], 'gamma': 1, 'interpolation2d': 'nearest', 'interpolation3d': 'linear', 'rendering': 'mip', 'depiction': 'volume', 'iso_threshold': None, 'attenuation': 0.05, 'name': '0', 'metadata': {'plate': {'acquisitions': [{'id': 0}], 'columns': [{'name': '0'}], 'rows': [{'name': '0'}], 'version': '0.4', 'wells': [{'columnIndex': 0, 'path': '0/0', 'rowIndex': 0}]}}, 'scale': (1.0, 1.0, 0.06499999895770306, 0.06499999895770306), 'translate': None, 'rotate': None, 'shear': None, 'affine': None, 'opacity': 1, 'blending': 'additive', 'visible': True, 'multiscale': False, 'cache': True, 'plane': None, 'experimental_clipping_planes': None, 'custom_interpolation_kernel_2d': None}, 'image'), (dask.array<getitem, shape=(1, 39, 2048, 2048), dtype=float32, chunksize=(1, 1, 2048, 2048), chunktype=numpy.ndarray>, {'rgb': None, 'colormap': Colormap(colors=<class 'numpy.ndarray'> (2, 4) float32, name='[unnamed colormap 4]', interpolation=<ColormapInterpolationMode.LINEAR: 'linear'>, controls=<class 'numpy.ndarray'> (2,) float32), 'contrast_limits': [-0.2, 0.2], 'gamma': 1, 'interpolation2d': 'nearest', 'interpolation3d': 'linear', 'rendering': 'mip', 'depiction': 'volume', 'iso_threshold': None, 'attenuation': 0.05, 'name': '0', 'metadata': {'plate': {'acquisitions': [{'id': 0}], 'columns': [{'name': '0'}], 'rows': [{'name': '0'}], 'version': '0.4', 'wells': [{'columnIndex': 0, 'path': '0/0', 'rowIndex': 0}]}}, 'scale': (1.0, 1.0, 0.06499999895770306, 0.06499999895770306), 'translate': None, 'rotate': None, 'shear': None, 'affine': None, 'opacity': 1, 'blending': 'additive', 'visible': True, 'multiscale': False, 'cache': True, 'plane': None, 'experimental_clipping_planes': None, 'custom_interpolation_kernel_2d': None}, 'image'), (dask.array<getitem, shape=(1, 39, 2048, 2048), dtype=float32, chunksize=(1, 1, 2048, 2048), chunktype=numpy.ndarray>, {'rgb': None, 'colormap': Colormap(colors=<class 'numpy.ndarray'> (2, 4) float32, name='[unnamed colormap 5]', interpolation=<ColormapInterpolationMode.LINEAR: 'linear'>, controls=<class 'numpy.ndarray'> (2,) float32), 'contrast_limits': [0.0, 65535.0], 'gamma': 1, 'interpolation2d': 'nearest', 'interpolation3d': 'linear', 'rendering': 'mip', 'depiction': 'volume', 'iso_threshold': None, 'attenuation': 0.05, 'name': '0', 'metadata': {'plate': {'acquisitions': [{'id': 0}], 'columns': [{'name': '0'}], 'rows': [{'name': '0'}], 'version': '0.4', 'wells': [{'columnIndex': 0, 'path': '0/0', 'rowIndex': 0}]}}, 'scale': (1.0, 1.0, 0.06499999895770306, 0.06499999895770306), 'translate': None, 'rotate': None, 'shear': None, 'affine': None, 'opacity': 1, 'blending': 'additive', 'visible': False, 'multiscale': False, 'cache': True, 'plane': None, 'experimental_clipping_planes': None, 'custom_interpolation_kernel_2d': None}, 'image')] Image = <class 'napari.layers.image.image.Image'> 908 Image(image, i_kwargs) for image, ikwargs, in layerdata_list 909 ] 910 self.layers.extend(layer_list) 912 return layer_list

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/components/viewer_model.py:908, in (.0=) 903 return layer 905 layerdata_list = split_channels(data, channel_axis, kwargs) 907 layer_list = [ --> 908 Image(image, i_kwargs) for image, ikwargs, in layerdata_list Image = <class 'napari.layers.image.image.Image'> image = dask.array<getitem, shape=(1, 39, 2048, 2048), dtype=float32, chunksize=(1, 1, 2048, 2048), chunktype=numpy.ndarray> image, ikwargs, = (dask.array<getitem, shape=(1, 39, 2048, 2048), dtype=float32, chunksize=(1, 1, 2048, 2048), chunktype=numpy.ndarray>, {'rgb': None, 'colormap': Colormap(colors=<class 'numpy.ndarray'> (2, 4) float32, name='[unnamed colormap 0]', interpolation=<ColormapInterpolationMode.LINEAR: 'linear'>, controls=<class 'numpy.ndarray'> (2,) float32), 'contrast_limits': [0.0, 100.0], 'gamma': 1, 'interpolation2d': 'nearest', 'interpolation3d': 'linear', 'rendering': 'mip', 'depiction': 'volume', 'iso_threshold': None, 'attenuation': 0.05, 'name': '0', 'metadata': {'plate': {'acquisitions': [{'id': 0}], 'columns': [{'name': '0'}], 'rows': [{'name': '0'}], 'version': '0.4', 'wells': [{'columnIndex': 0, 'path': '0/0', 'rowIndex': 0}]}}, 'scale': (1.0, 1.0, 0.06499999895770306, 0.06499999895770306), 'translate': None, 'rotate': None, 'shear': None, 'affine': None, 'opacity': 1, 'blending': 'translucent_no_depth', 'visible': True, 'multiscale': False, 'cache': True, 'plane': None, 'experimental_clipping_planes': None, 'custom_interpolation_kernel_2d': None}, 'image') i_kwargs = {'rgb': None, 'colormap': Colormap(colors=<class 'numpy.ndarray'> (2, 4) float32, name='[unnamed colormap 0]', interpolation=<ColormapInterpolationMode.LINEAR: 'linear'>, controls=<class 'numpy.ndarray'> (2,) float32), 'contrast_limits': [0.0, 100.0], 'gamma': 1, 'interpolation2d': 'nearest', 'interpolation3d': 'linear', 'rendering': 'mip', 'depiction': 'volume', 'iso_threshold': None, 'attenuation': 0.05, 'name': '0', 'metadata': {'plate': {'acquisitions': [{'id': 0}], 'columns': [{'name': '0'}], 'rows': [{'name': '0'}], 'version': '0.4', 'wells': [{'columnIndex': 0, 'path': '0/0', 'rowIndex': 0}]}}, 'scale': (1.0, 1.0, 0.06499999895770306, 0.06499999895770306), 'translate': None, 'rotate': None, 'shear': None, 'affine': None, 'opacity': 1, 'blending': 'translucent_no_depth', 'visible': True, 'multiscale': False, 'cache': True, 'plane': None, 'experimental_clipping_planes': None, 'custom_interpolation_kernel2d': None} = 'image' 909 ] 910 self.layers.extend(layer_list) 912 return layer_list

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/layers/base/base.py:89, in PostInit.call(self=<class 'napari.layers.image.image.Image'>, *args=(dask.array<getitem, shape=(1, 39, 2048, 2048), d...size=(1, 1, 2048, 2048), chunktype=numpy.ndarray>,), kwargs={'affine': None, 'attenuation': 0.05, 'blending': 'translucent_no_depth', 'cache': True, 'colormap': Colormap(colors=<class 'numpy.ndarray'> (2, 4) f...>, controls=<class 'numpy.ndarray'> (2,) float32), 'contrast_limits': [0.0, 100.0], 'custom_interpolation_kernel_2d': None, 'depiction': 'volume', 'experimental_clipping_planes': None, 'gamma': 1, ...}) 87 def call(self, *args, *kwargs): 88 obj = super().call(args, kwargs) ---> 89 obj._post_init() obj = <Image layer '0' at 0x7fd9567a4fd0> 90 return obj

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/layers/image/image.py:295, in _ImageBase._post_init(self=<Image layer '0'>) 293 def _post_init(self): 294 # Trigger generation of view slice and thumbnail --> 295 self.refresh() self = <Image layer '0' at 0x7fd9567a4fd0>

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/layers/base/base.py:1297, in Layer.refresh(self=<Image layer '0'>, event=None) 1295 """Refresh all layer data based on current view slice.""" 1296 if self.visible: -> 1297 self.set_view_slice() self = <Image layer '0' at 0x7fd9567a4fd0> 1298 self.events.set_data() 1299 self._update_thumbnail()

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/layers/base/base.py:1062, in Layer.set_view_slice(self=<Image layer '0'>) 1060 def set_view_slice(self): 1061 with self.dask_optimized_slicing(): -> 1062 self._set_view_slice() self = <Image layer '0' at 0x7fd9567a4fd0>

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/layers/image/image.py:1327, in Image._set_view_slice(self=<Image layer '0'>) 1326 def _set_view_slice(self): -> 1327 super()._set_view_slice() 1328 if self._should_calc_clims: 1329 self.reset_contrast_limits_range()

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/layers/image/image.py:599, in _ImageBase._set_view_slice(self=<Image layer '0'>) 595 # Load our images, might be sync or async. 596 data = self._SliceDataClass( 597 self, image_indices, image, thumbnail_source 598 ) --> 599 self._load_slice(data) data = <napari.layers.image._image_slice_data.ImageSliceData object at 0x7fd957bd8490> self = <Image layer '0' at 0x7fd9567a4fd0>

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/layers/image/image.py:619, in _ImageBase._load_slice(self=<Image layer '0'>, data=) 612 def _load_slice(self, data: ImageSliceData): 613 """Load the image and maybe thumbnail source. 614 615 Parameters 616 ---------- 617 data : Slice 618 """ --> 619 if self._slice.load(data): data = <napari.layers.image._image_slice_data.ImageSliceData object at 0x7fd957bd8490> self._slice = <napari.layers.image._image_slice.ImageSlice object at 0x7fd957bd8e20> self = <Image layer '0' at 0x7fd9567a4fd0> 620 # The load was synchronous. 621 self._on_data_loaded(data, sync=True) 622 else: 623 # The load will be asynchronous. Signal that our self.loaded 624 # property is now false, since the load is in progress.

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/layers/image/_image_slice.py:125, in ImageSlice.load(self=, data=) 112 """Load this data into the slice. 113 114 Parameters (...) 122 Return True if load was synchronous. 123 """ 124 self.loaded = False # False until self._on_loaded is calls --> 125 return self.loader.load(data) self = <napari.layers.image._image_slice.ImageSlice object at 0x7fd957bd8e20> data = <napari.layers.image._image_slice_data.ImageSliceData object at 0x7fd957bd8490> self.loader = <napari.layers.image._image_loader.ImageLoader object at 0x7fd957bd8f40>

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/layers/image/_image_loader.py:22, in ImageLoader.load(self=, data=) 9 def load(self, data: ImageSliceData) -> bool: 10 """Load the ImageSliceData synchronously. 11 12 Parameters (...) 20 True if load happened synchronously. 21 """ ---> 22 data.load_sync() data = <napari.layers.image._image_slice_data.ImageSliceData object at 0x7fd957bd8490> 23 return True

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/napari/layers/image/_image_slice_data.py:44, in ImageSliceData.load_sync(self=) 42 def load_sync(self) -> None: 43 """Call asarray on our images to load them.""" ---> 44 self.image = np.asarray(self.image) self.image = dask.array<getitem, shape=(2048, 2048), dtype=float32, chunksize=(2048, 2048), chunktype=numpy.ndarray> self = <napari.layers.image._image_slice_data.ImageSliceData object at 0x7fd957bd8490> np = <module 'numpy' from '/Users/alexleffell/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/numpy/init.py'> 46 if self.thumbnail_source is not None: 47 self.thumbnail_source = np.asarray(self.thumbnail_source)

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/dask/array/core.py:1693, in Array.array(self=dask.array<getitem, shape=(2048, 2048), dtype=fl... chunksize=(2048, 2048), chunktype=numpy.ndarray>, dtype=None, kwargs={}) 1692 def array(self, dtype=None, kwargs): -> 1693 x = self.compute() self = dask.array<getitem, shape=(2048, 2048), dtype=float32, chunksize=(2048, 2048), chunktype=numpy.ndarray> 1694 if dtype and x.dtype != dtype: 1695 x = x.astype(dtype)

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/dask/base.py:376, in DaskMethodsMixin.compute(self=dask.array<getitem, shape=(2048, 2048), dtype=fl... chunksize=(2048, 2048), chunktype=numpy.ndarray>, kwargs={}) 352 def compute(self, kwargs): 353 """Compute this dask collection 354 355 This turns a lazy Dask collection into its in-memory equivalent. (...) 374 dask.compute 375 """ --> 376 (result,) = compute(self, traverse=False, **kwargs) self = dask.array<getitem, shape=(2048, 2048), dtype=float32, chunksize=(2048, 2048), chunktype=numpy.ndarray> kwargs = {} 377 return result

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/dask/base.py:649, in compute(traverse=False, optimize_graph=True, scheduler=None, get=None, *args=(dask.array<getitem, shape=(2048, 2048), dtype=fl... chunksize=(2048, 2048), chunktype=numpy.ndarray>,), kwargs={}) 646 if not collections: 647 return args --> 649 schedule = get_scheduler( scheduler = None collections = [dask.array<getitem, shape=(2048, 2048), dtype=float32, chunksize=(2048, 2048), chunktype=numpy.ndarray>] get = None 650 scheduler=scheduler, 651 collections=collections, 652 get=get, 653 ) 655 dsk = collections_to_dsk(collections, optimize_graph, kwargs) 656 keys, postcomputes = [], []

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/dask/base.py:1524, in get_scheduler(get=None, scheduler=None, collections=[dask.array<getitem, shape=(2048, 2048), dtype=fl... chunksize=(2048, 2048), chunktype=numpy.ndarray>], cls=None) 1521 raise ValueError(get_err_msg) 1523 try: -> 1524 from distributed import get_client 1526 return get_client().get 1527 except (ImportError, ValueError):

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/distributed/init.py:23 20 from dask.config import config # type: ignore 22 from distributed._version import get_versions ---> 23 from distributed.actor import Actor, ActorFuture, BaseActorFuture 24 from distributed.client import ( 25 Client, 26 CompatibleExecutor, (...) 35 wait, 36 ) 37 from distributed.core import Status, connect, rpc

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/distributed/actor.py:13 9 from typing import Generic, Literal, NoReturn, TypeVar 11 from tornado.ioloop import IOLoop ---> 13 from distributed.client import Future 14 from distributed.protocol import to_serialize 15 from distributed.utils import LateLoopEvent, iscoroutinefunction, sync, thread_state

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/distributed/client.py:119 97 from distributed.utils import ( 98 CancelledError, 99 LoopRunner, (...) 109 thread_state, 110 ) 111 from distributed.utils_comm import ( 112 WrappedKey, 113 gather_from_workers, (...) 117 unpack_remotedata, 118 ) --> 119 from distributed.worker import get_client, get_worker, secede 121 logger = logging.getLogger(name) 123 _global_clients: weakref.WeakValueDictionary[ 124 int, Client 125 ] = weakref.WeakValueDictionary()

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/distributed/worker.py:119 117 from distributed.utils_perf import disable_gc_diagnosis, enable_gc_diagnosis 118 from distributed.versions import get_versions --> 119 from distributed.worker_memory import ( 120 DeprecatedMemoryManagerAttribute, 121 DeprecatedMemoryMonitor, 122 WorkerDataParameter, 123 WorkerMemoryManager, 124 ) 125 from distributed.worker_state_machine import ( 126 AcquireReplicasEvent, 127 BaseWorker, (...) 151 WorkerState, 152 ) 154 if TYPE_CHECKING: 155 # FIXME import from typing (needs Python >=3.10)

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/site-packages/distributed/worker_memory.py:56 53 from distributed.nanny import Nanny 54 from distributed.worker import Worker ---> 56 WorkerDataParameter: TypeAlias = Union[ MutableMapping = <class 'collections.abc.MutableMapping'> Key, object = (typing.Union[str, bytes, int, float, tuple], <class 'object'>) Key = typing.Union[str, bytes, int, float, tuple] Callable = <class 'collections.abc.Callable'> [str] = [<class 'str'>] Any = typing.Any str, Any = (<class 'str'>, typing.Any) 57 # pre-initialized 58 MutableMapping[Key, object], 59 # constructor 60 Callable[[], MutableMapping[Key, object]], 61 # constructor, passed worker.local_directory 62 Callable[[str], MutableMapping[Key, object]], 63 # (constructor, kwargs to constructor) 64 tuple[Callable[..., MutableMapping[Key, object]], dict[str, Any]], 65 # initialize internally 66 None, 67 ] 69 worker_logger = logging.getLogger("distributed.worker.memory") 70 worker_logger.addFilter(RateLimiterFilter(r"Unmanaged memory use is high"))

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/typing.py:243, in _tp_cache..inner(*args=(typing.Union, (collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object], collections.abc.Callable[[], collections.abc.Mut...ng.Union[str, bytes, int, float, tuple], object]], collections.abc.Callable[[<class 'str'>], collec...ng.Union[str, bytes, int, float, tuple], object]], tuple[collections.abc.Callable[..., collections...., float, tuple], object]], dict[str, typing.Any]], None)), *kwds={}) 241 except TypeError: 242 pass # All real errors (not unhashable args) are raised below. --> 243 return func(args, **kwds) func = <function _SpecialForm.getitem at 0x7fd95d842a60> args = (typing.Union, (collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object], collections.abc.Callable[[], collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object]], collections.abc.Callable[[<class 'str'>], collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object]], tuple[collections.abc.Callable[..., collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object]], dict[str, typing.Any]], None)) kwds = {}

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/typing.py:316, in _SpecialForm.getitem(self=typing.Union, parameters=(collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object], collections.abc.Callable[[], collections.abc.Mut...ng.Union[str, bytes, int, float, tuple], object]], collections.abc.Callable[[<class 'str'>], collec...ng.Union[str, bytes, int, float, tuple], object]], tuple[collections.abc.Callable[..., collections...., float, tuple], object]], dict[str, typing.Any]], None)) 314 @_tp_cache 315 def getitem(self, parameters): --> 316 return self._getitem(self, parameters) self._getitem = <function Union at 0x7fd95d842dc0> self = typing.Union parameters = (collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object], collections.abc.Callable[[], collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object]], collections.abc.Callable[[<class 'str'>], collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object]], tuple[collections.abc.Callable[..., collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object]], dict[str, typing.Any]], None)

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/typing.py:421, in Union(self=typing.Union, parameters=(collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object], collections.abc.Callable[[], collections.abc.Mut...ng.Union[str, bytes, int, float, tuple], object]], collections.abc.Callable[[<class 'str'>], collec...ng.Union[str, bytes, int, float, tuple], object]], tuple[collections.abc.Callable[..., collections...., float, tuple], object]], dict[str, typing.Any]], <class 'NoneType'>)) 419 msg = "Union[arg, ...]: each arg must be a type." 420 parameters = tuple(_type_check(p, msg) for p in parameters) --> 421 parameters = _remove_dups_flatten(parameters) parameters = (collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object], collections.abc.Callable[[], collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object]], collections.abc.Callable[[<class 'str'>], collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object]], tuple[collections.abc.Callable[..., collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object]], dict[str, typing.Any]], <class 'NoneType'>) 422 if len(parameters) == 1: 423 return parameters[0]

File ~/opt/anaconda3/envs/recOrder/lib/python3.9/typing.py:215, in _remove_dups_flatten(parameters=(collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object], collections.abc.Callable[[], collections.abc.Mut...ng.Union[str, bytes, int, float, tuple], object]], collections.abc.Callable[[<class 'str'>], collec...ng.Union[str, bytes, int, float, tuple], object]], tuple[collections.abc.Callable[..., collections...., float, tuple], object]], dict[str, typing.Any]], <class 'NoneType'>)) 213 params.append(p) 214 # Weed out strict duplicates, preserving the first of each occurrence. --> 215 all_params = set(params) params = [collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object], collections.abc.Callable[[], collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object]], collections.abc.Callable[[<class 'str'>], collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object]], tuple[collections.abc.Callable[..., collections.abc.MutableMapping[typing.Union[str, bytes, int, float, tuple], object]], dict[str, typing.Any]], <class 'NoneType'>] 216 if len(all_params) < len(params): 217 new_params = []

TypeError: unhashable type: 'list'

Expected behavior the zarr image stacks should appear in the main screen

Environment:

Operating system: Python version: 3.9 (installed as per the napari plugin website) conda create -y -n recOrder python=3.9 conda activate recOrder pip install recOrder-napari

ziw-liu commented 1 week ago

What Zarr dataset are you trying to load? Also note that napari-ome-zarr is a separate project at https://github.com/ome/napari-ome-zarr.