diff --git a/CustomROI.py b/CustomROI.py index 412ddb7..cfdc8fd 100644 --- a/CustomROI.py +++ b/CustomROI.py @@ -4,7 +4,7 @@ from PyQt5 import QtGui, QtCore from PyQt5.QtGui import QColor, QTransform from PyQt5.QtWidgets import QMenu, QAction, QSpinBox, QMenu -from GenericDialog import GenericDialog +#from GenericDialog import GenericDialog #ZAC: orig. code from pyqtgraph import ROI, Point, RectROI, mkPen from pyqtgraph import functions as fn diff --git a/Readme.md b/Readme.md index b3d1616..d62f4a9 100644 --- a/Readme.md +++ b/Readme.md @@ -151,3 +151,7 @@ https://pyepics.github.io/pyepics/arrays.html EPICS_CA_ADDR_LIST='129.129.244.255 sf-saresc-cagw.psi.ch:5062 sf-saresc-cagw.psi.ch:5066' cd /home/zamofing_t/Documents/prj/SwissFEL/epics_ioc_modules/ESB_MX/python/oldRepos/app/src python swissmx.py + +caput SAR-EXPMX:MOT_FX.RBV -2.700 +caput SAR-EXPMX:MOT_FY.RBV -7.450 +caput SAR-EXPMX:MOT_CZ.RBV 1.509 diff --git a/camera.py b/camera.py index 61c2813..8c0ef40 100755 --- a/camera.py +++ b/camera.py @@ -24,11 +24,10 @@ Best regards Helge """ -import enum import logging _log = logging.getLogger(__name__) -import epics +import enum, epics, time import numpy as np @@ -226,6 +225,10 @@ class epics_cam(object): self._sim['imgIdx']=0 _log.info('dome') + def set_transformations(self,*args): + _log.error('OLD FUNCTION NOT IMPLEMENTED {}'.format(args)) + + if __name__ == "__main__": import time, os, PIL.Image, platform, subprocess import argparse @@ -259,6 +262,7 @@ if __name__ == "__main__": if not args.ui: cam = epics_cam(prefix=args.prefix) + #cam._transformation=np.array(((-1,0),(0,1)),dtype=np.uint8) #ZAC: orig. code if args.prefix is None: cam.sim_gen(mode=args.sim) diff --git a/epics_widgets/SmaractMotorTweak.py b/epics_widgets/SmaractMotorTweak.py index 2ebec06..14c7995 100644 --- a/epics_widgets/SmaractMotorTweak.py +++ b/epics_widgets/SmaractMotorTweak.py @@ -8,7 +8,7 @@ from PyQt5.uic import loadUiType from epics import PV from epics.ca import pend_event -from app_utils import assert_tweaker_positions +#from app_utils import assert_tweaker_positions #ZAC: orig. code Ui_MotorTweak, QWidget = loadUiType('epics_widgets/MotorTweak.ui') logger = logging.getLogger(__name__) diff --git a/geometry.py b/geometry.py index f76610e..176c3cd 100644 --- a/geometry.py +++ b/geometry.py @@ -8,12 +8,15 @@ ''' coordinate systems, optical center, xray axis, pixel sizes etc. ''' +import logging +import numpy as np +_log = logging.getLogger(__name__) class geometry: def __init__(self): pass - def find_optical_center(p): + def find_optical_center(self,p): # p is an array of # at zoom out: (p1x,p1y),(p2x,p2y),(p3x,p3y),... # at zoom in : (p1x,p1y),(p2x,p2y),(p3x,p3y),... @@ -24,7 +27,7 @@ class geometry: # this coordinate represents also the origin of other coordinates pass - def zoom2pixsz(zoom): + def zoom2pixsz(self,zoom): # this returns the pixel size at a given zoom level # the returned value is a 2x2 matrix: # [pxx pxy] @@ -34,7 +37,7 @@ class geometry: # [pyx pyy]*[ny] results in a vector in meter of a vector [nx,ny] pixels in x and y direction pass - def set_zoom2pixsz(meas): + def set_zoom2pixsz(self,meas): #calculates _lut_z2p out of measurements # the _lut_z2p is dictionaty a lookuptable # zoom {1,200,400,600,800,1000} @@ -44,23 +47,23 @@ class geometry: 'zoom': np.array((1,200,400,600,800,1000),dtype=np.float32), 'pixsz': np.array( #((pxx,pxy),(pyx,pyy)), # zoom n - (( 1,0),(0, 1)), # zoom 1 + ((( 1,0),(0, 1)), # zoom 1 (( 2,0),(0, 2)), # zoom 200 (( 4,0),(0, 4)), # zoom 400 (( 6,0),(0, 6)), # zoom 600 (( 8,0),(0, 8)), # zoom 800 - ((10,0),(0,10)), # zoom 1000 + ((10,0),(0,10))), # zoom 1000 dtype=np.float32)} - n=len(meas) - zoom =np.ndarray(shape=n,dtype=np.float32) - pixsz=np.ndarray(shape=(n,2,2),dtype=np.float32) + n=len(meas) + zoom =np.ndarray(shape=n,dtype=np.float32) + pixsz=np.ndarray(shape=(n,2,2),dtype=np.float32) - for i,(k,v) in enumerate(meas): - pass - self._lut_z2p={ 'zoom': zoom, 'pixsz': pixsz} + for i,(k,v) in enumerate(meas): + pass + self._lut_z2p={ 'zoom': zoom, 'pixsz': pixsz} - def autofocus(): + def autofocus(self): # cam camera object # mot motor object # rng region (min max relative to current position) to seek @@ -69,17 +72,17 @@ class geometry: # mode mode to calculate sharpness (sum/max-min/hist? of edge detection in roi) pass - def pix2pos(p,zoom=None): + def pix2pos(self,p,zoom=None): # returns the position m(x,y) in meter relative to the optical center at a given zoom level of the pixel p(x,y) # if zoom=None, the last zoom value is used pass - def pos2pix(p,zoom=None): + def pos2pix(self,p,zoom=None): # returns the pixel p(x,y) of the position m(x,y) in meter relative to the optical center at a given zoom level # if zoom=None, the last zoom value is used pass - def optctr2xray(): + def optctr2xray(self): # returns the vector m(x,y) of the optical center to the xray pass diff --git a/swissmx.py b/swissmx.py old mode 100644 new mode 100755 index 27a6d3d..609c6a7 --- a/swissmx.py +++ b/swissmx.py @@ -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()