ome / napari-ome-zarr

A napari plugin for zarr backed OME-NGFF images
https://www.napari-hub.org/plugins/napari-ome-zarr
BSD 3-Clause "New" or "Revised" License
27 stars 21 forks source link

Error at reading demo file #103

Closed aloboa closed 7 months ago

aloboa commented 7 months ago
$ napari 'https://uk1s3.embassy.ebi.ac.uk/idr/zarr/v0.1/6001240.zarr/'
19:36:17 WARNING version mismatch: detected: FormatV01, requested: FormatV04
Traceback (most recent call last):
  File "/home/alobo/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/_qt/qt_viewer.py", line 953, in _qt_open
    self.viewer.open(
  File "/home/alobo/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/components/viewer_model.py", line 1102, in open
    layers = self._open_or_raise_error(
  File "/home/alobo/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/components/viewer_model.py", line 1222, in _open_or_raise_error
    raise MultipleReaderError(
napari.errors.reader_errors.MultipleReaderError: Multiple plugins found capable of reading https://uk1s3.embassy.ebi.ac.uk/idr/zarr/v0.1/6001240.zarr/. Select plugin from {'napari-ome-zarr': 'napari-ome-zarr', 'napari': 'napari builtins'} and pass to reading function e.g. `viewer.open(..., plugin=...)`.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/alobo/miniconda3/envs/napari-env/bin/napari", line 8, in <module>
    sys.exit(main())
  File "/home/alobo/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/__main__.py", line 564, in main
    _run()
  File "/home/alobo/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/__main__.py", line 340, in _run
    viewer._window._qt_viewer._qt_open(
  File "/home/alobo/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/_qt/qt_viewer.py", line 971, in _qt_open
    handle_gui_reading(filenames, self, stack, **kwargs)
  File "/home/alobo/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/_qt/dialogs/qt_reader_dialog.py", line 201, in handle_gui_reading
    open_with_dialog_choices(
  File "/home/alobo/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/_qt/dialogs/qt_reader_dialog.py", line 294, in open_with_dialog_choices
    qt_viewer.viewer.open(paths, stack=stack, plugin=plugin_name, **kwargs)
  File "/home/alobo/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/components/viewer_model.py", line 1092, in open
    self._add_layers_with_plugins(
  File "/home/alobo/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/components/viewer_model.py", line 1318, in _add_layers_with_plugins
    added.extend(self._add_layer_from_data(*_data))
  File "/home/alobo/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/components/viewer_model.py", line 1392, in _add_layer_from_data
    layer = add_method(data, **(meta or {}))
  File "/home/alobo/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/components/viewer_model.py", line 4, in add_labels
    import itertools
  File "/home/alobo/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/layers/labels/labels.py", line 283, in __init__
    data = self._ensure_int_labels(data)
  File "/home/alobo/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/layers/labels/labels.py", line 600, in _ensure_int_labels
    raise TypeError(
TypeError: Only integer types are supported for Labels layers, but data contains float64.
(napari-env) alobo@pop-os:/media/alobo/PortableSSD/CERTEC/CERTEC_20230623/RCERTEC_20230723$ 

napari: 0.4.18 Platform: Linux-6.6.10-76060610-generic-x86_64-with-glibc2.35 System: Pop!_OS 22.04 LTS Python: 3.9.18 | packaged by conda-forge | (main, Dec 23 2023, 16:33:10) [GCC 12.3.0] Qt: 5.15.2 PyQt5: 5.15.10 NumPy: 1.22.4 SciPy: 1.11.3 Dask: 2021.09.0 VisPy: 0.12.2 magicgui: 0.8.1 superqt: 0.6.1 in-n-out: 0.1.9 app-model: 0.2.4 npe2: 0.7.4

OpenGL:

Screens:

Settings path:

joshmoore commented 7 months ago

Hi @aloboa. Sorry that you're having trouble. Some of the older OME-Zarrs (e.g., v0.1) have differing data types. See https://github.com/ome/napari-ome-zarr/issues/11, etc. If you try some of the newer files from https://idr.github.io/ome-ngff-samples they should work.

aloboa commented 7 months ago

ok, I have found one of the most recent that works, but with messages to the console. Should I just wait for further development of the plugin or is there something I can do to generate my own zarr files to be read by napari?

napari-env) alobo@pop-os:/media/alobo/PortableSSD/CERTEC/CERTEC_20230623/RCERTEC_20230723$ napari "https://uk1s3.embassy.ebi.ac.uk/idr/zarr/v0.4/idr0048A/9846152.zarr/"
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
~/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/_qt/widgets/qt_dims_slider.py in mouseReleaseEvent(self=<napari._qt.widgets.qt_dims_slider.QtPlayButton object>, event=<PyQt5.QtGui.QMouseEvent object>)
    548             self.popup.show_above_mouse()
    549         elif event.button() == Qt.MouseButton.LeftButton:
--> 550             self._on_click()
        self._on_click = <bound method QtPlayButton._on_click of <napari._qt.widgets.qt_dims_slider.QtPlayButton object at 0x7fc27cd79f70>>
    551 
    552     def _on_click(self):

~/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/_qt/widgets/qt_dims_slider.py in _on_click(self=<napari._qt.widgets.qt_dims_slider.QtPlayButton object>)
    556             return None
    557         if self.property('playing') == "True":
--> 558             return qt_dims.stop()
        qt_dims.stop = <bound method QtDims.stop of <napari._qt.widgets.qt_dims.QtDims object at 0x7fc2dea4caf0>>
    559         self.play_requested.emit(self.axis)
    560         return None

~/miniconda3/envs/napari-env/lib/python3.9/site-packages/napari/_qt/widgets/qt_dims.py in stop(self=<napari._qt.widgets.qt_dims.QtDims object>)
    319         if self._animation_worker is not None:
    320             # Thread will be stop by the worker
--> 321             self._animation_worker._stop()
        self._animation_worker._stop = <bound method AnimationWorker._stop of <napari._qt.widgets.qt_dims_slider.AnimationWorker object at 0x7fc27003fca0>>
    322 
    323     @Slot()

~/miniconda3/envs/napari-env/lib/python3.9/site-packages/superqt/utils/_ensure_thread.py in _func(_max_args_=1, *args=(<napari._qt.widgets.qt_dims_slider.AnimationWorker object>,), **kwargs={})
    159         @wraps(func_)
    160         def _func(*args, _max_args_=max_args, **kwargs):
--> 161             thread = args[0].thread()  # self
        thread = undefined
        args.thread = undefined
    162             return _run_in_thread(
    163                 func_, thread, await_return, timeout, args[:_max_args_], kwargs

RuntimeError: wrapped C/C++ object of type AnimationWorker has been deleted
psobolewskiPhD commented 7 months ago

What triggers that traceback? Using napari 0.4.19 and napari https://uk1s3.embassy.ebi.ac.uk/idr/zarr/v0.4/idr0048A/9846152.zarr/ it's slow but it does load. Are you hitting the play button? Or scrubbing the slider?

Edit: realistically for images like this you will need to wait for 0.5.0 and improved async slicing.

aloboa commented 7 months ago

No traceback messages with 0.19, even clicking the play and arrow buttons. Just after Exit, I get:

malloc_consolidate(): unaligned fastbin chunk detected
Aborted (core dumped)

but this always happens, even not having displayed any image.