have swissmx.py running with some commented modules in ESC network
git dt98297263swissmx.py git dt7445a5aaCustomROI.py app_config.py app_utils.py epics_widgets/MotorTweak.py epics_widgets/SmaractMotorTweak.py
This commit is contained in:
180
swissmx.py
Normal file → Executable file
180
swissmx.py
Normal file → Executable 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()
|
||||
|
||||
Reference in New Issue
Block a user