diff --git a/csaxs_bec/bec_ipython_client/plugins/LamNI/lamni_optics_mixin.py b/csaxs_bec/bec_ipython_client/plugins/LamNI/lamni_optics_mixin.py index 29d17eb..6b6e087 100644 --- a/csaxs_bec/bec_ipython_client/plugins/LamNI/lamni_optics_mixin.py +++ b/csaxs_bec/bec_ipython_client/plugins/LamNI/lamni_optics_mixin.py @@ -9,9 +9,11 @@ from csaxs_bec.bec_ipython_client.plugins.cSAXS import epics_put, fshclose # import builtins to avoid linter errors dev = builtins.__dict__.get("dev") -umv = builtins.__dict__.get("umv") bec = builtins.__dict__.get("bec") +scans = builtins.__dict__.get("scans") +def umv(*args): + return scans.umv(*args, relative=False) class LamNIInitError(Exception): pass diff --git a/csaxs_bec/bec_ipython_client/plugins/cSAXS/filter_transmission.py b/csaxs_bec/bec_ipython_client/plugins/cSAXS/filter_transmission.py index 3268f54..7174b5a 100644 --- a/csaxs_bec/bec_ipython_client/plugins/cSAXS/filter_transmission.py +++ b/csaxs_bec/bec_ipython_client/plugins/cSAXS/filter_transmission.py @@ -41,8 +41,10 @@ import builtins if builtins.__dict__.get("bec") is not None: bec = builtins.__dict__.get("bec") dev = builtins.__dict__.get("dev") - umv = builtins.__dict__.get("umv") - umvr = builtins.__dict__.get("umvr") + scans = builtins.__dict__.get("scans") + +def umv(*args): + return scans.umv(*args, relative=False) class cSAXSFilterTransmission: """ diff --git a/csaxs_bec/bec_ipython_client/plugins/cSAXS/smaract.py b/csaxs_bec/bec_ipython_client/plugins/cSAXS/smaract.py index c6774f5..9481c1e 100644 --- a/csaxs_bec/bec_ipython_client/plugins/cSAXS/smaract.py +++ b/csaxs_bec/bec_ipython_client/plugins/cSAXS/smaract.py @@ -8,11 +8,14 @@ from bec_lib import bec_logger logger = bec_logger.logger # Pull BEC globals if present -bec = builtins.__dict__.get("bec") -dev = builtins.__dict__.get("dev") -umv = builtins.__dict__.get("umv") -umvr = builtins.__dict__.get("umvr") +if builtins.__dict__.get("bec") is not None: + bec = builtins.__dict__.get("bec") + dev = builtins.__dict__.get("dev") + scans = builtins.__dict__.get("scans") +def umv(*args): + return scans.umv(*args, relative=False) + class cSAXSInitSmaractStagesError(Exception): pass @@ -383,7 +386,6 @@ class cSAXSInitSmaractStages: if not self._yesno("Proceed with the motions listed above?", "y"): logger.info("[cSAXS] Motion to initial position aborted by user.") return - # --- Execution phase (SIMULTANEOUS MOTION) --- if umv is None: logger.error("[cSAXS] 'umv' is not available in this session.") diff --git a/csaxs_bec/bec_ipython_client/plugins/flomni/flomni.py b/csaxs_bec/bec_ipython_client/plugins/flomni/flomni.py index 87f3680..fe3ab58 100644 --- a/csaxs_bec/bec_ipython_client/plugins/flomni/flomni.py +++ b/csaxs_bec/bec_ipython_client/plugins/flomni/flomni.py @@ -22,8 +22,10 @@ logger = bec_logger.logger if builtins.__dict__.get("bec") is not None: bec = builtins.__dict__.get("bec") dev = builtins.__dict__.get("dev") - umv = builtins.__dict__.get("umv") - umvr = builtins.__dict__.get("umvr") + scans = builtins.__dict__.get("scans") + +def umv(*args): + return scans.umv(*args, relative=False) class FlomniToolsError(Exception): diff --git a/csaxs_bec/bec_ipython_client/plugins/flomni/gui_tools.py b/csaxs_bec/bec_ipython_client/plugins/flomni/gui_tools.py index 1d93592..8efb21f 100644 --- a/csaxs_bec/bec_ipython_client/plugins/flomni/gui_tools.py +++ b/csaxs_bec/bec_ipython_client/plugins/flomni/gui_tools.py @@ -7,8 +7,10 @@ from bec_widgets.cli.client import BECDockArea if builtins.__dict__.get("bec") is not None: bec = builtins.__dict__.get("bec") dev = builtins.__dict__.get("dev") - umv = builtins.__dict__.get("umv") - umvr = builtins.__dict__.get("umvr") + scans = builtins.__dict__.get("scans") + +def umv(*args): + return scans.umv(*args, relative=False) class flomniGuiToolsError(Exception): diff --git a/csaxs_bec/bec_ipython_client/plugins/flomni/x_ray_eye_align.py b/csaxs_bec/bec_ipython_client/plugins/flomni/x_ray_eye_align.py index f156aad..e07fdfe 100644 --- a/csaxs_bec/bec_ipython_client/plugins/flomni/x_ray_eye_align.py +++ b/csaxs_bec/bec_ipython_client/plugins/flomni/x_ray_eye_align.py @@ -13,8 +13,10 @@ logger = bec_logger.logger # import builtins to avoid linter errors bec = builtins.__dict__.get("bec") dev = builtins.__dict__.get("dev") -umv = builtins.__dict__.get("umv") -umvr = builtins.__dict__.get("umvr") +scans = builtins.__dict__.get("scans") + +def umv(*args): + return scans.umv(*args, relative=False) if TYPE_CHECKING: from bec_ipython_client.plugins.flomni import Flomni diff --git a/csaxs_bec/bec_ipython_client/plugins/omny/gui_tools.py b/csaxs_bec/bec_ipython_client/plugins/omny/gui_tools.py index 2ce910f..32aac2a 100644 --- a/csaxs_bec/bec_ipython_client/plugins/omny/gui_tools.py +++ b/csaxs_bec/bec_ipython_client/plugins/omny/gui_tools.py @@ -7,8 +7,10 @@ from bec_widgets.cli.client import BECDockArea if builtins.__dict__.get("bec") is not None: bec = builtins.__dict__.get("bec") dev = builtins.__dict__.get("dev") - umv = builtins.__dict__.get("umv") - umvr = builtins.__dict__.get("umvr") + scans = builtins.__dict__.get("scans") + +def umv(*args): + return scans.umv(*args, relative=False) class OMNYGuiToolsError(Exception): diff --git a/csaxs_bec/bec_ipython_client/plugins/omny/omny.py b/csaxs_bec/bec_ipython_client/plugins/omny/omny.py index 6f8996a..b4f62e8 100644 --- a/csaxs_bec/bec_ipython_client/plugins/omny/omny.py +++ b/csaxs_bec/bec_ipython_client/plugins/omny/omny.py @@ -27,9 +27,10 @@ logger = bec_logger.logger if builtins.__dict__.get("bec") is not None: bec = builtins.__dict__.get("bec") dev = builtins.__dict__.get("dev") - umv = builtins.__dict__.get("umv") - umvr = builtins.__dict__.get("umvr") + scans = builtins.__dict__.get("scans") +def umv(*args): + return scans.umv(*args, relative=False) class OMNYInitError(Exception): pass diff --git a/csaxs_bec/bec_ipython_client/plugins/omny/omny_general_tools.py b/csaxs_bec/bec_ipython_client/plugins/omny/omny_general_tools.py index aaebcaf..0357c2f 100644 --- a/csaxs_bec/bec_ipython_client/plugins/omny/omny_general_tools.py +++ b/csaxs_bec/bec_ipython_client/plugins/omny/omny_general_tools.py @@ -16,8 +16,10 @@ from rich.table import Table if builtins.__dict__.get("bec") is not None: bec = builtins.__dict__.get("bec") dev = builtins.__dict__.get("dev") - umv = builtins.__dict__.get("umv") - umvr = builtins.__dict__.get("umvr") + scans = builtins.__dict__.get("scans") + +def umv(*args): + return scans.umv(*args, relative=False) class OMNYToolsError(Exception): diff --git a/csaxs_bec/bec_ipython_client/plugins/omny/omny_sample_transfer_mixin.py b/csaxs_bec/bec_ipython_client/plugins/omny/omny_sample_transfer_mixin.py index 077d0c0..3cb19d2 100644 --- a/csaxs_bec/bec_ipython_client/plugins/omny/omny_sample_transfer_mixin.py +++ b/csaxs_bec/bec_ipython_client/plugins/omny/omny_sample_transfer_mixin.py @@ -16,8 +16,10 @@ from csaxs_bec.bec_ipython_client.plugins.cSAXS import epics_get, epics_put, fsh if builtins.__dict__.get("bec") is not None: bec = builtins.__dict__.get("bec") dev = builtins.__dict__.get("dev") - umv = builtins.__dict__.get("umv") - umvr = builtins.__dict__.get("umvr") + scans = builtins.__dict__.get("scans") + +def umv(*args): + return scans.umv(*args, relative=False) class OMNYTransferError(Exception): diff --git a/csaxs_bec/bec_ipython_client/plugins/omny/x_ray_eye_align.py b/csaxs_bec/bec_ipython_client/plugins/omny/x_ray_eye_align.py index ef0222c..5896b2b 100644 --- a/csaxs_bec/bec_ipython_client/plugins/omny/x_ray_eye_align.py +++ b/csaxs_bec/bec_ipython_client/plugins/omny/x_ray_eye_align.py @@ -13,8 +13,10 @@ logger = bec_logger.logger # import builtins to avoid linter errors bec = builtins.__dict__.get("bec") dev = builtins.__dict__.get("dev") -umv = builtins.__dict__.get("umv") -umvr = builtins.__dict__.get("umvr") +scans = builtins.__dict__.get("scans") + +def umv(*args): + return scans.umv(*args, relative=False) if TYPE_CHECKING: from bec_ipython_client.plugins.omny import OMNY diff --git a/csaxs_bec/bec_ipython_client/startup/post_startup.py b/csaxs_bec/bec_ipython_client/startup/post_startup.py index 5d696e6..4f8b145 100644 --- a/csaxs_bec/bec_ipython_client/startup/post_startup.py +++ b/csaxs_bec/bec_ipython_client/startup/post_startup.py @@ -30,29 +30,74 @@ logger = bec_logger.logger logger.info("Using the cSAXS startup script.") -# pylint: disable=import-error -_args = _main_dict["args"] - -_session_name = "cSAXS" -if _args.session.lower() == "lamni": - from csaxs_bec.bec_ipython_client.plugins.cSAXS import * - from csaxs_bec.bec_ipython_client.plugins.LamNI import * - - _session_name = "LamNI" - lamni = LamNI(bec) - logger.success("LamNI session loaded.") - -elif _args.session.lower() == "csaxs": - print("Loading cSAXS session") - from csaxs_bec.bec_ipython_client.plugins.cSAXS import * - - logger.success("cSAXS session loaded.") from csaxs_bec.bec_ipython_client.plugins.tool_box.debug_tools import DebugTools debug = DebugTools() logger.success("Debug tools loaded. Use 'debug' to access them.") +# pylint: disable=import-error +_args = _main_dict["args"] + +_session_name = "cSAXS" + +print("Loading cSAXS session") +from csaxs_bec.bec_ipython_client.plugins.cSAXS.cSAXS import cSAXS +csaxs = cSAXS(bec) +logger.success("cSAXS session loaded.") + + +if _args.session.lower() == "lamni": + from csaxs_bec.bec_ipython_client.plugins.LamNI import LamNI + + _session_name = "LamNI" + lamni = LamNI(bec) + logger.success("LamNI session loaded.") + print(r""" + ██████╗ ███████╗ ██████╗ ██╗ █████╗ ███╗ ███╗███╗ ██╗██╗ + ██╔══██╗██╔════╝██╔════╝ ██║ ██╔══██╗████╗ ████║████╗ ██║██║ + ██████╔╝█████╗ ██║ ██║ ███████║██╔████╔██║██╔██╗ ██║██║ + ██╔══██╗██╔══╝ ██║ ██║ ██╔══██║██║╚██╔╝██║██║╚██╗██║██║ + ██████╔╝███████╗╚██████╗ ███████╗██║ ██║██║ ╚═╝ ██║██║ ╚████║██║ + ╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝ + + B E C L a m N I + """) + +elif _args.session.lower() == "omny": + from csaxs_bec.bec_ipython_client.plugins.flomni import OMNY + + _session_name = "OMNY" + omny = OMNY(bec) + logger.success("OMNY session loaded.") + print(r""" + ██████╗ ███████╗ ██████╗ ██████╗ ███╗ ███╗███╗ ██╗██╗ ██╗ + ██╔══██╗██╔════╝██╔════╝ ██╔═══██╗████╗ ████║████╗ ██║╚██╗ ██╔╝ + ██████╔╝█████╗ ██║ ██║ ██║██╔████╔██║██╔██╗ ██║ ╚████╔╝ + ██╔══██╗██╔══╝ ██║ ██║ ██║██║╚██╔╝██║██║╚██╗██║ ╚██╔╝ + ██████╔╝███████╗╚██████╗ ╚██████╔╝██║ ╚═╝ ██║██║ ╚████║ ██║ + ╚═════╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝ + + B E C O M N Y + """) + +elif _args.session.lower() == "flomni": + from csaxs_bec.bec_ipython_client.plugins.flomni import Flomni + + _session_name = "flomni" + flomni = Flomni(bec) + logger.success("flomni session loaded.") + print(r""" + ██████╗ ███████╗ ██████╗ ███████╗██╗ ██████╗ ███╗ ███╗███╗ ██╗██╗ + ██╔══██╗██╔════╝██╔════╝ ██╔════╝██║ ██╔═══██╗████╗ ████║████╗ ██║██║ + ██████╔╝█████╗ ██║ █████╗ ██║ ██║ ██║██╔████╔██║██╔██╗ ██║██║ + ██╔══██╗██╔══╝ ██║ ██╔══╝ ██║ ██║ ██║██║╚██╔╝██║██║╚██╗██║██║ + ██████╔╝███████╗╚██████╗ ██║ ███████╗╚██████╔╝██║ ╚═╝ ██║██║ ╚████║██║ + ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝ + + B E C f l O M N I + """) + # SETUP BEAMLINE INFO from bec_ipython_client.plugins.SLS.sls_info import OperatorInfo, SLSInfo diff --git a/csaxs_bec/device_configs/bl_detectors.yaml b/csaxs_bec/device_configs/bl_detectors.yaml index 4bbce99..68cee07 100644 --- a/csaxs_bec/device_configs/bl_detectors.yaml +++ b/csaxs_bec/device_configs/bl_detectors.yaml @@ -9,27 +9,27 @@ eiger_1_5: readoutPriority: async softwareTrigger: False -eiger_9: - description: Eiger 9M detector - deviceClass: csaxs_bec.devices.jungfraujoch.eiger_9m.Eiger9M - deviceConfig: - detector_distance: 100 - beam_center: [0, 0] - onFailure: raise - enabled: true - readoutPriority: async - softwareTrigger: False +# eiger_9: +# description: Eiger 9M detector +# deviceClass: csaxs_bec.devices.jungfraujoch.eiger_9m.Eiger9M +# deviceConfig: +# detector_distance: 100 +# beam_center: [0, 0] +# onFailure: raise +# enabled: true +# readoutPriority: async +# softwareTrigger: False -ids_cam: - description: IDS camera for live image acquisition - deviceClass: csaxs_bec.devices.ids_cameras.IDSCamera - deviceConfig: - camera_id: 201 - bits_per_pixel: 24 - m_n_colormode: 1 - live_mode: True - onFailure: raise - enabled: true - readoutPriority: async - softwareTrigger: True +# ids_cam: +# description: IDS camera for live image acquisition +# deviceClass: csaxs_bec.devices.ids_cameras.IDSCamera +# deviceConfig: +# camera_id: 201 +# bits_per_pixel: 24 +# m_n_colormode: 1 +# live_mode: True +# onFailure: raise +# enabled: true +# readoutPriority: async +# softwareTrigger: True diff --git a/csaxs_bec/device_configs/bl_general.yaml b/csaxs_bec/device_configs/bl_general.yaml index 3266e38..ec607c7 100644 --- a/csaxs_bec/device_configs/bl_general.yaml +++ b/csaxs_bec/device_configs/bl_general.yaml @@ -9,3 +9,17 @@ x12saEPS: onFailure: buffer readOnly: false readoutPriority: baseline +############################################################ +##################### GalilRIO ############################# +############################################################ + +galilrioesxbox: + description: Galil RIO for remote gain switching and slow reading ES XBox + deviceClass: csaxs_bec.devices.omny.galil.galil_rio.GalilRIO + deviceConfig: + host: galilrioesxbox.psi.ch + enabled: true + onFailure: raise + readOnly: false + readoutPriority: baseline + connectionTimeout: 20 \ No newline at end of file diff --git a/csaxs_bec/device_configs/main.yaml b/csaxs_bec/device_configs/main.yaml index 5d77f5e..732cbaf 100644 --- a/csaxs_bec/device_configs/main.yaml +++ b/csaxs_bec/device_configs/main.yaml @@ -1,11 +1,11 @@ # This is the main configuration file that is # commented or uncommented according to the type of experiment -optics: - - !include ./bl_optics_hutch.yaml +# optics: +# - !include ./bl_optics_hutch.yaml -frontend: - - !include ./bl_frontend.yaml +# frontend: +# - !include ./bl_frontend.yaml endstation: - !include ./bl_endstation.yaml @@ -16,8 +16,8 @@ detectors: #sastt: # - !include ./sastt.yaml -#flomni: -# - !include ./ptycho_flomni.yaml +flomni: + - !include ./ptycho_flomni.yaml #omny: # - !include ./ptycho_omny.yaml