From 22ed9b6fadb33778e25307c4420320dcdc724fec Mon Sep 17 00:00:00 2001 From: x10sa Date: Wed, 28 Jan 2026 09:50:56 +0100 Subject: [PATCH] extract motor positions to yaml file --- pxii_bec/macros/pxii_parameters.py | 28 ++++++++++++++++++++-------- pxii_bec/macros/se_positions.yaml | 27 +++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 pxii_bec/macros/se_positions.yaml diff --git a/pxii_bec/macros/pxii_parameters.py b/pxii_bec/macros/pxii_parameters.py index 7437013..4d89941 100755 --- a/pxii_bec/macros/pxii_parameters.py +++ b/pxii_bec/macros/pxii_parameters.py @@ -2,6 +2,7 @@ from dataclasses import dataclass import numpy as np +import yaml @dataclass(frozen=True) @@ -240,13 +241,13 @@ class GroupTarget: @dataclass(frozen=True) class SE: """Define settings for scintillator, collimator, i1""" - scin = Target(38.6, 20.0, 0.1, dev.scin_y, lambda: dev.scin_y.read()['scin_y']['value']) - i1 = Target(44.0, 20.0, 0.2, dev.scin_y, lambda: dev.scin_y.read()['scin_y']['value']) - colly = Target(41.5, 20.0, 0.05, dev.coll_y, lambda: dev.coll_y.read()['coll_y']['value']) - bsy = Target(0.6, -0.4, 0.05, dev.bs_y, lambda: dev.bs_y.read()['bs_y']['value']) - bsx = Target(2.0, 2.0, 0.05, dev.bs_x, lambda: dev.bs_x.read()['bs_x']['value']) - blpos = Target(1, 0, 0, dev.blight_pos, lambda: dev.blight_pos.read()['blight_pos']['value']) - bspos = Target(1, 0, 0, dev.bs_pos, lambda: dev.bs_pos.read()['bs_pos']['value']) + scin = Target(0.0, 0.0, 0.1, dev.scin_y, lambda: dev.scin_y.read()['scin_y']['value']) + i1 = Target(0.0, 0.0, 0.2, dev.scin_y, lambda: dev.scin_y.read()['scin_y']['value']) + colly = Target(0.0, 0.0, 0.05, dev.coll_y, lambda: dev.coll_y.read()['coll_y']['value']) + bsy = Target(0.0, 0, 0.05, dev.bs_y, lambda: dev.bs_y.read()['bs_y']['value']) + bsx = Target(0.0, 0.0, 0.05, dev.bs_x, lambda: dev.bs_x.read()['bs_x']['value']) + blpos = Target(0.0, 0.0, 0.0, dev.blight_pos, lambda: dev.blight_pos.read()['blight_pos']['value']) + bspos = Target(0.0, 0.0, 0.0, dev.bs_pos, lambda: dev.bs_pos.read()['bs_pos']['value']) # cryopos = Target(1, 0, 0, dev.cryo_pos, lambda: dev.cryo_pos.read()['cryo_pos']['value']) # xrfpos = Target(1, 0, 0, dev.xrf_pos, lambda: dev.xrf_pos.read()['xrf_pos']['value']) # coll = GroupTarget( @@ -257,4 +258,15 @@ class SE: # x = Target(2.65, 2.65, 0.05, dev.bs_x, lambda: dev.bs_x.read()['bs_x']['value']), # y = Target(0.1, 0.1, 0.05, dev.bs_y, lambda: dev.bs_y.read()['bs_y']['value']) # ) - \ No newline at end of file + + @classmethod + def load_positions(cls, filename: str): + with open(filename) as f: + data = yaml.safe_load(f) + + for name, pos in data.items(): + if not hasattr(cls, name): + raise KeyError(f"Unknown motor '{name}' in {filename}") + target = getattr(cls, name) + target.inpos = pos["in"] + target.outpos = pos["out"] diff --git a/pxii_bec/macros/se_positions.yaml b/pxii_bec/macros/se_positions.yaml new file mode 100644 index 0000000..65202d2 --- /dev/null +++ b/pxii_bec/macros/se_positions.yaml @@ -0,0 +1,27 @@ +scin: + in: 38.62 + out: 20.0 + +i1: + in: 44.0 + out: 20.0 + +colly: + in: 41.5 + out: 20.0 + +bsy: + in: 0.1 + out: -0.9 + +bsx: + in: 2.45 + out: 2.45 + +blpos: + in: 1 + out: 0 + +bspos: + in: 1 + out: 0 \ No newline at end of file