have swissmx.py running with some commented modules in ESC network

git dt 98297263 swissmx.py
 git dt 7445a5aa CustomROI.py app_config.py app_utils.py epics_widgets/MotorTweak.py epics_widgets/SmaractMotorTweak.py
This commit is contained in:
2022-07-15 09:41:21 +02:00
parent 7445a5aae6
commit db7e5e537f
6 changed files with 124 additions and 105 deletions

180
swissmx.py Normal file → Executable file
View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python3
import time, os
import json
import random
import re
@@ -8,20 +9,20 @@ import threading
from epics.ca import pend_event
from matplotlib import pyplot
import Wigis
#import Wigis #ZAC: orig. code
import app_utils
import jungfrau_widget
import bernina_pulse_picker
#import jungfrau_widget #ZAC: orig. code
#import bernina_pulse_picker #ZAC: orig. code
import qutilities
import storage
#import storage #ZAC: orig. code
from app_config import settings, appsconf, option, toggle_option, simulated
# publisher = pubber.Publisher()
from zmq_escape import zescape
#from zmq_escape import zescape #ZAC: orig. code
from helicalscan import HelicalScanGui
#from helicalscan import HelicalScanGui #ZAC: orig. code
SKIP_ESCAPE_TRANSITIONS_IF_SAFE = "escape/skip_transitions_if_safe"
@@ -52,33 +53,32 @@ logging.getLogger("PyQt5.uic").setLevel(logging.CRITICAL)
logging.getLogger("requests").setLevel(logging.CRITICAL)
logging.getLogger("urllib3").setLevel(logging.CRITICAL)
logging.getLogger("paramiko").setLevel(logging.CRITICAL)
FORMAT = "%(asctime)-15s - %(levelname)s - %(name)s - %(message)s"
logging.basicConfig(format=FORMAT, level=logging.DEBUG)
logging.basicConfig(level=logging.DEBUG, format='%(levelname)s:%(module)s:%(lineno)d:%(funcName)s:%(message)s ')
logger = logging.getLogger("swissmx")
import PrelocatedCoordinatesModel
from EmblModule import EmblWidget
from HelicalTable import HelicalTableWidget
from Wigis import Spinner, Checkbox
#import PrelocatedCoordinatesModel #ZAC: orig. code
#from EmblModule import EmblWidget #ZAC: orig. code
#from HelicalTable import HelicalTableWidget #ZAC: orig. code
#from Wigis import Spinner, Checkbox #ZAC: orig. code
import camera
import epics
import numpy as np
from exceptions import *
#from exceptions import * #ZAC: orig. code
import qoptic
#import qoptic #ZAC: orig. code
from backlight import Backlight
backlight = Backlight()
import mx_swissfel
#import mx_swissfel #ZAC: orig. code
swissfel = mx_swissfel.SwissFELMachine()
#swissfel = mx_swissfel.SwissFELMachine() #ZAC: orig. code
import qtawesome
from bernina_pulse_picker import pulsePicker
#from bernina_pulse_picker import pulsePicker #ZAC: orig. code
from PyQt5 import QtCore, QtGui
from PyQt5.QtCore import Qt, pyqtSlot, QSize, QRegExp, pyqtSignal, QObject, QThread
@@ -109,12 +109,14 @@ from PyQt5.QtWidgets import (
)
from PyQt5.uic import loadUiType
from CustomROI import BeamMark, Grid, CrystalCircle
from GenericDialog import GenericDialog
from dialogs.PreferencesDialog import PreferencesDialog
from epics_widgets import zoom
from CustomROI import BeamMark
#from CustomROI import BeamMark, Grid, CrystalCircle #ZAC: orig. code
#from GenericDialog import GenericDialog #ZAC: orig. code
#from dialogs.PreferencesDialog import PreferencesDialog #ZAC: orig. code
#from epics_widgets import zoom #ZAC: orig. code
from epics_widgets.MotorTweak import MotorTweak
from epics_widgets.SmaractMotorTweak import SmaractMotorTweak
import zoom
_URL = "http://PC12288:8080"
@@ -122,31 +124,31 @@ _URL = "http://PC12288:8080"
# tell = TellClient.TellClient(_URL)
import eventer
#import eventer #ZAC: orig. code
from detector_control import jungfrau_detector
#from detector_control import jungfrau_detector #ZAC: orig. code
from findxtal import findObj
#from findxtal import findObj #ZAC: orig. code
import pyqtgraph as pg
import pyqtgraph.exporters
if simulated:
logger.warning("simulation mode enabled")
qoptic_zoom = qoptic.FeturaClientBogus()
else:
qoptic_zoom = qoptic.FeturaClient()
#if simulated: #ZAC: orig. code #ZAC: orig. code
# logger.warning("simulation mode enabled")
# qoptic_zoom = qoptic.FeturaClientBogus()
#else:
# qoptic_zoom = qoptic.FeturaClient()
pg.setConfigOption("antialias", True)
# from epics_widgets import MotorTweak
#from epics_widgets import MotorTweak
Ui_MainWindow, QMainWindow = loadUiType("swissmx.ui")
user = getpass.getuser()
home = os.path.expanduser("~")
just_quit = user in ["e10003", "gac-esbmx"]
#user = getpass.getuser() #ZAC: orig. code
#home = os.path.expanduser("~")
#just_quit = user in ["e10003", "gac-esbmx"]
folders = storage.Folders()
#folders = storage.Folders() #ZAC: orig. code
TASK_JUNGFRAU_SETTINGS = "jungfrau_settings"
TASK_SETUP_PPM_CALIBRATION = "ppm_calibration"
@@ -163,9 +165,9 @@ TASK_HELICAL = "helical"
TASK_EMBL = "embl"
from deltatau import DeltaTau, shapepath, helical, DebugPlot
#from deltatau import DeltaTau, shapepath, helical, DebugPlot #ZAC: orig. code
delta_tau = DeltaTau()
#delta_tau = DeltaTau() #ZAC: orig. code
BROKER_SERVER = "127.0.0.1"
@@ -176,9 +178,14 @@ BROKER_PORT = 61613
logger.info(
f"connecting to microscope to camera server: {appsconf['microscope']['sample_camera']['pv_prefix']} "
)
sample_camera = camera.camera_server(
basename=appsconf["microscope"]["sample_camera"]["pv_prefix"]
)
#sample_camera = camera.camera_server( #ZAC: orig. code
# basename=appsconf["microscope"]["sample_camera"]["pv_prefix"]
#)
#sample_camera = camera.epics_cam(appsconf["microscope"]["sample_camera"]["pv_prefix"])
sample_camera = camera.epics_cam(None)
sample_camera.sim_gen(mode=0)
sample_camera.run()
# sample_camera.set_transformations([camera.Transforms.FLIP_LR, camera.Transforms.ROTATE_270])
@@ -337,7 +344,7 @@ class Main(QMainWindow, Ui_MainWindow):
self._fel_status = QLabel(None)
self._fel_status.setAccessibleName("fel_status_statusbar")
self.statusbar.addPermanentWidget(self._fel_status)
swissfel.statusStringUpdated.connect(self._fel_status.setText)
#swissfel.statusStringUpdated.connect(self._fel_status.setText) #ZAC: orig. code
self._status_task = QLabel(None)
self._status_task.setAccessibleName("status_task_label")
self.statusbar.addPermanentWidget(self._status_task)
@@ -357,19 +364,19 @@ class Main(QMainWindow, Ui_MainWindow):
self.prepare_microscope_page()
self.prepare_embl_gui()
self.prepare_left_tabs()
self.update_beam_marker(qoptic_zoom.get_position())
#self.update_beam_marker(qoptic_zoom.get_position()) #ZAC: orig. code
self._centerpiece_stack.setCurrentIndex(0)
self._centerpiece_stack.currentChanged.connect(self.center_piece_update)
self.init_validators()
self.init_settings_tracker()
self.wire_storage()
self.create_helical_widgets()
#self.create_helical_widgets() #ZAC: orig. code
self.center_piece_update(0) # start camera updater
curzoom = qoptic_zoom.get_position(cached=False)
logger.debug(f"starting app with zoom at {curzoom}")
self.zoom_changed_cb(curzoom)
#curzoom = qoptic_zoom.get_position(cached=False) #ZAC: orig. code
#logger.debug(f"starting app with zoom at {curzoom}")
#self.zoom_changed_cb(curzoom)
self._tabs_daq_methods.currentChanged.connect(self.switch_task)
self.switch_task()
@@ -428,10 +435,10 @@ class Main(QMainWindow, Ui_MainWindow):
sample_camera.pause()
def updateImage(self, pause=False):
if not sample_camera.is_paused():
img = sample_camera.get_image()
if img is not None:
self.img.setImage(img)
#if not sample_camera.is_paused(): #ZAC: orig. code
img = sample_camera.get_image()
if img is not None:
self.img.setImage(img)
def init_settings_tracker(self):
logger.info("configuring widget persistence")
@@ -472,7 +479,7 @@ class Main(QMainWindow, Ui_MainWindow):
k, func_get()
)
)
self.storage_cascade_prefix(None)
#self.storage_cascade_prefix(None) #ZAC: orig. code
def init_validators(self):
identifier_regex = QRegExp("[a-z-A-Z_0-9%]+")
@@ -578,7 +585,7 @@ class Main(QMainWindow, Ui_MainWindow):
self.timer.timeout.connect(self.check_zescape)
self.timer.start(20)
else:
zescape.stop_listening()
#zescape.stop_listening() #ZAC: orig. code
logger.warning("re-starting timer on camera update")
try:
self.timer.stop()
@@ -716,8 +723,8 @@ class Main(QMainWindow, Ui_MainWindow):
block.setAccessibleName(TASK_JUNGFRAU_SETTINGS)
block.setContentsMargins(0, 0, 0, 0)
block.setLayout(QVBoxLayout())
self.jungfrau = jungfrau_widget.JungfrauWidget()
block.layout().addWidget(self.jungfrau)
#self.jungfrau = jungfrau_widget.JungfrauWidget() #ZAC: orig. code
#block.layout().addWidget(self.jungfrau) #ZAC: orig. code
block.layout().addStretch()
tbox.addItem(block, "Jungfrau Parameters")
@@ -743,9 +750,9 @@ class Main(QMainWindow, Ui_MainWindow):
self._button_shutter = but
grp.layout().addWidget(but, 0, 0, 1, 2)
self._pv_shutter.add_callback(self.update_shutter_label)
else:
self._picker = bernina_pulse_picker.PickerWidget()
grp.layout().addWidget(self._picker, 0, 0, 1, 2)
#else: #ZAC: orig. code
# self._picker = bernina_pulse_picker.PickerWidget()
# grp.layout().addWidget(self._picker, 0, 0, 1, 2)
but = QPushButton("clear beam markers")
but.clicked.connect(self.remove_beam_markers)
grp.layout().addWidget(but, 1, 1)
@@ -796,38 +803,38 @@ class Main(QMainWindow, Ui_MainWindow):
but.clicked.connect(lambda bogus: self.modify_camera_transform("undo_last"))
grp.layout().addWidget(but, 0, 1)
but = QPushButton("Turn 90 CCW")
but.clicked.connect(
lambda bogus, n=camera.Transforms.ROTATE_90: self.modify_camera_transform(n)
)
#but.clicked.connect(
# lambda bogus, n=camera.Transforms.ROTATE_90: self.modify_camera_transform(n)
#) #ZAC: orig. code
grp.layout().addWidget(but, 1, 0)
but = QPushButton("Turn 90 CW")
but.clicked.connect(
lambda bogus, n=camera.Transforms.ROTATE_270: self.modify_camera_transform(
n
)
)
#but.clicked.connect(
# lambda bogus, n=camera.Transforms.ROTATE_270: self.modify_camera_transform(
# n
# )
#) #ZAC: orig. code
grp.layout().addWidget(but)
but = QPushButton("Turn 180 CCW")
but.clicked.connect(
lambda bogus, n=camera.Transforms.ROTATE_180: self.modify_camera_transform(
n
)
)
#but.clicked.connect(
# lambda bogus, n=camera.Transforms.ROTATE_180: self.modify_camera_transform(
# n
# )
#) #ZAC: orig. code
grp.layout().addWidget(but)
but = QPushButton("Transpose")
but.clicked.connect(
lambda bogus, n=camera.Transforms.TRANSPOSE: self.modify_camera_transform(n)
)
#but.clicked.connect(
# lambda bogus, n=camera.Transforms.TRANSPOSE: self.modify_camera_transform(n)
#) #ZAC: orig. code
grp.layout().addWidget(but)
but = QPushButton("Flip L/R")
but.clicked.connect(
lambda bogus, n=camera.Transforms.FLIP_LR: self.modify_camera_transform(n)
)
#but.clicked.connect(
# lambda bogus, n=camera.Transforms.FLIP_LR: self.modify_camera_transform(n)
#) #ZAC: orig. code
grp.layout().addWidget(but)
but = QPushButton("Flip U/D")
but.clicked.connect(
lambda bogus, n=camera.Transforms.FLIP_UD: self.modify_camera_transform(n)
)
#but.clicked.connect(
# lambda bogus, n=camera.Transforms.FLIP_UD: self.modify_camera_transform(n)
#) #ZAC: orig. code
grp.layout().addWidget(but)
row = grp.layout().rowCount()
self._label_transforms = QLabel()
@@ -885,7 +892,7 @@ class Main(QMainWindow, Ui_MainWindow):
exp_tab.layout().addStretch()
# DAQ Methods Tabs
self.build_daq_methods_prelocated_tab()
#self.build_daq_methods_prelocated_tab() #ZAC: orig. code
self.build_daq_methods_grid_tab()
self.build_sample_selection_tab()
@@ -931,14 +938,14 @@ class Main(QMainWindow, Ui_MainWindow):
sample_camera.set_transformations([])
elif t == "undo_last":
sample_camera._transformations.pop()
elif type(t) ==type(camera.Transforms):
sample_camera.append_transform(t)
#elif type(t) ==type(camera.Transforms): #ZAC: orig. code
# sample_camera.append_transform(t)
try:
label = ", ".join([t.name for t in sample_camera._transformations])
except:
label = ""
self._label_transforms.setText(label)
settings.setValue(CAMERA_TRANSFORMATIONS, sample_camera._transformations)
#settings.setValue(CAMERA_TRANSFORMATIONS, sample_camera._transformations) #ZAC: orig. code
def roi_add_line(self):
roi = pg.LineSegmentROI(
@@ -978,9 +985,9 @@ class Main(QMainWindow, Ui_MainWindow):
self._tab_daq_method_embl.setLayout(QVBoxLayout())
layout = self._tab_daq_method_embl.layout()
motors = self.get_gonio_motors()
self._embl_module = EmblWidget(self)
self._embl_module.configure(motors, sample_camera, qoptic_zoom)
layout.addWidget(self._embl_module)
#self._embl_module = EmblWidget(self) #ZAC: orig. code
#self._embl_module.configure(motors, sample_camera, qoptic_zoom)
#layout.addWidget(self._embl_module)
def prepare_microscope_page(self):
layout = self.microscope_page.layout()
@@ -3639,10 +3646,11 @@ def main():
main = Main()
main.show()
splash.finish(main)
main.update_user_and_storage()
#main.update_user_and_storage() #ZAC: orig. code
sys.exit(app.exec_())
if __name__ == "__main__":
app = None
os.environ['EPICS_CA_ADDR_LIST'] ='129.129.244.255 sf-saresc-cagw.psi.ch:5062 sf-saresc-cagw.psi.ch:5066'
main()