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

Running acquisition from acquisition panel can trigger exception in old panel #81

Closed cmeyer closed 3 years ago

cmeyer commented 3 years ago
Event Fire Traceback (most recent call last):
File "C:\NionApps\Miniconda3\envs\developer\lib\threading.py", line 930, in _bootstrap
    self._bootstrap_inner()
File "C:\NionApps\Miniconda3\envs\developer\lib\threading.py", line 973, in _bootstrap_inner
    self.run()
File "C:\NionApps\Miniconda3\envs\developer\lib\threading.py", line 910, in run
    self._target(*self._args, **self._kwargs)
File "C:\NionApps\Miniconda3\envs\developer\lib\concurrent\futures\thread.py", line 77, in _worker
    work_item.run()
File "C:\NionApps\Miniconda3\envs\developer\lib\concurrent\futures\thread.py", line 52, in run
    result = self.fn(*self.args, **self.kwargs)
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 1913, in acquire
    acquire(self.__data_stream)
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 1875, in acquire
    data_stream.start_stream(DataStreamArgs((slice(0, 1),), (1,)))
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 492, in start_stream
    self._start_stream(stream_args)
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 1384, in _start_stream
    self.__data_stream.start_stream(stream_args)
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 492, in start_stream
    self._start_stream(stream_args)
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 1674, in _start_stream
    self.__data_stream.start_stream(stream_args)
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 492, in start_stream
    self._start_stream(stream_args)
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 617, in _start_stream
    self._start_next_sub_stream()
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 629, in _start_next_sub_stream
    self.__data_stream.prepare_stream(DataStreamArgs(self.__collection_sub_slice, self.__collection_shape))
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 477, in prepare_stream
    self._prepare_stream(stream_args, **kwargs)
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 884, in _prepare_stream
    data_stream.prepare_stream(stream_args)
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 477, in prepare_stream
    self._prepare_stream(stream_args, **kwargs)
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 1379, in _prepare_stream
    self.__data_stream.prepare_stream(stream_args, operator=self.__operator)
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\Acquisition.py", line 477, in prepare_stream
    self._prepare_stream(stream_args, **kwargs)
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\scan_base.py", line 1808, in _prepare_stream
    self.__camera_hardware_source.set_current_frame_parameters(camera_frame_parameters)
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nion\instrumentation\camera_base.py", line 1156, in set_current_frame_parameters
    self.__camera_settings.set_current_frame_parameters(frame_parameters)
File "C:\NionApps\Developer\master\nion-dectris\nionswift_plugin\dectris\CameraDevice.py", line 518, in set_current_frame_parameters
    self.set_frame_parameters(self.__current_settings_index, frame_parameters)
File "C:\NionApps\Developer\master\nion-dectris\nionswift_plugin\dectris\CameraDevice.py", line 553, in set_frame_parameters
    self.frame_parameters_changed_event.fire(settings_index, frame_parameters)
File "C:\NionApps\Developer\master\nionutils\nion\utils\Event.py", line 112, in fire
    listener.call(*args, **keywords)
Event Handler Traceback (most recent call last)
Traceback (most recent call last):
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nionswift_plugin\nion_instrumentation_ui\ScanAcquisition.py", line 601, in eels_profile_parameters_changed
    self.__update_estimate()
File "C:\NionApps\Developer\master\nionswift-instrumentation-kit\nionswift_plugin\nion_instrumentation_ui\ScanAcquisition.py", line 573, in __update_estimate
    is_summed = self.__style_combo_box.current_index == 0
File "C:\NionApps\Developer\master\nionswift\nion\swift\Facade.py", line 313, in current_index
    return self.__combo_box_widget.current_index
File "C:\NionApps\Developer\master\nionui\nion\ui\UserInterface.py", line 1104, in current_index
    current_item = self.current_item
File "C:\NionApps\Developer\master\nionui\nion\ui\UserInterface.py", line 1091, in current_item
    current_text = self.current_text
File "C:\NionApps\Developer\master\nionui\nion\ui\UserInterface.py", line 1083, in current_text
    return self._behavior.current_text
File "C:\NionApps\Developer\master\nionui\nion\ui\QtUserInterface.py", line 826, in current_text
    return self.proxy.ComboBox_getCurrentText(self.widget)
File "C:\NionApps/Miniconda3/envs/developer/Scripts/NionSwiftLauncher\bootstrap.py", line 35, in _missing
    return getattr(self.__nion_lib, name)(*args, **kwargs)
HostLib.ModuleException: Must be called on UI thread.
cmeyer commented 3 years ago

Closing this - it is due to an implementation error in the particular camera device. Setting current parameters should not trigger profile frame parameter updates in a camera device. @Brow71189