zoccoler / napari-flim-phasor-plotter

BSD 3-Clause "New" or "Revised" License
10 stars 1 forks source link

3D hazelnut sample fails to be loaded #37

Closed cwetzker closed 10 months ago

cwetzker commented 1 year ago

dear @zoccoler and @sviaro,

great to have sample data included and the synthetic cat data is amazing.

the only sample that cannot be loaded is the 3D hazelnut dataset, with following error:

---------------------------------------------------------------------------
UnboundLocalError                         Traceback (most recent call last)
File ~\AppData\Local\miniconda3\envs\flim-phasor-plotter-230817\lib\site-packages\napari\_qt\menus\file_menu.py:219, in FileMenu._rebuild_samples_menu.<locals>._add_sample(plg='napari-flim-phasor-plotter', smp='hazelnut_z_stack', *args=(False,))
    217 def _add_sample(*args, plg=plugin_name, smp=samp_name):
    218     try:
--> 219         self._win._qt_viewer.viewer.open_sample(plg, smp)
        plg = 'napari-flim-phasor-plotter'
        smp = 'hazelnut_z_stack'
        self._win = <napari._qt.qt_main_window.Window object at 0x000001764A6A42E0>
        self = <napari._qt.menus.file_menu.FileMenu object at 0x0000017658F5CD30>
    220     except MultipleReaderError as e:
    221         handle_gui_reading(
    222             e.paths,
    223             self._win._qt_viewer,
    224             plugin_name=plugin_name,
    225             stack=False,
    226         )

File ~\AppData\Local\miniconda3\envs\flim-phasor-plotter-230817\lib\site-packages\napari\components\viewer_model.py:912, in ViewerModel.open_sample(self=Viewer(axes=Axes(visible=False, labels=True, col...._transform_active_layer at 0x0000017656FF7820>}), plugin='napari-flim-phasor-plotter', sample='hazelnut_z_stack', reader_plugin=None, **kwargs={})
    910 if callable(data):
    911     added = []
--> 912     for datum in data(**kwargs):
        data = <bound method SampleDataGenerator.open of SampleDataGenerator(command='napari-flim-phasor-plotter.load_hazelnut_z_stack', key='hazelnut_z_stack', display_name='Hazelnut (3D Raw FLIM)')>
        kwargs = {}
    913         added.extend(self._add_layer_from_data(*datum))
    914     return added

File ~\AppData\Local\miniconda3\envs\flim-phasor-plotter-230817\lib\site-packages\npe2\manifest\contributions\_sample_data.py:44, in SampleDataGenerator.open(self=SampleDataGenerator(command='napari-flim-phasor-..._z_stack', display_name='Hazelnut (3D Raw FLIM)'), _registry=None, *args=(), **kwargs={})
     41 def open(
     42     self, *args, _registry: Optional["CommandRegistry"] = None, **kwargs
     43 ) -> List[LayerData]:
---> 44     return self.exec(args, kwargs, _registry=_registry)
        args = ()
        kwargs = {}
        self = SampleDataGenerator(command='napari-flim-phasor-plotter.load_hazelnut_z_stack', key='hazelnut_z_stack', display_name='Hazelnut (3D Raw FLIM)')
        _registry = None

File ~\AppData\Local\miniconda3\envs\flim-phasor-plotter-230817\lib\site-packages\npe2\manifest\utils.py:63, in Executable.exec(self=SampleDataGenerator(command='napari-flim-phasor-..._z_stack', display_name='Hazelnut (3D Raw FLIM)'), args=(), kwargs={}, _registry=None)
     61     kwargs = {}
     62 reg = _registry or kwargs.pop("_registry", None)
---> 63 return self.get_callable(reg)(*args, **kwargs)
        reg = None
        kwargs = {}
        args = ()
        self = SampleDataGenerator(command='napari-flim-phasor-plotter.load_hazelnut_z_stack', key='hazelnut_z_stack', display_name='Hazelnut (3D Raw FLIM)')

File ~\AppData\Local\miniconda3\envs\flim-phasor-plotter-230817\lib\site-packages\napari_flim_phasor_plotter\_sample_data.py:90, in load_hazelnut_z_stack()
     87 from napari_flim_phasor_plotter._reader import read_stack
     89 folder_path = DATA_ROOT / "hazelnut_FLIM_z_stack"
---> 90 image, metadata = read_stack(folder_path)
        folder_path = WindowsPath('C:/Users/cblei/AppData/Local/miniconda3/envs/flim-phasor-plotter-230817/lib/site-packages/napari_flim_phasor_plotter/data/hazelnut_FLIM_z_stack')
     91 image, metadata = image[0], metadata[0]  # Use first channel, second detector is empty
     92 return [(image, {'name': 'hazelnut raw FLIM z-stack',
     93                  'metadata': metadata,
     94                  'contrast_limits': (np.amin(image[image.shape[0] // 2, ...]),
   (...)
    101                                   }),
    102         ]

File ~\AppData\Local\miniconda3\envs\flim-phasor-plotter-230817\lib\site-packages\napari_flim_phasor_plotter\_reader.py:293, in read_stack(folder_path=WindowsPath('C:/Users/cblei/AppData/Local/minico..._flim_phasor_plotter/data/hazelnut_FLIM_z_stack'))
    291 from natsort import natsorted
    292 from napari.utils import notifications
--> 293 file_extension = get_most_frequent_file_extension(folder_path)
        folder_path = WindowsPath('C:/Users/cblei/AppData/Local/miniconda3/envs/flim-phasor-plotter-230817/lib/site-packages/napari_flim_phasor_plotter/data/hazelnut_FLIM_z_stack')
    294 if file_extension == '.zarr':
    295     file_paths = folder_path

File ~\AppData\Local\miniconda3\envs\flim-phasor-plotter-230817\lib\site-packages\napari_flim_phasor_plotter\_reader.py:193, in get_most_frequent_file_extension(path=WindowsPath('C:/Users/cblei/AppData/Local/minico..._flim_phasor_plotter/data/hazelnut_FLIM_z_stack'))
    191         suffixes = [path.suffix]
    192 # Get most frequent file entension in path
--> 193 most_frequent_file_type = max(set(suffixes), key=suffixes.count)
    194 return most_frequent_file_type

UnboundLocalError: local variable 'suffixes' referenced before assignment

could you have a look at it @zoccoler ?

Thanks!

zoccoler commented 1 year ago

Hi @cwetzker ,

Thanks for reporting this! Indeed this dataset was accidentally not included in 0.0.4.

This should be fixed now after #38 and #40 in version 0.0.6. (I had to skip pypi release 0.0.5 because the file was too big 😅, so I zipped the stack ).

Please close this issue if it was solved.

zoccoler commented 10 months ago

Assuming this was solved, please re-open otherwise.