From b45828f546f6bd438816e17a867a8350ec14b502 Mon Sep 17 00:00:00 2001 From: Ian OHara Date: Thu, 24 Oct 2024 09:42:44 -0700 Subject: [PATCH 1/2] software: remove unused main_* and their corresponding control/gui_* --- software/control/gui_2cameras_async.py | 139 --------- .../gui_2cameras_async_focus_tracking.py | 124 -------- software/control/gui_2cameras_daheng_tis.py | 127 -------- software/control/gui_2cameras_sync.py | 164 ---------- software/control/gui_6060.py | 281 ------------------ software/control/gui_PDAF_calibration.py | 130 -------- software/control/gui_PDAF_demo.py | 136 --------- software/control/gui_camera_only.py | 78 ----- software/control/gui_camera_only_tiscamera.py | 78 ----- .../control/gui_displacement_measurement.py | 196 ------------ software/control/gui_motion_only.py | 48 --- software/control/gui_platereader.py | 103 ------- software/control/gui_simulation.py | 111 ------- software/control/gui_tiscamera.py | 116 -------- software/control/gui_tiscamera_DZK250.py | 105 ------- software/control/gui_tiscamera_simulation.py | 117 -------- software/control/gui_toupcam_IMX571.py | 253 ---------------- software/control/gui_usbspectrometer.py | 210 ------------- software/control/gui_volumetric_imaging.py | 107 ------- software/main_2cameras_sync.py | 31 -- software/main_6060.py | 64 ---- software/main_PDAF_calibration.py | 20 -- software/main_PDAF_demo.py | 20 -- software/main_camera_only.py | 22 -- software/main_displacement_measurement.py | 29 -- software/main_motion_only.py | 22 -- software/main_platereader.py | 28 -- software/main_simulation.py | 22 -- software/main_tiscamera.py | 22 -- software/main_tiscamera_DZK250.py | 20 -- software/main_tiscamera_camera_only.py | 20 -- software/main_tiscamera_simulation.py | 22 -- software/main_toupcam_IMX571.py | 31 -- software/main_two_camera.py | 22 -- software/main_two_camera_focus_tracking.py | 23 -- software/main_two_cameras_daheng_tis.py | 23 -- software/main_usbspectrometer.py | 29 -- software/main_volumeric_imaging.py | 22 -- 38 files changed, 3115 deletions(-) delete mode 100644 software/control/gui_2cameras_async.py delete mode 100644 software/control/gui_2cameras_async_focus_tracking.py delete mode 100644 software/control/gui_2cameras_daheng_tis.py delete mode 100644 software/control/gui_2cameras_sync.py delete mode 100644 software/control/gui_6060.py delete mode 100644 software/control/gui_PDAF_calibration.py delete mode 100644 software/control/gui_PDAF_demo.py delete mode 100644 software/control/gui_camera_only.py delete mode 100644 software/control/gui_camera_only_tiscamera.py delete mode 100644 software/control/gui_displacement_measurement.py delete mode 100644 software/control/gui_motion_only.py delete mode 100644 software/control/gui_platereader.py delete mode 100644 software/control/gui_simulation.py delete mode 100644 software/control/gui_tiscamera.py delete mode 100644 software/control/gui_tiscamera_DZK250.py delete mode 100644 software/control/gui_tiscamera_simulation.py delete mode 100644 software/control/gui_toupcam_IMX571.py delete mode 100644 software/control/gui_usbspectrometer.py delete mode 100644 software/control/gui_volumetric_imaging.py delete mode 100644 software/main_2cameras_sync.py delete mode 100644 software/main_6060.py delete mode 100644 software/main_PDAF_calibration.py delete mode 100644 software/main_PDAF_demo.py delete mode 100644 software/main_camera_only.py delete mode 100644 software/main_displacement_measurement.py delete mode 100644 software/main_motion_only.py delete mode 100644 software/main_platereader.py delete mode 100644 software/main_simulation.py delete mode 100644 software/main_tiscamera.py delete mode 100644 software/main_tiscamera_DZK250.py delete mode 100644 software/main_tiscamera_camera_only.py delete mode 100644 software/main_tiscamera_simulation.py delete mode 100644 software/main_toupcam_IMX571.py delete mode 100644 software/main_two_camera.py delete mode 100644 software/main_two_camera_focus_tracking.py delete mode 100644 software/main_two_cameras_daheng_tis.py delete mode 100644 software/main_usbspectrometer.py delete mode 100644 software/main_volumeric_imaging.py diff --git a/software/control/gui_2cameras_async.py b/software/control/gui_2cameras_async.py deleted file mode 100644 index 2ebe8689b..000000000 --- a/software/control/gui_2cameras_async.py +++ /dev/null @@ -1,139 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy -from pathlib import Path - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera as camera -import control.core as core -import control.microcontroller as microcontroller - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - # load objects - self.microcontroller = microcontroller.Microcontroller_Simulation() - self.navigationController = core.NavigationController(self.microcontroller) - - self.camera_1 = camera.Camera_Simulation(sn='FW0190110139') # tracking - self.camera_2 = camera.Camera_Simulation(sn='FU0190090030') # fluorescence - - self.configurationManager_1 = core.ConfigurationManager(filename=str(Path.home()) + "/configurations_tracking.xml") - self.configurationManager_2 = core.ConfigurationManager(filename=str(Path.home()) + "/configurations_fluorescence.xml") - - self.streamHandler_1 = core.StreamHandler() - self.liveController_1 = core.LiveController(self.camera_1,self.microcontroller,self.configurationManager_1,control_illumination=False) - #self.autofocusControlle_1 = core.AutoFocusController(self.camera,self.navigationController,self.liveController) - #self.multipointController_1 = core.MultiPointController(self.camera,self.navigationController,self.liveController,self.autofocusController,self.configurationManager) - self.imageSaver_1 = core.ImageSaver() - - self.streamHandler_2 = core.StreamHandler() - self.liveController_2 = core.LiveController(self.camera_2,self.microcontroller,self.configurationManager_2,control_illumination=True) - self.autofocusController_2 = core.AutoFocusController(self.camera_2,self.navigationController,self.liveController_2) - self.multipointController_2 = core.MultiPointController(self.camera_2,self.navigationController,self.liveController_2,self.autofocusController_2,self.configurationManager_2) - self.imageSaver_2 = core.ImageSaver() - - self.trackingController = core.TrackingController(self.microcontroller,self.navigationController) - - # open the camera - # camera start streaming - self.camera_1.open() - self.camera_1.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera_1.set_callback(self.streamHandler_1.on_new_frame) - self.camera_1.enable_callback() - - self.camera_2.open() - self.camera_2.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera_2.set_callback(self.streamHandler_2.on_new_frame) - self.camera_2.enable_callback() - - # load widgets - self.navigationWidget = widgets.NavigationWidget(self.navigationController) - - self.cameraSettingWidget_1 = widgets.CameraSettingsWidget(self.camera_1,self.liveController_1) - self.liveControlWidget_1 = widgets.LiveControlWidget(self.streamHandler_1,self.liveController_1,self.configurationManager_1) - self.recordingControlWidget_1 = widgets.RecordingWidget(self.streamHandler_1,self.imageSaver_1) - #self.trackingControlWidget = widgets.TrackingControllerWidget(self.streamHandler_1,self.trackingController) - - self.cameraSettingWidget_2 = widgets.CameraSettingsWidget(self.camera_2,self.liveController_2) - self.liveControlWidget_2 = widgets.LiveControlWidget(self.streamHandler_2,self.liveController_2,self.configurationManager_2) - #self.recordingControlWidget_2 = widgets.RecordingWidget(self.streamHandler_2,self.imageSaver_2) - self.multiPointWidget_2 = widgets.MultiPointWidget(self.multipointController_2,self.configurationManager_2) - - # layout widgets - layout = QGridLayout() #layout = QStackedLayout() - layout.addWidget(self.cameraSettingWidget_1,0,0) - layout.addWidget(self.liveControlWidget_1,1,0) - layout.addWidget(self.navigationWidget,2,0) - #layout.addWidget(self.autofocusWidget,3,0) - layout.addWidget(self.recordingControlWidget_1,4,0) - - layout.addWidget(self.cameraSettingWidget_2,5,0) - layout.addWidget(self.liveControlWidget_2,6,0) - #layout.addWidget(self.recordingControlWidget_2,7,0) - layout.addWidget(self.multiPointWidget_2,8,0) - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - self.setCentralWidget(self.centralWidget) - - # load window - self.imageDisplayWindow_1 = core.ImageDisplayWindow('Tracking') - self.imageDisplayWindow_1.show() - self.imageDisplayWindow_2 = core.ImageDisplayWindow('Fluorescence') - self.imageDisplayWindow_2.show() - self.imageArrayDisplayWindow = core.ImageArrayDisplayWindow('Multi-channel') - self.imageArrayDisplayWindow.show() - - # make connections - self.navigationController.xPos.connect(self.navigationWidget.label_Xpos.setNum) - self.navigationController.yPos.connect(self.navigationWidget.label_Ypos.setNum) - self.navigationController.zPos.connect(self.navigationWidget.label_Zpos.setNum) - - self.streamHandler_1.signal_new_frame_received.connect(self.liveController_1.on_new_frame) - self.streamHandler_1.image_to_display.connect(self.imageDisplayWindow_1.display_image) - self.streamHandler_1.packet_image_to_write.connect(self.imageSaver_1.enqueue) - #self.streamHandler_1.packet_image_for_tracking.connect(self.trackingController.on_new_frame) - - self.liveControlWidget_1.signal_newExposureTime.connect(self.cameraSettingWidget_1.set_exposure_time) - self.liveControlWidget_1.signal_newAnalogGain.connect(self.cameraSettingWidget_1.set_analog_gain) - self.liveControlWidget_1.update_camera_settings() - - self.streamHandler_2.signal_new_frame_received.connect(self.liveController_2.on_new_frame) - self.streamHandler_2.image_to_display.connect(self.imageDisplayWindow_2.display_image) - self.streamHandler_2.packet_image_to_write.connect(self.imageSaver_2.enqueue) - - self.liveControlWidget_2.signal_newExposureTime.connect(self.cameraSettingWidget_2.set_exposure_time) - self.liveControlWidget_2.signal_newAnalogGain.connect(self.cameraSettingWidget_2.set_analog_gain) - self.liveControlWidget_2.update_camera_settings() - - self.multipointController_2.image_to_display.connect(self.imageDisplayWindow_2.display_image) - self.multipointController_2.image_to_display_multi.connect(self.imageArrayDisplayWindow.display_image) - self.multipointController_2.signal_current_configuration.connect(self.liveControlWidget_2.set_microscope_mode) - - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.liveController_1.stop_live() - self.camera_1.close() - self.imageSaver_1.close() - self.imageDisplayWindow_1.close() - self.liveController_2.stop_live() - self.camera_2.close() - self.imageSaver_2.close() - self.imageDisplayWindow_2.close() - self.imageArrayDisplayWindow.close() diff --git a/software/control/gui_2cameras_async_focus_tracking.py b/software/control/gui_2cameras_async_focus_tracking.py deleted file mode 100644 index 7ee0741fb..000000000 --- a/software/control/gui_2cameras_async_focus_tracking.py +++ /dev/null @@ -1,124 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera as camera -import control.core as core -import control.core_PDAF as core_PDAF -import control.microcontroller as microcontroller - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - # load objects - self.camera_1 = camera.Camera_Simulation(sn='FW0190110139') - self.camera_2 = camera.Camera_Simulation(sn='FU0190090030') - self.microcontroller = microcontroller.Microcontroller_Simulation() - - self.PDAFController = core_PDAF.PDAFController() - - self.streamHandler_1 = core.StreamHandler() - self.streamHandler_2 = core.StreamHandler() - self.liveController_1 = core.LiveController(self.camera_1,self.microcontroller) - self.liveController_2 = core.LiveController(self.camera_2,self.microcontroller) - self.navigationController = core.NavigationController(self.microcontroller) - self.autofocusController = core.AutoFocusController(self.camera_1,self.navigationController,self.liveController_1) - self.trackingController = core.TrackingController(self.microcontroller,self.navigationController) - self.imageSaver_1 = core.ImageSaver() - self.imageSaver_2 = core.ImageSaver() - self.imageDisplay_1 = core.ImageDisplay() - self.imageDisplay_2 = core.ImageDisplay() - - # open the cameras - self.camera_1.open() - self.camera_1.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera_1.set_callback(self.streamHandler_1.on_new_frame) - self.camera_1.enable_callback() - - self.camera_2.open() - self.camera_2.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera_2.set_callback(self.streamHandler_2.on_new_frame) - self.camera_2.enable_callback() - - # load widgets - self.cameraSettingWidget_1 = widgets.CameraSettingsWidget(self.camera_1,self.liveController_1) - self.liveControlWidget_1 = widgets.LiveControlWidget(self.streamHandler_1,self.liveController_1) - self.navigationWidget = widgets.NavigationWidget(self.navigationController) - self.autofocusWidget = widgets.AutoFocusWidget(self.autofocusController) - self.recordingControlWidget_1 = widgets.RecordingWidget(self.streamHandler_1,self.imageSaver_1) - self.trackingControlWidget = widgets.TrackingControllerWidget(self.streamHandler_1,self.trackingController) - - self.cameraSettingWidget_2 = widgets.CameraSettingsWidget(self.camera_2,self.liveController_2) - self.liveControlWidget_2 = widgets.LiveControlWidget(self.streamHandler_2,self.liveController_2) - self.recordingControlWidget_2 = widgets.RecordingWidget(self.streamHandler_2,self.imageSaver_2) - - # layout widgets - layout = QGridLayout() #layout = QStackedLayout() - # layout.addWidget(self.cameraSettingWidget_1,0,0) - layout.addWidget(self.liveControlWidget_1,1,0) - # layout.addWidget(self.navigationWidget,2,0) - # layout.addWidget(self.autofocusWidget,3,0) - # layout.addWidget(self.recordingControlWidget_1,4,0) - - # layout.addWidget(self.cameraSettingWidget_2,5,0) - layout.addWidget(self.liveControlWidget_2,6,0) - # layout.addWidget(self.recordingControlWidget_2,7,0) - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - self.setCentralWidget(self.centralWidget) - - # load window - self.imageDisplayWindow_1 = core.ImageDisplayWindow() - self.imageDisplayWindow_1.show() - self.imageDisplayWindow_2 = core.ImageDisplayWindow() - self.imageDisplayWindow_2.show() - - # make connections - self.streamHandler_1.signal_new_frame_received.connect(self.liveController_1.on_new_frame) - self.streamHandler_1.image_to_display.connect(self.imageDisplay_1.enqueue) - self.streamHandler_1.packet_image_to_write.connect(self.imageSaver_1.enqueue) - self.streamHandler_1.packet_image_for_tracking.connect(self.trackingController.on_new_frame) - self.imageDisplay_1.image_to_display.connect(self.imageDisplayWindow_1.display_image) # may connect streamHandler directly to imageDisplayWindow - - self.streamHandler_2.signal_new_frame_received.connect(self.liveController_2.on_new_frame) - self.streamHandler_2.image_to_display.connect(self.imageDisplay_2.enqueue) - self.streamHandler_2.packet_image_to_write.connect(self.imageSaver_2.enqueue) - self.imageDisplay_2.image_to_display.connect(self.imageDisplayWindow_2.display_image) # may connect streamHandler directly to imageDisplayWindow - - self.navigationController.xPos.connect(self.navigationWidget.label_Xpos.setNum) - self.navigationController.yPos.connect(self.navigationWidget.label_Ypos.setNum) - self.navigationController.zPos.connect(self.navigationWidget.label_Zpos.setNum) - self.autofocusController.image_to_display.connect(self.imageDisplayWindow_1.display_image) - - self.streamHandler_1.image_to_display.connect(self.PDAFController.register_image_from_camera_1) - self.streamHandler_2.image_to_display.connect(self.PDAFController.register_image_from_camera_2) - - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.liveController_1.stop_live() - self.camera_1.close() - self.imageSaver_1.close() - self.imageDisplay_1.close() - self.imageDisplayWindow_1.close() - self.liveController_2.stop_live() - self.camera_2.close() - self.imageSaver_2.close() - self.imageDisplay_2.close() - self.imageDisplayWindow_2.close() diff --git a/software/control/gui_2cameras_daheng_tis.py b/software/control/gui_2cameras_daheng_tis.py deleted file mode 100644 index 150fdacc6..000000000 --- a/software/control/gui_2cameras_daheng_tis.py +++ /dev/null @@ -1,127 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera as camera -import control.camera_TIS as camera_tis -import control.core as core -import control.microcontroller as microcontroller - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - # load objects - self.camera_1 = camera.Camera() - self.camera_2 = camera_tis.Camera(sn=48910098) - self.microcontroller = microcontroller.Microcontroller_Simulation() - - self.streamHandler_1 = core.StreamHandler() - self.streamHandler_2 = core.StreamHandler() - self.liveController_1 = core.LiveController(self.camera_1,self.microcontroller) - self.liveController_2 = core.LiveController(self.camera_2,self.microcontroller) - self.navigationController = core.NavigationController(self.microcontroller) - self.autofocusController = core.AutoFocusController(self.camera_1,self.navigationController,self.liveController_1) - self.trackingController = core.TrackingController(self.microcontroller,self.navigationController) - self.imageSaver_1 = core.ImageSaver() - self.imageSaver_2 = core.ImageSaver() - self.imageDisplay_1 = core.ImageDisplay() - self.imageDisplay_2 = core.ImageDisplay() - - ''' - # thread - self.thread_multiPoint = QThread() - self.thread_multiPoint.start() - self.multipointController.moveToThread(self.thread_multiPoint) - ''' - - # open the camera - # camera start streaming - self.camera_1.open() - self.camera_1.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera_1.set_callback(self.streamHandler_1.on_new_frame) - self.camera_1.enable_callback() - - self.camera_2.open() - self.camera_2.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera_2.set_callback(self.streamHandler_2.on_new_frame) - self.camera_2.enable_callback() - - # load widgets - self.cameraSettingWidget_1 = widgets.CameraSettingsWidget(self.camera_1,self.liveController_1) - self.liveControlWidget_1 = widgets.LiveControlWidget(self.streamHandler_1,self.liveController_1) - self.navigationWidget = widgets.NavigationWidget(self.navigationController) - self.autofocusWidget = widgets.AutoFocusWidget(self.autofocusController) - self.recordingControlWidget_1 = widgets.RecordingWidget(self.streamHandler_1,self.imageSaver_1) - self.trackingControlWidget = widgets.TrackingControllerWidget(self.streamHandler_1,self.trackingController) - - self.cameraSettingWidget_2 = widgets.CameraSettingsWidget(self.camera_2,self.liveController_2) - self.liveControlWidget_2 = widgets.LiveControlWidget(self.streamHandler_2,self.liveController_2) - self.recordingControlWidget_2 = widgets.RecordingWidget(self.streamHandler_2,self.imageSaver_2) - - # layout widgets - layout = QGridLayout() #layout = QStackedLayout() - layout.addWidget(self.cameraSettingWidget_1,0,0) - layout.addWidget(self.liveControlWidget_1,1,0) - layout.addWidget(self.navigationWidget,2,0) - layout.addWidget(self.autofocusWidget,3,0) - layout.addWidget(self.recordingControlWidget_1,4,0) - - layout.addWidget(self.cameraSettingWidget_2,5,0) - layout.addWidget(self.liveControlWidget_2,6,0) - layout.addWidget(self.recordingControlWidget_2,7,0) - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - self.setCentralWidget(self.centralWidget) - - # load window - self.imageDisplayWindow_1 = core.ImageDisplayWindow() - self.imageDisplayWindow_1.show() - self.imageDisplayWindow_2 = core.ImageDisplayWindow() - self.imageDisplayWindow_2.show() - - # make connections - self.streamHandler_1.signal_new_frame_received.connect(self.liveController_1.on_new_frame) - self.streamHandler_1.image_to_display.connect(self.imageDisplay_1.enqueue) - self.streamHandler_1.packet_image_to_write.connect(self.imageSaver_1.enqueue) - self.streamHandler_1.packet_image_for_tracking.connect(self.trackingController.on_new_frame) - self.imageDisplay_1.image_to_display.connect(self.imageDisplayWindow_1.display_image) # may connect streamHandler directly to imageDisplayWindow - - self.streamHandler_2.signal_new_frame_received.connect(self.liveController_2.on_new_frame) - self.streamHandler_2.image_to_display.connect(self.imageDisplay_2.enqueue) - self.streamHandler_2.packet_image_to_write.connect(self.imageSaver_2.enqueue) - self.imageDisplay_2.image_to_display.connect(self.imageDisplayWindow_2.display_image) # may connect streamHandler directly to imageDisplayWindow - - self.navigationController.xPos.connect(self.navigationWidget.label_Xpos.setNum) - self.navigationController.yPos.connect(self.navigationWidget.label_Ypos.setNum) - self.navigationController.zPos.connect(self.navigationWidget.label_Zpos.setNum) - self.autofocusController.image_to_display.connect(self.imageDisplayWindow_1.display_image) - - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.liveController_1.stop_live() - self.camera_1.close() - self.imageSaver_1.close() - self.imageDisplay_1.close() - self.imageDisplayWindow_1.close() - self.liveController_2.stop_live() - self.camera_2.close() - self.imageSaver_2.close() - self.imageDisplay_2.close() - self.imageDisplayWindow_2.close() diff --git a/software/control/gui_2cameras_sync.py b/software/control/gui_2cameras_sync.py deleted file mode 100644 index e6bde8fe8..000000000 --- a/software/control/gui_2cameras_sync.py +++ /dev/null @@ -1,164 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera as camera -import control.core as core -import control.microcontroller as microcontroller -import control.microcontroller2 as microcontroller2 -from control._def import * - -import pyqtgraph.dockarea as dock -SINGLE_WINDOW = True # set to False if use separate windows for display and control - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, is_simulation = False, *args, **kwargs): - super().__init__(*args, **kwargs) - - channels = ['ch 1','ch 2'] - self.channels = channels - - self.imageDisplayWindow = {} - for i in range(len(channels)): - self.imageDisplayWindow[channels[i]] = core.ImageDisplayWindow(draw_crosshairs=True) - - # load objects - self.camera = {} - if is_simulation: - for i in range(len(channels)): - self.camera[channels[i]] = camera.Camera_Simulation(sn=CAMERA_SN[channels[i]],is_global_shutter=True,rotate_image_angle=ROTATE_IMAGE_ANGLE,flip_image=FLIP_IMAGE) - self.microcontroller = microcontroller.Microcontroller_Simulation() - self.microcontroller2 = microcontroller2.Microcontroller2_Simulation() - else: - for i in range(len(channels)): - self.camera[channels[i]] = camera.Camera(sn=CAMERA_SN[channels[i]],is_global_shutter=True,rotate_image_angle=ROTATE_IMAGE_ANGLE,flip_image=FLIP_IMAGE) - self.microcontroller = microcontroller.Microcontroller_Simulation() - self.microcontroller2 = microcontroller2.Microcontroller2() - - # open the camera - for i in range(len(channels)): - self.camera[channels[i]].open() - self.camera[channels[i]].set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - - # configure the actuators - self.microcontroller.configure_actuators() - - # navigation controller and widget - self.navigationController = core.NavigationController(self.microcontroller) - self.navigationWidget = widgets.NavigationWidget(self.navigationController) - - self.configurationManager = {} - self.streamHandler = {} - self.liveController = {} - self.imageSaver = {} - - self.cameraSettingWidget = {} - self.liveControlWidget = {} - self.cameraTabWidget = QTabWidget() - - for i in range(len(channels)): - # controllers - self.configurationManager[channels[i]] = core.ConfigurationManager(filename=str(Path.home()) + "/configurations_" + channels[i] + ".xml") - self.streamHandler[channels[i]] = core.StreamHandler(display_resolution_scaling=DEFAULT_DISPLAY_CROP/100) - self.liveController[channels[i]] = core.LiveController(self.camera[channels[i]],self.microcontroller,self.configurationManager[channels[i]],use_internal_timer_for_hardware_trigger=False) - self.imageSaver[channels[i]] = core.ImageSaver(image_format=Acquisition.IMAGE_FORMAT) - # widgets - self.cameraSettingWidget[channels[i]] = widgets.CameraSettingsWidget(self.camera[channels[i]],include_gain_exposure_time=False) - self.liveControlWidget[channels[i]] = widgets.LiveControlWidget(self.streamHandler[channels[i]],self.liveController[channels[i]],self.configurationManager[channels[i]]) - # self.recordingControlWidget[channels[i]] = widgets.RecordingWidget(self.streamHandler[channels[i]],self.imageSaver[channels[i]]) - self.cameraTabWidget.addTab(self.liveControlWidget[channels[i]], channels[i]) - # self.liveControlWidget[channels[i]].setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) - # self.liveControlWidget[channels[i]].resize(self.liveControlWidget[channels[i]].minimumSizeHint()) - # self.liveControlWidget[channels[i]].adjustSize() - self.cameraTabWidget.resize(self.cameraTabWidget.minimumSizeHint()) - self.cameraTabWidget.adjustSize() - - # self.recordTabWidget = QTabWidget() - # for i in range(len(channels)): - # self.recordTabWidget.addTab(self.recordingControlWidget[channels[i]], "Simple Recording") - self.multiCameraRecordingWidget = widgets.MultiCameraRecordingWidget(self.streamHandler,self.imageSaver,self.channels) - - # trigger control - self.triggerControlWidget = widgets.TriggerControlWidget(self.microcontroller2) - - # layout widgets - layout = QVBoxLayout() #layout = QStackedLayout() - # layout.addWidget(self.cameraSettingWidget) - layout.addWidget(self.cameraTabWidget) - layout.addWidget(self.triggerControlWidget) - layout.addWidget(self.multiCameraRecordingWidget) - # layout.addWidget(self.navigationWidget) - # layout.addWidget(self.recordTabWidget) - layout.addStretch() - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - # self.centralWidget.setFixedSize(self.centralWidget.minimumSize()) - # self.centralWidget.setFixedWidth(self.centralWidget.minimumWidth()) - # self.centralWidget.setMaximumWidth(self.centralWidget.minimumWidth()) - self.centralWidget.setFixedWidth(self.centralWidget.minimumSizeHint().width()) - - dock_display = {} - for i in range(len(channels)): - dock_display[channels[i]] = dock.Dock('Image Display ' + channels[i] , autoOrientation = False) - dock_display[channels[i]].showTitleBar() - dock_display[channels[i]].addWidget(self.imageDisplayWindow[channels[i]].widget) - dock_display[channels[i]].setStretch(x=100,y=None) - dock_controlPanel = dock.Dock('Controls', autoOrientation = False) - # dock_controlPanel.showTitleBar() - dock_controlPanel.addWidget(self.centralWidget) - dock_controlPanel.setStretch(x=1,y=None) - dock_controlPanel.setFixedWidth(dock_controlPanel.minimumSizeHint().width()) - main_dockArea = dock.DockArea() - for i in range(len(channels)): - if i == 0: - main_dockArea.addDock(dock_display[channels[i]]) - else: - main_dockArea.addDock(dock_display[channels[i]],'right') - main_dockArea.addDock(dock_controlPanel,'right') - self.setCentralWidget(main_dockArea) - desktopWidget = QDesktopWidget() - height_min = 0.9*desktopWidget.height() - width_min = 0.96*desktopWidget.width() - self.setMinimumSize(width_min,height_min) - - # make connections - for i in range(len(channels)): - self.streamHandler[channels[i]].signal_new_frame_received.connect(self.liveController[channels[i]].on_new_frame) - self.streamHandler[channels[i]].image_to_display.connect(self.imageDisplayWindow[channels[i]].display_image) - self.streamHandler[channels[i]].packet_image_to_write.connect(self.imageSaver[channels[i]].enqueue) - self.liveControlWidget[channels[i]].signal_newExposureTime.connect(self.cameraSettingWidget[channels[i]].set_exposure_time) - self.liveControlWidget[channels[i]].signal_newAnalogGain.connect(self.cameraSettingWidget[channels[i]].set_analog_gain) - self.liveControlWidget[channels[i]].update_camera_settings() - self.triggerControlWidget.signal_toggle_live.connect(self.liveControlWidget[channels[i]].btn_live.setChecked) - self.triggerControlWidget.signal_toggle_live.connect(self.liveControlWidget[channels[i]].toggle_live) - self.triggerControlWidget.signal_trigger_mode.connect(self.liveControlWidget[channels[i]].set_trigger_mode) - self.triggerControlWidget.signal_trigger_fps.connect(self.liveControlWidget[channels[i]].entry_triggerFPS.setValue) - self.camera[channels[i]].set_callback(self.streamHandler[channels[i]].on_new_frame) - self.camera[channels[i]].enable_callback() - self.navigationController.xPos.connect(self.navigationWidget.label_Xpos.setNum) - self.navigationController.yPos.connect(self.navigationWidget.label_Ypos.setNum) - self.navigationController.zPos.connect(self.navigationWidget.label_Zpos.setNum) - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.navigationController.home() - for i in range(len(self.channels)): - self.liveController[self.channels[i]].stop_live() - self.camera[self.channels[i]].close() - self.imageSaver[self.channels[i]].close() - self.microcontroller.close() diff --git a/software/control/gui_6060.py b/software/control/gui_6060.py deleted file mode 100644 index f75957d7f..000000000 --- a/software/control/gui_6060.py +++ /dev/null @@ -1,281 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy -import sys - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera as camera -import control.core as core -import control.microcontroller as microcontroller -from control._def import * - -import pyqtgraph.dockarea as dock -import time - -SINGLE_WINDOW = True # set to False if use separate windows for display and control - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, is_simulation = False, *args, **kwargs): - super().__init__(*args, **kwargs) - - self.objectiveStore = core.ObjectiveStore() - self.objectivesWidget = widgets.ObjectivesWidget(self.objectiveStore) - - # load window - if ENABLE_TRACKING: - self.imageDisplayWindow = core.ImageDisplayWindow(draw_crosshairs=True) - self.imageDisplayWindow.show_ROI_selector() - else: - self.imageDisplayWindow = core.ImageDisplayWindow(draw_crosshairs=True) - self.imageArrayDisplayWindow = core.ImageArrayDisplayWindow() - # self.imageDisplayWindow.show() - # self.imageArrayDisplayWindow.show() - - # image display windows - self.imageDisplayTabs = QTabWidget() - self.imageDisplayTabs.addTab(self.imageDisplayWindow.widget, "Live View") - self.imageDisplayTabs.addTab(self.imageArrayDisplayWindow.widget, "Multichannel Acquisition") - - # load objects - if is_simulation: - self.camera = camera.Camera_Simulation(rotate_image_angle=ROTATE_IMAGE_ANGLE,flip_image=FLIP_IMAGE) - self.microcontroller = microcontroller.Microcontroller_Simulation() - else: - try: - self.camera = camera.Camera(rotate_image_angle=ROTATE_IMAGE_ANGLE,flip_image=FLIP_IMAGE) - self.camera.open() - except: - self.camera = camera.Camera_Simulation(rotate_image_angle=ROTATE_IMAGE_ANGLE,flip_image=FLIP_IMAGE) - self.camera.open() - print('! camera not detected, using simulated camera !') - try: - self.microcontroller = microcontroller.Microcontroller(version=CONTROLLER_VERSION) - except: - print('! Microcontroller not detected, using simulated microcontroller !') - self.microcontroller = microcontroller.Microcontroller_Simulation() - - # reset the MCU - self.microcontroller.reset() - - # reinitialize motor drivers and DAC (in particular for V2.1 driver board where PG is not functional) - self.microcontroller.initialize_drivers() - - # configure the actuators - self.microcontroller.configure_actuators() - - self.configurationManager = core.ConfigurationManager() - self.streamHandler = core.StreamHandler(display_resolution_scaling=DEFAULT_DISPLAY_CROP/100) - self.liveController = core.LiveController(self.camera,self.microcontroller,self.configurationManager) - self.navigationController = core.NavigationController(self.microcontroller, parent=self) - self.slidePositionController = core.SlidePositionController(self.navigationController,self.liveController) - self.autofocusController = core.AutoFocusController(self.camera,self.navigationController,self.liveController) - self.multipointController = core.MultiPointController(self.camera,self.navigationController,self.liveController,self.autofocusController,self.configurationManager,parent=self) - if ENABLE_TRACKING: - self.trackingController = core.TrackingController(self.camera,self.microcontroller,self.navigationController,self.configurationManager,self.liveController,self.autofocusController,self.imageDisplayWindow) - self.imageSaver = core.ImageSaver() - self.imageDisplay = core.ImageDisplay() - self.navigationViewer = core.NavigationViewer() - - # retract the objective - self.navigationController.home_z() - # wait for the operation to finish - t0 = time.time() - while self.microcontroller.is_busy(): - time.sleep(0.005) - if time.time() - t0 > 10: - print('z homing timeout, the program will exit') - sys.exit(1) - print('objective retracted') - - # homing - self.navigationController.set_x_limit_pos_mm(100) - self.navigationController.set_x_limit_neg_mm(-100) - self.navigationController.set_y_limit_pos_mm(100) - self.navigationController.set_y_limit_neg_mm(-100) - print('start homing') - self.navigationController.home_y() - t0 = time.time() - while self.microcontroller.is_busy(): - time.sleep(0.005) - if time.time() - t0 > 10: - print('y homing timeout, the program will exit') - sys.exit(1) - self.navigationController.home_x() - t0 = time.time() - while self.microcontroller.is_busy(): - time.sleep(0.005) - if time.time() - t0 > 10: - print('x homing timeout, the program will exit') - sys.exit(1) - print('homing finished') - - # set software limit - self.navigationController.set_x_limit_pos_mm(SOFTWARE_POS_LIMIT.X_POSITIVE) - self.navigationController.set_x_limit_neg_mm(SOFTWARE_POS_LIMIT.X_NEGATIVE) - self.navigationController.set_y_limit_pos_mm(SOFTWARE_POS_LIMIT.Y_POSITIVE) - self.navigationController.set_y_limit_neg_mm(SOFTWARE_POS_LIMIT.Y_NEGATIVE) - - # move to center - self.navigationController.move_x(SLIDE_POSITION.SCANNING_X_MM) - while self.microcontroller.is_busy(): - time.sleep(0.005) - self.navigationController.move_y(SLIDE_POSITION.SCANNING_Y_MM) - while self.microcontroller.is_busy(): - time.sleep(0.005) - - # raise the objective - self.navigationController.move_z(DEFAULT_Z_POS_MM) - # wait for the operation to finish - t0 = time.time() - while self.microcontroller.is_busy(): - time.sleep(0.005) - if time.time() - t0 > 5: - print('z return timeout, the program will exit') - sys.exit(1) - - # set software limit - self.navigationController.set_x_limit_pos_mm(SOFTWARE_POS_LIMIT.X_POSITIVE) - self.navigationController.set_x_limit_neg_mm(SOFTWARE_POS_LIMIT.X_NEGATIVE) - self.navigationController.set_y_limit_pos_mm(SOFTWARE_POS_LIMIT.Y_POSITIVE) - self.navigationController.set_y_limit_neg_mm(SOFTWARE_POS_LIMIT.Y_NEGATIVE) - self.navigationController.set_z_limit_pos_mm(SOFTWARE_POS_LIMIT.Z_POSITIVE) - - # open the camera - # camera start streaming - # self.camera.set_reverse_x(CAMERA_REVERSE_X) # these are not implemented for the cameras in use - # self.camera.set_reverse_y(CAMERA_REVERSE_Y) # these are not implemented for the cameras in use - self.camera.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera.set_callback(self.streamHandler.on_new_frame) - self.camera.enable_callback() - - - # load widgets - self.cameraSettingWidget = widgets.CameraSettingsWidget(self.camera,include_gain_exposure_time=False) - self.liveControlWidget = widgets.LiveControlWidget(self.streamHandler,self.liveController,self.configurationManager,show_display_options=True) - self.navigationWidget = widgets.NavigationWidget(self.navigationController,self.slidePositionController,widget_configuration='malaria') - self.dacControlWidget = widgets.DACControWidget(self.microcontroller) - self.autofocusWidget = widgets.AutoFocusWidget(self.autofocusController) - self.recordingControlWidget = widgets.RecordingWidget(self.streamHandler,self.imageSaver) - if ENABLE_TRACKING: - self.trackingControlWidget = widgets.TrackingControllerWidget(self.trackingController,self.configurationManager,show_configurations=TRACKING_SHOW_MICROSCOPE_CONFIGURATIONS) - self.multiPointWidget = widgets.MultiPointWidget(self.multipointController,self.configurationManager) - self.multiPointWidget2 = widgets.MultiPointWidget2(self.navigationController,self.navigationViewer,self.multipointController,self.configurationManager) - - self.recordTabWidget = QTabWidget() - if ENABLE_TRACKING: - self.recordTabWidget.addTab(self.trackingControlWidget, "Tracking") - self.recordTabWidget.addTab(self.multiPointWidget, "Multipoint Acquisition") - self.recordTabWidget.addTab(self.multiPointWidget2, "Flexible Multipoint") - self.recordTabWidget.addTab(self.recordingControlWidget, "Simple Recording") - - # layout widgets - layout = QVBoxLayout() #layout = QStackedLayout() - layout.addWidget(self.cameraSettingWidget) - #self.objectivesWidget.setFixedHeight(100) - layout.addWidget(self.liveControlWidget) - layout.addWidget(self.navigationWidget) - if SHOW_DAC_CONTROL: - layout.addWidget(self.dacControlWidget) - layout.addWidget(self.autofocusWidget) - layout.addWidget(self.recordTabWidget) - layout.addWidget(self.navigationViewer) - layout.addWidget(self.objectivesWidget) - layout.addStretch() - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - # self.centralWidget.setFixedSize(self.centralWidget.minimumSize()) - # self.centralWidget.setFixedWidth(self.centralWidget.minimumWidth()) - # self.centralWidget.setMaximumWidth(self.centralWidget.minimumWidth()) - self.centralWidget.setFixedWidth(self.centralWidget.minimumSizeHint().width()) - - if SINGLE_WINDOW: - dock_display = dock.Dock('Image Display', autoOrientation = False) - dock_display.showTitleBar() - dock_display.addWidget(self.imageDisplayTabs) - dock_display.setStretch(x=100,y=None) - dock_controlPanel = dock.Dock('Controls', autoOrientation = False) - # dock_controlPanel.showTitleBar() - dock_controlPanel.addWidget(self.centralWidget) - dock_controlPanel.setStretch(x=1,y=None) - dock_controlPanel.setFixedWidth(dock_controlPanel.minimumSizeHint().width()) - main_dockArea = dock.DockArea() - main_dockArea.addDock(dock_display) - main_dockArea.addDock(dock_controlPanel,'right') - self.setCentralWidget(main_dockArea) - desktopWidget = QDesktopWidget() - height_min = 0.9*desktopWidget.height() - width_min = 0.96*desktopWidget.width() - self.setMinimumSize(int(width_min),int(height_min)) - else: - self.setCentralWidget(self.centralWidget) - self.tabbedImageDisplayWindow = QMainWindow() - self.tabbedImageDisplayWindow.setCentralWidget(self.imageDisplayTabs) - self.tabbedImageDisplayWindow.setWindowFlags(self.windowFlags() | Qt.CustomizeWindowHint) - self.tabbedImageDisplayWindow.setWindowFlags(self.windowFlags() & ~Qt.WindowCloseButtonHint) - desktopWidget = QDesktopWidget() - width = 0.96*desktopWidget.height() - height = width - self.tabbedImageDisplayWindow.setFixedSize(width,height) - self.tabbedImageDisplayWindow.show() - - # make connections - self.streamHandler.signal_new_frame_received.connect(self.liveController.on_new_frame) - self.streamHandler.image_to_display.connect(self.imageDisplay.enqueue) - self.streamHandler.packet_image_to_write.connect(self.imageSaver.enqueue) - # self.streamHandler.packet_image_for_tracking.connect(self.trackingController.on_new_frame) - self.imageDisplay.image_to_display.connect(self.imageDisplayWindow.display_image) # may connect streamHandler directly to imageDisplayWindow - self.navigationController.xPos.connect(lambda x:self.navigationWidget.label_Xpos.setText("{:.2f}".format(x))) - self.navigationController.yPos.connect(lambda x:self.navigationWidget.label_Ypos.setText("{:.2f}".format(x))) - self.navigationController.zPos.connect(lambda x:self.navigationWidget.label_Zpos.setText("{:.2f}".format(x))) - if ENABLE_TRACKING: - self.navigationController.signal_joystick_button_pressed.connect(self.trackingControlWidget.slot_joystick_button_pressed) - else: - self.navigationController.signal_joystick_button_pressed.connect(self.autofocusController.autofocus) - self.autofocusController.image_to_display.connect(self.imageDisplayWindow.display_image) - self.multipointController.image_to_display.connect(self.imageDisplayWindow.display_image) - self.multipointController.signal_current_configuration.connect(self.liveControlWidget.set_microscope_mode) - self.multipointController.image_to_display_multi.connect(self.imageArrayDisplayWindow.display_image) - - self.liveControlWidget.signal_newExposureTime.connect(self.cameraSettingWidget.set_exposure_time) - self.liveControlWidget.signal_newAnalogGain.connect(self.cameraSettingWidget.set_analog_gain) - self.liveControlWidget.update_camera_settings() - - self.slidePositionController.signal_slide_loading_position_reached.connect(self.navigationWidget.slot_slide_loading_position_reached) - self.slidePositionController.signal_slide_loading_position_reached.connect(self.multiPointWidget.disable_the_start_aquisition_button) - self.slidePositionController.signal_slide_scanning_position_reached.connect(self.navigationWidget.slot_slide_scanning_position_reached) - self.slidePositionController.signal_slide_scanning_position_reached.connect(self.multiPointWidget.enable_the_start_aquisition_button) - self.slidePositionController.signal_clear_slide.connect(self.navigationViewer.clear_slide) - - self.navigationController.xyPos.connect(self.navigationViewer.update_current_location) - self.multipointController.signal_register_current_fov.connect(self.navigationViewer.register_fov) - - self.imageDisplayWindow.image_click_coordinates.connect(self.navigationController.move_from_click) - self.navigationController.move_to_cached_position() - - def closeEvent(self, event): - self.navigationController.cache_current_position() - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.navigationController.home() - self.liveController.stop_live() - self.camera.close() - self.imageSaver.close() - self.imageDisplay.close() - if not SINGLE_WINDOW: - self.imageDisplayWindow.close() - self.imageArrayDisplayWindow.close() - self.tabbedImageDisplayWindow.close() - self.microcontroller.close() diff --git a/software/control/gui_PDAF_calibration.py b/software/control/gui_PDAF_calibration.py deleted file mode 100644 index 69a8dbba4..000000000 --- a/software/control/gui_PDAF_calibration.py +++ /dev/null @@ -1,130 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy -from pathlib import Path - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera as camera -import control.core as core -import control.core_PDAF as core_PDAF -import control.microcontroller as microcontroller - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, is_simulation = False, *args, **kwargs): - super().__init__(*args, **kwargs) - - # load objects - if is_simulation: - self.microcontroller = microcontroller.Microcontroller_Simulation() - self.camera_1 = camera.Camera_Simulation(sn='FW0200050063') # tracking - self.camera_2 = camera.Camera_Simulation(sn='FW0200050068') # fluorescence - else: - self.microcontroller = microcontroller.Microcontroller() - self.camera_1 = camera.Camera(sn='FW0200050063') # tracking - self.camera_2 = camera.Camera(sn='FW0200050068') # fluorescence - - self.navigationController = core.NavigationController(self.microcontroller) - self.configurationManager = core.ConfigurationManager(filename=str(Path.home()) + "/configurations_PDAF.xml") - - self.streamHandler_1 = core.StreamHandler() - self.liveController_1 = core.LiveController(self.camera_1,self.microcontroller,self.configurationManager,control_illumination=False) - self.imageSaver_1 = core.ImageSaver() - - self.streamHandler_2 = core.StreamHandler() - self.liveController_2 = core.LiveController(self.camera_2,self.microcontroller,self.configurationManager,control_illumination=True) - self.imageSaver_2 = core.ImageSaver() - - self.twoCamerasPDAFCalibrationController = core_PDAF.TwoCamerasPDAFCalibrationController(self.camera_1,self.camera_2,self.navigationController,self.liveController_1,self.liveController_2,self.configurationManager) - - # open the camera - # camera start streaming - self.camera_1.open() - self.camera_1.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera_1.set_callback(self.streamHandler_1.on_new_frame) - self.camera_1.enable_callback() - - self.camera_2.open() - self.camera_2.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera_2.set_callback(self.streamHandler_2.on_new_frame) - self.camera_2.enable_callback() - - # load widgets - self.navigationWidget = widgets.NavigationWidget(self.navigationController) - self.cameraSettingWidget_1 = widgets.CameraSettingsWidget(self.camera_1,self.liveController_1) - self.liveControlWidget_1 = widgets.LiveControlWidget(self.streamHandler_1,self.liveController_1,self.configurationManager) - self.cameraSettingWidget_2 = widgets.CameraSettingsWidget(self.camera_2,self.liveController_2) - self.liveControlWidget_2 = widgets.LiveControlWidget(self.streamHandler_2,self.liveController_2,self.configurationManager) - - self.PDAFCalibrationWidget = widgets.MultiPointWidget(self.twoCamerasPDAFCalibrationController,self.configurationManager) - - - # layout widgets - layout = QGridLayout() #layout = QStackedLayout() - layout.addWidget(self.cameraSettingWidget_1,0,0) - layout.addWidget(self.liveControlWidget_1,1,0) - layout.addWidget(self.cameraSettingWidget_2,0,1) - layout.addWidget(self.liveControlWidget_2,1,1) - - layout.addWidget(self.navigationWidget,7,0) - layout.addWidget(self.PDAFCalibrationWidget,7,1) - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - self.setCentralWidget(self.centralWidget) - - # load window - self.imageDisplayWindow_1 = core.ImageDisplayWindow('camera 1') - self.imageDisplayWindow_1.show() - self.imageDisplayWindow_2 = core.ImageDisplayWindow('camera 2') - self.imageDisplayWindow_2.show() - - # make connections - self.navigationController.xPos.connect(self.navigationWidget.label_Xpos.setNum) - self.navigationController.yPos.connect(self.navigationWidget.label_Ypos.setNum) - self.navigationController.zPos.connect(self.navigationWidget.label_Zpos.setNum) - - self.streamHandler_1.signal_new_frame_received.connect(self.liveController_1.on_new_frame) - self.streamHandler_1.image_to_display.connect(self.imageDisplayWindow_1.display_image) - self.streamHandler_1.packet_image_to_write.connect(self.imageSaver_1.enqueue) - #self.streamHandler_1.packet_image_for_tracking.connect(self.trackingController.on_new_frame) - - self.liveControlWidget_1.signal_newExposureTime.connect(self.cameraSettingWidget_1.set_exposure_time) - self.liveControlWidget_1.signal_newAnalogGain.connect(self.cameraSettingWidget_1.set_analog_gain) - self.liveControlWidget_1.update_camera_settings() - - self.streamHandler_2.signal_new_frame_received.connect(self.liveController_2.on_new_frame) - self.streamHandler_2.image_to_display.connect(self.imageDisplayWindow_2.display_image) - self.streamHandler_2.packet_image_to_write.connect(self.imageSaver_2.enqueue) - - self.liveControlWidget_2.signal_newExposureTime.connect(self.cameraSettingWidget_2.set_exposure_time) - self.liveControlWidget_2.signal_newAnalogGain.connect(self.cameraSettingWidget_2.set_analog_gain) - self.liveControlWidget_2.update_camera_settings() - - self.twoCamerasPDAFCalibrationController.image_to_display_camera1.connect(self.imageDisplayWindow_1.display_image) - self.twoCamerasPDAFCalibrationController.image_to_display_camera2.connect(self.imageDisplayWindow_1.display_image) - self.twoCamerasPDAFCalibrationController.signal_current_configuration.connect(self.liveControlWidget_1.set_microscope_mode) - self.twoCamerasPDAFCalibrationController.signal_current_configuration.connect(self.liveControlWidget_2.set_microscope_mode) - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.liveController_1.stop_live() - self.camera_1.close() - self.imageSaver_1.close() - self.imageDisplayWindow_1.close() - self.liveController_2.stop_live() - self.camera_2.close() - self.imageSaver_2.close() - self.imageDisplayWindow_2.close() diff --git a/software/control/gui_PDAF_demo.py b/software/control/gui_PDAF_demo.py deleted file mode 100644 index 6aa43d5e2..000000000 --- a/software/control/gui_PDAF_demo.py +++ /dev/null @@ -1,136 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy -from pathlib import Path - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera as camera -import control.core as core -import control.core_PDAF as core_PDAF -import control.microcontroller as microcontroller - -class Internal_States(): - def __init__(self): - self.w = 500 - self.h = 500 - self.x = 1500 - self.y = 1500 - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, is_simulation=False,*args, **kwargs): - super().__init__(*args, **kwargs) - - # load objects - if is_simulation: - self.microcontroller = microcontroller.Microcontroller_Simulation() - self.camera_1 = camera.Camera_Simulation(sn='FW0200050063') # tracking - self.camera_2 = camera.Camera_Simulation(sn='FW0200050068') # fluorescence - else: - self.microcontroller = microcontroller.Microcontroller() - self.camera_1 = camera.Camera(sn='FW0200050063') # tracking - self.camera_2 = camera.Camera(sn='FW0200050068') # fluorescence - - self.internal_states = Internal_States() - - self.navigationController = core.NavigationController(self.microcontroller) - self.PDAFController = core_PDAF.PDAFController(self.internal_states) - - self.configurationManager = core.ConfigurationManager(filename=str(Path.home()) + "/configurations_PDAF.xml") - - self.streamHandler_1 = core.StreamHandler() - self.liveController_1 = core.LiveController(self.camera_1,self.microcontroller,self.configurationManager,control_illumination=False) - self.imageSaver_1 = core.ImageSaver() - - self.streamHandler_2 = core.StreamHandler() - self.liveController_2 = core.LiveController(self.camera_2,self.microcontroller,self.configurationManager,control_illumination=True) - self.imageSaver_2 = core.ImageSaver() - - self.twoCamerasPDAFCalibrationController = core_PDAF.TwoCamerasPDAFCalibrationController(self.camera_1,self.camera_2,self.navigationController,self.liveController_1,self.liveController_2,self.configurationManager) - - # open the camera - # camera start streaming - self.camera_1.open() - self.camera_1.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera_1.set_callback(self.streamHandler_1.on_new_frame) - self.camera_1.enable_callback() - - self.camera_2.open() - self.camera_2.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera_2.set_callback(self.streamHandler_2.on_new_frame) - self.camera_2.enable_callback() - - # load widgets - self.navigationWidget = widgets.NavigationWidget(self.navigationController) - self.cameraSettingWidget_1 = widgets.CameraSettingsWidget(self.camera_1,self.liveController_1) - self.liveControlWidget_1 = widgets.LiveControlWidget(self.streamHandler_1,self.liveController_1,self.configurationManager) - self.cameraSettingWidget_2 = widgets.CameraSettingsWidget(self.camera_2,self.liveController_2) - self.liveControlWidget_2 = widgets.LiveControlWidget(self.streamHandler_2,self.liveController_2,self.configurationManager) - - # layout widgets - layout = QGridLayout() #layout = QStackedLayout() - layout.addWidget(self.cameraSettingWidget_1,0,0) - layout.addWidget(self.liveControlWidget_1,1,0) - layout.addWidget(self.cameraSettingWidget_2,0,1) - layout.addWidget(self.liveControlWidget_2,1,1) - - layout.addWidget(self.navigationWidget,7,0) - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - self.setCentralWidget(self.centralWidget) - - # load window - self.imageDisplayWindow_1 = core.ImageDisplayWindow('camera 1') - self.imageDisplayWindow_1.show() - self.imageDisplayWindow_2 = core.ImageDisplayWindow('camera 2') - self.imageDisplayWindow_2.show() - - # make connections - self.navigationController.xPos.connect(self.navigationWidget.label_Xpos.setNum) - self.navigationController.yPos.connect(self.navigationWidget.label_Ypos.setNum) - self.navigationController.zPos.connect(self.navigationWidget.label_Zpos.setNum) - - self.streamHandler_1.signal_new_frame_received.connect(self.liveController_1.on_new_frame) - self.streamHandler_1.image_to_display.connect(self.imageDisplayWindow_1.display_image) - self.streamHandler_1.packet_image_to_write.connect(self.imageSaver_1.enqueue) - #self.streamHandler_1.packet_image_for_tracking.connect(self.trackingController.on_new_frame) - - self.liveControlWidget_1.signal_newExposureTime.connect(self.cameraSettingWidget_1.set_exposure_time) - self.liveControlWidget_1.signal_newAnalogGain.connect(self.cameraSettingWidget_1.set_analog_gain) - self.liveControlWidget_1.update_camera_settings() - - self.streamHandler_2.signal_new_frame_received.connect(self.liveController_2.on_new_frame) - self.streamHandler_2.image_to_display.connect(self.imageDisplayWindow_2.display_image) - self.streamHandler_2.packet_image_to_write.connect(self.imageSaver_2.enqueue) - - self.liveControlWidget_2.signal_newExposureTime.connect(self.cameraSettingWidget_2.set_exposure_time) - self.liveControlWidget_2.signal_newAnalogGain.connect(self.cameraSettingWidget_2.set_analog_gain) - self.liveControlWidget_2.update_camera_settings() - - self.streamHandler_1.image_to_display.connect(self.PDAFController.register_image_from_camera_1) - self.streamHandler_2.image_to_display.connect(self.PDAFController.register_image_from_camera_2) - - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.liveController_1.stop_live() - self.camera_1.close() - self.imageSaver_1.close() - self.imageDisplayWindow_1.close() - self.liveController_2.stop_live() - self.camera_2.close() - self.imageSaver_2.close() - self.imageDisplayWindow_2.close() diff --git a/software/control/gui_camera_only.py b/software/control/gui_camera_only.py deleted file mode 100644 index 4da6a9fd4..000000000 --- a/software/control/gui_camera_only.py +++ /dev/null @@ -1,78 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera as camera -import control.core as core -import control.microcontroller as microcontroller - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - # load objects - self.camera = camera.Camera() - self.microcontroller = microcontroller.Microcontroller_Simulation() - - self.configurationManager = core.ConfigurationManager() - self.streamHandler = core.StreamHandler() - self.liveController = core.LiveController(self.camera,self.microcontroller,self.configurationManager) - self.imageSaver = core.ImageSaver() - self.imageDisplay = core.ImageDisplay() - - # open the camera - # camera start streaming - self.camera.open() - self.camera.set_software_triggered_acquisition() - self.camera.set_callback(self.streamHandler.on_new_frame) - self.camera.enable_callback() - - # load widgets - self.cameraSettingWidget = widgets.CameraSettingsWidget(self.camera,self.liveController) - self.liveControlWidget = widgets.LiveControlWidget(self.streamHandler,self.liveController,self.configurationManager) - self.recordingControlWidget = widgets.RecordingWidget(self.streamHandler,self.imageSaver) - - # layout widgets - layout = QGridLayout() #layout = QStackedLayout() - layout.addWidget(self.cameraSettingWidget,0,0) - layout.addWidget(self.liveControlWidget,1,0) - layout.addWidget(self.recordingControlWidget,4,0) - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - self.setCentralWidget(self.centralWidget) - - # load window - self.imageDisplayWindow = core.ImageDisplayWindow() - self.imageDisplayWindow.show() - - # make connections - self.streamHandler.signal_new_frame_received.connect(self.liveController.on_new_frame) - self.streamHandler.image_to_display.connect(self.imageDisplay.enqueue) - self.streamHandler.packet_image_to_write.connect(self.imageSaver.enqueue) - self.imageDisplay.image_to_display.connect(self.imageDisplayWindow.display_image) # may connect streamHandler directly to imageDisplayWindow - self.liveControlWidget.signal_newExposureTime.connect(self.cameraSettingWidget.set_exposure_time) - self.liveControlWidget.signal_newAnalogGain.connect(self.cameraSettingWidget.set_analog_gain) - self.liveControlWidget.update_camera_settings() - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.liveController.stop_live() - self.camera.close() - self.imageSaver.close() - self.imageDisplay.close() - self.imageDisplayWindow.close() \ No newline at end of file diff --git a/software/control/gui_camera_only_tiscamera.py b/software/control/gui_camera_only_tiscamera.py deleted file mode 100644 index ac364f335..000000000 --- a/software/control/gui_camera_only_tiscamera.py +++ /dev/null @@ -1,78 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera_TIS as camera -import control.core as core -import control.microcontroller as microcontroller - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - # load objects - self.camera = camera.Camera(sn='39810456',width=3072,height=2048,framerate=60,color=True) - self.microcontroller = microcontroller.Microcontroller_Simulation() - - self.configurationManager = core.ConfigurationManager() - self.streamHandler = core.StreamHandler() - self.liveController = core.LiveController(self.camera,self.microcontroller,self.configurationManager) - self.imageSaver = core.ImageSaver() - self.imageDisplay = core.ImageDisplay() - - # open the camera - # camera start streaming - self.camera.open() - self.camera.set_software_triggered_acquisition() - self.camera.set_callback(self.streamHandler.on_new_frame) - self.camera.enable_callback() - - # load widgets - self.cameraSettingWidget = widgets.CameraSettingsWidget(self.camera,self.liveController) - self.liveControlWidget = widgets.LiveControlWidget(self.streamHandler,self.liveController,self.configurationManager) - self.recordingControlWidget = widgets.RecordingWidget(self.streamHandler,self.imageSaver) - - # layout widgets - layout = QGridLayout() #layout = QStackedLayout() - layout.addWidget(self.cameraSettingWidget,0,0) - layout.addWidget(self.liveControlWidget,1,0) - layout.addWidget(self.recordingControlWidget,4,0) - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - self.setCentralWidget(self.centralWidget) - - # load window - self.imageDisplayWindow = core.ImageDisplayWindow() - self.imageDisplayWindow.show() - - # make connections - self.streamHandler.signal_new_frame_received.connect(self.liveController.on_new_frame) - self.streamHandler.image_to_display.connect(self.imageDisplay.enqueue) - self.streamHandler.packet_image_to_write.connect(self.imageSaver.enqueue) - self.imageDisplay.image_to_display.connect(self.imageDisplayWindow.display_image) # may connect streamHandler directly to imageDisplayWindow - self.liveControlWidget.signal_newExposureTime.connect(self.cameraSettingWidget.set_exposure_time) - self.liveControlWidget.signal_newAnalogGain.connect(self.cameraSettingWidget.set_analog_gain) - self.liveControlWidget.update_camera_settings() - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.liveController.stop_live() - self.camera.close() - self.imageSaver.close() - self.imageDisplay.close() - self.imageDisplayWindow.close() diff --git a/software/control/gui_displacement_measurement.py b/software/control/gui_displacement_measurement.py deleted file mode 100644 index 7377e19c5..000000000 --- a/software/control/gui_displacement_measurement.py +++ /dev/null @@ -1,196 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera as camera -import control.core as core -import control.core_displacement_measurement as core_displacement_measurement -import control.microcontroller as microcontroller -from control._def import * - -import pyqtgraph.dockarea as dock -SINGLE_WINDOW = True # set to False if use separate windows for display and control - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, is_simulation = False, *args, **kwargs): - super().__init__(*args, **kwargs) - - # load window - if ENABLE_TRACKING: - self.imageDisplayWindow = core.ImageDisplayWindow(draw_crosshairs=True) - self.imageDisplayWindow.show_ROI_selector() - else: - self.imageDisplayWindow = core.ImageDisplayWindow(draw_crosshairs=True) - self.imageArrayDisplayWindow = core.ImageArrayDisplayWindow() - # self.imageDisplayWindow.show() - # self.imageArrayDisplayWindow.show() - - # image display windows - self.imageDisplayTabs = QTabWidget() - self.imageDisplayTabs.addTab(self.imageDisplayWindow.widget, "Live View") - self.imageDisplayTabs.addTab(self.imageArrayDisplayWindow.widget, "Multichannel Acquisition") - - # load objects - if is_simulation: - self.camera = camera.Camera_Simulation(rotate_image_angle=ROTATE_IMAGE_ANGLE,flip_image=FLIP_IMAGE) - self.microcontroller = microcontroller.Microcontroller_Simulation() - else: - self.camera = camera.Camera(rotate_image_angle=ROTATE_IMAGE_ANGLE,flip_image=FLIP_IMAGE) - try: - self.microcontroller = microcontroller.Microcontroller() - except: - print('! Microcontroller not detected, using simulated microcontroller !') - self.microcontroller = microcontroller.Microcontroller_Simulation() - - # configure the actuators - self.microcontroller.configure_actuators() - - self.configurationManager = core.ConfigurationManager() - self.streamHandler = core.StreamHandler(display_resolution_scaling=DEFAULT_DISPLAY_CROP/100) - self.liveController = core.LiveController(self.camera,self.microcontroller,self.configurationManager) - self.navigationController = core.NavigationController(self.microcontroller) - self.autofocusController = core.AutoFocusController(self.camera,self.navigationController,self.liveController) - self.multipointController = core.MultiPointController(self.camera,self.navigationController,self.liveController,self.autofocusController,self.configurationManager) - if ENABLE_TRACKING: - self.trackingController = core.TrackingController(self.camera,self.microcontroller,self.navigationController,self.configurationManager,self.liveController,self.autofocusController,self.imageDisplayWindow) - self.imageSaver = core.ImageSaver(image_format=Acquisition.IMAGE_FORMAT) - self.imageDisplay = core.ImageDisplay() - self.displacementMeasurementController = core_displacement_measurement.DisplacementMeasurementController() - - # open the camera - # camera start streaming - self.camera.open() - # self.camera.set_reverse_x(CAMERA_REVERSE_X) # these are not implemented for the cameras in use - # self.camera.set_reverse_y(CAMERA_REVERSE_Y) # these are not implemented for the cameras in use - self.camera.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera.set_callback(self.streamHandler.on_new_frame) - self.camera.enable_callback() - if ENABLE_STROBE_OUTPUT: - self.camera.set_line3_to_exposure_active() - - # load widgets - self.cameraSettingWidget = widgets.CameraSettingsWidget(self.camera,include_gain_exposure_time=False) - self.liveControlWidget = widgets.LiveControlWidget(self.streamHandler,self.liveController,self.configurationManager) - self.navigationWidget = widgets.NavigationWidget(self.navigationController) - self.dacControlWidget = widgets.DACControWidget(self.microcontroller) - self.autofocusWidget = widgets.AutoFocusWidget(self.autofocusController) - self.recordingControlWidget = widgets.RecordingWidget(self.streamHandler,self.imageSaver) - if ENABLE_TRACKING: - self.trackingControlWidget = widgets.TrackingControllerWidget(self.trackingController,self.configurationManager,show_configurations=TRACKING_SHOW_MICROSCOPE_CONFIGURATIONS) - self.multiPointWidget = widgets.MultiPointWidget(self.multipointController,self.configurationManager) - - self.recordTabWidget = QTabWidget() - if ENABLE_TRACKING: - self.recordTabWidget.addTab(self.trackingControlWidget, "Tracking") - self.recordTabWidget.addTab(self.recordingControlWidget, "Simple Recording") - self.recordTabWidget.addTab(self.multiPointWidget, "Multipoint Acquisition") - - self.waveformDisplay = widgets.WaveformDisplay(N=1000) - self.displacementMeasurementWidget = widgets.DisplacementMeasurementWidget(self.displacementMeasurementController,self.waveformDisplay) - - # layout widgets - layout = QVBoxLayout() #layout = QStackedLayout() - layout.addWidget(self.cameraSettingWidget) - layout.addWidget(self.liveControlWidget) - layout.addWidget(self.navigationWidget) - if SHOW_DAC_CONTROL: - layout.addWidget(self.dacControlWidget) - layout.addWidget(self.autofocusWidget) - layout.addWidget(self.recordTabWidget) - layout.addStretch() - layout.addWidget(self.displacementMeasurementWidget) - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - # self.centralWidget.setFixedSize(self.centralWidget.minimumSize()) - # self.centralWidget.setFixedWidth(self.centralWidget.minimumWidth()) - # self.centralWidget.setMaximumWidth(self.centralWidget.minimumWidth()) - self.centralWidget.setFixedWidth(self.centralWidget.minimumSizeHint().width()) - - if SINGLE_WINDOW: - dock_display = dock.Dock('Image Display', autoOrientation = False) - dock_display.showTitleBar() - dock_display.addWidget(self.imageDisplayTabs) - dock_display.setStretch(x=100,y=60) - dock_waveform = dock.Dock('Displacement Measurement', autoOrientation = False) - dock_waveform.showTitleBar() - dock_waveform.addWidget(self.waveformDisplay) - dock_waveform.setStretch(x=100,y=40) - dock_controlPanel = dock.Dock('Controls', autoOrientation = False) - # dock_controlPanel.showTitleBar() - dock_controlPanel.addWidget(self.centralWidget) - dock_controlPanel.setStretch(x=1,y=None) - dock_controlPanel.setFixedWidth(dock_controlPanel.minimumSizeHint().width()) - main_dockArea = dock.DockArea() - main_dockArea.addDock(dock_display) - main_dockArea.addDock(dock_waveform,'bottom') - main_dockArea.addDock(dock_controlPanel,'right') - self.setCentralWidget(main_dockArea) - desktopWidget = QDesktopWidget() - height_min = 0.9*desktopWidget.height() - width_min = 0.96*desktopWidget.width() - self.setMinimumSize(int(width_min),int(height_min)) - else: - self.setCentralWidget(self.centralWidget) - self.tabbedImageDisplayWindow = QMainWindow() - self.tabbedImageDisplayWindow.setCentralWidget(self.imageDisplayTabs) - self.tabbedImageDisplayWindow.setWindowFlags(self.windowFlags() | Qt.CustomizeWindowHint) - self.tabbedImageDisplayWindow.setWindowFlags(self.windowFlags() & ~Qt.WindowCloseButtonHint) - desktopWidget = QDesktopWidget() - width = 0.96*desktopWidget.height() - height = width - self.tabbedImageDisplayWindow.setFixedSize(width,height) - self.tabbedImageDisplayWindow.show() - - # make connections - self.streamHandler.signal_new_frame_received.connect(self.liveController.on_new_frame) - self.streamHandler.image_to_display.connect(self.imageDisplay.enqueue) - self.streamHandler.packet_image_to_write.connect(self.imageSaver.enqueue) - # self.streamHandler.packet_image_for_tracking.connect(self.trackingController.on_new_frame) - self.imageDisplay.image_to_display.connect(self.imageDisplayWindow.display_image) # may connect streamHandler directly to imageDisplayWindow - self.navigationController.xPos.connect(self.navigationWidget.label_Xpos.setNum) - self.navigationController.yPos.connect(self.navigationWidget.label_Ypos.setNum) - self.navigationController.zPos.connect(self.navigationWidget.label_Zpos.setNum) - if ENABLE_TRACKING: - self.navigationController.signal_joystick_button_pressed.connect(self.trackingControlWidget.slot_joystick_button_pressed) - else: - self.navigationController.signal_joystick_button_pressed.connect(self.autofocusController.autofocus) - self.autofocusController.image_to_display.connect(self.imageDisplayWindow.display_image) - self.multipointController.image_to_display.connect(self.imageDisplayWindow.display_image) - self.multipointController.signal_current_configuration.connect(self.liveControlWidget.set_microscope_mode) - self.multipointController.image_to_display_multi.connect(self.imageArrayDisplayWindow.display_image) - self.liveControlWidget.signal_newExposureTime.connect(self.cameraSettingWidget.set_exposure_time) - self.liveControlWidget.signal_newAnalogGain.connect(self.cameraSettingWidget.set_analog_gain) - self.liveControlWidget.update_camera_settings() - - # displacement measurement - self.streamHandler.image_to_display.connect(self.displacementMeasurementController.update_measurement) - self.displacementMeasurementController.signal_plots.connect(self.waveformDisplay.plot) - self.displacementMeasurementController.signal_readings.connect(self.displacementMeasurementWidget.display_readings) - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.navigationController.home() - self.liveController.stop_live() - self.camera.close() - self.imageSaver.close() - self.imageDisplay.close() - if not SINGLE_WINDOW: - self.imageDisplayWindow.close() - self.imageArrayDisplayWindow.close() - self.tabbedImageDisplayWindow.close() - self.microcontroller.close() diff --git a/software/control/gui_motion_only.py b/software/control/gui_motion_only.py deleted file mode 100644 index bfa15a80e..000000000 --- a/software/control/gui_motion_only.py +++ /dev/null @@ -1,48 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera as camera -import control.core as core -import control.microcontroller as microcontroller - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - # load objects - self.microcontroller = microcontroller.Microcontroller() - self.navigationController = core.NavigationController(self.microcontroller) - - # load widgets - self.navigationWidget = widgets.NavigationWidget(self.navigationController) - - # layout widgets - layout = QGridLayout() #layout = QStackedLayout() - layout.addWidget(self.navigationWidget,2,0) - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - self.setCentralWidget(self.centralWidget) - - # make connections - self.navigationController.xPos.connect(self.navigationWidget.label_Xpos.setNum) - self.navigationController.yPos.connect(self.navigationWidget.label_Ypos.setNum) - self.navigationController.zPos.connect(self.navigationWidget.label_Zpos.setNum) - - def closeEvent(self, event): - event.accept() - self.navigationController.home() \ No newline at end of file diff --git a/software/control/gui_platereader.py b/software/control/gui_platereader.py deleted file mode 100644 index dfcf0d291..000000000 --- a/software/control/gui_platereader.py +++ /dev/null @@ -1,103 +0,0 @@ -# set QT_API environment variable -import os -from pathlib import Path -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera as camera -import control.core as core -import control.core_platereader as core_platereader -import control.microcontroller as microcontroller - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, is_simulation = False, *args, **kwargs): - super().__init__(*args, **kwargs) - - # load objects - if is_simulation: - self.camera = camera.Camera_Simulation() - self.microcontroller = microcontroller.Microcontroller_Simulation() - else: - self.camera = camera.Camera() - self.microcontroller = microcontroller.Microcontroller() - - self.configurationManager = core.ConfigurationManager(filename=str(Path.home()) + "/configurations_platereader.xml") - self.streamHandler = core.StreamHandler() - self.liveController = core.LiveController(self.camera,self.microcontroller,self.configurationManager) - self.navigationController = core.NavigationController(self.microcontroller) - self.plateReaderNavigationController = core.PlateReaderNavigationController(self.microcontroller) - self.autofocusController = core.AutoFocusController(self.camera,self.navigationController,self.liveController) - self.plateReadingController = core_platereader.PlateReadingController(self.camera,self.plateReaderNavigationController,self.liveController,self.autofocusController,self.configurationManager) - self.imageSaver = core.ImageSaver() - - # open the camera - # camera start streaming - self.camera.open() - self.camera.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera.set_callback(self.streamHandler.on_new_frame) - self.camera.enable_callback() - - # load widgets - self.cameraSettingWidget = widgets.CameraSettingsWidget(self.camera,include_gain_exposure_time=False) - self.liveControlWidget = widgets.LiveControlWidget(self.streamHandler,self.liveController,self.configurationManager,show_trigger_options=False,show_display_options=False) - self.autofocusWidget = widgets.AutoFocusWidget(self.autofocusController) - self.plateReaderAcquisitionWidget = widgets.PlateReaderAcquisitionWidget(self.plateReadingController,self.configurationManager,show_configurations=False) - self.plateReaderNavigationWidget = widgets.PlateReaderNavigationWidget(self.plateReaderNavigationController) - - # layout widgets - layout = QGridLayout() #layout = QStackedLayout() - #layout.addWidget(self.cameraSettingWidget,0,0) - layout.addWidget(self.liveControlWidget,1,0) - layout.addWidget(self.plateReaderNavigationWidget,2,0) - layout.addWidget(self.autofocusWidget,3,0) - layout.addWidget(self.plateReaderAcquisitionWidget,4,0) - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - self.setCentralWidget(self.centralWidget) - - # load window - self.imageDisplayWindow = core.ImageDisplayWindow() - self.imageDisplayWindow.show() - - # make connections - self.streamHandler.signal_new_frame_received.connect(self.liveController.on_new_frame) - self.streamHandler.image_to_display.connect(self.imageDisplayWindow.display_image) - self.streamHandler.packet_image_to_write.connect(self.imageSaver.enqueue) - # self.plateReaderNavigationController.xPos.connect(self.navigationWidget.label_Xpos.setNum) - # self.plateReaderNavigationController.yPos.connect(self.navigationWidget.label_Ypos.setNum) - # self.plateReaderNavigationController.zPos.connect(self.navigationWidget.label_Zpos.setNum) - self.autofocusController.image_to_display.connect(self.imageDisplayWindow.display_image) - # self.plateReadingController.image_to_display.connect(self.imageDisplayWindow.display_image) - self.plateReadingController.signal_current_configuration.connect(self.liveControlWidget.set_microscope_mode) - self.plateReadingController.image_to_display.connect(self.imageDisplayWindow.display_image) - self.liveControlWidget.signal_newExposureTime.connect(self.cameraSettingWidget.set_exposure_time) - self.liveControlWidget.signal_newAnalogGain.connect(self.cameraSettingWidget.set_analog_gain) - self.liveControlWidget.update_camera_settings() - - self.microcontroller.set_callback(self.plateReaderNavigationController.update_pos) - self.plateReaderNavigationController.signal_homing_complete.connect(self.plateReaderNavigationWidget.slot_homing_complete) - self.plateReaderNavigationController.signal_homing_complete.connect(self.plateReaderAcquisitionWidget.slot_homing_complete) - self.plateReaderNavigationController.signal_current_well.connect(self.plateReaderNavigationWidget.update_current_location) - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - # self.plateReaderNavigationController.home() - self.liveController.stop_live() - self.camera.close() - self.imageSaver.close() - self.imageDisplayWindow.close() - self.microcontroller.close() \ No newline at end of file diff --git a/software/control/gui_simulation.py b/software/control/gui_simulation.py deleted file mode 100644 index af05a1c62..000000000 --- a/software/control/gui_simulation.py +++ /dev/null @@ -1,111 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera as camera -import control.core as core -import control.microcontroller as microcontroller - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - # load objects - self.camera = camera.Camera_Simulation() - self.microcontroller = microcontroller.Microcontroller_Simulation() - - self.configurationManager = core.ConfigurationManager() - self.streamHandler = core.StreamHandler() - self.liveController = core.LiveController(self.camera,self.microcontroller,self.configurationManager) - self.navigationController = core.NavigationController(self.microcontroller) - self.autofocusController = core.AutoFocusController(self.camera,self.navigationController,self.liveController) - self.multipointController = core.MultiPointController(self.camera,self.navigationController,self.liveController,self.autofocusController,self.configurationManager) - self.trackingController = core.TrackingController(self.microcontroller,self.navigationController) - self.imageSaver = core.ImageSaver() - self.imageDisplay = core.ImageDisplay() - - # open the camera - # camera start streaming - self.camera.open() - self.camera.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera.set_callback(self.streamHandler.on_new_frame) - self.camera.enable_callback() - - # load widgets - self.cameraSettingWidget = widgets.CameraSettingsWidget(self.camera,self.liveController) - self.liveControlWidget = widgets.LiveControlWidget(self.streamHandler,self.liveController,self.configurationManager) - self.navigationWidget = widgets.NavigationWidget(self.navigationController) - self.autofocusWidget = widgets.AutoFocusWidget(self.autofocusController) - self.recordingControlWidget = widgets.RecordingWidget(self.streamHandler,self.imageSaver) - self.trackingControlWidget = widgets.TrackingControllerWidget(self.streamHandler,self.trackingController) - self.multiPointWidget = widgets.MultiPointWidget(self.multipointController,self.configurationManager) - - self.recordTabWidget = QTabWidget() - self.recordTabWidget.addTab(self.recordingControlWidget, "Simple Recording") - self.recordTabWidget.addTab(self.trackingControlWidget, "Tracking") - self.recordTabWidget.addTab(self.multiPointWidget, "Multipoint Acquisition") - - # layout widgets - layout = QGridLayout() #layout = QStackedLayout() - # layout.addWidget(self.cameraSettingWidget,0,0) - layout.addWidget(self.liveControlWidget,1,0) - layout.addWidget(self.navigationWidget,2,0) - layout.addWidget(self.autofocusWidget,3,0) - layout.addWidget(self.recordTabWidget,4,0) - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - self.setCentralWidget(self.centralWidget) - - # widgets_ = QWidget() - # widgets_.setLayout(layout) - # scroll = QScrollArea() - # scroll.setWidget(widgets_) - # self.setCentralWidget(widgets_) - - # load window - self.imageDisplayWindow = core.ImageDisplayWindow() - self.imageArrayDisplayWindow = core.ImageArrayDisplayWindow() - self.imageDisplayWindow.show() - self.imageArrayDisplayWindow.show() - - # make connections - self.streamHandler.signal_new_frame_received.connect(self.liveController.on_new_frame) - self.streamHandler.image_to_display.connect(self.imageDisplay.enqueue) - self.streamHandler.packet_image_to_write.connect(self.imageSaver.enqueue) - self.streamHandler.packet_image_for_tracking.connect(self.trackingController.on_new_frame) - self.imageDisplay.image_to_display.connect(self.imageDisplayWindow.display_image) # may connect streamHandler directly to imageDisplayWindow - self.navigationController.xPos.connect(self.navigationWidget.label_Xpos.setNum) - self.navigationController.yPos.connect(self.navigationWidget.label_Ypos.setNum) - self.navigationController.zPos.connect(self.navigationWidget.label_Zpos.setNum) - self.autofocusController.image_to_display.connect(self.imageDisplayWindow.display_image) - # self.multipointController.image_to_display.connect(self.imageDisplayWindow.display_image) - self.multipointController.image_to_display_multi.connect(self.imageArrayDisplayWindow.display_image) - self.multipointController.signal_current_configuration.connect(self.liveControlWidget.set_microscope_mode) - self.liveControlWidget.signal_newExposureTime.connect(self.cameraSettingWidget.set_exposure_time) - self.liveControlWidget.signal_newAnalogGain.connect(self.cameraSettingWidget.set_analog_gain) - self.liveControlWidget.update_camera_settings() - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.navigationController.home() - self.liveController.stop_live() - self.camera.close() - self.imageSaver.close() - self.imageDisplay.close() - self.imageDisplayWindow.close() - self.imageArrayDisplayWindow.close() diff --git a/software/control/gui_tiscamera.py b/software/control/gui_tiscamera.py deleted file mode 100644 index 5fed69ad8..000000000 --- a/software/control/gui_tiscamera.py +++ /dev/null @@ -1,116 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.widgets_tracking as widgets_tracking -import control.camera_TIS as camera -import control.core as core -import control.core_tracking as core_tracking -import control.microcontroller as microcontroller - -SIMULATION = True - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - # load objects - if SIMULATION is True: - # self.camera = camera.Camera(sn=48910098) - self.camera = camera.Camera(sn=17910089) - self.microcontroller = microcontroller.Microcontroller_Simulation() - else: - self.camera = camera.Camera(sn=17910089) - self.microcontroller = microcontroller.Microcontroller() - - self.configurationManager = core.ConfigurationManager() - self.streamHandler = core.StreamHandler() - self.liveController = core.LiveController(self.camera,self.microcontroller,self.configurationManager) - self.navigationController = core.NavigationController(self.microcontroller) - #self.autofocusController = core.AutoFocusController(self.camera,self.navigationController,self.liveController) - #self.multipointController = core.MultiPointController(self.camera,self.navigationController,self.liveController,self.autofocusController) - self.trackingController = core_tracking.TrackingController(self.microcontroller,self.navigationController) - self.imageSaver = core.ImageSaver() - self.imageDisplay = core.ImageDisplay() - - ''' - # thread - self.thread_multiPoint = QThread() - self.thread_multiPoint.start() - self.multipointController.moveToThread(self.thread_multiPoint) - ''' - - # open the camera - # camera start streaming - self.camera.open() - self.camera.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera.set_callback(self.streamHandler.on_new_frame) - self.camera.enable_callback() - - # load widgets - self.cameraSettingWidget = widgets.CameraSettingsWidget(self.camera,self.liveController) - self.liveControlWidget = widgets.LiveControlWidget(self.streamHandler,self.liveController,self.configurationManager) - self.navigationWidget = widgets.NavigationWidget(self.navigationController) - #self.autofocusWidget = widgets.AutoFocusWidget(self.autofocusController) - self.recordingControlWidget = widgets.RecordingWidget(self.streamHandler,self.imageSaver) - self.trackingControlWidget = widgets_tracking.TrackingControllerWidget(self.streamHandler,self.trackingController) - #self.multiPointWidget = widgets.MultiPointWidget(self.multipointController) - - self.recordTabWidget = QTabWidget() - self.recordTabWidget.addTab(self.recordingControlWidget, "Simple Recording") - self.recordTabWidget.addTab(self.trackingControlWidget, "Tracking") - #self.recordTabWidget.addTab(self.multiPointWidget, "Multipoint Acquisition") - - # layout widgets - layout = QGridLayout() #layout = QStackedLayout() - layout.addWidget(self.cameraSettingWidget,0,0) - layout.addWidget(self.liveControlWidget,1,0) - layout.addWidget(self.navigationWidget,2,0) - #layout.addWidget(self.autofocusWidget,3,0) - layout.addWidget(self.recordTabWidget,4,0) - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - self.setCentralWidget(self.centralWidget) - - # load window - self.imageDisplayWindow = core.ImageDisplayWindow('Main Display') - self.imageDisplayWindow.show() - - self.imageDisplayWindow_ThresholdedImage = core.ImageDisplayWindow('Thresholded Image') - self.imageDisplayWindow_ThresholdedImage.show() - - # make connections - self.streamHandler.signal_new_frame_received.connect(self.liveController.on_new_frame) - self.streamHandler.image_to_display.connect(self.imageDisplay.enqueue) - self.streamHandler.packet_image_to_write.connect(self.imageSaver.enqueue) - self.streamHandler.packet_image_for_tracking.connect(self.trackingController.on_new_frame) - self.imageDisplay.image_to_display.connect(self.imageDisplayWindow.display_image) # may connect streamHandler directly to imageDisplayWindow - self.navigationController.xPos.connect(self.navigationWidget.label_Xpos.setNum) - self.navigationController.yPos.connect(self.navigationWidget.label_Ypos.setNum) - self.navigationController.zPos.connect(self.navigationWidget.label_Zpos.setNum) - #self.autofocusController.image_to_display.connect(self.imageDisplayWindow.display_image) - #self.multipointController.image_to_display.connect(self.imageDisplayWindow.display_image) - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.liveController.stop_live() - self.camera.close() - self.imageSaver.close() - self.imageDisplay.close() - self.imageDisplayWindow.close() - self.imageDisplayWindow_ThresholdedImage.close() diff --git a/software/control/gui_tiscamera_DZK250.py b/software/control/gui_tiscamera_DZK250.py deleted file mode 100644 index d3c46dfec..000000000 --- a/software/control/gui_tiscamera_DZK250.py +++ /dev/null @@ -1,105 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera_TIS as camera -import control.core as core -import control.microcontroller as microcontroller - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - # load objects - self.camera = camera.Camera(sn=33910474,width=4000,height=3000,framerate=30,color=False) - self.microcontroller = microcontroller.Microcontroller() - - self.configurationManager = core.ConfigurationManager() - self.streamHandler = core.StreamHandler() - self.liveController = core.LiveController(self.camera,self.microcontroller,self.configurationManager) - self.navigationController = core.NavigationController(self.microcontroller) - self.autofocusController = core.AutoFocusController(self.camera,self.navigationController,self.liveController) - self.multipointController = core.MultiPointController(self.camera,self.navigationController,self.liveController,self.autofocusController,self.configurationManager) - self.trackingController = core.TrackingController(self.microcontroller,self.navigationController) - self.imageSaver = core.ImageSaver() - self.imageDisplay = core.ImageDisplay() - - # open the camera - # camera start streaming - self.camera.open() - self.camera.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera.set_callback(self.streamHandler.on_new_frame) - self.camera.enable_callback() - - # load widgets - self.cameraSettingWidget = widgets.CameraSettingsWidget(self.camera,self.liveController) - self.liveControlWidget = widgets.LiveControlWidget(self.streamHandler,self.liveController,self.configurationManager) - self.navigationWidget = widgets.NavigationWidget(self.navigationController) - self.autofocusWidget = widgets.AutoFocusWidget(self.autofocusController) - self.recordingControlWidget = widgets.RecordingWidget(self.streamHandler,self.imageSaver) - self.trackingControlWidget = widgets.TrackingControllerWidget(self.streamHandler,self.trackingController) - self.multiPointWidget = widgets.MultiPointWidget(self.multipointController,self.configurationManager) - - self.recordTabWidget = QTabWidget() - self.recordTabWidget.addTab(self.recordingControlWidget, "Simple Recording") - self.recordTabWidget.addTab(self.trackingControlWidget, "Tracking") - self.recordTabWidget.addTab(self.multiPointWidget, "Multipoint Acquisition") - - # layout widgets - layout = QGridLayout() #layout = QStackedLayout() - layout.addWidget(self.cameraSettingWidget,0,0) - layout.addWidget(self.liveControlWidget,1,0) - layout.addWidget(self.navigationWidget,2,0) - layout.addWidget(self.autofocusWidget,3,0) - layout.addWidget(self.recordTabWidget,4,0) - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - self.setCentralWidget(self.centralWidget) - - # load window - self.imageDisplayWindow = core.ImageDisplayWindow() - self.imageArrayDisplayWindow = core.ImageArrayDisplayWindow() - self.imageDisplayWindow.show() - self.imageArrayDisplayWindow.show() - - # make connections - self.streamHandler.signal_new_frame_received.connect(self.liveController.on_new_frame) - self.streamHandler.image_to_display.connect(self.imageDisplay.enqueue) - self.streamHandler.packet_image_to_write.connect(self.imageSaver.enqueue) - self.streamHandler.packet_image_for_tracking.connect(self.trackingController.on_new_frame) - self.imageDisplay.image_to_display.connect(self.imageDisplayWindow.display_image) # may connect streamHandler directly to imageDisplayWindow - self.navigationController.xPos.connect(self.navigationWidget.label_Xpos.setNum) - self.navigationController.yPos.connect(self.navigationWidget.label_Ypos.setNum) - self.navigationController.zPos.connect(self.navigationWidget.label_Zpos.setNum) - self.autofocusController.image_to_display.connect(self.imageDisplayWindow.display_image) - # self.multipointController.image_to_display.connect(self.imageDisplayWindow.display_image) - self.multipointController.signal_current_configuration.connect(self.liveControlWidget.set_microscope_mode) - self.multipointController.image_to_display_multi.connect(self.imageArrayDisplayWindow.display_image) - self.liveControlWidget.signal_newExposureTime.connect(self.cameraSettingWidget.set_exposure_time) - self.liveControlWidget.signal_newAnalogGain.connect(self.cameraSettingWidget.set_analog_gain) - self.liveControlWidget.update_camera_settings() - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.navigationController.home() - self.liveController.stop_live() - self.camera.close() - self.imageSaver.close() - self.imageDisplay.close() - self.imageDisplayWindow.close() - self.imageArrayDisplayWindow.close() \ No newline at end of file diff --git a/software/control/gui_tiscamera_simulation.py b/software/control/gui_tiscamera_simulation.py deleted file mode 100644 index bab3765e1..000000000 --- a/software/control/gui_tiscamera_simulation.py +++ /dev/null @@ -1,117 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.widgets_tracking as widgets_tracking -import control.camera_TIS as camera -import control.core as core -import control.core_tracking as core_tracking -import control.microcontroller as microcontroller - -SIMULATION = True - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - # load objects - if SIMULATION is True: - self.camera = camera.Camera_Simulation() - self.microcontroller = microcontroller.Microcontroller_Simulation() - else: - self.camera = camera.Camera(sn=17910085) - self.microcontroller = microcontroller.Microcontroller() - - self.streamHandler = core.StreamHandler() - self.liveController = core.LiveController(self.camera,self.microcontroller) - self.navigationController = core.NavigationController(self.microcontroller) - #self.autofocusController = core.AutoFocusController(self.camera,self.navigationController,self.liveController) - #self.multipointController = core.MultiPointController(self.camera,self.navigationController,self.liveController,self.autofocusController) - self.trackingController = core_tracking.TrackingController(self.microcontroller,self.navigationController) - self.imageSaver = core.ImageSaver() - self.imageDisplay = core.ImageDisplay() - - ''' - # thread - self.thread_multiPoint = QThread() - self.thread_multiPoint.start() - self.multipointController.moveToThread(self.thread_multiPoint) - ''' - - # open the camera - # camera start streaming - self.camera.open() - self.camera.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera.set_callback(self.streamHandler.on_new_frame) - self.camera.enable_callback() - - # load widgets - self.cameraSettingWidget = widgets.CameraSettingsWidget(self.camera,self.liveController) - self.liveControlWidget = widgets.LiveControlWidget(self.streamHandler,self.liveController) - self.navigationWidget = widgets.NavigationWidget(self.navigationController) - #self.autofocusWidget = widgets.AutoFocusWidget(self.autofocusController) - self.recordingControlWidget = widgets.RecordingWidget(self.streamHandler,self.imageSaver) - self.trackingControlWidget = widgets_tracking.TrackingControllerWidget(self.streamHandler,self.trackingController) - #self.multiPointWidget = widgets.MultiPointWidget(self.multipointController) - - self.recordTabWidget = QTabWidget() - self.recordTabWidget.addTab(self.recordingControlWidget, "Simple Recording") - self.recordTabWidget.addTab(self.trackingControlWidget, "Tracking") - #self.recordTabWidget.addTab(self.multiPointWidget, "Multipoint Acquisition") - - # layout widgets - layout = QGridLayout() #layout = QStackedLayout() - layout.addWidget(self.cameraSettingWidget,0,0) - layout.addWidget(self.liveControlWidget,1,0) - layout.addWidget(self.navigationWidget,2,0) - #layout.addWidget(self.autofocusWidget,3,0) - layout.addWidget(self.recordTabWidget,4,0) - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - self.setCentralWidget(self.centralWidget) - - # load window - self.imageDisplayWindow = core.ImageDisplayWindow('Main Display') - self.imageDisplayWindow.show() - - self.imageDisplayWindow_ThresholdedImage = core.ImageDisplayWindow('Thresholded Image') - # self.imageDisplayWindow_ThresholdedImage.show() - - # make connections - self.streamHandler.signal_new_frame_received.connect(self.liveController.on_new_frame) - self.streamHandler.image_to_display.connect(self.imageDisplay.enqueue) - # self.streamHandler.image_to_display.connect(self.imageDisplay.emit_directly) # test emitting image to display without queueing and threading - self.streamHandler.packet_image_to_write.connect(self.imageSaver.enqueue) - self.streamHandler.packet_image_for_tracking.connect(self.trackingController.on_new_frame) - self.imageDisplay.image_to_display.connect(self.imageDisplayWindow.display_image) # may connect streamHandler directly to imageDisplayWindow - self.navigationController.xPos.connect(self.navigationWidget.label_Xpos.setNum) - self.navigationController.yPos.connect(self.navigationWidget.label_Ypos.setNum) - self.navigationController.zPos.connect(self.navigationWidget.label_Zpos.setNum) - #self.autofocusController.image_to_display.connect(self.imageDisplayWindow.display_image) - #self.multipointController.image_to_display.connect(self.imageDisplayWindow.display_image) - - self.camera.start_streaming() - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.liveController.stop_live() - self.camera.close() - self.imageSaver.close() - self.imageDisplay.close() - self.imageDisplayWindow.close() - self.imageDisplayWindow_ThresholdedImage.close() diff --git a/software/control/gui_toupcam_IMX571.py b/software/control/gui_toupcam_IMX571.py deleted file mode 100644 index bffc26e6d..000000000 --- a/software/control/gui_toupcam_IMX571.py +++ /dev/null @@ -1,253 +0,0 @@ -# set QT_API environment variable -import os -import sys -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera_toupcam as camera -import control.core as core -import control.microcontroller as microcontroller -from control._def import * - -import pyqtgraph.dockarea as dock -SINGLE_WINDOW = True # set to False if use separate windows for display and control - -import time - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, is_simulation = False, *args, **kwargs): - super().__init__(*args, **kwargs) - - # load window - if ENABLE_TRACKING: - self.imageDisplayWindow = core.ImageDisplayWindow(draw_crosshairs=True,show_LUT=True,autoLevels=True) - self.imageDisplayWindow.show_ROI_selector() - else: - self.imageDisplayWindow = core.ImageDisplayWindow(draw_crosshairs=True,show_LUT=True,autoLevels=True) - self.imageArrayDisplayWindow = core.ImageArrayDisplayWindow() - # self.imageDisplayWindow.show() - # self.imageArrayDisplayWindow.show() - - # image display windows - self.imageDisplayTabs = QTabWidget() - self.imageDisplayTabs.addTab(self.imageDisplayWindow.widget, "Live View") - self.imageDisplayTabs.addTab(self.imageArrayDisplayWindow.widget, "Multichannel Acquisition") - - # load objects - if is_simulation: - self.camera = camera.Camera_Simulation(rotate_image_angle=ROTATE_IMAGE_ANGLE,flip_image=FLIP_IMAGE) - self.microcontroller = microcontroller.Microcontroller_Simulation() - else: - self.camera = camera.Camera(resolution=(6224,4168),rotate_image_angle=ROTATE_IMAGE_ANGLE,flip_image=FLIP_IMAGE) - #self.camera = camera.Camera(resolution=(3104,2084)) - #self.camera = camera.Camera(resolution=(2064,1386)) - # 6224 x 4168 - # 3104 x 2084 - # 2064 x 1386 - try: - self.microcontroller = microcontroller.Microcontroller(version=CONTROLLER_VERSION) - except: - print('! Microcontroller not detected, using simulated microcontroller !') - self.microcontroller = microcontroller.Microcontroller_Simulation() - - # reset the MCU - self.microcontroller.reset() - - ''' - # reinitialize motor drivers and DAC (in particular for V2.1 driver board where PG is not functional) - self.microcontroller.initialize_drivers() - ''' - - # configure the actuators - self.microcontroller.configure_actuators() - - self.configurationManager = core.ConfigurationManager('./channel_configurations.xml') - self.streamHandler = core.StreamHandler(display_resolution_scaling=DEFAULT_DISPLAY_CROP/100) - self.liveController = core.LiveController(self.camera,self.microcontroller,self.configurationManager) - self.navigationController = core.NavigationController(self.microcontroller) - self.slidePositionController = core.SlidePositionController(self.navigationController,self.liveController) - self.autofocusController = core.AutoFocusController(self.camera,self.navigationController,self.liveController) - self.multipointController = core.MultiPointController(self.camera,self.navigationController,self.liveController,self.autofocusController,self.configurationManager) - if ENABLE_TRACKING: - self.trackingController = core.TrackingController(self.camera,self.microcontroller,self.navigationController,self.configurationManager,self.liveController,self.autofocusController,self.imageDisplayWindow) - self.imageSaver = core.ImageSaver(image_format=Acquisition.IMAGE_FORMAT) - self.imageDisplay = core.ImageDisplay() - self.navigationViewer = core.NavigationViewer() - - # homing - ''' - self.navigationController.home_y() - t0 = time.time() - while self.microcontroller.is_busy(): - time.sleep(0.005) - if time.time() - t0 > 10: - print('y homing timeout, the program will exit') - sys.exit(1) - - self.navigationController.home_x() - t0 = time.time() - while self.microcontroller.is_busy(): - time.sleep(0.005) - if time.time() - t0 > 10: - print('x homing timeout, the program will exit') - sys.exit(1) - ''' - ''' - self.slidePositionController.move_to_slide_scanning_position() - while self.slidePositionController.slide_scanning_position_reached == False: - time.sleep(0.005) - print('homing finished') - - # retract the objective - self.navigationController.home_z() - # wait for the operation to finish - t0 = time.time() - while self.microcontroller.is_busy(): - time.sleep(0.005) - if time.time() - t0 > 10: - print('z homing timeout, the program will exit') - sys.exit(1) - print('objective retracted') - self.navigationController.move_z(DEFAULT_Z_POS_MM) - - self.navigationController.set_x_limit_pos_mm(SOFTWARE_POS_LIMIT.X_POSITIVE) - self.navigationController.set_x_limit_neg_mm(SOFTWARE_POS_LIMIT.X_NEGATIVE) - self.navigationController.set_y_limit_pos_mm(SOFTWARE_POS_LIMIT.Y_POSITIVE) - self.navigationController.set_y_limit_neg_mm(SOFTWARE_POS_LIMIT.Y_NEGATIVE) - self.navigationController.set_z_limit_pos_mm(SOFTWARE_POS_LIMIT.Z_POSITIVE) - ''' - - # open the camera - # camera start streaming - self.camera.open() - self.camera.set_gain_mode('HCG') - # self.camera.camera.put_Roi(3112,2084,2048,2048) - # self.camera.set_reverse_x(CAMERA_REVERSE_X) # these are not implemented for the cameras in use - # self.camera.set_reverse_y(CAMERA_REVERSE_Y) # these are not implemented for the cameras in use - self.camera.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera.set_callback(self.streamHandler.on_new_frame) - self.camera.enable_callback() - if ENABLE_STROBE_OUTPUT: - self.camera.set_line3_to_exposure_active() - - # load widgets - self.cameraSettingWidget = widgets.CameraSettingsWidget(self.camera,include_gain_exposure_time=False,include_camera_temperature_setting=True) - self.liveControlWidget = widgets.LiveControlWidget(self.streamHandler,self.liveController,self.configurationManager,show_trigger_options=True,show_display_options=True,show_autolevel=True,autolevel=True) - self.navigationWidget = widgets.NavigationWidget(self.navigationController,self.slidePositionController,widget_configuration='malaria') - self.dacControlWidget = widgets.DACControWidget(self.microcontroller) - self.autofocusWidget = widgets.AutoFocusWidget(self.autofocusController) - self.recordingControlWidget = widgets.RecordingWidget(self.streamHandler,self.imageSaver) - if ENABLE_TRACKING: - self.trackingControlWidget = widgets.TrackingControllerWidget(self.trackingController,self.configurationManager,show_configurations=TRACKING_SHOW_MICROSCOPE_CONFIGURATIONS) - self.multiPointWidget = widgets.MultiPointWidget(self.multipointController,self.configurationManager) - - self.recordTabWidget = QTabWidget() - if ENABLE_TRACKING: - self.recordTabWidget.addTab(self.trackingControlWidget, "Tracking") - self.recordTabWidget.addTab(self.multiPointWidget, "Multipoint Acquisition") - self.recordTabWidget.addTab(self.recordingControlWidget, "Simple Recording") - - # layout widgets - layout = QVBoxLayout() #layout = QStackedLayout() - layout.addWidget(self.cameraSettingWidget) - layout.addWidget(self.liveControlWidget) - layout.addWidget(self.navigationWidget) - if SHOW_DAC_CONTROL: - layout.addWidget(self.dacControlWidget) - layout.addWidget(self.autofocusWidget) - layout.addWidget(self.recordTabWidget) - layout.addWidget(self.navigationViewer) - layout.addStretch() - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - # self.centralWidget.setFixedSize(self.centralWidget.minimumSize()) - # self.centralWidget.setFixedWidth(self.centralWidget.minimumWidth()) - # self.centralWidget.setMaximumWidth(self.centralWidget.minimumWidth()) - self.centralWidget.setFixedWidth(self.centralWidget.minimumSizeHint().width()) - - if SINGLE_WINDOW: - dock_display = dock.Dock('Image Display', autoOrientation = False) - dock_display.showTitleBar() - dock_display.addWidget(self.imageDisplayTabs) - dock_display.setStretch(x=100,y=None) - dock_controlPanel = dock.Dock('Controls', autoOrientation = False) - # dock_controlPanel.showTitleBar() - dock_controlPanel.addWidget(self.centralWidget) - dock_controlPanel.setStretch(x=1,y=None) - dock_controlPanel.setFixedWidth(dock_controlPanel.minimumSizeHint().width()) - main_dockArea = dock.DockArea() - main_dockArea.addDock(dock_display) - main_dockArea.addDock(dock_controlPanel,'right') - self.setCentralWidget(main_dockArea) - desktopWidget = QDesktopWidget() - height_min = int(0.9*desktopWidget.height()) - width_min =int(0.96*desktopWidget.width()) - self.setMinimumSize(width_min,height_min) - else: - self.setCentralWidget(self.centralWidget) - self.tabbedImageDisplayWindow = QMainWindow() - self.tabbedImageDisplayWindow.setCentralWidget(self.imageDisplayTabs) - self.tabbedImageDisplayWindow.setWindowFlags(self.windowFlags() | Qt.CustomizeWindowHint) - self.tabbedImageDisplayWindow.setWindowFlags(self.windowFlags() & ~Qt.WindowCloseButtonHint) - desktopWidget = QDesktopWidget() - width = 0.96*desktopWidget.height() - height = width - self.tabbedImageDisplayWindow.setFixedSize(width,height) - self.tabbedImageDisplayWindow.show() - - # make connections - self.streamHandler.signal_new_frame_received.connect(self.liveController.on_new_frame) - self.streamHandler.image_to_display.connect(self.imageDisplay.enqueue) - self.streamHandler.packet_image_to_write.connect(self.imageSaver.enqueue) - # self.streamHandler.packet_image_for_tracking.connect(self.trackingController.on_new_frame) - self.imageDisplay.image_to_display.connect(self.imageDisplayWindow.display_image) # may connect streamHandler directly to imageDisplayWindow - self.navigationController.xPos.connect(self.navigationWidget.label_Xpos.setNum) - self.navigationController.yPos.connect(self.navigationWidget.label_Ypos.setNum) - self.navigationController.zPos.connect(self.navigationWidget.label_Zpos.setNum) - if ENABLE_TRACKING: - self.navigationController.signal_joystick_button_pressed.connect(self.trackingControlWidget.slot_joystick_button_pressed) - else: - self.navigationController.signal_joystick_button_pressed.connect(self.autofocusController.autofocus) - self.autofocusController.image_to_display.connect(self.imageDisplayWindow.display_image) - self.multipointController.image_to_display.connect(self.imageDisplayWindow.display_image) - self.multipointController.signal_current_configuration.connect(self.liveControlWidget.set_microscope_mode) - self.multipointController.image_to_display_multi.connect(self.imageArrayDisplayWindow.display_image) - self.liveControlWidget.signal_newExposureTime.connect(self.cameraSettingWidget.set_exposure_time) - self.liveControlWidget.signal_newAnalogGain.connect(self.cameraSettingWidget.set_analog_gain) - self.liveControlWidget.update_camera_settings() - self.liveControlWidget.signal_autoLevelSetting.connect(self.imageDisplayWindow.set_autolevel) - - self.slidePositionController.signal_slide_loading_position_reached.connect(self.navigationWidget.slot_slide_loading_position_reached) - self.slidePositionController.signal_slide_loading_position_reached.connect(self.multiPointWidget.disable_the_start_aquisition_button) - self.slidePositionController.signal_slide_scanning_position_reached.connect(self.navigationWidget.slot_slide_scanning_position_reached) - self.slidePositionController.signal_slide_scanning_position_reached.connect(self.multiPointWidget.enable_the_start_aquisition_button) - self.slidePositionController.signal_clear_slide.connect(self.navigationViewer.clear_slide) - self.navigationController.xyPos.connect(self.navigationViewer.update_current_location) - self.multipointController.signal_register_current_fov.connect(self.navigationViewer.register_fov) - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.navigationController.home() - self.liveController.stop_live() - self.camera.close() - self.imageSaver.close() - self.imageDisplay.close() - if not SINGLE_WINDOW: - self.imageDisplayWindow.close() - self.imageArrayDisplayWindow.close() - self.tabbedImageDisplayWindow.close() - self.microcontroller.close() diff --git a/software/control/gui_usbspectrometer.py b/software/control/gui_usbspectrometer.py deleted file mode 100644 index 5826e0515..000000000 --- a/software/control/gui_usbspectrometer.py +++ /dev/null @@ -1,210 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera as camera -import control.core as core -import control.microcontroller as microcontroller -from control._def import * - -import control.widgets_usbspectrometer as widgets_usbspectrometer -import control.core_usbspectrometer as core_usbspectrometer -import control.spectrometer_oceanoptics as spectrometer - -import pyqtgraph.dockarea as dock -SINGLE_WINDOW = True # set to False if use separate windows for display and control - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, is_simulation = False, *args, **kwargs): - super().__init__(*args, **kwargs) - - # load window - if ENABLE_TRACKING: - self.imageDisplayWindow = core.ImageDisplayWindow(draw_crosshairs=True) - self.imageDisplayWindow.show_ROI_selector() - else: - self.imageDisplayWindow = core.ImageDisplayWindow(draw_crosshairs=True) - self.imageArrayDisplayWindow = core.ImageArrayDisplayWindow() - # self.imageDisplayWindow.show() - # self.imageArrayDisplayWindow.show() - - # image display windows - self.imageDisplayTabs = QTabWidget() - self.imageDisplayTabs.addTab(self.imageDisplayWindow.widget, "Live View") - # self.imageDisplayTabs.addTab(self.imageArrayDisplayWindow.widget, "Multichannel Acquisition") - - # load objects - if is_simulation: - self.camera = camera.Camera_Simulation(rotate_image_angle=ROTATE_IMAGE_ANGLE,flip_image=FLIP_IMAGE) - self.microcontroller = microcontroller.Microcontroller_Simulation() - self.spectrometer = spectrometer.Spectrometer_Simulation() - else: - self.camera = camera.Camera(rotate_image_angle=ROTATE_IMAGE_ANGLE,flip_image=FLIP_IMAGE) - try: - self.microcontroller = microcontroller.Microcontroller() - except: - print('! Microcontroller not detected, using simulated microcontroller !') - self.microcontroller = microcontroller.Microcontroller_Simulation() - try: - self.spectrometer = spectrometer.Spectrometer() - except: - print('! Spectrometer not detected, using simulated microcontroller !') - self.spectrometer = spectrometer.Spectrometer_Simulation() - - # configure the actuators - self.microcontroller.configure_actuators() - - self.configurationManager = core.ConfigurationManager('./channel_configurations.xml') - self.streamHandler = core.StreamHandler(display_resolution_scaling=DEFAULT_DISPLAY_CROP/100) - self.liveController = core.LiveController(self.camera,self.microcontroller,self.configurationManager) - self.navigationController = core.NavigationController(self.microcontroller) - self.autofocusController = core.AutoFocusController(self.camera,self.navigationController,self.liveController) - self.multipointController = core.MultiPointController(self.camera,self.navigationController,self.liveController,self.autofocusController,self.configurationManager,self.spectrometer) - if ENABLE_TRACKING: - self.trackingController = core.TrackingController(self.camera,self.microcontroller,self.navigationController,self.configurationManager,self.liveController,self.autofocusController,self.imageDisplayWindow) - self.imageSaver = core.ImageSaver(image_format=Acquisition.IMAGE_FORMAT) - self.imageDisplay = core.ImageDisplay() - self.spectrometerStreamHandler = core_usbspectrometer.SpectrumStreamHandler() - self.spectrumSaver = core_usbspectrometer.SpectrumSaver() - - # open the camera - # camera start streaming - self.camera.open() - # self.camera.set_reverse_x(CAMERA_REVERSE_X) # these are not implemented for the cameras in use - # self.camera.set_reverse_y(CAMERA_REVERSE_Y) # these are not implemented for the cameras in use - self.camera.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera.set_callback(self.streamHandler.on_new_frame) - self.camera.enable_callback() - if ENABLE_STROBE_OUTPUT: - self.camera.set_line3_to_exposure_active() - - self.spectrometer.set_callback(self.spectrometerStreamHandler.on_new_measurement) - - # load widgets - self.cameraSettingWidget = widgets.CameraSettingsWidget(self.camera,include_gain_exposure_time=False) - self.liveControlWidget = widgets.LiveControlWidget(self.streamHandler,self.liveController,self.configurationManager) - self.navigationWidget = widgets.NavigationWidget(self.navigationController) - self.dacControlWidget = widgets.DACControWidget(self.microcontroller) - self.autofocusWidget = widgets.AutoFocusWidget(self.autofocusController) - self.recordingControlWidget = widgets.RecordingWidget(self.streamHandler,self.imageSaver) - self.spectrumRecordingWidget = widgets_usbspectrometer.RecordingWidget(self.spectrometerStreamHandler,self.spectrumSaver) - if ENABLE_TRACKING: - self.trackingControlWidget = widgets.TrackingControllerWidget(self.trackingController,self.configurationManager,show_configurations=TRACKING_SHOW_MICROSCOPE_CONFIGURATIONS) - self.multiPointWidget = widgets.MultiPointWidget(self.multipointController,self.configurationManager) - - self.recordTabWidget = QTabWidget() - if ENABLE_TRACKING: - self.recordTabWidget.addTab(self.trackingControlWidget, "Tracking") - self.recordTabWidget.addTab(self.recordingControlWidget, "Recording - Camera") - self.recordTabWidget.addTab(self.spectrumRecordingWidget, "Recording - Spectrometer") - self.recordTabWidget.addTab(self.multiPointWidget, "Multipoint Acquisition") - self.spectrometerControlWidget = widgets_usbspectrometer.SpectrometerControlWidget(self.spectrometer,self.spectrometerStreamHandler) - self.spectrumDisplay = widgets_usbspectrometer.SpectrumDisplay() - - # layout widgets - layout = QVBoxLayout() #layout = QStackedLayout() - layout.addWidget(self.cameraSettingWidget) - layout.addWidget(self.liveControlWidget) - layout.addWidget(self.navigationWidget) - if SHOW_DAC_CONTROL: - layout.addWidget(self.dacControlWidget) - layout.addWidget(self.autofocusWidget) - layout.addWidget(self.spectrometerControlWidget) - layout.addWidget(self.recordTabWidget) - layout.addStretch() - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - # self.centralWidget.setFixedSize(self.centralWidget.minimumSize()) - # self.centralWidget.setFixedWidth(self.centralWidget.minimumWidth()) - # self.centralWidget.setMaximumWidth(self.centralWidget.minimumWidth()) - self.centralWidget.setFixedWidth(self.centralWidget.minimumSizeHint().width()) - - if SINGLE_WINDOW: - dock_display = dock.Dock('Image Display', autoOrientation = False) - dock_display.showTitleBar() - dock_display.addWidget(self.imageDisplayTabs) - dock_display.setStretch(x=100,y=60) - dock_spectrum = dock.Dock('Spectrum', autoOrientation = False) - dock_spectrum.showTitleBar() - dock_spectrum.addWidget(self.spectrumDisplay) - dock_spectrum.setStretch(x=100,y=40) - dock_controlPanel = dock.Dock('Controls', autoOrientation = False) - dock_controlPanel = dock.Dock('Controls', autoOrientation = False) - # dock_controlPanel.showTitleBar() - dock_controlPanel.addWidget(self.centralWidget) - dock_controlPanel.setStretch(x=1,y=None) - dock_controlPanel.setFixedWidth(dock_controlPanel.minimumSizeHint().width()) - main_dockArea = dock.DockArea() - main_dockArea.addDock(dock_display) - main_dockArea.addDock(dock_spectrum,'bottom') - main_dockArea.addDock(dock_controlPanel,'right') - self.setCentralWidget(main_dockArea) - desktopWidget = QDesktopWidget() - height_min = 0.9*desktopWidget.height() - width_min = 0.96*desktopWidget.width() - self.setMinimumSize(width_min,height_min) - else: - self.setCentralWidget(self.centralWidget) - self.tabbedImageDisplayWindow = QMainWindow() - self.tabbedImageDisplayWindow.setCentralWidget(self.imageDisplayTabs) - self.tabbedImageDisplayWindow.setWindowFlags(self.windowFlags() | Qt.CustomizeWindowHint) - self.tabbedImageDisplayWindow.setWindowFlags(self.windowFlags() & ~Qt.WindowCloseButtonHint) - desktopWidget = QDesktopWidget() - width = 0.96*desktopWidget.height() - height = width - self.tabbedImageDisplayWindow.setFixedSize(width,height) - self.tabbedImageDisplayWindow.show() - - # make connections - self.streamHandler.signal_new_frame_received.connect(self.liveController.on_new_frame) - self.streamHandler.image_to_display.connect(self.imageDisplay.enqueue) - self.streamHandler.packet_image_to_write.connect(self.imageSaver.enqueue) - # self.streamHandler.packet_image_for_tracking.connect(self.trackingController.on_new_frame) - self.imageDisplay.image_to_display.connect(self.imageDisplayWindow.display_image) # may connect streamHandler directly to imageDisplayWindow - self.navigationController.xPos.connect(self.navigationWidget.label_Xpos.setNum) - self.navigationController.yPos.connect(self.navigationWidget.label_Ypos.setNum) - self.navigationController.zPos.connect(self.navigationWidget.label_Zpos.setNum) - if ENABLE_TRACKING: - self.navigationController.signal_joystick_button_pressed.connect(self.trackingControlWidget.slot_joystick_button_pressed) - else: - self.navigationController.signal_joystick_button_pressed.connect(self.autofocusController.autofocus) - self.autofocusController.image_to_display.connect(self.imageDisplayWindow.display_image) - self.multipointController.image_to_display.connect(self.imageDisplayWindow.display_image) - self.multipointController.signal_current_configuration.connect(self.liveControlWidget.set_microscope_mode) - self.multipointController.image_to_display_multi.connect(self.imageArrayDisplayWindow.display_image) - self.multipointController.spectrum_to_display.connect(self.spectrumDisplay.plot) - self.liveControlWidget.signal_newExposureTime.connect(self.cameraSettingWidget.set_exposure_time) - self.liveControlWidget.signal_newAnalogGain.connect(self.cameraSettingWidget.set_analog_gain) - self.liveControlWidget.update_camera_settings() - self.spectrometerStreamHandler.spectrum_to_display.connect(self.spectrumDisplay.plot) - self.spectrometerStreamHandler.spectrum_to_write.connect(self.spectrumSaver.enqueue) - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.navigationController.home() - self.liveController.stop_live() - self.camera.close() - self.imageSaver.close() - self.imageDisplay.close() - self.spectrometer.close() - self.spectrumSaver.close() - if not SINGLE_WINDOW: - self.imageDisplayWindow.close() - self.imageArrayDisplayWindow.close() - self.tabbedImageDisplayWindow.close() - self.microcontroller.close() diff --git a/software/control/gui_volumetric_imaging.py b/software/control/gui_volumetric_imaging.py deleted file mode 100644 index 518c1c71a..000000000 --- a/software/control/gui_volumetric_imaging.py +++ /dev/null @@ -1,107 +0,0 @@ -# set QT_API environment variable -import os -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.widgets as widgets -import control.camera as camera -import control.core as core -import control.core_volumetric_imaging as core_volumetric_imaging -import control.microcontroller as microcontroller - -class OctopiGUI(QMainWindow): - - # variables - fps_software_trigger = 100 - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - # load objects - self.camera = camera.Camera() - self.microcontroller = microcontroller.Microcontroller_Simulation() - - self.configurationManager = core.ConfigurationManager() - self.streamHandler = core_volumetric_imaging.StreamHandler(crop_width=500,crop_height=500) - self.liveController = core.LiveController(self.camera,self.microcontroller,self.configurationManager) - self.navigationController = core.NavigationController(self.microcontroller) - self.autofocusController = core.AutoFocusController(self.camera,self.navigationController,self.liveController) - self.multipointController = core.MultiPointController(self.camera,self.navigationController,self.liveController,self.autofocusController,self.configurationManager) - self.trackingController = core.TrackingController(self.microcontroller,self.navigationController) - self.imageSaver = core.ImageSaver() - self.imageDisplay = core.ImageDisplay() - - # open the camera - # camera start streaming - self.camera.open() - self.camera.set_software_triggered_acquisition() #self.camera.set_continuous_acquisition() - self.camera.set_callback(self.streamHandler.on_new_frame) - self.camera.enable_callback() - - # load widgets - self.cameraSettingWidget = widgets.CameraSettingsWidget(self.camera,self.liveController) - self.liveControlWidget = widgets.LiveControlWidget(self.streamHandler,self.liveController,self.configurationManager) - self.navigationWidget = widgets.NavigationWidget(self.navigationController) - self.autofocusWidget = widgets.AutoFocusWidget(self.autofocusController) - self.recordingControlWidget = widgets.RecordingWidget(self.streamHandler,self.imageSaver) - self.trackingControlWidget = widgets.TrackingControllerWidget(self.streamHandler,self.trackingController) - self.multiPointWidget = widgets.MultiPointWidget(self.multipointController,self.configurationManager) - - self.recordTabWidget = QTabWidget() - self.recordTabWidget.addTab(self.recordingControlWidget, "Simple Recording") - # self.recordTabWidget.addTab(self.trackingControlWidget, "Tracking") - # self.recordTabWidget.addTab(self.multiPointWidget, "Multipoint Acquisition") - - # layout widgets - layout = QGridLayout() #layout = QStackedLayout() - layout.addWidget(self.cameraSettingWidget,0,0) - layout.addWidget(self.liveControlWidget,1,0) - # layout.addWidget(self.navigationWidget,2,0) - # layout.addWidget(self.autofocusWidget,3,0) - layout.addWidget(self.recordTabWidget,4,0) - - # transfer the layout to the central widget - self.centralWidget = QWidget() - self.centralWidget.setLayout(layout) - self.setCentralWidget(self.centralWidget) - - # load window - self.imageDisplayWindow = core.ImageDisplayWindow() - self.imageArrayDisplayWindow = core_volumetric_imaging.ImageArrayDisplayWindow() - self.imageDisplayWindow.show() - self.imageArrayDisplayWindow.show() - - # make connections - self.streamHandler.signal_new_frame_received.connect(self.liveController.on_new_frame) - self.streamHandler.image_to_display.connect(self.imageDisplay.enqueue) - self.streamHandler.packet_image_to_write.connect(self.imageSaver.enqueue) - self.streamHandler.packet_image_for_tracking.connect(self.trackingController.on_new_frame) - self.streamHandler.packet_image_for_array_display.connect(self.imageArrayDisplayWindow.display_image) - self.imageDisplay.image_to_display.connect(self.imageDisplayWindow.display_image) # may connect streamHandler directly to imageDisplayWindow - self.navigationController.xPos.connect(self.navigationWidget.label_Xpos.setNum) - self.navigationController.yPos.connect(self.navigationWidget.label_Ypos.setNum) - self.navigationController.zPos.connect(self.navigationWidget.label_Zpos.setNum) - self.autofocusController.image_to_display.connect(self.imageDisplayWindow.display_image) - # self.multipointController.image_to_display.connect(self.imageDisplayWindow.display_image) - self.multipointController.signal_current_configuration.connect(self.liveControlWidget.set_microscope_mode) - self.multipointController.image_to_display_multi.connect(self.imageArrayDisplayWindow.display_image) - self.liveControlWidget.signal_newExposureTime.connect(self.cameraSettingWidget.set_exposure_time) - self.liveControlWidget.signal_newAnalogGain.connect(self.cameraSettingWidget.set_analog_gain) - self.liveControlWidget.update_camera_settings() - - def closeEvent(self, event): - event.accept() - # self.softwareTriggerGenerator.stop() @@@ => - self.navigationController.home() - self.liveController.stop_live() - self.camera.close() - self.imageSaver.close() - self.imageDisplay.close() - self.imageDisplayWindow.close() - self.imageArrayDisplayWindow.close() \ No newline at end of file diff --git a/software/main_2cameras_sync.py b/software/main_2cameras_sync.py deleted file mode 100644 index 3f46eede2..000000000 --- a/software/main_2cameras_sync.py +++ /dev/null @@ -1,31 +0,0 @@ -# set QT_API environment variable -import os -import sys -import argparse -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.gui_2cameras_sync as gui -#import control.gui_2cameras_async as gui -#import control.gui_tiscamera as gui - -parser = argparse.ArgumentParser() -parser.add_argument("--simulation", help="Run the GUI with simulated hardware.", action = 'store_true') -args = parser.parse_args() - -if __name__ == "__main__": - - app = QApplication([]) - app.setStyle('Fusion') - if(args.simulation): - win = gui.OctopiGUI(is_simulation = True) - else: - win = gui.OctopiGUI() - win.show() - sys.exit(app.exec_()) diff --git a/software/main_6060.py b/software/main_6060.py deleted file mode 100644 index 7ec39b647..000000000 --- a/software/main_6060.py +++ /dev/null @@ -1,64 +0,0 @@ -# set QT_API environment variable -import os -import sys -import glob -import argparse -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.gui_6060 as gui - -from configparser import ConfigParser -from control.widgets import ConfigEditorBackwardsCompatible, ConfigEditorForAcquisitions - -from control._def import CACHED_CONFIG_FILE_PATH - -parser = argparse.ArgumentParser() -parser.add_argument("--simulation", help="Run the GUI with simulated hardware.", action = 'store_true') -args = parser.parse_args() - -def show_config(cfp, configpath, main_gui): - config_widget = ConfigEditorBackwardsCompatible(cfp, configpath, main_gui) - config_widget.exec_() - -def show_acq_config(cfm): - acq_config_widget = ConfigEditorForAcquisitions(cfm) - acq_config_widget.exec_() - -if __name__ == "__main__": - legacy_config = False - cf_editor_parser = ConfigParser() - config_files = glob.glob('.' + '/' + 'configuration*.ini') - if config_files: - cf_editor_parser.read(CACHED_CONFIG_FILE_PATH) - else: - print('configuration*.ini file not found, defaulting to legacy configuration') - legacy_config = True - app = QApplication([]) - app.setStyle('Fusion') - if(args.simulation): - win = gui.OctopiGUI(is_simulation = True) - else: - win = gui.OctopiGUI() - - acq_config_action = QAction("Acquisition Settings", win) - acq_config_action.triggered.connect(lambda : show_acq_config(win.configurationManager)) - - file_menu = QMenu("File", win) - file_menu.addAction(acq_config_action) - - if not legacy_config: - config_action = QAction("Microscope Settings", win) - config_action.triggered.connect(lambda : show_config(cf_editor_parser, config_files[0], win)) - file_menu.addAction(config_action) - - menu_bar = win.menuBar() - menu_bar.addMenu(file_menu) - win.show() - sys.exit(app.exec_()) diff --git a/software/main_PDAF_calibration.py b/software/main_PDAF_calibration.py deleted file mode 100644 index ff7ba6eb8..000000000 --- a/software/main_PDAF_calibration.py +++ /dev/null @@ -1,20 +0,0 @@ -# set QT_API environment variable -import os -import sys -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.gui_PDAF_calibration as gui - -if __name__ == "__main__": - - app = QApplication([]) - win = gui.OctopiGUI(is_simulation=True) - win.show() - sys.exit(app.exec_()) diff --git a/software/main_PDAF_demo.py b/software/main_PDAF_demo.py deleted file mode 100644 index d70a2c4da..000000000 --- a/software/main_PDAF_demo.py +++ /dev/null @@ -1,20 +0,0 @@ -# set QT_API environment variable -import os -import sys -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.gui_PDAF_demo as gui - -if __name__ == "__main__": - - app = QApplication([]) - win = gui.OctopiGUI(is_simulation=True) - win.show() - sys.exit(app.exec_()) diff --git a/software/main_camera_only.py b/software/main_camera_only.py deleted file mode 100644 index d66914e86..000000000 --- a/software/main_camera_only.py +++ /dev/null @@ -1,22 +0,0 @@ -# set QT_API environment variable -import os -import sys -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.gui_camera_only as gui -#import control.gui_2cameras_async as gui -#import control.gui_tiscamera as gui - -if __name__ == "__main__": - - app = QApplication([]) - win = gui.OctopiGUI() - win.show() - sys.exit(app.exec_()) diff --git a/software/main_displacement_measurement.py b/software/main_displacement_measurement.py deleted file mode 100644 index 3f622a9d1..000000000 --- a/software/main_displacement_measurement.py +++ /dev/null @@ -1,29 +0,0 @@ -# set QT_API environment variable -import os -import sys -import argparse -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.gui_displacement_measurement as gui - -parser = argparse.ArgumentParser() -parser.add_argument("--simulation", help="Run the GUI with simulated hardware.", action = 'store_true') -args = parser.parse_args() - -if __name__ == "__main__": - - app = QApplication([]) - app.setStyle('Fusion') - if(args.simulation): - win = gui.OctopiGUI(is_simulation = True) - else: - win = gui.OctopiGUI() - win.show() - sys.exit(app.exec_()) diff --git a/software/main_motion_only.py b/software/main_motion_only.py deleted file mode 100644 index 21da80220..000000000 --- a/software/main_motion_only.py +++ /dev/null @@ -1,22 +0,0 @@ -# set QT_API environment variable -import os -import sys -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.gui_motion_only as gui -#import control.gui_2cameras_async as gui -#import control.gui_tiscamera as gui - -if __name__ == "__main__": - - app = QApplication([]) - win = gui.OctopiGUI() - win.show() - sys.exit(app.exec_()) diff --git a/software/main_platereader.py b/software/main_platereader.py deleted file mode 100644 index 4c78ef979..000000000 --- a/software/main_platereader.py +++ /dev/null @@ -1,28 +0,0 @@ -# set QT_API environment variable -import os -import sys -import argparse -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.gui_platereader as gui - -parser = argparse.ArgumentParser() -parser.add_argument("--simulation", help="Run the GUI with simulated hardware.", action = 'store_true') -args = parser.parse_args() - -if __name__ == "__main__": - - app = QApplication([]) - if(args.simulation): - win = gui.OctopiGUI(is_simulation = True) - else: - win = gui.OctopiGUI() - win.show() - sys.exit(app.exec_()) diff --git a/software/main_simulation.py b/software/main_simulation.py deleted file mode 100644 index d2d248725..000000000 --- a/software/main_simulation.py +++ /dev/null @@ -1,22 +0,0 @@ -# set QT_API environment variable -import os -import sys -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.gui_simulation as gui -#import control.gui_2cameras_async as gui -#import control.gui_tiscamera as gui - -if __name__ == "__main__": - - app = QApplication([]) - win = gui.OctopiGUI() - win.show() - sys.exit(app.exec_()) diff --git a/software/main_tiscamera.py b/software/main_tiscamera.py deleted file mode 100644 index d66914e86..000000000 --- a/software/main_tiscamera.py +++ /dev/null @@ -1,22 +0,0 @@ -# set QT_API environment variable -import os -import sys -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.gui_camera_only as gui -#import control.gui_2cameras_async as gui -#import control.gui_tiscamera as gui - -if __name__ == "__main__": - - app = QApplication([]) - win = gui.OctopiGUI() - win.show() - sys.exit(app.exec_()) diff --git a/software/main_tiscamera_DZK250.py b/software/main_tiscamera_DZK250.py deleted file mode 100644 index 2af84c903..000000000 --- a/software/main_tiscamera_DZK250.py +++ /dev/null @@ -1,20 +0,0 @@ -# set QT_API environment variable -import os -import sys -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.gui_tiscamera_DZK250 as gui - -if __name__ == "__main__": - - app = QApplication([]) - win = gui.OctopiGUI() - win.show() - sys.exit(app.exec_()) diff --git a/software/main_tiscamera_camera_only.py b/software/main_tiscamera_camera_only.py deleted file mode 100644 index 153c9103c..000000000 --- a/software/main_tiscamera_camera_only.py +++ /dev/null @@ -1,20 +0,0 @@ -# set QT_API environment variable -import os -import sys -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.gui_camera_only_tiscamera as gui - -if __name__ == "__main__": - - app = QApplication([]) - win = gui.OctopiGUI() - win.show() - sys.exit(app.exec_()) diff --git a/software/main_tiscamera_simulation.py b/software/main_tiscamera_simulation.py deleted file mode 100644 index dc88435a9..000000000 --- a/software/main_tiscamera_simulation.py +++ /dev/null @@ -1,22 +0,0 @@ -# set QT_API environment variable -import os -import sys -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.gui_tiscamera_simulation as gui -#import control.gui_2cameras_async as gui -#import control.gui_tiscamera as gui - -if __name__ == "__main__": - - app = QApplication([]) - win = gui.OctopiGUI() - win.show() - sys.exit(app.exec_()) diff --git a/software/main_toupcam_IMX571.py b/software/main_toupcam_IMX571.py deleted file mode 100644 index 1230daa9f..000000000 --- a/software/main_toupcam_IMX571.py +++ /dev/null @@ -1,31 +0,0 @@ -# set QT_API environment variable -import os -import sys -import argparse -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.gui_toupcam_IMX571 as gui -#import control.gui_2cameras_async as gui -#import control.gui_tiscamera as gui - -parser = argparse.ArgumentParser() -parser.add_argument("--simulation", help="Run the GUI with simulated hardware.", action = 'store_true') -args = parser.parse_args() - -if __name__ == "__main__": - - app = QApplication([]) - app.setStyle('Fusion') - if(args.simulation): - win = gui.OctopiGUI(is_simulation = True) - else: - win = gui.OctopiGUI() - win.show() - sys.exit(app.exec_()) diff --git a/software/main_two_camera.py b/software/main_two_camera.py deleted file mode 100644 index 20042cf95..000000000 --- a/software/main_two_camera.py +++ /dev/null @@ -1,22 +0,0 @@ -# set QT_API environment variable -import os -import sys -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -#import control.gui_simulation as gui -import control.gui_2cameras_async as gui -#import control.gui_tiscamera as gui - -if __name__ == "__main__": - - app = QApplication([]) - win = gui.OctopiGUI() - win.show() - sys.exit(app.exec_()) diff --git a/software/main_two_camera_focus_tracking.py b/software/main_two_camera_focus_tracking.py deleted file mode 100644 index 18a1ba163..000000000 --- a/software/main_two_camera_focus_tracking.py +++ /dev/null @@ -1,23 +0,0 @@ -# set QT_API environment variable -import os -import sys -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -#import control.gui_camera_only as gui -#import control.gui_2cameras_async as gui -#import control.gui_tiscamera as gui -import control.gui_2cameras_async_focus_tracking as gui - -if __name__ == "__main__": - - app = QApplication([]) - win = gui.OctopiGUI() - win.show() - sys.exit(app.exec_()) diff --git a/software/main_two_cameras_daheng_tis.py b/software/main_two_cameras_daheng_tis.py deleted file mode 100644 index b4d82e41c..000000000 --- a/software/main_two_cameras_daheng_tis.py +++ /dev/null @@ -1,23 +0,0 @@ -# set QT_API environment variable -import os -import sys -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -#import control.gui_camera_only as gui -#import control.gui_2cameras_async as gui -#import control.gui_tiscamera as gui -import control.gui_2cameras_daheng_tis as gui - -if __name__ == "__main__": - - app = QApplication([]) - win = gui.OctopiGUI() - win.show() - sys.exit(app.exec_()) diff --git a/software/main_usbspectrometer.py b/software/main_usbspectrometer.py deleted file mode 100644 index f34288b49..000000000 --- a/software/main_usbspectrometer.py +++ /dev/null @@ -1,29 +0,0 @@ -# set QT_API environment variable -import os -import sys -import argparse -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.gui_usbspectrometer as gui - -parser = argparse.ArgumentParser() -parser.add_argument("--simulation", help="Run the GUI with simulated hardware.", action = 'store_true') -args = parser.parse_args() - -if __name__ == "__main__": - - app = QApplication([]) - app.setStyle('Fusion') - if(args.simulation): - win = gui.OctopiGUI(is_simulation = True) - else: - win = gui.OctopiGUI() - win.show() - sys.exit(app.exec_()) diff --git a/software/main_volumeric_imaging.py b/software/main_volumeric_imaging.py deleted file mode 100644 index b728651f2..000000000 --- a/software/main_volumeric_imaging.py +++ /dev/null @@ -1,22 +0,0 @@ -# set QT_API environment variable -import os -import sys -os.environ["QT_API"] = "pyqt5" -import qtpy - -# qt libraries -from qtpy.QtCore import * -from qtpy.QtWidgets import * -from qtpy.QtGui import * - -# app specific libraries -import control.gui_volumetric_imaging as gui -#import control.gui_2cameras_async as gui -#import control.gui_tiscamera as gui - -if __name__ == "__main__": - - app = QApplication([]) - win = gui.OctopiGUI() - win.show() - sys.exit(app.exec_()) From 431c20400ae8173736361b60fb7850aaaf324a87 Mon Sep 17 00:00:00 2001 From: Ian OHara Date: Thu, 24 Oct 2024 09:49:11 -0700 Subject: [PATCH 2/2] fix malaria incorrect reference --- software/control/gui_malaria.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/software/control/gui_malaria.py b/software/control/gui_malaria.py index 72a17e188..4c107d1a3 100644 --- a/software/control/gui_malaria.py +++ b/software/control/gui_malaria.py @@ -158,7 +158,7 @@ def __init__(self, is_simulation = False, *args, **kwargs): # load widgets self.objectivesWidget = widgets.ObjectivesWidget(self.objectiveStore) - self.contrastManager = widgets.ContrastManager() + self.contrastManager = core.ContrastManager() self.cameraSettingWidget = widgets.CameraSettingsWidget(self.camera, include_gain_exposure_time=False) self.liveControlWidget = widgets.LiveControlWidget(self.streamHandler,self.liveController,self.configurationManager,show_display_options=True) self.navigationWidget = widgets.NavigationWidget(self.navigationController,self.slidePositionController,widget_configuration='malaria')