Closed noisysky closed 2 years ago
Thanks for raising the issue. I was under the impression that the original plugin engine was supported for the foreseeable future.
If the branch ends up working, it would be great if you could open a PR.
cc @alessandrofelder @dpshelio @paddyroddy as this is directly related to the cellfinder-napari
work.
This needs to be fixed as it's affecting more people (and seems incompatible with the latest changes to the cellfinder-napari
plugin).
@adamltyson do you have some sample output data that we can test this plugin with? I'm struggling to generate some from cellfinder
by myself
@dstansby Will send you some.
I'm a little bit confused with issues #6, 9, and 10; not sure if/how they are all related and don't want to add to the confusion, but I am having very similar issues with freshly installed Napari version on MacOS 12.2.1 (see output from napari -info below for more details).
Napari cannot read the json file in the output folder (I just drag-and-drop this, note it is based on the test-data you provide):
Could not find a backend to open /Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/cellfinder.json`` with iomode
ri`. (see below for full output, it is rather long)
And it also cannot read the xml file (again just drag-and-drop): /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/_qt/qt_viewer.py:1068: UserWarning: No readers found to try reading /Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/points/cell_classification.xml.!
Note that it can read tiff files. BTW I'm a bit confused about exactly which tiff files to open to get the warped/registered atlas overview and borders that fit to the original data. You mention "the cellfinder directory" somewhere, as opposed to the "registration directory", but I just have one output directory that includes 4 subdirectories (analysis, figures, points, registration), along with cellfinder json and log files.
Here is the full output I get after I drag-and-drop the full output folder (the final UserWarning line came after trying to load the xml file):
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/_qt/qt_viewer.py:1094, in QtViewer.dropEvent(self=<napari._qt.qt_viewer.QtViewer object>, event=<PyQt5.QtGui.QDropEvent object>)
1086 # there is no existing setting, or it failed, get choice from user
1087 readerDialog = QtReaderDialog(
1088 parent=self,
1089 pth=filename,
(...)
1092 readers=readers,
1093 )
-> 1094 self._get_and_try_preferred_reader(
self = <napari._qt.qt_viewer.QtViewer object at 0x130b23700>
readers = {'napari': 'napari'}
error_message = ''
readerDialog = <napari._qt.dialogs.qt_reader_dialog.QtReaderDialog object at 0x12feb2f70>
1095 readerDialog, readers, error_message
1096 )
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/_qt/qt_viewer.py:1161, in QtViewer._get_and_try_preferred_reader(self=<napari._qt.qt_viewer.QtViewer object>, readerDialog=<napari._qt.dialogs.qt_reader_dialog.QtReaderDialog object>, readers={'napari': 'napari'}, error_message='')
1159 display_name, persist_choice = choice
1160 plugin_name = readers[display_name]
-> 1161 self.viewer.open(
self.viewer = Viewer(axes=Axes(visible=False, labels=True, colored=True, dashed=False, arrows=True), camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0, interactive=True), cursor=Cursor(position=(1, 1), 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=[], scale_bar=ScaleBar(visible=False, colored=False, ticks=True, position=<Position.BOTTOM_RIGHT: 'bottom_right'>, font_size=10, unit=None), text_overlay=TextOverlay(visible=False, color=(0.5, 0.5, 0.5, 1.0), font_size=10, position=<TextOverlayPosition.TOP_LEFT: 'top_left'>, text=''), overlays=Overlays(interaction_box=InteractionBox(points=None, show=False, show_handle=False, show_vertices=False, selection_box_drag=None, selection_box_final=None, transform_start=<napari.utils.transforms.transforms.Affine object at 0x130b17cd0>, transform_drag=<napari.utils.transforms.transforms.Affine object at 0x130b17d30>, transform_final=<napari.utils.transforms.transforms.Affine object at 0x130b17d90>, transform=<napari.utils.transforms.transforms.Affine object at 0x130b17df0>, allow_new_selection=True, selected_vertex=None)), help='', status='Ready', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_move_callbacks=[<function InteractionBoxMouseBindings.initialize_mouse_events.<locals>.mouse_move at 0x14a5f10d0>], mouse_drag_callbacks=[<function InteractionBoxMouseBindings.initialize_mouse_events.<locals>.mouse_drag at 0x14a5dcca0>], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x13054fd30>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, keymap={'Shift': <function InteractionBoxMouseBindings.initialize_key_events.<locals>.hold_to_lock_aspect_ratio at 0x14a5dc3a0>, 'Control-Shift-R': <function InteractionBoxMouseBindings._reset_active_layer_affine at 0x14a5641f0>, 'Control-Shift-A': <function InteractionBoxMouseBindings._transform_active_layer at 0x14a564790>})
self = <napari._qt.qt_viewer.QtViewer object at 0x130b23700>
readerDialog = <napari._qt.dialogs.qt_reader_dialog.QtReaderDialog object at 0x12feb2f70>
readerDialog._current_file = '/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/'
plugin_name = 'napari'
1162 readerDialog._current_file,
1163 plugin=plugin_name,
1164 )
1165 # do we have settings to save?
1166 if persist_choice:
1167 # need explicit reassignment of object for persistence
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/components/viewer_model.py:918, in ViewerModel.open(self=Viewer(axes=Axes(visible=False, labels=True, col...indings._transform_active_layer at 0x14a564790>}), path='/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/', stack=False, plugin='napari', layer_type=None, **kwargs={})
909 with progress(
910 paths,
911 desc=trans._('Opening Files'),
(...)
914 else None, # indeterminate bar for 1 file
915 ) as pbr:
916 for _path in pbr:
917 added.extend(
--> 918 self._add_layers_with_plugins(
added = []
self = Viewer(axes=Axes(visible=False, labels=True, colored=True, dashed=False, arrows=True), camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0, interactive=True), cursor=Cursor(position=(1, 1), 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=[], scale_bar=ScaleBar(visible=False, colored=False, ticks=True, position=<Position.BOTTOM_RIGHT: 'bottom_right'>, font_size=10, unit=None), text_overlay=TextOverlay(visible=False, color=(0.5, 0.5, 0.5, 1.0), font_size=10, position=<TextOverlayPosition.TOP_LEFT: 'top_left'>, text=''), overlays=Overlays(interaction_box=InteractionBox(points=None, show=False, show_handle=False, show_vertices=False, selection_box_drag=None, selection_box_final=None, transform_start=<napari.utils.transforms.transforms.Affine object at 0x130b17cd0>, transform_drag=<napari.utils.transforms.transforms.Affine object at 0x130b17d30>, transform_final=<napari.utils.transforms.transforms.Affine object at 0x130b17d90>, transform=<napari.utils.transforms.transforms.Affine object at 0x130b17df0>, allow_new_selection=True, selected_vertex=None)), help='', status='Ready', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_move_callbacks=[<function InteractionBoxMouseBindings.initialize_mouse_events.<locals>.mouse_move at 0x14a5f10d0>], mouse_drag_callbacks=[<function InteractionBoxMouseBindings.initialize_mouse_events.<locals>.mouse_drag at 0x14a5dcca0>], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x13054fd30>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, keymap={'Shift': <function InteractionBoxMouseBindings.initialize_key_events.<locals>.hold_to_lock_aspect_ratio at 0x14a5dc3a0>, 'Control-Shift-R': <function InteractionBoxMouseBindings._reset_active_layer_affine at 0x14a5641f0>, 'Control-Shift-A': <function InteractionBoxMouseBindings._transform_active_layer at 0x14a564790>})
_path = '/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/'
[_path] = ['/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/']
kwargs = {}
plugin = 'napari'
layer_type = None
stack = False
919 [_path],
920 kwargs=kwargs,
921 plugin=plugin,
922 layer_type=layer_type,
923 stack=stack,
924 )
925 )
926 return added
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/components/viewer_model.py:983, in ViewerModel._add_layers_with_plugins(self=Viewer(axes=Axes(visible=False, labels=True, col...indings._transform_active_layer at 0x14a564790>}), paths=['/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/'], stack=False, kwargs={}, plugin='napari', layer_type=None)
981 else:
982 assert len(paths) == 1
--> 983 layer_data, hookimpl = read_data_with_plugins(
stack = False
plugin = 'napari'
paths = ['/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/']
984 paths, plugin=plugin, stack=stack
985 )
987 # glean layer names from filename. These will be used as *fallback*
988 # names, if the plugin does not return a name kwarg in their meta dict.
989 filenames = []
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/plugins/io.py:68, in read_data_with_plugins(paths=['/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/'], plugin='napari', stack=False)
65 assert len(paths) == 1
66 hookimpl: Optional[HookImplementation]
---> 68 res = _npe2.read(paths, plugin, stack=stack)
paths = ['/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/']
plugin = 'napari'
stack = False
_npe2 = <module 'napari.plugins._npe2' from '/Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/plugins/_npe2.py'>
69 if res is not None:
70 _ld, hookimpl = res
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/plugins/_npe2.py:52, in read(paths=['/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/'], plugin='napari', stack=False)
50 except ValueError as e:
51 if 'No readers returned data' not in str(e):
---> 52 raise e
53 return None
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/plugins/_npe2.py:48, in read(paths=['/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/'], plugin='napari', stack=False)
46 npe1_path = paths[0]
47 try:
---> 48 layer_data, reader = read_get_reader(npe1_path, plugin_name=plugin)
npe1_path = '/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/'
plugin = 'napari'
49 return layer_data, _FakeHookimpl(reader.plugin_name)
50 except ValueError as e:
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/npe2/io_utils.py:44, in read_get_reader(path='/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/', plugin_name='napari')
40 def read_get_reader(
41 path: PathLike, *, plugin_name: Optional[str] = None
42 ) -> Tuple[List[LayerData], ReaderContribution]:
43 """Variant of `read` that also returns the `ReaderContribution` used."""
---> 44 return _read(path, plugin_name=plugin_name, return_reader=True)
path = '/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/'
plugin_name = 'napari'
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/npe2/io_utils.py:131, in _read(path='/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/', plugin_name='napari', return_reader=True, _pm=<npe2._plugin_manager.PluginManager object>)
128 read_func = rdr.exec(kwargs={"path": path})
129 if read_func is not None:
130 # if the reader function raises an exception here, we don't try to catch it
--> 131 layer_data = read_func(path)
path = '/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/'
read_func = <function magic_imread at 0x150965af0>
132 if layer_data:
133 return (layer_data, rdr) if return_reader else layer_data
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/types.py:144, in image_reader_to_layerdata_reader.<locals>.reader_function(*args=('/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/',), **kwargs={})
142 @wraps(func)
143 def reader_function(*args, **kwargs) -> List[LayerData]:
--> 144 result = func(*args, **kwargs)
func = <function magic_imread at 0x12fe81a60>
args = ('/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/',)
kwargs = {}
145 return [(result,)]
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/utils/io.py:244, in magic_imread(filenames=['/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/'], use_dask=True, stack=True)
242 else:
243 if shape is None:
--> 244 image = imread(filename)
filename = '/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/cellfinder.json'
245 shape = image.shape
246 dtype = image.dtype
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/utils/io.py:141, in imread(filename='/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/cellfinder.json')
138 else:
139 import imageio
--> 141 return imageio.imread(filename)
filename = '/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/cellfinder.json'
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/imageio/__init__.py:86, in imread(uri='/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/cellfinder.json', format=None, **kwargs={})
65 def imread(uri, format=None, **kwargs):
66 """imread(uri, format=None, **kwargs)
67
68 Reads an image from the specified file. Returns a numpy array, which
(...)
84 to see what arguments are available for a particular format.
85 """
---> 86 return imread_v2(uri, format=format, **kwargs)
imread_v2 = <function imread at 0x12fcfde50>
uri = '/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/cellfinder.json'
format = None
kwargs = {}
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/imageio/v2.py:159, in imread(uri='/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/cellfinder.json', format=None, **kwargs={})
154 if "mode" in kwargs:
155 raise TypeError(
156 'Invalid keyword argument "mode", ' 'perhaps you mean "pilmode"?'
157 )
--> 159 with imopen(uri, "ri", plugin=format) as file:
uri = '/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/cellfinder.json'
format = None
160 return file.read(index=0, **kwargs)
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/imageio/core/imopen.py:333, in imopen(uri='/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/cellfinder.json', io_mode='ri', plugin=None, format_hint=None, legacy_mode=True, **kwargs={})
327 err_msg += (
328 "\nBased on the extension, the following plugins might add capable backends:\n"
329 f"{install_candidates}"
330 )
332 request.finish()
--> 333 raise err_type(err_msg)
err_type = <class 'ValueError'>
err_msg = 'Could not find a backend to open `/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/cellfinder.json`` with iomode `ri`.'
ValueError: Could not find a backend to open `/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/cellfinder.json`` with iomode `ri`.
/Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/_qt/qt_viewer.py:1068: UserWarning: No readers found to try reading /Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/points/cell_classification.xml.!
Here is the output from napari --info: (napari-env) user-adm@BR-M-3016296dzne testoutput % napari --info napari: 0.4.15 Platform: macOS-12.2.1-x86_64-i386-64bit System: MacOS 12.2.1 Python: 3.9.10 | packaged by conda-forge | (main, Feb 1 2022, 21:27:48) [Clang 11.1.0 ] Qt: 5.15.2 PyQt5: 5.15.6 NumPy: 1.22.3 SciPy: 1.8.0 Dask: 2022.02.1 VisPy: 0.9.6
OpenGL:
Screens:
Plugins:
Thanks for reporting, I'll take a look. (p.s. I edited the comment to include the traceback in triple backticks (```) to make it easier to read)
@jjtukker could you try pip install brainglobe-napari-io==0.1.5rc0
?
@jjtukker could you try
pip install brainglobe-napari-io==0.1.5rc0
?
thanks for the tip, I tried that but for some reason it did not show up in the installed plugins menu. Note I tried this on napari v0.4.11 because this worked for a previous poster (also had to add python.app via conda-forge.
(napari-env) user-adm@BR-M-3016296dzne testoutput % pip install brainglobe-napari-io==0.1.5rc0
Requirement already satisfied: brainglobe-napari-io==0.1.5rc0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (0.1.5rc0)
Requirement already satisfied: bg-space in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from brainglobe-napari-io==0.1.5rc0) (0.5.0)
Requirement already satisfied: imlib in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from brainglobe-napari-io==0.1.5rc0) (0.1.3)
Requirement already satisfied: napari in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from brainglobe-napari-io==0.1.5rc0) (0.4.11)
Requirement already satisfied: bg-atlasapi in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from brainglobe-napari-io==0.1.5rc0) (1.0.0)
Requirement already satisfied: tifffile>=2020.8.13 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from brainglobe-napari-io==0.1.5rc0) (2022.3.16)
Requirement already satisfied: napari-ndtiffs in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from brainglobe-napari-io==0.1.5rc0) (0.1.2)
Requirement already satisfied: napari-plugin-engine>=0.1.4 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from brainglobe-napari-io==0.1.5rc0) (0.2.0)
Requirement already satisfied: numpy>=1.19.2 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from tifffile>=2020.8.13->brainglobe-napari-io==0.1.5rc0) (1.22.3)
Requirement already satisfied: click in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from bg-atlasapi->brainglobe-napari-io==0.1.5rc0) (8.0.4)
Requirement already satisfied: pandas in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from bg-atlasapi->brainglobe-napari-io==0.1.5rc0) (1.4.1)
Requirement already satisfied: tqdm>=4.46.1 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from bg-atlasapi->brainglobe-napari-io==0.1.5rc0) (4.63.0)
Requirement already satisfied: rich in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from bg-atlasapi->brainglobe-napari-io==0.1.5rc0) (12.0.0)
Requirement already satisfied: requests in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from bg-atlasapi->brainglobe-napari-io==0.1.5rc0) (2.27.1)
Requirement already satisfied: meshio in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from bg-atlasapi->brainglobe-napari-io==0.1.5rc0) (5.3.4)
Requirement already satisfied: treelib in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from bg-atlasapi->brainglobe-napari-io==0.1.5rc0) (1.6.1)
Requirement already satisfied: scipy in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from bg-space->brainglobe-napari-io==0.1.5rc0) (1.8.0)
Requirement already satisfied: natsort in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from imlib->brainglobe-napari-io==0.1.5rc0) (8.1.0)
Requirement already satisfied: configobj in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from imlib->brainglobe-napari-io==0.1.5rc0) (5.0.6)
Requirement already satisfied: micrometa in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from imlib->brainglobe-napari-io==0.1.5rc0) (0.0.11)
Requirement already satisfied: psutil in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from imlib->brainglobe-napari-io==0.1.5rc0) (5.9.0)
Requirement already satisfied: seaborn in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from imlib->brainglobe-napari-io==0.1.5rc0) (0.11.2)
Requirement already satisfied: slurmio in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from imlib->brainglobe-napari-io==0.1.5rc0) (0.0.6)
Requirement already satisfied: scikit-image in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from imlib->brainglobe-napari-io==0.1.5rc0) (0.19.2)
Requirement already satisfied: PyYAML in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from imlib->brainglobe-napari-io==0.1.5rc0) (6.0)
Requirement already satisfied: napari-svg>=0.1.4 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (0.1.6)
Requirement already satisfied: cachey>=0.2.1 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (0.2.1)
Requirement already satisfied: imageio>=2.5.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (2.16.1)
Requirement already satisfied: magicgui>=0.2.6 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (0.3.7)
Requirement already satisfied: wrapt>=1.11.1 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (1.14.0)
Requirement already satisfied: typing-extensions in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (4.1.1)
Requirement already satisfied: pint>=0.17 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (0.18)
Requirement already satisfied: toolz>=0.10.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (0.11.2)
Requirement already satisfied: dask[array]!=2.28.0,>=2.1.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (2022.2.1)
Requirement already satisfied: jsonschema>=3.2.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (4.4.0)
Requirement already satisfied: pydantic>=1.8.1 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (1.9.0)
Requirement already satisfied: vispy!=0.8.0,>=0.6.4 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (0.9.6)
Requirement already satisfied: numpydoc>=0.9.2 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (1.2)
Requirement already satisfied: PyOpenGL>=3.1.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (3.1.6)
Requirement already satisfied: qtpy>=1.7.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (2.0.1)
Requirement already satisfied: superqt>=0.2.2 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (0.3.1)
Requirement already satisfied: napari-console>=0.0.4 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (0.0.4)
Requirement already satisfied: appdirs>=1.4.4 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (1.4.4)
Requirement already satisfied: Pillow!=7.1.0,!=7.1.1 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari->brainglobe-napari-io==0.1.5rc0) (9.0.1)
Requirement already satisfied: python-dateutil in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari-ndtiffs->brainglobe-napari-io==0.1.5rc0) (2.8.2)
Requirement already satisfied: heapdict in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from cachey>=0.2.1->napari->brainglobe-napari-io==0.1.5rc0) (1.0.1)
Requirement already satisfied: partd>=0.3.10 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from dask[array]!=2.28.0,>=2.1.0->napari->brainglobe-napari-io==0.1.5rc0) (1.2.0)
Requirement already satisfied: packaging>=20.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from dask[array]!=2.28.0,>=2.1.0->napari->brainglobe-napari-io==0.1.5rc0) (21.3)
Requirement already satisfied: fsspec>=0.6.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from dask[array]!=2.28.0,>=2.1.0->napari->brainglobe-napari-io==0.1.5rc0) (2022.2.0)
Requirement already satisfied: cloudpickle>=1.1.1 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from dask[array]!=2.28.0,>=2.1.0->napari->brainglobe-napari-io==0.1.5rc0) (2.0.0)
Requirement already satisfied: attrs>=17.4.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from jsonschema>=3.2.0->napari->brainglobe-napari-io==0.1.5rc0) (21.4.0)
Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from jsonschema>=3.2.0->napari->brainglobe-napari-io==0.1.5rc0) (0.18.1)
Requirement already satisfied: docstring-parser in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from magicgui>=0.2.6->napari->brainglobe-napari-io==0.1.5rc0) (0.13)
Requirement already satisfied: psygnal>=0.3.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from magicgui>=0.2.6->napari->brainglobe-napari-io==0.1.5rc0) (0.3.3)
Requirement already satisfied: ipykernel>=5.2.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (6.9.2)
Requirement already satisfied: IPython>=7.7.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (8.1.1)
Requirement already satisfied: qtconsole!=4.7.6,>=4.5.1 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (5.2.2)
Requirement already satisfied: sphinx>=1.8 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from numpydoc>=0.9.2->napari->brainglobe-napari-io==0.1.5rc0) (4.4.0)
Requirement already satisfied: Jinja2>=2.10 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from numpydoc>=0.9.2->napari->brainglobe-napari-io==0.1.5rc0) (3.0.3)
Requirement already satisfied: kiwisolver in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from vispy!=0.8.0,>=0.6.4->napari->brainglobe-napari-io==0.1.5rc0) (1.4.0)
Requirement already satisfied: hsluv in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from vispy!=0.8.0,>=0.6.4->napari->brainglobe-napari-io==0.1.5rc0) (5.0.2)
Requirement already satisfied: freetype-py in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from vispy!=0.8.0,>=0.6.4->napari->brainglobe-napari-io==0.1.5rc0) (2.2.0)
Requirement already satisfied: six in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from configobj->imlib->brainglobe-napari-io==0.1.5rc0) (1.16.0)
Requirement already satisfied: luddite in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from micrometa->imlib->brainglobe-napari-io==0.1.5rc0) (1.0.2)
Requirement already satisfied: configparser in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from micrometa->imlib->brainglobe-napari-io==0.1.5rc0) (5.2.0)
Requirement already satisfied: pytz>=2020.1 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from pandas->bg-atlasapi->brainglobe-napari-io==0.1.5rc0) (2021.3)
Requirement already satisfied: certifi>=2017.4.17 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from requests->bg-atlasapi->brainglobe-napari-io==0.1.5rc0) (2021.10.8)
Requirement already satisfied: charset-normalizer~=2.0.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from requests->bg-atlasapi->brainglobe-napari-io==0.1.5rc0) (2.0.12)
Requirement already satisfied: idna<4,>=2.5 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from requests->bg-atlasapi->brainglobe-napari-io==0.1.5rc0) (3.3)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from requests->bg-atlasapi->brainglobe-napari-io==0.1.5rc0) (1.26.9)
Requirement already satisfied: commonmark<0.10.0,>=0.9.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from rich->bg-atlasapi->brainglobe-napari-io==0.1.5rc0) (0.9.1)
Requirement already satisfied: pygments<3.0.0,>=2.6.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from rich->bg-atlasapi->brainglobe-napari-io==0.1.5rc0) (2.11.2)
Requirement already satisfied: PyWavelets>=1.1.1 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from scikit-image->imlib->brainglobe-napari-io==0.1.5rc0) (1.3.0)
Requirement already satisfied: networkx>=2.2 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from scikit-image->imlib->brainglobe-napari-io==0.1.5rc0) (2.7.1)
Requirement already satisfied: matplotlib>=2.2 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from seaborn->imlib->brainglobe-napari-io==0.1.5rc0) (3.5.1)
Requirement already satisfied: future in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from treelib->bg-atlasapi->brainglobe-napari-io==0.1.5rc0) (0.18.2)
Requirement already satisfied: debugpy<2.0,>=1.0.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from ipykernel>=5.2.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (1.5.1)
Requirement already satisfied: traitlets<6.0,>=5.1.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from ipykernel>=5.2.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (5.1.1)
Requirement already satisfied: jupyter-client<8.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from ipykernel>=5.2.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (7.1.2)
Requirement already satisfied: tornado<7.0,>=4.2 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from ipykernel>=5.2.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (6.1)
Requirement already satisfied: matplotlib-inline<0.2.0,>=0.1.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from ipykernel>=5.2.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (0.1.3)
Requirement already satisfied: appnope in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from ipykernel>=5.2.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (0.1.2)
Requirement already satisfied: nest-asyncio in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from ipykernel>=5.2.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (1.5.4)
Requirement already satisfied: decorator in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from IPython>=7.7.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (5.1.1)
Requirement already satisfied: setuptools>=18.5 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from IPython>=7.7.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (60.10.0)
Requirement already satisfied: pexpect>4.3 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from IPython>=7.7.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (4.8.0)
Requirement already satisfied: jedi>=0.16 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from IPython>=7.7.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (0.18.1)
Requirement already satisfied: pickleshare in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from IPython>=7.7.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (0.7.5)
Requirement already satisfied: stack-data in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from IPython>=7.7.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (0.2.0)
Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from IPython>=7.7.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (3.0.28)
Requirement already satisfied: backcall in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from IPython>=7.7.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (0.2.0)
Requirement already satisfied: MarkupSafe>=2.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from Jinja2>=2.10->numpydoc>=0.9.2->napari->brainglobe-napari-io==0.1.5rc0) (2.1.1)
Requirement already satisfied: cycler>=0.10 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from matplotlib>=2.2->seaborn->imlib->brainglobe-napari-io==0.1.5rc0) (0.11.0)
Requirement already satisfied: pyparsing>=2.2.1 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from matplotlib>=2.2->seaborn->imlib->brainglobe-napari-io==0.1.5rc0) (3.0.7)
Requirement already satisfied: fonttools>=4.22.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from matplotlib>=2.2->seaborn->imlib->brainglobe-napari-io==0.1.5rc0) (4.30.0)
Requirement already satisfied: locket in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from partd>=0.3.10->dask[array]!=2.28.0,>=2.1.0->napari->brainglobe-napari-io==0.1.5rc0) (0.2.1)
Requirement already satisfied: pyzmq>=17.1 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from qtconsole!=4.7.6,>=4.5.1->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (22.3.0)
Requirement already satisfied: ipython-genutils in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from qtconsole!=4.7.6,>=4.5.1->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (0.2.0)
Requirement already satisfied: jupyter-core in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from qtconsole!=4.7.6,>=4.5.1->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (4.9.2)
Requirement already satisfied: sphinxcontrib-qthelp in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from sphinx>=1.8->numpydoc>=0.9.2->napari->brainglobe-napari-io==0.1.5rc0) (1.0.3)
Requirement already satisfied: snowballstemmer>=1.1 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from sphinx>=1.8->numpydoc>=0.9.2->napari->brainglobe-napari-io==0.1.5rc0) (2.2.0)
Requirement already satisfied: sphinxcontrib-jsmath in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from sphinx>=1.8->numpydoc>=0.9.2->napari->brainglobe-napari-io==0.1.5rc0) (1.0.1)
Requirement already satisfied: imagesize in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from sphinx>=1.8->numpydoc>=0.9.2->napari->brainglobe-napari-io==0.1.5rc0) (1.3.0)
Requirement already satisfied: docutils<0.18,>=0.14 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from sphinx>=1.8->numpydoc>=0.9.2->napari->brainglobe-napari-io==0.1.5rc0) (0.17.1)
Requirement already satisfied: importlib-metadata>=4.4 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from sphinx>=1.8->numpydoc>=0.9.2->napari->brainglobe-napari-io==0.1.5rc0) (4.11.3)
Requirement already satisfied: sphinxcontrib-htmlhelp>=2.0.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from sphinx>=1.8->numpydoc>=0.9.2->napari->brainglobe-napari-io==0.1.5rc0) (2.0.0)
Requirement already satisfied: alabaster<0.8,>=0.7 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from sphinx>=1.8->numpydoc>=0.9.2->napari->brainglobe-napari-io==0.1.5rc0) (0.7.12)
Requirement already satisfied: sphinxcontrib-applehelp in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from sphinx>=1.8->numpydoc>=0.9.2->napari->brainglobe-napari-io==0.1.5rc0) (1.0.2)
Requirement already satisfied: sphinxcontrib-serializinghtml>=1.1.5 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from sphinx>=1.8->numpydoc>=0.9.2->napari->brainglobe-napari-io==0.1.5rc0) (1.1.5)
Requirement already satisfied: sphinxcontrib-devhelp in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from sphinx>=1.8->numpydoc>=0.9.2->napari->brainglobe-napari-io==0.1.5rc0) (1.0.2)
Requirement already satisfied: babel>=1.3 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from sphinx>=1.8->numpydoc>=0.9.2->napari->brainglobe-napari-io==0.1.5rc0) (2.9.1)
Requirement already satisfied: zipp>=0.5 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from importlib-metadata>=4.4->sphinx>=1.8->numpydoc>=0.9.2->napari->brainglobe-napari-io==0.1.5rc0) (3.7.0)
Requirement already satisfied: parso<0.9.0,>=0.8.0 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from jedi>=0.16->IPython>=7.7.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (0.8.3)
Requirement already satisfied: entrypoints in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from jupyter-client<8.0->ipykernel>=5.2.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (0.4)
Requirement already satisfied: ptyprocess>=0.5 in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from pexpect>4.3->IPython>=7.7.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (0.7.0)
Requirement already satisfied: wcwidth in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->IPython>=7.7.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (0.2.5)
Requirement already satisfied: asttokens in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from stack-data->IPython>=7.7.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (2.0.5)
Requirement already satisfied: executing in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from stack-data->IPython>=7.7.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (0.8.3)
Requirement already satisfied: pure-eval in /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages (from stack-data->IPython>=7.7.0->napari-console>=0.0.4->napari->brainglobe-napari-io==0.1.5rc0) (0.2.2)
(napari-env) user-adm@BR-M-3016296dzne testoutput % napari
/Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/main.py:393: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
_MACOS_AT_LEAST_CATALINA = sys.platform == "darwin" and StrictVersion(
/Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/main.py:395: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
) > StrictVersion('19.0.0')
/Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/main.py:396: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
_MACOS_AT_LEAST_BIG_SUR = sys.platform == "darwin" and StrictVersion(
/Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/main.py:398: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
) > StrictVersion('20.0.0')
12:08:48 ERROR PluginError: Error in plugin 'builtins', hook 'napari_get_reader'
Cause was: ValueError('Could not find a backend to open /Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/cellfinder.json`` with iomode
ri`.')
in file: /Users/user-adm/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/imageio/core/imopen.py
at line: 333
author: napari team
email: napari-steering-council@googlegroups.com
package: napari
url: https://napari.org
version: 0.4.11
ValueError Traceback (most recent call last)
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/_qt/qt_viewer.py:996, in QtViewer.dropEvent(self=
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/components/viewer_model.py:914, in ViewerModel.open(self=Viewer(axes=Axes(visible=False, labels=True, col...._qt.qt_viewer.QtViewer object at 0x1340820d0>>}), path=['/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/'], stack=False, plugin=None, layer_type=None, **kwargs={}) 911 added: List[Layer] = [] # for layers that get added 912 for _path in paths: 913 added.extend( --> 914 self._add_layers_with_plugins( added = [] self = Viewer(axes=Axes(visible=False, labels=True, colored=True, dashed=False, arrows=True), camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, interactive=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=[], scale_bar=ScaleBar(visible=False, colored=False, ticks=True, position=<Position.BOTTOM_RIGHT: 'bottom_right'>, font_size=10.0, unit=None), text_overlay=TextOverlay(visible=False, color=<class 'numpy.ndarray'> (4,) float64, font_size=10.0, position=<TextOverlayPosition.TOP_LEFT: 'top_left'>, text=''), help='', status='Ready', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x131291dc0>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, keymap={'Control-Shift-C': <bound method QtViewer.toggle_console_visibility of <napari._qt.qt_viewer.QtViewer object at 0x1340820d0>>}) _path = '/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/' kwargs = {} plugin = None layer_type = None 915 _path, kwargs, plugin=plugin, layer_type=layer_type 916 ) 917 ) 918 return added
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/components/viewer_model.py:959, in ViewerModel._add_layers_with_plugins(self=Viewer(axes=Axes(visible=False, labels=True, col...._qt.qt_viewer.QtViewer object at 0x1340820d0>>}), path_or_paths='/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/', kwargs={}, plugin=None, layer_type=None)
927 """Load a path or a list of paths into the viewer using plugins.
928
929 This function is mostly called from self.open_path, where the stack
(...)
955 A list of any layers that were added to the viewer.
956 """
957 from ..plugins.io import read_data_with_plugins
--> 959 layer_data, hookimpl = read_data_with_plugins(
plugin = None
path_or_paths = '/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/'
960 path_or_paths, plugin=plugin
961 )
963 # glean layer names from filename. These will be used as fallback
964 # names, if the plugin does not return a name kwarg in their meta dict.
965 filenames = []
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/plugins/io.py:136, in read_data_with_plugins(path='/Users/user-adm/Lab/DATA/brainsaw/testbrain/testoutput', plugin=None) 129 message = trans.( 130 'No plugin found capable of reading {repr_path}.', 131 deferred=True, 132 repr_path=repr(path), 133 ) 135 # TODO: change to a warning notification in a later PR --> 136 raise ValueError(message) message = "No plugin found capable of reading '/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput'." 138 if errors: 139 names = {repr(e.plugin_name) for e in errors}
ValueError Traceback (most recent call last)
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/_qt/qt_viewer.py:996, in QtViewer.dropEvent(self=
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/components/viewer_model.py:914, in ViewerModel.open(self=Viewer(axes=Axes(visible=False, labels=True, col...._qt.qt_viewer.QtViewer object at 0x1340820d0>>}), path=['/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/points/cell_classification.xml'], stack=False, plugin=None, layer_type=None, **kwargs={}) 911 added: List[Layer] = [] # for layers that get added 912 for _path in paths: 913 added.extend( --> 914 self._add_layers_with_plugins( added = [] self = Viewer(axes=Axes(visible=False, labels=True, colored=True, dashed=False, arrows=True), camera=Camera(center=(0.0, 0.0, 0.0), zoom=1.0, angles=(0.0, 0.0, 90.0), perspective=0.0, interactive=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=[], scale_bar=ScaleBar(visible=False, colored=False, ticks=True, position=<Position.BOTTOM_RIGHT: 'bottom_right'>, font_size=10.0, unit=None), text_overlay=TextOverlay(visible=False, color=<class 'numpy.ndarray'> (4,) float64, font_size=10.0, position=<TextOverlayPosition.TOP_LEFT: 'top_left'>, text=''), help='', status='Ready', tooltip=Tooltip(visible=False, text=''), theme='dark', title='napari', mouse_move_callbacks=[], mouse_drag_callbacks=[], mouse_double_click_callbacks=[], mouse_wheel_callbacks=[<function dims_scroll at 0x131291dc0>], _persisted_mouse_event={}, _mouse_drag_gen={}, _mouse_wheel_gen={}, keymap={'Control-Shift-C': <bound method QtViewer.toggle_console_visibility of <napari._qt.qt_viewer.QtViewer object at 0x1340820d0>>}) _path = '/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/points/cell_classification.xml' kwargs = {} plugin = None layer_type = None 915 _path, kwargs, plugin=plugin, layer_type=layer_type 916 ) 917 ) 918 return added
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/components/viewer_model.py:959, in ViewerModel._add_layers_with_plugins(self=Viewer(axes=Axes(visible=False, labels=True, col...._qt.qt_viewer.QtViewer object at 0x1340820d0>>}), path_or_paths='/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/points/cell_classification.xml', kwargs={}, plugin=None, layer_type=None)
927 """Load a path or a list of paths into the viewer using plugins.
928
929 This function is mostly called from self.open_path, where the stack
(...)
955 A list of any layers that were added to the viewer.
956 """
957 from ..plugins.io import read_data_with_plugins
--> 959 layer_data, hookimpl = read_data_with_plugins(
plugin = None
path_or_paths = '/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/points/cell_classification.xml'
960 path_or_paths, plugin=plugin
961 )
963 # glean layer names from filename. These will be used as fallback
964 # names, if the plugin does not return a name kwarg in their meta dict.
965 filenames = []
File ~/opt/anaconda3/envs/napari-env/lib/python3.9/site-packages/napari/plugins/io.py:136, in read_data_with_plugins(path='/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/points/cellclassification.xml', plugin=None) 129 message = trans.( 130 'No plugin found capable of reading {repr_path}.', 131 deferred=True, 132 repr_path=repr(path), 133 ) 135 # TODO: change to a warning notification in a later PR --> 136 raise ValueError(message) message = "No plugin found capable of reading '/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/points/cell_classification.xml'." 138 if errors: 139 names = {repr(e.plugin_name) for e in errors} ''' ValueError: No plugin found capable of reading '/Users/user-adm/Lab/DATA/brainsaw/test_brain/testoutput/points/cell_classification.xml'.
Could you try updating napari? The reason for all these issues is a napari/napari plugin engine version mismatch.
ok made a fresh env with fresh pip install "napari[all]" (I am assuming this will install the latest version) and pip install brainglobe-napari-io==0.1.5rc0 It works now! The plugin is detected, and when I drag-and-drop the output folder I get a menu asking to choose a reader (options brainglobe-napari-io and napari) and choosing the former, it works very nicely! Only the point size of the cells does not seem to be changeable (color and shape yes, size no), but that is a different and minor issue I can live with. Many thanks. Just FYI here is the napari info: napari: 0.4.15 Platform: macOS-12.2.1-x86_64-i386-64bit System: MacOS 12.2.1 Python: 3.9.10 | packaged by conda-forge | (main, Feb 1 2022, 21:27:48) [Clang 11.1.0 ] Qt: 5.15.2 PyQt5: 5.15.6 NumPy: 1.22.3 SciPy: 1.8.0 Dask: 2022.02.1 VisPy: 0.9.6
OpenGL:
Screens:
Plugins:
Unable to open Cellfinder xml files in Napari==0.4.14
Warning message: /path/to/python3.8/site-packages/napari/_qt/qt_viewer.py:1068: UserWarning: No readers found to try reading /path/to/points/cell_classification.xml.!
In a clean Python 3.8 conda environment I ran pip install cellfinder
Then tried dragging cell_classification.xml on Napari.
Trying to fix the issue in this branch (work in progress): https://github.com/noisysky/brainglobe-napari-io/tree/update-npe2 If you find any commits there useful, please just grab them.