nion-software / nionswift-instrumentation-kit

Base classes for Nion Swift STEM microscope instrumentation
GNU General Public License v3.0
1 stars 12 forks source link

"Multiple" mode in Acquisition panel is broken #166

Closed Brow71189 closed 9 months ago

Brow71189 commented 9 months ago

For example the following setup:

grafik

Leads to the traceback below. But as far as I can tell, no specifc setup is needed to trigger this as it happens always and with all cameras.

Traceback (most recent call last):
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 2819, in update_progress
    progress = acquisition.progress
               ^^^^^^^^^^^^^^^^^^^^
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 2498, in progress
    return self.__data_stream.progress
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 570, in progress
    progress = self._progress
               ^^^^^^^^^^^^^^
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 1800, in _progress
    return self.__data_stream.progress
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 570, in progress
    progress = self._progress
               ^^^^^^^^^^^^^^
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 1306, in _progress
    return (self.__sequence_index + (self.__current_index + self.__data_streams[self.__current_index].progress) / len(self.__data_streams)) / self.__sequence_count
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
ZeroDivisionError: float division by zero
Task exception was never retrieved
future: <Task finished name='Task-1006776' coro=<Acquisition.acquire_async.<locals>.grab_async() done, defined at C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py:2470> exception=ValueError()>
Traceback (most recent call last):
  File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 2477, in grab_async
    await asyncio.get_running_loop().run_in_executor(None, call_acquire)
  File "C:\NionApps\Miniconda3\envs\py311-forge\Lib\concurrent\futures\thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 2475, in call_acquire
    self.acquire(error_handler=error_handler)
  File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 2462, in acquire
    acquire(self.__data_stream, error_handler=error_handler)
  File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 2408, in acquire
    data_stream.start_stream(DataStreamArgs((1,)))
  File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 632, in start_stream
    self._start_stream(stream_args)
  File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 1814, in _start_stream
    self.__data_stream.start_stream(stream_args)
  File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 632, in start_stream
    self._start_stream(stream_args)
  File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 1325, in _start_stream
    self.__data_streams[self.__current_index].start_stream(self.__stream_args)
  File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 632, in start_stream
    self._start_stream(stream_args)
  File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 813, in _start_stream
    self._start_next_sub_stream()
  File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 826, in _start_next_sub_stream
    self.__data_stream.start_stream(DataStreamArgs(self.__collection_shape))
  File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 632, in start_stream
    self._start_stream(stream_args)
  File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 2206, in _start_stream
    self.__delegate.start()
  File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 2595, in start
    value_controller.start()
  File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 2573, in start
    self.__original_values = self.__device_controller.get_values(self.__control_customization, self.__axis)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\camera_base.py", line 3305, in get_values
    raise ValueError()
ValueError