mx-bluesky 1.4.5__py3-none-any.whl → 1.4.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mx_bluesky/_version.py +9 -4
- mx_bluesky/beamlines/aithre_lasershaping/__init__.py +13 -0
- mx_bluesky/beamlines/aithre_lasershaping/check_goniometer_performance.py +29 -0
- mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py +18 -0
- mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py +45 -28
- mx_bluesky/beamlines/i04/thawing_plan.py +19 -14
- mx_bluesky/beamlines/i24/serial/__init__.py +14 -0
- mx_bluesky/beamlines/i24/serial/dcid.py +3 -1
- mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +12 -12
- mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +31 -30
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +16 -14
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +19 -21
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py +11 -4
- mx_bluesky/beamlines/i24/serial/parameters/constants.py +1 -1
- mx_bluesky/beamlines/i24/serial/set_visit_directory.sh +1 -1
- mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py +16 -16
- mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +48 -49
- mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py +2 -2
- mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py +11 -9
- mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py +109 -0
- mx_bluesky/beamlines/i24/serial/write_nexus.py +5 -4
- mx_bluesky/common/device_setup_plans/xbpm_feedback.py +45 -0
- mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py +2 -4
- mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py +1 -1
- mx_bluesky/common/external_interaction/callbacks/common/plan_reactive_callback.py +2 -2
- mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py +18 -15
- mx_bluesky/common/external_interaction/callbacks/sample_handling/__init__.py +0 -0
- mx_bluesky/{hyperion → common}/external_interaction/callbacks/sample_handling/sample_handling_callback.py +29 -12
- mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py +43 -7
- mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py +1 -1
- mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py +2 -1
- mx_bluesky/common/external_interaction/ispyb/data_model.py +1 -0
- mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py +6 -2
- mx_bluesky/common/external_interaction/ispyb/ispyb_store.py +21 -1
- mx_bluesky/common/external_interaction/nexus/nexus_utils.py +1 -1
- mx_bluesky/common/parameters/constants.py +3 -1
- mx_bluesky/common/parameters/gridscan.py +36 -1
- mx_bluesky/common/plans/do_fgs.py +4 -6
- mx_bluesky/common/plans/read_hardware.py +78 -0
- mx_bluesky/common/plans/write_sample_status.py +46 -0
- mx_bluesky/common/preprocessors/__init__.py +0 -0
- mx_bluesky/common/preprocessors/preprocessors.py +105 -0
- mx_bluesky/common/protocols/__init__.py +0 -0
- mx_bluesky/common/protocols/protocols.py +10 -0
- mx_bluesky/common/utils/context.py +68 -0
- mx_bluesky/{hyperion/experiment_plans/common → common}/xrc_result.py +16 -0
- mx_bluesky/hyperion/__main__.py +7 -9
- mx_bluesky/hyperion/baton_handler.py +84 -0
- mx_bluesky/hyperion/device_setup_plans/setup_oav.py +5 -5
- mx_bluesky/hyperion/device_setup_plans/setup_panda.py +5 -1
- mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +2 -2
- mx_bluesky/hyperion/device_setup_plans/smargon.py +6 -6
- mx_bluesky/hyperion/device_setup_plans/utils.py +2 -2
- mx_bluesky/hyperion/experiment_plans/__init__.py +0 -4
- mx_bluesky/hyperion/experiment_plans/change_aperture_then_move_plan.py +12 -31
- mx_bluesky/hyperion/experiment_plans/experiment_registry.py +0 -7
- mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +44 -97
- mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py +6 -6
- mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +8 -6
- mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py +11 -11
- mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py +5 -5
- mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +1 -1
- mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +2 -4
- mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +15 -13
- mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +10 -10
- mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +1 -29
- mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +30 -27
- mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +25 -6
- mx_bluesky/hyperion/external_interaction/agamemnon.py +242 -0
- mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +12 -6
- mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +1 -1
- mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py +107 -0
- mx_bluesky/hyperion/external_interaction/config_server.py +6 -6
- mx_bluesky/hyperion/parameters/device_composites.py +49 -0
- mx_bluesky/hyperion/parameters/gridscan.py +3 -3
- mx_bluesky/hyperion/parameters/rotation.py +1 -1
- mx_bluesky/hyperion/utils/__init__.py +1 -0
- mx_bluesky/hyperion/utils/context.py +0 -65
- mx_bluesky/hyperion/utils/validation.py +3 -3
- {mx_bluesky-1.4.5.dist-info → mx_bluesky-1.4.7.dist-info}/METADATA +6 -5
- {mx_bluesky-1.4.5.dist-info → mx_bluesky-1.4.7.dist-info}/RECORD +86 -72
- {mx_bluesky-1.4.5.dist-info → mx_bluesky-1.4.7.dist-info}/WHEEL +1 -1
- {mx_bluesky-1.4.5.dist-info → mx_bluesky-1.4.7.dist-info}/entry_points.txt +1 -0
- mx_bluesky/common/device_setup_plans/read_hardware_for_setup.py +0 -14
- mx_bluesky/common/external_interaction/callbacks/common/aperture_change_callback.py +0 -22
- mx_bluesky/hyperion/device_setup_plans/read_hardware_for_setup.py +0 -54
- mx_bluesky/hyperion/device_setup_plans/xbpm_feedback.py +0 -103
- /mx_bluesky/{hyperion/external_interaction/callbacks/sample_handling → beamlines/i24/serial/web_gui_plans}/__init__.py +0 -0
- {mx_bluesky-1.4.5.dist-info → mx_bluesky-1.4.7.dist-info/licenses}/LICENSE +0 -0
- {mx_bluesky-1.4.5.dist-info → mx_bluesky-1.4.7.dist-info}/top_level.txt +0 -0
|
@@ -4,7 +4,6 @@ Fixed target data collection
|
|
|
4
4
|
|
|
5
5
|
from datetime import datetime
|
|
6
6
|
from pathlib import Path
|
|
7
|
-
from time import sleep
|
|
8
7
|
|
|
9
8
|
import bluesky.plan_stubs as bps
|
|
10
9
|
import bluesky.preprocessors as bpp
|
|
@@ -290,7 +289,9 @@ def get_prog_num(
|
|
|
290
289
|
def set_datasize(
|
|
291
290
|
parameters: FixedTargetParameters,
|
|
292
291
|
):
|
|
293
|
-
SSX_LOGGER.info(
|
|
292
|
+
SSX_LOGGER.info(
|
|
293
|
+
f"Setting PV to calculated total number of images: {parameters.total_num_images}"
|
|
294
|
+
)
|
|
294
295
|
|
|
295
296
|
SSX_LOGGER.debug(f"Map type: {parameters.map_type}")
|
|
296
297
|
SSX_LOGGER.debug(f"Chip type: {parameters.chip.chip_type}")
|
|
@@ -360,7 +361,7 @@ def start_i24(
|
|
|
360
361
|
f"Fastchip Pilatus setup: exposure time {parameters.exposure_time_s}"
|
|
361
362
|
)
|
|
362
363
|
|
|
363
|
-
sup.pilatus(
|
|
364
|
+
yield from sup.pilatus(
|
|
364
365
|
"fastchip",
|
|
365
366
|
[
|
|
366
367
|
filepath,
|
|
@@ -405,7 +406,7 @@ def start_i24(
|
|
|
405
406
|
caput(pv.pilat_acquire, "1") # Arm pilatus
|
|
406
407
|
yield from arm_zebra(zebra)
|
|
407
408
|
caput(pv.pilat_filename, filename)
|
|
408
|
-
sleep(1.5)
|
|
409
|
+
yield from bps.sleep(1.5)
|
|
409
410
|
|
|
410
411
|
elif parameters.detector_name == "eiger":
|
|
411
412
|
SSX_LOGGER.info("Using Eiger detector")
|
|
@@ -421,7 +422,7 @@ def start_i24(
|
|
|
421
422
|
f"Triggered Eiger setup: exposure time {parameters.exposure_time_s}"
|
|
422
423
|
)
|
|
423
424
|
|
|
424
|
-
sup.eiger(
|
|
425
|
+
yield from sup.eiger(
|
|
425
426
|
"triggered",
|
|
426
427
|
[
|
|
427
428
|
filepath,
|
|
@@ -433,7 +434,8 @@ def start_i24(
|
|
|
433
434
|
|
|
434
435
|
# DCID process depends on detector PVs being set up already
|
|
435
436
|
SSX_LOGGER.debug("Start DCID process")
|
|
436
|
-
|
|
437
|
+
complete_filename = cagetstring(pv.eiger_ODfilenameRBV)
|
|
438
|
+
filetemplate = f"{complete_filename}.nxs"
|
|
437
439
|
dcid.generate_dcid(
|
|
438
440
|
beam_settings=beam_settings,
|
|
439
441
|
image_dir=filepath,
|
|
@@ -465,7 +467,7 @@ def start_i24(
|
|
|
465
467
|
)
|
|
466
468
|
yield from arm_zebra(zebra)
|
|
467
469
|
|
|
468
|
-
sleep(1.5)
|
|
470
|
+
yield from bps.sleep(1.5)
|
|
469
471
|
|
|
470
472
|
else:
|
|
471
473
|
msg = f"Unknown Detector Type, det_type = {parameters.detector_name}"
|
|
@@ -498,12 +500,12 @@ def finish_i24(
|
|
|
498
500
|
SSX_LOGGER.debug("Finish I24 Pilatus")
|
|
499
501
|
complete_filename = f"{parameters.filename}_{caget(pv.pilat_filenum)}"
|
|
500
502
|
yield from reset_zebra_when_collection_done_plan(zebra)
|
|
501
|
-
sup.pilatus("return-to-normal", None)
|
|
502
|
-
sleep(0.2)
|
|
503
|
+
yield from sup.pilatus("return-to-normal", None)
|
|
504
|
+
yield from bps.sleep(0.2)
|
|
503
505
|
elif parameters.detector_name == "eiger":
|
|
504
506
|
SSX_LOGGER.debug("Finish I24 Eiger")
|
|
505
507
|
yield from reset_zebra_when_collection_done_plan(zebra)
|
|
506
|
-
sup.eiger("return-to-normal", None)
|
|
508
|
+
yield from sup.eiger("return-to-normal", None)
|
|
507
509
|
complete_filename = cagetstring(pv.eiger_ODfilenameRBV) # type: ignore
|
|
508
510
|
else:
|
|
509
511
|
raise ValueError(f"{parameters.detector_name=} unrecognised")
|
|
@@ -592,7 +594,7 @@ def main_fixed_target_plan(
|
|
|
592
594
|
|
|
593
595
|
SSX_LOGGER.info("Moving to Start")
|
|
594
596
|
yield from bps.trigger(pmac.to_xyz_zero)
|
|
595
|
-
sleep(2.0)
|
|
597
|
+
yield from bps.sleep(2.0)
|
|
596
598
|
|
|
597
599
|
# Now ready for data collection. Open fast shutter (zebra gate)
|
|
598
600
|
SSX_LOGGER.info("Opening fast shutter.")
|
|
@@ -663,7 +665,7 @@ def tidy_up_after_collection_plan(
|
|
|
663
665
|
"""
|
|
664
666
|
SSX_LOGGER.info("Closing fast shutter")
|
|
665
667
|
yield from close_fast_shutter(zebra)
|
|
666
|
-
sleep(2.0)
|
|
668
|
+
yield from bps.sleep(2.0)
|
|
667
669
|
|
|
668
670
|
# This probably should go in main then
|
|
669
671
|
if parameters.detector_name == "pilatus":
|
|
@@ -673,7 +675,7 @@ def tidy_up_after_collection_plan(
|
|
|
673
675
|
SSX_LOGGER.debug("Eiger Acquire STOP")
|
|
674
676
|
caput(pv.eiger_acquire, 0)
|
|
675
677
|
caput(pv.eiger_ODcapture, "Done")
|
|
676
|
-
sleep(0.5)
|
|
678
|
+
yield from bps.sleep(0.5)
|
|
677
679
|
|
|
678
680
|
yield from finish_i24(zebra, pmac, shutter, dcm, parameters)
|
|
679
681
|
|
|
@@ -707,7 +709,7 @@ def run_fixed_target_plan(
|
|
|
707
709
|
parameters.collection_directory.mkdir(parents=True, exist_ok=True)
|
|
708
710
|
|
|
709
711
|
if parameters.chip_map:
|
|
710
|
-
upload_chip_map_to_geobrick(pmac, parameters.chip_map)
|
|
712
|
+
yield from upload_chip_map_to_geobrick(pmac, parameters.chip_map)
|
|
711
713
|
|
|
712
714
|
beam_center_device = sup.get_beam_center_device(parameters.detector_name)
|
|
713
715
|
|
|
@@ -6,10 +6,8 @@ This version changed to python3 March2020 by RLO
|
|
|
6
6
|
import json
|
|
7
7
|
import re
|
|
8
8
|
import sys
|
|
9
|
-
import time
|
|
10
9
|
from pathlib import Path
|
|
11
10
|
from pprint import pformat
|
|
12
|
-
from time import sleep
|
|
13
11
|
|
|
14
12
|
import bluesky.plan_stubs as bps
|
|
15
13
|
import numpy as np
|
|
@@ -100,7 +98,7 @@ def initialise_stages(
|
|
|
100
98
|
|
|
101
99
|
caput(pv.pilat_cbftemplate, 0)
|
|
102
100
|
|
|
103
|
-
sleep(0.1)
|
|
101
|
+
yield from bps.sleep(0.1)
|
|
104
102
|
SSX_LOGGER.info("Clearing General Purpose PVs 1-120")
|
|
105
103
|
for i in range(4, 120):
|
|
106
104
|
if i == 100:
|
|
@@ -259,7 +257,7 @@ def upload_chip_map_to_geobrick(pmac: PMAC, chip_map: list[int]) -> MsgGenerator
|
|
|
259
257
|
SSX_LOGGER.debug(f"Set {pvar_str} for block {block}")
|
|
260
258
|
yield from bps.abs_set(pmac.pmac_string, pvar_str, wait=True)
|
|
261
259
|
# Wait for PMAC to be done processing PVAR string
|
|
262
|
-
sleep(0.02)
|
|
260
|
+
yield from bps.sleep(0.02)
|
|
263
261
|
SSX_LOGGER.debug("Upload parameters done.")
|
|
264
262
|
|
|
265
263
|
|
|
@@ -548,11 +546,11 @@ def moveto(place: str = "origin", pmac: PMAC = inject("pmac")) -> MsgGenerator:
|
|
|
548
546
|
chip_move = CHIP_MOVES[chip_type]
|
|
549
547
|
|
|
550
548
|
if place == Fiducials.origin:
|
|
551
|
-
yield from bps.mv(pmac.x, 0.0, pmac.y, 0.0)
|
|
549
|
+
yield from bps.mv(pmac.x, 0.0, pmac.y, 0.0)
|
|
552
550
|
if place == Fiducials.fid1:
|
|
553
|
-
yield from bps.mv(pmac.x, chip_move, pmac.y, 0.0)
|
|
551
|
+
yield from bps.mv(pmac.x, chip_move, pmac.y, 0.0)
|
|
554
552
|
if place == Fiducials.fid2:
|
|
555
|
-
yield from bps.mv(pmac.x, 0.0, pmac.y, chip_move)
|
|
553
|
+
yield from bps.mv(pmac.x, 0.0, pmac.y, chip_move)
|
|
556
554
|
|
|
557
555
|
|
|
558
556
|
@log_on_entry
|
|
@@ -580,7 +578,7 @@ def moveto_preset(
|
|
|
580
578
|
elif place == "collect_position":
|
|
581
579
|
SSX_LOGGER.info("collect position")
|
|
582
580
|
caput(pv.me14e_filter, 20)
|
|
583
|
-
yield from bps.mv(pmac.x, 0.0, pmac.y, 0.0, pmac.z, 0.0)
|
|
581
|
+
yield from bps.mv(pmac.x, 0.0, pmac.y, 0.0, pmac.z, 0.0)
|
|
584
582
|
yield from bps.abs_set(
|
|
585
583
|
beamstop.pos_select, BeamstopPositions.DATA_COLLECTION, group=place
|
|
586
584
|
)
|
|
@@ -589,7 +587,7 @@ def moveto_preset(
|
|
|
589
587
|
|
|
590
588
|
elif place == "microdrop_position":
|
|
591
589
|
SSX_LOGGER.info("microdrop align position")
|
|
592
|
-
yield from bps.mv(pmac.x, 6.0, pmac.y, -7.8, pmac.z, 0.0)
|
|
590
|
+
yield from bps.mv(pmac.x, 6.0, pmac.y, -7.8, pmac.z, 0.0)
|
|
593
591
|
|
|
594
592
|
|
|
595
593
|
@log_on_entry
|
|
@@ -665,15 +663,15 @@ def fiducial(point: int = 1, pmac: PMAC = inject("pmac")) -> MsgGenerator:
|
|
|
665
663
|
output_param_path.mkdir(parents=True, exist_ok=True)
|
|
666
664
|
SSX_LOGGER.info(f"Writing Fiducial File {output_param_path}/fiducial_{point}.txt")
|
|
667
665
|
SSX_LOGGER.info("MTR\tRBV\tRAW\tCorr\tf_value")
|
|
668
|
-
SSX_LOGGER.info(f"MTR1\t{rbv_1:1.4f}\t{mtr1_dir:
|
|
669
|
-
SSX_LOGGER.info(f"MTR2\t{rbv_2:1.4f}\t{mtr2_dir:
|
|
670
|
-
SSX_LOGGER.info(f"MTR3\t{rbv_3:1.4f}\t{mtr3_dir:
|
|
666
|
+
SSX_LOGGER.info(f"MTR1\t{rbv_1:1.4f}\t{mtr1_dir:f}")
|
|
667
|
+
SSX_LOGGER.info(f"MTR2\t{rbv_2:1.4f}\t{mtr2_dir:f}")
|
|
668
|
+
SSX_LOGGER.info(f"MTR3\t{rbv_3:1.4f}\t{mtr3_dir:f}")
|
|
671
669
|
|
|
672
670
|
with open(output_param_path / f"fiducial_{point}.txt", "w") as f:
|
|
673
671
|
f.write("MTR\tRBV\tCorr\n")
|
|
674
|
-
f.write(f"MTR1\t{rbv_1:1.4f}\t{mtr1_dir:
|
|
675
|
-
f.write(f"MTR2\t{rbv_2:1.4f}\t{mtr2_dir:
|
|
676
|
-
f.write(f"MTR3\t{rbv_3:1.4f}\t{mtr3_dir:
|
|
672
|
+
f.write(f"MTR1\t{rbv_1:1.4f}\t{mtr1_dir:f}\n")
|
|
673
|
+
f.write(f"MTR2\t{rbv_2:1.4f}\t{mtr2_dir:f}\n")
|
|
674
|
+
f.write(f"MTR3\t{rbv_3:1.4f}\t{mtr3_dir:f}")
|
|
677
675
|
SSX_LOGGER.info(f"Fiducial {point} set.")
|
|
678
676
|
yield from bps.null()
|
|
679
677
|
|
|
@@ -832,16 +830,16 @@ def cs_maker(pmac: PMAC = inject("pmac")) -> MsgGenerator:
|
|
|
832
830
|
SSX_LOGGER.info(f"{sqfact1:1.4f} \n {sqfact2:1.4f} \n {sqfact3:1.4f}")
|
|
833
831
|
SSX_LOGGER.debug("Long wait, please be patient")
|
|
834
832
|
yield from bps.trigger(pmac.to_xyz_zero)
|
|
835
|
-
sleep(2.5)
|
|
833
|
+
yield from bps.sleep(2.5)
|
|
836
834
|
yield from set_pmac_strings_for_cs(pmac, {"cs1": cs1, "cs2": cs2, "cs3": cs3})
|
|
837
835
|
yield from bps.trigger(pmac.to_xyz_zero)
|
|
838
|
-
sleep(2.5)
|
|
836
|
+
yield from bps.sleep(2.5)
|
|
839
837
|
yield from bps.trigger(pmac.home, wait=True)
|
|
840
|
-
sleep(2.5)
|
|
838
|
+
yield from bps.sleep(2.5)
|
|
841
839
|
SSX_LOGGER.debug(f"Chip_type is {chip_type}")
|
|
842
840
|
if chip_type == 0:
|
|
843
841
|
yield from bps.abs_set(pmac.pmac_string, "!x0.4y0.4", wait=True)
|
|
844
|
-
sleep(2.5)
|
|
842
|
+
yield from bps.sleep(2.5)
|
|
845
843
|
yield from bps.trigger(pmac.home, wait=True)
|
|
846
844
|
else:
|
|
847
845
|
yield from bps.trigger(pmac.home, wait=True)
|
|
@@ -932,12 +930,12 @@ def block_check(pmac: PMAC = inject("pmac")) -> MsgGenerator:
|
|
|
932
930
|
for entry in block_start_list:
|
|
933
931
|
if int(caget(pv.me14e_gp9)) != 0:
|
|
934
932
|
SSX_LOGGER.warning("Block Check Aborted")
|
|
935
|
-
sleep(1.0)
|
|
933
|
+
yield from bps.sleep(1.0)
|
|
936
934
|
break
|
|
937
935
|
block, x, y = entry
|
|
938
936
|
SSX_LOGGER.debug(f"Block: {block} -> (x={x} y={y})")
|
|
939
937
|
yield from bps.abs_set(pmac.pmac_string, f"!x{x}y{y}", wait=True)
|
|
940
|
-
|
|
938
|
+
yield from bps.sleep(0.4)
|
|
941
939
|
else:
|
|
942
940
|
SSX_LOGGER.warning("Block Check Aborted due to GP 9 not equalling 0")
|
|
943
941
|
break
|
|
@@ -33,8 +33,13 @@ def _get_beam_centre(oav: OAV):
|
|
|
33
33
|
|
|
34
34
|
def _calculate_zoom_calibrator(oav: OAV):
|
|
35
35
|
"""Set the scale for the zoom calibrator for the pmac moves."""
|
|
36
|
-
currentzoom = yield from bps.rd(oav.zoom_controller.percentage)
|
|
37
|
-
zoomcalibrator =
|
|
36
|
+
currentzoom = yield from bps.rd(oav.zoom_controller.percentage)
|
|
37
|
+
zoomcalibrator = (
|
|
38
|
+
1.285
|
|
39
|
+
- (0.02866 * currentzoom)
|
|
40
|
+
+ (0.00025 * currentzoom**2)
|
|
41
|
+
- (0.0000008151 * currentzoom**3)
|
|
42
|
+
)
|
|
38
43
|
return zoomcalibrator
|
|
39
44
|
|
|
40
45
|
|
|
@@ -49,8 +54,10 @@ def _move_on_mouse_click_plan(
|
|
|
49
54
|
zoomcalibrator = yield from _calculate_zoom_calibrator(oav)
|
|
50
55
|
beamX, beamY = yield from _get_beam_centre(oav)
|
|
51
56
|
x, y = clicked_position
|
|
52
|
-
xmove = -
|
|
53
|
-
ymove =
|
|
57
|
+
xmove = -10 * (beamX - x) * zoomcalibrator
|
|
58
|
+
ymove = 10 * (beamY - y) * zoomcalibrator
|
|
59
|
+
SSX_LOGGER.info(f"Zoom calibrator {zoomcalibrator}")
|
|
60
|
+
SSX_LOGGER.info(f"Beam centre {beamX} {beamY}")
|
|
54
61
|
SSX_LOGGER.info(f"Moving X and Y {xmove} {ymove}")
|
|
55
62
|
xmovepmacstring = "#1J:" + str(xmove)
|
|
56
63
|
ymovepmacstring = "#2J:" + str(ymove)
|
|
@@ -25,7 +25,7 @@ BEAM_CENTER_LUT_FILES = {
|
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
OAV_CONFIG_FILES = {
|
|
28
|
-
"zoom_params_file": "/dls_sw/i24/software/gda_versions/
|
|
28
|
+
"zoom_params_file": "/dls_sw/i24/software/gda_versions/gda_9_36/config/xml/jCameraManZoomLevels.xml",
|
|
29
29
|
"oav_config_json": "/dls_sw/i24/software/daq_configuration/json/OAVCentring.json",
|
|
30
30
|
"display_config": "/dls_sw/i24/software/gda_versions/var/display.configuration",
|
|
31
31
|
}
|
|
@@ -258,22 +258,22 @@ step09_pmac_response = "BL24I-MO-IOC-09:ASYN9.AINP"
|
|
|
258
258
|
step10_pmac_response = "BL24I-MO-IOC-10:ASYN10.AINP"
|
|
259
259
|
step11_pmac_response = "BL24I-MO-IOC-11:ASYN11.AINP"
|
|
260
260
|
step12_pmac_response = "BL24I-MO-IOC-12:ASYN12.AINP"
|
|
261
|
-
# General Purpose PV
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
261
|
+
# General Purpose PV. Now use STEP13
|
|
262
|
+
ioc13_gp1 = "BL24I-MO-IOC-13:GP1"
|
|
263
|
+
ioc13_gp2 = "BL24I-MO-IOC-13:GP2"
|
|
264
|
+
ioc13_gp3 = "BL24I-MO-IOC-13:GP3"
|
|
265
|
+
ioc13_gp4 = "BL24I-MO-IOC-13:GP4"
|
|
266
|
+
ioc13_gp5 = "BL24I-MO-IOC-13:GP5"
|
|
267
|
+
ioc13_gp6 = "BL24I-MO-IOC-13:GP6"
|
|
268
|
+
ioc13_gp7 = "BL24I-MO-IOC-13:GP7"
|
|
269
|
+
ioc13_gp8 = "BL24I-MO-IOC-13:GP8"
|
|
270
|
+
ioc13_gp9 = "BL24I-MO-IOC-13:GP9"
|
|
271
|
+
ioc13_gp10 = "BL24I-MO-IOC-13:GP10"
|
|
272
|
+
ioc13_gp11 = "BL24I-MO-IOC-13:GP11"
|
|
273
|
+
ioc13_gp12 = "BL24I-MO-IOC-13:GP12"
|
|
274
|
+
ioc13_gp13 = "BL24I-MO-IOC-13:GP13"
|
|
275
|
+
ioc13_gp14 = "BL24I-MO-IOC-13:GP14"
|
|
276
|
+
ioc13_gp15 = "BL24I-MO-IOC-13:GP15"
|
|
277
277
|
# ME14E
|
|
278
278
|
me14e_pmac_str = "ME14E-MO-CHIP-01:PMAC_STRING"
|
|
279
279
|
me14e_stage_x = "ME14E-MO-CHIP-01:X"
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
|
-
from time import sleep
|
|
3
2
|
|
|
4
3
|
import bluesky.plan_stubs as bps
|
|
5
4
|
from dodal.beamlines import i24
|
|
@@ -84,7 +83,7 @@ def move_detector_stage_to_position_plan(
|
|
|
84
83
|
SSX_LOGGER.debug(
|
|
85
84
|
f"Waiting for detector move. Detector distance: {detector_distance} mm."
|
|
86
85
|
)
|
|
87
|
-
yield from bps.mv(detector_stage.z, detector_distance)
|
|
86
|
+
yield from bps.mv(detector_stage.z, detector_distance)
|
|
88
87
|
|
|
89
88
|
|
|
90
89
|
def set_detector_beam_center_plan(
|
|
@@ -149,9 +148,9 @@ def modechange(action):
|
|
|
149
148
|
caput(pv.vgon_pinzs, 0)
|
|
150
149
|
caput(pv.fluo_trans, "OUT")
|
|
151
150
|
caput(pv.bs_roty, 0)
|
|
152
|
-
sleep(0.5)
|
|
151
|
+
yield from bps.sleep(0.5)
|
|
153
152
|
caput(pv.bs_mp_select, "Data Collection")
|
|
154
|
-
sleep(2.3)
|
|
153
|
+
yield from bps.sleep(2.3)
|
|
155
154
|
caput(pv.bl_mp_select, "In")
|
|
156
155
|
SSX_LOGGER.debug("Pin Data Collection Done")
|
|
157
156
|
|
|
@@ -168,9 +167,9 @@ def modechange(action):
|
|
|
168
167
|
caput(pv.vgon_pinyh, 0)
|
|
169
168
|
caput(pv.vgon_pinzs, 0)
|
|
170
169
|
caput(pv.fluo_trans, "OUT")
|
|
171
|
-
sleep(0.1)
|
|
170
|
+
yield from bps.sleep(0.1)
|
|
172
171
|
caput(pv.bs_roty, 0)
|
|
173
|
-
sleep(2.6)
|
|
172
|
+
yield from bps.sleep(2.6)
|
|
174
173
|
caput(pv.bl_mp_select, "In")
|
|
175
174
|
caput(pv.bs_mp_select, "Data Collection")
|
|
176
175
|
SSX_LOGGER.debug("RT Data Collection Done")
|
|
@@ -182,11 +181,11 @@ def modechange(action):
|
|
|
182
181
|
caput(pv.hgon_omega, 0.0)
|
|
183
182
|
caput(pv.fluo_trans, "OUT")
|
|
184
183
|
caput(pv.bl_mp_select, "Out")
|
|
185
|
-
sleep(1)
|
|
184
|
+
yield from bps.sleep(1)
|
|
186
185
|
caput(pv.aptr1_mp_select, "Manual Mounting")
|
|
187
186
|
caput(pv.bs_mp_select, "Tray Mount")
|
|
188
187
|
while float(caget(pv.ttab_x + ".RBV")) > 3:
|
|
189
|
-
sleep(1)
|
|
188
|
+
yield from bps.sleep(1)
|
|
190
189
|
SSX_LOGGER.debug("Tray Hand Mount Done")
|
|
191
190
|
|
|
192
191
|
# Tray Robot Load. This action needs to be reviewed and revised
|
|
@@ -199,15 +198,15 @@ def modechange(action):
|
|
|
199
198
|
caput(pv.fluo_trans, "OUT")
|
|
200
199
|
caput(pv.aptr1_mp_select, "In")
|
|
201
200
|
caput(pv.bl_mp_select, "Out")
|
|
202
|
-
sleep(1)
|
|
201
|
+
yield from bps.sleep(1)
|
|
203
202
|
caput(pv.bs_roty, 0)
|
|
204
|
-
sleep(1)
|
|
203
|
+
yield from bps.sleep(1)
|
|
205
204
|
caput(pv.bs_mp_select, "Robot")
|
|
206
|
-
sleep(1)
|
|
205
|
+
yield from bps.sleep(1)
|
|
207
206
|
caput(pv.bs_mp_select, "Data Collection Far")
|
|
208
|
-
sleep(1)
|
|
207
|
+
yield from bps.sleep(1)
|
|
209
208
|
caput(pv.bs_roty, 0)
|
|
210
|
-
sleep(4)
|
|
209
|
+
yield from bps.sleep(4)
|
|
211
210
|
caput(pv.bl_mp_select, "In")
|
|
212
211
|
SSX_LOGGER.debug("Tray Robot Mount Done")
|
|
213
212
|
|
|
@@ -220,15 +219,15 @@ def modechange(action):
|
|
|
220
219
|
caput(pv.aptr1_mp_select, "In")
|
|
221
220
|
caput(pv.fluo_trans, "OUT")
|
|
222
221
|
caput(pv.bl_mp_select, "Out")
|
|
223
|
-
sleep(1)
|
|
222
|
+
yield from bps.sleep(1)
|
|
224
223
|
caput(pv.bs_roty, 0)
|
|
225
|
-
sleep(1)
|
|
224
|
+
yield from bps.sleep(1)
|
|
226
225
|
caput(pv.bs_mp_select, "Robot")
|
|
227
|
-
sleep(1)
|
|
226
|
+
yield from bps.sleep(1)
|
|
228
227
|
caput(pv.bs_mp_select, "Data Collection")
|
|
229
|
-
sleep(1)
|
|
228
|
+
yield from bps.sleep(1)
|
|
230
229
|
caput(pv.bs_roty, 0)
|
|
231
|
-
sleep(4)
|
|
230
|
+
yield from bps.sleep(4)
|
|
232
231
|
caput(pv.bl_mp_select, "In")
|
|
233
232
|
SSX_LOGGER.debug("Tray Data Collection Done")
|
|
234
233
|
|
|
@@ -252,17 +251,17 @@ def modechange(action):
|
|
|
252
251
|
caput(pv.vgon_pinzs, 0)
|
|
253
252
|
while float(caget(pv.ttab_x + ".RBV")) > 1:
|
|
254
253
|
SSX_LOGGER.debug(f"moving ttab_x {caget(pv.ttab_x)}")
|
|
255
|
-
sleep(0.1)
|
|
254
|
+
yield from bps.sleep(0.1)
|
|
256
255
|
while caget(pv.fluo_out_limit) == "OFF":
|
|
257
256
|
SSX_LOGGER.debug("waiting on fluorescence detector")
|
|
258
|
-
sleep(0.1)
|
|
257
|
+
yield from bps.sleep(0.1)
|
|
259
258
|
while caget(pv.bl_mp_select) != "Out":
|
|
260
259
|
SSX_LOGGER.debug("waiting on back light to move to out")
|
|
261
|
-
sleep(0.1)
|
|
260
|
+
yield from bps.sleep(0.1)
|
|
262
261
|
caput(pv.bs_mp_select, "Robot")
|
|
263
262
|
caput(pv.bs_roty, 0)
|
|
264
263
|
while float(caget(pv.ptab_y + ".RBV")) > -89.0:
|
|
265
|
-
sleep(1)
|
|
264
|
+
yield from bps.sleep(1)
|
|
266
265
|
SSX_LOGGER.debug("Switch To Tray Done")
|
|
267
266
|
|
|
268
267
|
# Tray Switch to Pin
|
|
@@ -272,11 +271,11 @@ def modechange(action):
|
|
|
272
271
|
caput(pv.hgon_trayys, 0.0)
|
|
273
272
|
caput(pv.hgon_trayzs, 0.0)
|
|
274
273
|
while float(caget(pv.ttab_x + ".RBV")) > 1.0:
|
|
275
|
-
sleep(1)
|
|
274
|
+
yield from bps.sleep(1)
|
|
276
275
|
caput(pv.ptab_y, 0)
|
|
277
276
|
while float(caget(pv.ptab_y + ".RBV")) < -1.0:
|
|
278
|
-
sleep(1)
|
|
279
|
-
modechange("Pin_data_collection")
|
|
277
|
+
yield from bps.sleep(1)
|
|
278
|
+
yield from modechange("Pin_data_collection")
|
|
280
279
|
SSX_LOGGER.debug("Switch To Pin Done")
|
|
281
280
|
else:
|
|
282
281
|
SSX_LOGGER.debug(f"Unknown action: {action}")
|
|
@@ -323,9 +322,9 @@ def pilatus(action, args_list):
|
|
|
323
322
|
[filepath, filename, num_imgs, exptime] = args_list
|
|
324
323
|
rampath = filepath.replace("dls/i24/data", "ramdisk")
|
|
325
324
|
caput(pv.pilat_filepath, rampath)
|
|
326
|
-
sleep(0.1)
|
|
325
|
+
yield from bps.sleep(0.1)
|
|
327
326
|
caput(pv.pilat_filename, filename)
|
|
328
|
-
sleep(0.1)
|
|
327
|
+
yield from bps.sleep(0.1)
|
|
329
328
|
acqtime = float(exptime) - 0.001
|
|
330
329
|
caput(pv.pilat_acquiretime, str(acqtime))
|
|
331
330
|
caput(pv.pilat_acquireperiod, str(exptime))
|
|
@@ -336,21 +335,21 @@ def pilatus(action, args_list):
|
|
|
336
335
|
SSX_LOGGER.debug(f"Exposure time set as {exptime} s")
|
|
337
336
|
SSX_LOGGER.debug(f"Acquire time set as {acqtime} s")
|
|
338
337
|
SSX_LOGGER.debug("Pilatus takes time apprx 2sec")
|
|
339
|
-
sleep(2)
|
|
338
|
+
yield from bps.sleep(2)
|
|
340
339
|
caput(pv.pilat_delaytime, 0.00)
|
|
341
340
|
caput(pv.pilat_numimages, str(num_imgs))
|
|
342
341
|
caput(pv.pilat_imagemode, "Continuous")
|
|
343
342
|
caput(pv.pilat_triggermode, "Ext. Trigger")
|
|
344
|
-
sleep(0.2)
|
|
343
|
+
yield from bps.sleep(0.2)
|
|
345
344
|
|
|
346
345
|
elif action == "quickshot-internaltrig":
|
|
347
346
|
SSX_LOGGER.debug("quickshot-internaltrig")
|
|
348
347
|
[filepath, filename, num_imgs, exptime] = args_list
|
|
349
348
|
rampath = filepath.replace("dls/i24/data", "ramdisk")
|
|
350
349
|
caput(pv.pilat_filepath, rampath)
|
|
351
|
-
sleep(0.1)
|
|
350
|
+
yield from bps.sleep(0.1)
|
|
352
351
|
caput(pv.pilat_filename, filename)
|
|
353
|
-
sleep(0.1)
|
|
352
|
+
yield from bps.sleep(0.1)
|
|
354
353
|
acqtime = float(exptime) - 0.001
|
|
355
354
|
caput(pv.pilat_acquiretime, str(acqtime))
|
|
356
355
|
caput(pv.pilat_acquireperiod, str(exptime))
|
|
@@ -361,12 +360,12 @@ def pilatus(action, args_list):
|
|
|
361
360
|
SSX_LOGGER.debug(f"Exposure time set as {exptime} s")
|
|
362
361
|
SSX_LOGGER.debug(f"Acquire time set as {acqtime} s")
|
|
363
362
|
SSX_LOGGER.debug("Pilatus takes time apprx 2sec")
|
|
364
|
-
sleep(2)
|
|
363
|
+
yield from bps.sleep(2)
|
|
365
364
|
caput(pv.pilat_delaytime, 0.00)
|
|
366
365
|
caput(pv.pilat_numimages, str(num_imgs))
|
|
367
366
|
caput(pv.pilat_imagemode, "Continuous")
|
|
368
367
|
caput(pv.pilat_triggermode, "Internal")
|
|
369
|
-
sleep(0.2)
|
|
368
|
+
yield from bps.sleep(0.2)
|
|
370
369
|
|
|
371
370
|
# Put it all back to GDA acceptable defaults
|
|
372
371
|
elif action == "return to normal":
|
|
@@ -374,7 +373,7 @@ def pilatus(action, args_list):
|
|
|
374
373
|
caput(pv.pilat_triggermode, "Ext. Trigger")
|
|
375
374
|
caput(pv.pilat_numexpimage, 1)
|
|
376
375
|
SSX_LOGGER.debug("***** leaving pilatus")
|
|
377
|
-
sleep(0.1)
|
|
376
|
+
yield from bps.sleep(0.1)
|
|
378
377
|
return 0
|
|
379
378
|
|
|
380
379
|
|
|
@@ -388,7 +387,7 @@ def eiger(action, args_list):
|
|
|
388
387
|
caput(pv.eiger_detdist, str(float(caget(pv.det_z)) / 1000))
|
|
389
388
|
caput(pv.eiger_wavelength, caget(pv.dcm_lambda))
|
|
390
389
|
caput(pv.eiger_omegaincr, 0.0)
|
|
391
|
-
sleep(0.1)
|
|
390
|
+
yield from bps.sleep(0.1)
|
|
392
391
|
# Setup common to all collections ###
|
|
393
392
|
caput(pv.eiger_filewriter, "No")
|
|
394
393
|
caput(pv.eiger_stream, "Yes")
|
|
@@ -409,9 +408,9 @@ def eiger(action, args_list):
|
|
|
409
408
|
[filepath, filename, num_imgs, exptime] = args_list
|
|
410
409
|
filename = filename + "_" + str(caget(pv.eiger_seqID))
|
|
411
410
|
caput(pv.eiger_ODfilepath, filepath)
|
|
412
|
-
sleep(0.1)
|
|
411
|
+
yield from bps.sleep(0.1)
|
|
413
412
|
caput(pv.eiger_ODfilename, filename)
|
|
414
|
-
sleep(0.1)
|
|
413
|
+
yield from bps.sleep(0.1)
|
|
415
414
|
acqtime = float(exptime) - 0.0000001
|
|
416
415
|
caput(pv.eiger_acquiretime, str(acqtime))
|
|
417
416
|
SSX_LOGGER.debug(f"Filepath was set as {filepath}")
|
|
@@ -425,7 +424,7 @@ def eiger(action, args_list):
|
|
|
425
424
|
caput(pv.eiger_triggermode, "Internal Series")
|
|
426
425
|
caput(pv.eiger_numtriggers, 1)
|
|
427
426
|
caput(pv.eiger_manualtrigger, "Yes")
|
|
428
|
-
sleep(1.0)
|
|
427
|
+
yield from bps.sleep(1.0)
|
|
429
428
|
# ODIN setup
|
|
430
429
|
SSX_LOGGER.info("Setting up Odin")
|
|
431
430
|
caput(pv.eiger_ODfilename, filename)
|
|
@@ -435,7 +434,7 @@ def eiger(action, args_list):
|
|
|
435
434
|
eigerbdrbv = "UInt" + str(caget(pv.eiger_bitdepthrbv))
|
|
436
435
|
caput(pv.eiger_ODdatatype, eigerbdrbv)
|
|
437
436
|
caput(pv.eiger_ODcompress, "BSL24")
|
|
438
|
-
sleep(1.0)
|
|
437
|
+
yield from bps.sleep(1.0)
|
|
439
438
|
# All done. Now get Odin to wait for data and start Eiger
|
|
440
439
|
SSX_LOGGER.info("Done: Odin waiting for data")
|
|
441
440
|
caput(pv.eiger_ODcapture, "Capture")
|
|
@@ -451,9 +450,9 @@ def eiger(action, args_list):
|
|
|
451
450
|
[filepath, filename, num_imgs, exptime] = args_list
|
|
452
451
|
filename = filename + "_" + str(caget(pv.eiger_seqID))
|
|
453
452
|
caput(pv.eiger_ODfilepath, filepath)
|
|
454
|
-
sleep(0.1)
|
|
453
|
+
yield from bps.sleep(0.1)
|
|
455
454
|
caput(pv.eiger_ODfilename, filename)
|
|
456
|
-
sleep(0.1)
|
|
455
|
+
yield from bps.sleep(0.1)
|
|
457
456
|
acqtime = float(exptime) - 0.0000001
|
|
458
457
|
caput(pv.eiger_acquiretime, str(acqtime))
|
|
459
458
|
SSX_LOGGER.debug(f"Filepath was set as {filepath}")
|
|
@@ -467,7 +466,7 @@ def eiger(action, args_list):
|
|
|
467
466
|
caput(pv.eiger_triggermode, "External Enable")
|
|
468
467
|
caput(pv.eiger_numtriggers, str(num_imgs))
|
|
469
468
|
caput(pv.eiger_manualtrigger, "Yes")
|
|
470
|
-
sleep(1.0)
|
|
469
|
+
yield from bps.sleep(1.0)
|
|
471
470
|
# ODIN setup #
|
|
472
471
|
SSX_LOGGER.info("Setting up Odin")
|
|
473
472
|
caput(pv.eiger_ODfilename, filename)
|
|
@@ -477,7 +476,7 @@ def eiger(action, args_list):
|
|
|
477
476
|
eigerbdrbv = "UInt" + str(caget(pv.eiger_bitdepthrbv))
|
|
478
477
|
caput(pv.eiger_ODdatatype, eigerbdrbv)
|
|
479
478
|
caput(pv.eiger_ODcompress, "BSL24")
|
|
480
|
-
sleep(1.0)
|
|
479
|
+
yield from bps.sleep(1.0)
|
|
481
480
|
# All done. Now get Odin to wait for data and start Eiger
|
|
482
481
|
SSX_LOGGER.info("Done: Odin waiting for data")
|
|
483
482
|
caput(pv.eiger_ODcapture, "Capture")
|
|
@@ -492,7 +491,7 @@ def eiger(action, args_list):
|
|
|
492
491
|
caput(pv.eiger_manualtrigger, "No")
|
|
493
492
|
# caput(pv.eiger_seqID, int(caget(pv.eiger_seqID))+1)
|
|
494
493
|
SSX_LOGGER.debug("***** leaving Eiger")
|
|
495
|
-
sleep(0.1)
|
|
494
|
+
yield from bps.sleep(0.1)
|
|
496
495
|
return 0
|
|
497
496
|
|
|
498
497
|
|
|
@@ -510,10 +509,10 @@ def xspress3(action, args_list):
|
|
|
510
509
|
caput(pv.xsp3_acquiretime, exp_time)
|
|
511
510
|
caput(pv.xsp3_c1_mca_roi1_llm, lo)
|
|
512
511
|
caput(pv.xsp3_c1_mca_roi1_hlm, hi)
|
|
513
|
-
sleep(0.2)
|
|
512
|
+
yield from bps.sleep(0.2)
|
|
514
513
|
caput(pv.xsp3_c1_mca_roi1_llm, lo)
|
|
515
514
|
caput(pv.xsp3_c1_mca_roi1_hlm, hi)
|
|
516
|
-
sleep(0.2)
|
|
515
|
+
yield from bps.sleep(0.2)
|
|
517
516
|
caput(pv.xsp3_erase, 0)
|
|
518
517
|
|
|
519
518
|
elif action == "on-the-fly":
|
|
@@ -522,10 +521,10 @@ def xspress3(action, args_list):
|
|
|
522
521
|
caput(pv.xsp3_numimages, num_frms)
|
|
523
522
|
caput(pv.xsp3_c1_mca_roi1_llm, lo)
|
|
524
523
|
caput(pv.xsp3_c1_mca_roi1_hlm, hi)
|
|
525
|
-
sleep(0.2)
|
|
524
|
+
yield from bps.sleep(0.2)
|
|
526
525
|
caput(pv.xsp3_c1_mca_roi1_llm, lo)
|
|
527
526
|
caput(pv.xsp3_c1_mca_roi1_hlm, hi)
|
|
528
|
-
sleep(0.2)
|
|
527
|
+
yield from bps.sleep(0.2)
|
|
529
528
|
caput(pv.xsp3_erase, 0)
|
|
530
529
|
|
|
531
530
|
elif action == "return-to-normal":
|
|
@@ -539,6 +538,6 @@ def xspress3(action, args_list):
|
|
|
539
538
|
else:
|
|
540
539
|
SSX_LOGGER.error("Unknown action for xspress3 method:", action)
|
|
541
540
|
|
|
542
|
-
sleep(0.1)
|
|
541
|
+
yield from bps.sleep(0.1)
|
|
543
542
|
SSX_LOGGER.debug("***** leaving xspress3")
|
|
544
543
|
return 1
|
|
@@ -22,7 +22,7 @@ from mx_bluesky.beamlines.i24.serial.setup_beamline.pv_abstract import (
|
|
|
22
22
|
|
|
23
23
|
EXPT_TYPE_DETECTOR_PVS = {
|
|
24
24
|
SSXType.FIXED: pv.me14e_gp101,
|
|
25
|
-
SSXType.EXTRUDER: pv.
|
|
25
|
+
SSXType.EXTRUDER: pv.ioc13_gp15,
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
|
|
@@ -55,7 +55,7 @@ def get_detector_type(detector_stage: DetectorMotion) -> Generator[Msg, None, De
|
|
|
55
55
|
|
|
56
56
|
def _move_detector_stage(detector_stage: DetectorMotion, target: float) -> MsgGenerator:
|
|
57
57
|
SSX_LOGGER.info(f"Moving detector stage to target position: {target}.")
|
|
58
|
-
yield from bps.mv(detector_stage.y, target)
|
|
58
|
+
yield from bps.mv(detector_stage.y, target)
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
# Workaround in case the PV value has been set to the detector name
|