mx-bluesky 1.4.2__tar.gz → 1.4.3__tar.gz

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.
Files changed (462) hide show
  1. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.gitignore +3 -0
  2. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/PKG-INFO +6 -6
  3. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/conf.py +2 -0
  4. mx_bluesky-1.4.3/docs/developer/hyperion/reference/gridscan.puml +109 -0
  5. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/hyperion/reference/param-hierarchy.rst +1 -1
  6. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/pyproject.toml +8 -5
  7. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/_version.py +2 -2
  8. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/dcid.py +3 -3
  9. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +24 -9
  10. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +13 -4
  11. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +1 -1
  12. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/parameters/__init__.py +2 -1
  13. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/parameters/constants.py +13 -5
  14. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py +20 -4
  15. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +40 -11
  16. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py +81 -40
  17. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion/external_interaction/callbacks → mx_bluesky-1.4.3/src/mx_bluesky/common/external_interaction/callbacks/common}/aperture_change_callback.py +1 -1
  18. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion/external_interaction/callbacks → mx_bluesky-1.4.3/src/mx_bluesky/common/external_interaction/callbacks/common}/grid_detection_callback.py +19 -1
  19. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion/external_interaction/callbacks → mx_bluesky-1.4.3/src/mx_bluesky/common/external_interaction/callbacks/common}/ispyb_callback_base.py +40 -34
  20. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion → mx_bluesky-1.4.3/src/mx_bluesky/common}/external_interaction/callbacks/common/ispyb_mapping.py +4 -4
  21. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion/external_interaction/callbacks → mx_bluesky-1.4.3/src/mx_bluesky/common/external_interaction/callbacks/common}/logging_callback.py +1 -1
  22. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion/external_interaction/callbacks → mx_bluesky-1.4.3/src/mx_bluesky/common/external_interaction/callbacks/common}/zocalo_callback.py +14 -9
  23. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion → mx_bluesky-1.4.3/src/mx_bluesky/common}/external_interaction/callbacks/xray_centre/ispyb_callback.py +39 -34
  24. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion → mx_bluesky-1.4.3/src/mx_bluesky/common}/external_interaction/callbacks/xray_centre/ispyb_mapping.py +2 -2
  25. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion → mx_bluesky-1.4.3/src/mx_bluesky/common}/external_interaction/callbacks/xray_centre/nexus_callback.py +20 -15
  26. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/common/external_interaction/config_server.py +11 -0
  27. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion → mx_bluesky-1.4.3/src/mx_bluesky/common}/external_interaction/ispyb/data_model.py +2 -0
  28. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion → mx_bluesky-1.4.3/src/mx_bluesky/common}/external_interaction/ispyb/exp_eye_store.py +5 -5
  29. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion → mx_bluesky-1.4.3/src/mx_bluesky/common}/external_interaction/ispyb/ispyb_store.py +20 -18
  30. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion → mx_bluesky-1.4.3/src/mx_bluesky/common}/external_interaction/ispyb/ispyb_utils.py +2 -2
  31. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion → mx_bluesky-1.4.3/src/mx_bluesky/common}/external_interaction/nexus/nexus_utils.py +21 -6
  32. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion → mx_bluesky-1.4.3/src/mx_bluesky/common}/external_interaction/nexus/write_nexus.py +5 -5
  33. mx_bluesky-1.4.3/src/mx_bluesky/common/external_interaction/test_config_server.py +38 -0
  34. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/common/parameters/components.py +9 -7
  35. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/common/parameters/constants.py +1 -0
  36. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion → mx_bluesky-1.4.3/src/mx_bluesky/common}/parameters/gridscan.py +39 -78
  37. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/common/plans/do_fgs.py +4 -4
  38. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion → mx_bluesky-1.4.3/src/mx_bluesky/common/utils}/exceptions.py +15 -1
  39. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/common/utils/log.py +17 -7
  40. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/__main__.py +15 -14
  41. mx_bluesky-1.4.3/src/mx_bluesky/hyperion/device_setup_plans/check_beamstop.py +27 -0
  42. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +13 -6
  43. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/device_setup_plans/manipulate_sample.py +1 -1
  44. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/device_setup_plans/position_detector.py +1 -1
  45. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/device_setup_plans/read_hardware_for_setup.py +3 -3
  46. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py +21 -4
  47. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +62 -36
  48. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/device_setup_plans/smargon.py +1 -1
  49. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/device_setup_plans/utils.py +4 -0
  50. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/device_setup_plans/xbpm_feedback.py +8 -8
  51. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/experiment_plans/change_aperture_then_move_plan.py +28 -17
  52. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/experiment_plans/common/xrc_result.py +10 -1
  53. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/experiment_plans/experiment_registry.py +9 -9
  54. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +39 -49
  55. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py +22 -23
  56. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +4 -11
  57. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py +3 -3
  58. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +6 -14
  59. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +12 -11
  60. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +2 -2
  61. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +9 -4
  62. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +10 -11
  63. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +33 -14
  64. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +2 -2
  65. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +28 -21
  66. mx_bluesky-1.4.3/src/mx_bluesky/hyperion/external_interaction/callbacks/common/callback_util.py +80 -0
  67. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py +22 -15
  68. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +25 -24
  69. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +1 -1
  70. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +13 -9
  71. mx_bluesky-1.4.3/src/mx_bluesky/hyperion/external_interaction/callbacks/sample_handling/sample_handling_callback.py +50 -0
  72. mx_bluesky-1.4.3/src/mx_bluesky/hyperion/external_interaction/config_server.py +32 -0
  73. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/parameters/components.py +3 -2
  74. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/parameters/constants.py +1 -0
  75. mx_bluesky-1.4.3/src/mx_bluesky/hyperion/parameters/gridscan.py +149 -0
  76. mx_bluesky-1.4.3/src/mx_bluesky/hyperion/parameters/load_centre_collect.py +100 -0
  77. mx_bluesky-1.4.3/src/mx_bluesky/hyperion/parameters/robot_load.py +40 -0
  78. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/parameters/rotation.py +28 -3
  79. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/utils/context.py +1 -1
  80. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/utils/validation.py +4 -2
  81. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky.egg-info/PKG-INFO +6 -6
  82. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky.egg-info/SOURCES.txt +52 -44
  83. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky.egg-info/requires.txt +4 -4
  84. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/conftest.py +530 -31
  85. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/system_tests/conftest.py +4 -0
  86. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/system_tests/hyperion/experiment_plans/test_fgs_plan.py +27 -39
  87. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/system_tests/hyperion/experiment_plans/test_plan_system.py +2 -2
  88. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/system_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +5 -4
  89. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/system_tests/hyperion/external_interaction/conftest.py +15 -14
  90. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/system_tests/hyperion/external_interaction/test_exp_eye_dev.py +1 -1
  91. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/system_tests/hyperion/external_interaction/test_ispyb_dev_connection.py +41 -34
  92. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/system_tests/hyperion/external_interaction/test_load_centre_collect_full_plan.py +53 -15
  93. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/system_tests/hyperion/external_interaction/test_nexgen.py +11 -11
  94. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/system_tests/hyperion/external_interaction/test_zocalo_system.py +6 -6
  95. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/system_tests/hyperion/test_aperturescatterguard_system.py +14 -4
  96. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/system_tests/hyperion/test_device_setups_and_cleanups.py +28 -12
  97. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/parameter_json_files/example_load_centre_collect_params.json +1 -1
  98. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json +4 -5
  99. mx_bluesky-1.4.3/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json +51 -0
  100. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +2 -2
  101. mx_bluesky-1.4.3/tests/test_data/test_daq_configuration/lookup/test_det_dist_converter.txt +7 -0
  102. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/conftest.py +13 -3
  103. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/extruder/test_extruder_collect.py +53 -47
  104. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/fixed_target/conftest.py +10 -1
  105. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_manager.py +8 -8
  106. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_ft_collect.py +26 -25
  107. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/parameters/test_parameter_model.py +1 -1
  108. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_beamline.py +37 -6
  109. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_detector.py +2 -2
  110. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_zebra_plans.py +26 -24
  111. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/test_dcid.py +4 -1
  112. {mx_bluesky-1.4.2/tests/unit_tests/hyperion → mx_bluesky-1.4.3/tests/unit_tests/common}/external_interaction/callbacks/common/test_abstract_event.py +1 -1
  113. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction → mx_bluesky-1.4.3/tests/unit_tests/common/external_interaction/callbacks}/ispyb/conftest.py +6 -6
  114. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction → mx_bluesky-1.4.3/tests/unit_tests/common/external_interaction/callbacks}/ispyb/test_expeye_interaction.py +12 -12
  115. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction → mx_bluesky-1.4.3/tests/unit_tests/common/external_interaction/callbacks}/ispyb/test_gridscan_ispyb_store_3d.py +17 -18
  116. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction → mx_bluesky-1.4.3/tests/unit_tests/common/external_interaction/callbacks}/ispyb/test_rotation_ispyb_store.py +11 -11
  117. {mx_bluesky-1.4.2/tests/unit_tests/hyperion → mx_bluesky-1.4.3/tests/unit_tests/common}/external_interaction/callbacks/test_plan_reactive_callback.py +5 -2
  118. {mx_bluesky-1.4.2/tests/unit_tests/hyperion → mx_bluesky-1.4.3/tests/unit_tests/common}/external_interaction/callbacks/test_zocalo_handler.py +11 -11
  119. mx_bluesky-1.4.3/tests/unit_tests/common/external_interaction/conftest.py +52 -0
  120. mx_bluesky-1.4.3/tests/unit_tests/common/external_interaction/nexus/test_nexus_utils.py +45 -0
  121. {mx_bluesky-1.4.2/tests/unit_tests/hyperion → mx_bluesky-1.4.3/tests/unit_tests/common}/external_interaction/test_ispyb_utils.py +2 -2
  122. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.4.3/tests/unit_tests/common/external_interaction}/xray_centre/test_ispyb_callback.py +31 -16
  123. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.4.3/tests/unit_tests/common/external_interaction}/xray_centre/test_ispyb_handler.py +34 -17
  124. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.4.3/tests/unit_tests/common/external_interaction}/xray_centre/test_ispyb_mapping.py +25 -28
  125. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.4.3/tests/unit_tests/common/external_interaction}/xray_centre/test_nexus_handler.py +22 -11
  126. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/common/utils/test_log.py +21 -19
  127. mx_bluesky-1.4.3/tests/unit_tests/hyperion/conftest.py +23 -0
  128. mx_bluesky-1.4.3/tests/unit_tests/hyperion/device_setup_plans/test_check_beamstop.py +24 -0
  129. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py +11 -11
  130. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/device_setup_plans/test_setup_panda.py +15 -10
  131. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/device_setup_plans/test_utils.py +6 -6
  132. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/device_setup_plans/test_zebra_setup.py +38 -30
  133. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/conftest.py +28 -20
  134. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/test_change_aperture_then_move_plan.py +2 -2
  135. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/test_flyscan_xray_centre_plan.py +81 -71
  136. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/test_grid_detect_then_xray_centre_plan.py +18 -59
  137. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/test_grid_detection_plan.py +40 -27
  138. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py +135 -6
  139. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/test_multi_rotation_scan_plan.py +17 -9
  140. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/test_optimise_attenuation_plan.py +1 -1
  141. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py +21 -3
  142. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/test_pin_tip_centring.py +8 -16
  143. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_and_change_energy.py +44 -7
  144. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_then_centre.py +30 -4
  145. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/test_rotation_scan_plan.py +131 -18
  146. mx_bluesky-1.4.3/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +12 -0
  147. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/external_interaction/callbacks/robot_load/test_robot_load_ispyb_callback.py +1 -1
  148. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py +19 -19
  149. mx_bluesky-1.4.3/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/__init__.py +0 -0
  150. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/test_sample_handling_callback.py +14 -13
  151. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +6 -6
  152. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/external_interaction/callbacks/test_rotation_callbacks.py +12 -12
  153. mx_bluesky-1.4.3/tests/unit_tests/hyperion/external_interaction/conftest.py +53 -0
  154. mx_bluesky-1.4.3/tests/unit_tests/hyperion/external_interaction/nexus/__init__.py +0 -0
  155. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/external_interaction/nexus/test_write_nexus.py +56 -13
  156. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/external_interaction/test_write_rotation_nexus.py +37 -30
  157. mx_bluesky-1.4.3/tests/unit_tests/hyperion/parameters/__init__.py +0 -0
  158. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/parameters/test_parameter_model.py +76 -17
  159. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/test_exceptions.py +4 -1
  160. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/test_main_system.py +9 -9
  161. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/test_utils.py +1 -1
  162. mx_bluesky-1.4.3/tests/unit_tests/hyperion/utils/__init__.py +0 -0
  163. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/deploy/deploy_mx_bluesky.py +55 -1
  164. mx_bluesky-1.4.3/utility_scripts/generate_plantuml.py +95 -0
  165. mx_bluesky-1.4.2/docs/developer/hyperion/reference/param_hierarchy.puml +0 -86
  166. mx_bluesky-1.4.2/src/mx_bluesky/common/parameters/gridscan.py +0 -94
  167. mx_bluesky-1.4.2/src/mx_bluesky/common/parameters/robot_load.py +0 -16
  168. mx_bluesky-1.4.2/src/mx_bluesky/hyperion/external_interaction/callbacks/common/callback_util.py +0 -69
  169. mx_bluesky-1.4.2/src/mx_bluesky/hyperion/external_interaction/callbacks/sample_handling/sample_handling_callback.py +0 -84
  170. mx_bluesky-1.4.2/src/mx_bluesky/hyperion/external_interaction/config_server.py +0 -18
  171. mx_bluesky-1.4.2/src/mx_bluesky/hyperion/external_interaction/exceptions.py +0 -4
  172. mx_bluesky-1.4.2/src/mx_bluesky/hyperion/log.py +0 -15
  173. mx_bluesky-1.4.2/src/mx_bluesky/hyperion/parameters/load_centre_collect.py +0 -55
  174. mx_bluesky-1.4.2/tests/unit_tests/hyperion/conftest.py +0 -84
  175. mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +0 -272
  176. mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction/callbacks/xray_centre/conftest.py +0 -60
  177. mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction/conftest.py +0 -218
  178. mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction/nexus/test_nexus_utils.py +0 -17
  179. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.copier-answers.yml +0 -0
  180. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.coveragerc +0 -0
  181. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.devcontainer/Dockerfile +0 -0
  182. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.devcontainer/devcontainer.json +0 -0
  183. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.dockerignore +0 -0
  184. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/CONTRIBUTING.md +0 -0
  185. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  186. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/ISSUE_TEMPLATE/issue.md +0 -0
  187. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
  188. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/actions/install_requirements/action.yml +0 -0
  189. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/actions/verify-nexus/Dockerfile +0 -0
  190. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/actions/verify-nexus/action.yml +0 -0
  191. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/actions/verify-nexus/entrypoint.sh +0 -0
  192. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/dependabot.yml +0 -0
  193. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/pages/index.html +0 -0
  194. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/pages/make_switcher.py +0 -0
  195. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/workflows/_check.yml +0 -0
  196. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/workflows/_container.yml +0 -0
  197. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/workflows/_dist.yml +0 -0
  198. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/workflows/_docs.yml +0 -0
  199. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/workflows/_pypi.yml +0 -0
  200. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/workflows/_release.yml +0 -0
  201. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/workflows/_test.yml +0 -0
  202. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/workflows/_tox.yml +0 -0
  203. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/workflows/ci.yml +0 -0
  204. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.github/workflows/periodic.yml +0 -0
  205. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.pre-commit-config.yaml +0 -0
  206. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.vscode/extensions.json +0 -0
  207. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.vscode/launch.json +0 -0
  208. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.vscode/mx-bluesky.code-workspace +0 -0
  209. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.vscode/mxb-with-core-dependencies.code-workspace +0 -0
  210. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.vscode/settings.json +0 -0
  211. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/.vscode/tasks.json +0 -0
  212. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/Dockerfile +0 -0
  213. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/Dockerfile.release +0 -0
  214. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/LICENSE +0 -0
  215. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/README.rst +0 -0
  216. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/catalog-info.yaml +0 -0
  217. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/codecov.yml +0 -0
  218. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/conftest.py +0 -0
  219. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/_api.rst +0 -0
  220. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/_templates/custom-module-template.rst +0 -0
  221. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/general/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  222. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/general/explanations/decisions/0002-repository-structure.rst +0 -0
  223. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/general/explanations/decisions/0003-python-version-support.rst +0 -0
  224. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/general/explanations/decisions.rst +0 -0
  225. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/general/how-to/contribute.rst +0 -0
  226. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/general/how-to/create-a-release.rst +0 -0
  227. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/general/how-to/deploy-a-release.rst +0 -0
  228. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/general/how-to/dev-ops/build-docs.rst +0 -0
  229. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/general/how-to/dev-ops/dev-ops.rst +0 -0
  230. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/general/how-to/dev-ops/lint.rst +0 -0
  231. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/general/how-to/dev-ops/run-tests.rst +0 -0
  232. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/general/how-to/dev-ops/update-tools.rst +0 -0
  233. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/general/how-to/get-started.rst +0 -0
  234. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/general/index.rst +0 -0
  235. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/general/reference/standards.rst +0 -0
  236. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/general/tutorials/profile-tests.rst +0 -0
  237. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/hyperion/deploying-hyperion.rst +0 -0
  238. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/hyperion/index.rst +0 -0
  239. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/hyperion/reference/readme.md +0 -0
  240. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/index.rst +0 -0
  241. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/murko-integration/explanations/architecture.rst +0 -0
  242. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/murko-integration/images/murko_setup.drawio.png +0 -0
  243. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/murko-integration/index.rst +0 -0
  244. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/serial-crystallography-on-i24/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  245. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/serial-crystallography-on-i24/explanations/decisions.rst +0 -0
  246. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/serial-crystallography-on-i24/how-to/environment-setup.rst +0 -0
  247. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/serial-crystallography-on-i24/how-to/run-a-collection.rst +0 -0
  248. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/serial-crystallography-on-i24/how-to/stage-pmac-moves.rst +0 -0
  249. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/serial-crystallography-on-i24/index.rst +0 -0
  250. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/developer/serial-crystallography-on-i24/project-planning/roadmap.rst +0 -0
  251. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/images/dls-favicon.ico +0 -0
  252. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/images/dls-logo.svg +0 -0
  253. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/docs/index.rst +0 -0
  254. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/helmchart/Chart.yaml +0 -0
  255. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/helmchart/templates/deployment.yaml +0 -0
  256. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/helmchart/templates/ingress.yaml +0 -0
  257. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/helmchart/templates/service.yaml +0 -0
  258. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/helmchart/values.yaml +0 -0
  259. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/add_assignee_when_pr_opened.yml +0 -0
  260. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/assigned_issues_to_in_progress.yml +0 -0
  261. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/code.yml +0 -0
  262. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/container_tests.sh +0 -0
  263. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/get_issue_from_pr.yml +0 -0
  264. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/get_project_data_and_move_column.yml +0 -0
  265. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/linkcheck.yml +0 -0
  266. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/open_prs_to_review.yml +0 -0
  267. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/opened_issues_to_backlog.yml +0 -0
  268. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/pin_versions.py +0 -0
  269. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/pre_release_workflow.yml +0 -0
  270. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/rework_prs_to_in_progress.yml +0 -0
  271. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/test_data/pip_freeze.txt +0 -0
  272. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/test_data/setup.cfg +0 -0
  273. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/test_data/setup.cfg.pinned +0 -0
  274. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/test_data/setup.cfg.unpinned +0 -0
  275. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/hyperion_other/workflows/test_pin_versions.py +0 -0
  276. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/run_hyperion.sh +0 -0
  277. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/run_hyperion_in_podman.sh +0 -0
  278. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/setup.cfg +0 -0
  279. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/__init__.py +0 -0
  280. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/__main__.py +0 -0
  281. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/__init__.py +0 -0
  282. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i04/__init__.py +0 -0
  283. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i04/callbacks/murko_callback.py +0 -0
  284. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py +0 -0
  285. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i04/thawing_plan.py +0 -0
  286. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/__init__.py +0 -0
  287. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/__init__.py +0 -0
  288. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/blueapi_config.yaml +0 -0
  289. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl +0 -0
  290. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +0 -0
  291. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -0
  292. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/extruder/__init__.py +0 -0
  293. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +0 -0
  294. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl +0 -0
  295. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +0 -0
  296. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -0
  297. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +0 -0
  298. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -0
  299. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -0
  300. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -0
  301. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -0
  302. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +0 -0
  303. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short1-laser.png +0 -0
  304. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short2-laser.png +0 -0
  305. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py +0 -0
  306. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py +0 -0
  307. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +0 -0
  308. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py +0 -0
  309. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/log.py +0 -0
  310. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json +0 -0
  311. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt +0 -0
  312. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +0 -0
  313. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
  314. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/parameters/utils.py +0 -0
  315. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/run_extruder.sh +0 -0
  316. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/run_fixed_target.sh +0 -0
  317. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/run_serial.py +0 -0
  318. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/run_ssx.sh +0 -0
  319. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/set_visit_directory.sh +0 -0
  320. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
  321. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py +0 -0
  322. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py +0 -0
  323. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py +0 -0
  324. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py +0 -0
  325. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/start_blueapi.sh +0 -0
  326. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/beamlines/i24/serial/write_nexus.py +0 -0
  327. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/common/__init__.py +0 -0
  328. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/common/device_setup_plans/read_hardware_for_setup.py +0 -0
  329. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion/device_setup_plans → mx_bluesky-1.4.3/src/mx_bluesky/common/external_interaction}/__init__.py +0 -0
  330. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion → mx_bluesky-1.4.3/src/mx_bluesky/common}/external_interaction/callbacks/common/__init__.py +0 -0
  331. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion → mx_bluesky-1.4.3/src/mx_bluesky/common}/external_interaction/callbacks/common/abstract_event.py +0 -0
  332. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion/external_interaction/callbacks → mx_bluesky-1.4.3/src/mx_bluesky/common/external_interaction/callbacks/common}/log_uid_tag_callback.py +0 -0
  333. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion/external_interaction/callbacks → mx_bluesky-1.4.3/src/mx_bluesky/common/external_interaction/callbacks/common}/plan_reactive_callback.py +0 -0
  334. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation → mx_bluesky-1.4.3/src/mx_bluesky/common/external_interaction/callbacks/xray_centre}/__init__.py +0 -0
  335. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion/external_interaction/callbacks/sample_handling → mx_bluesky-1.4.3/src/mx_bluesky/common/external_interaction/ispyb}/__init__.py +0 -0
  336. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion/external_interaction/callbacks/xray_centre → mx_bluesky-1.4.3/src/mx_bluesky/common/external_interaction/nexus}/__init__.py +0 -0
  337. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/common/plans/__init__.py +0 -0
  338. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/common/utils/tracing.py +0 -0
  339. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion → mx_bluesky-1.4.3/src/mx_bluesky/common}/utils/utils.py +0 -0
  340. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/__init__.py +0 -0
  341. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion/external_interaction/ispyb → mx_bluesky-1.4.3/src/mx_bluesky/hyperion/device_setup_plans}/__init__.py +0 -0
  342. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/device_setup_plans/setup_oav.py +0 -0
  343. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/experiment_plans/__init__.py +0 -0
  344. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py +0 -0
  345. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/external_interaction/__init__.py +0 -0
  346. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/external_interaction/callbacks/__init__.py +0 -0
  347. {mx_bluesky-1.4.2/src/mx_bluesky/hyperion/external_interaction/nexus → mx_bluesky-1.4.3/src/mx_bluesky/hyperion/external_interaction/callbacks/common}/__init__.py +0 -0
  348. {mx_bluesky-1.4.2/tests → mx_bluesky-1.4.3/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
  349. {mx_bluesky-1.4.2/tests/system_tests → mx_bluesky-1.4.3/src/mx_bluesky/hyperion/external_interaction/callbacks/sample_handling}/__init__.py +0 -0
  350. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/parameters/__init__.py +0 -0
  351. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/parameters/cli.py +0 -0
  352. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml +0 -0
  353. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky/jupyter_example.ipynb +0 -0
  354. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky.egg-info/dependency_links.txt +0 -0
  355. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky.egg-info/entry_points.txt +0 -0
  356. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/src/mx_bluesky.egg-info/top_level.txt +0 -0
  357. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/start_jupyter.sh +0 -0
  358. {mx_bluesky-1.4.2/tests/system_tests/hyperion → mx_bluesky-1.4.3/tests}/__init__.py +0 -0
  359. {mx_bluesky-1.4.2/tests/system_tests/hyperion/experiment_plans → mx_bluesky-1.4.3/tests/system_tests}/__init__.py +0 -0
  360. {mx_bluesky-1.4.2/tests/system_tests/hyperion/external_interaction → mx_bluesky-1.4.3/tests/system_tests/hyperion}/__init__.py +0 -0
  361. {mx_bluesky-1.4.2/tests/system_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.4.3/tests/system_tests/hyperion/experiment_plans}/__init__.py +0 -0
  362. {mx_bluesky-1.4.2/tests/unit_tests → mx_bluesky-1.4.3/tests/system_tests/hyperion/external_interaction}/__init__.py +0 -0
  363. {mx_bluesky-1.4.2/tests/unit_tests/beamlines → mx_bluesky-1.4.3/tests/system_tests/hyperion/external_interaction/callbacks}/__init__.py +0 -0
  364. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/system_tests/hyperion/external_interaction/test_config_service.py +0 -0
  365. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/nexus_files/README.md +0 -0
  366. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/nexus_files/fake_data.h5 +0 -0
  367. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/nexus_files/rotation/ins_8_5.nxs +0 -0
  368. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/nexus_files/rotation/ins_8_5_expected_output.txt +0 -0
  369. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/nexus_files/rotation/ins_8_5_meta.h5.gz +0 -0
  370. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5.nxs +0 -0
  371. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_expected_output.txt +0 -0
  372. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_meta.h5.gz +0 -0
  373. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json +0 -0
  374. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/parameter_json_files/good_test_parameters.json +0 -0
  375. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json +0 -0
  376. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json +0 -0
  377. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/parameter_json_files/good_test_robot_load_params.json +0 -0
  378. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json +0 -0
  379. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters_nomove.json +0 -0
  380. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json +0 -0
  381. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/parameter_json_files/load_centre_collect_params_top_n_by_max_count.json +0 -0
  382. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json +0 -0
  383. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/parameter_json_files/test_oav_snapshot_params.json +0 -0
  384. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/scratch/README +0 -0
  385. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/test_OAVCentring.json +0 -0
  386. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/test_beamline_dcm_pitch_converter.txt +0 -0
  387. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  388. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/test_beamline_parameters.txt +0 -0
  389. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/test_beamline_vfm_lat_converter.txt +0 -0
  390. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/test_config.cfg +0 -0
  391. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/test_daq_configuration/domain/beamlineParameters +0 -0
  392. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  393. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  394. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/test_det_dist_converter.txt +0 -0
  395. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/test_display.configuration +0 -0
  396. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/test_jCameraManZoomLevels.xml +0 -0
  397. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/test_lookup_table.txt +0 -0
  398. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/test_data/test_mirror_focus.json +0 -0
  399. {mx_bluesky-1.4.2/tests/unit_tests/beamlines/i24/serial → mx_bluesky-1.4.3/tests/unit_tests}/__init__.py +0 -0
  400. {mx_bluesky-1.4.2/tests/unit_tests/beamlines/i24/serial/extruder → mx_bluesky-1.4.3/tests/unit_tests/beamlines}/__init__.py +0 -0
  401. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i04/callbacks/test_murko_callback.py +0 -0
  402. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i04/test_redis_to_murko_forwarder.py +0 -0
  403. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i04/test_thawing.py +0 -0
  404. {mx_bluesky-1.4.2/tests/unit_tests/beamlines/i24/serial/fixed_target → mx_bluesky-1.4.3/tests/unit_tests/beamlines/i24/serial}/__init__.py +0 -0
  405. {mx_bluesky-1.4.2/tests/unit_tests/beamlines/i24/serial/setup_beamline → mx_bluesky-1.4.3/tests/unit_tests/beamlines/i24/serial/extruder}/__init__.py +0 -0
  406. {mx_bluesky-1.4.2/tests/unit_tests/common → mx_bluesky-1.4.3/tests/unit_tests/beamlines/i24/serial/fixed_target}/__init__.py +0 -0
  407. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_startup.py +0 -0
  408. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_moveonclick.py +0 -0
  409. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/parameters/test_utils.py +0 -0
  410. {mx_bluesky-1.4.2/tests/unit_tests/common/utils → mx_bluesky-1.4.3/tests/unit_tests/beamlines/i24/serial/setup_beamline}/__init__.py +0 -0
  411. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_pv_abstract.py +0 -0
  412. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/test_log.py +0 -0
  413. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/test_run_serial.py +0 -0
  414. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/beamlines/i24/serial/test_write_nexus.py +0 -0
  415. {mx_bluesky-1.4.2/tests/unit_tests/hyperion → mx_bluesky-1.4.3/tests/unit_tests/common}/__init__.py +0 -0
  416. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/common/device_setup_plans/test_read_hardware_for_setup.py +0 -0
  417. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/device_setup_plans → mx_bluesky-1.4.3/tests/unit_tests/common/external_interaction}/__init__.py +0 -0
  418. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/experiment_plans → mx_bluesky-1.4.3/tests/unit_tests/common/external_interaction/callbacks}/__init__.py +0 -0
  419. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction → mx_bluesky-1.4.3/tests/unit_tests/common/external_interaction/callbacks/common}/__init__.py +0 -0
  420. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.4.3/tests/unit_tests/common/external_interaction/callbacks/ispyb}/__init__.py +0 -0
  421. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.4.3/tests/unit_tests/common/external_interaction}/xray_centre/__init__.py +0 -0
  422. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/common/plan_stubs/test_do_fgs.py +0 -0
  423. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction/callbacks/common → mx_bluesky-1.4.3/tests/unit_tests/common/utils}/__init__.py +0 -0
  424. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/conftest.py +0 -0
  425. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction/callbacks/rotation → mx_bluesky-1.4.3/tests/unit_tests/hyperion}/__init__.py +0 -0
  426. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling → mx_bluesky-1.4.3/tests/unit_tests/hyperion/device_setup_plans}/__init__.py +0 -0
  427. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py +0 -0
  428. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/device_setup_plans/test_setup_oav.py +0 -0
  429. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/device_setup_plans/test_xbpm_feedback.py +0 -0
  430. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction/ispyb → mx_bluesky-1.4.3/tests/unit_tests/hyperion/experiment_plans}/__init__.py +0 -0
  431. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/common/test_flyscan_result.py +0 -0
  432. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/test_experiment_registry.py +0 -0
  433. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/test_oav_snapshot_plan.py +0 -0
  434. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/experiment_plans/test_set_energy_plan.py +0 -0
  435. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/external_interaction/nexus → mx_bluesky-1.4.3/tests/unit_tests/hyperion/external_interaction}/__init__.py +0 -0
  436. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/parameters → mx_bluesky-1.4.3/tests/unit_tests/hyperion/external_interaction/callbacks}/__init__.py +0 -0
  437. {mx_bluesky-1.4.2/tests/unit_tests/hyperion/utils → mx_bluesky-1.4.3/tests/unit_tests/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
  438. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/external_interaction/nexus/test_compare_nexus_to_gda_exhaustively.py +0 -0
  439. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000001.h5 +0 -0
  440. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000002.h5 +0 -0
  441. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000003.h5 +0 -0
  442. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/utils/test_callback_sim.py +0 -0
  443. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/hyperion/utils/test_context.py +0 -0
  444. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/tests/unit_tests/test_cli.py +0 -0
  445. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/beam_off_trickery.sh +0 -0
  446. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/build_docker_image.sh +0 -0
  447. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/build_imginfo.sh +0 -0
  448. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/deploy/create_venv.py +0 -0
  449. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/deploy/deploy_edm_for_ssx.sh +0 -0
  450. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/deploy/deploy_hyperion_to_k8s.sh +0 -0
  451. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/deploy/test_deploy.py +0 -0
  452. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/dev_jaeger_container.sh +0 -0
  453. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/dls_dev_env.sh +0 -0
  454. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/docker/entrypoint.sh +0 -0
  455. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/docker/healthcheck.sh +0 -0
  456. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/docker/i03-compose.yml +0 -0
  457. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/graylog/Dockerfile +0 -0
  458. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/graylog/tcp_input.json +0 -0
  459. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/procserv_ioc_start.sh +0 -0
  460. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/run_imginfo.sh +0 -0
  461. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/setup_graylog.sh +0 -0
  462. {mx_bluesky-1.4.2 → mx_bluesky-1.4.3}/utility_scripts/strip_metafile.py +0 -0
@@ -172,3 +172,6 @@ edm_serial/
172
172
  **/parameters/fixed_target/*/*.map
173
173
  # idea project files
174
174
  .idea/
175
+
176
+ # Generated PlantUML diagrams
177
+ docs/developer/hyperion/reference/param_hierarchy.puml
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: mx-bluesky
3
- Version: 1.4.2
3
+ Version: 1.4.3
4
4
  Summary: Bluesky tools for MX Beamlines at DLS
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -226,7 +226,7 @@ Requires-Dist: opencv-python
226
226
  Requires-Dist: opentelemetry-distro
227
227
  Requires-Dist: opentelemetry-exporter-otlp
228
228
  Requires-Dist: pydantic
229
- Requires-Dist: pydantic-extra-types
229
+ Requires-Dist: pydantic-extra-types>=2.10.1
230
230
  Requires-Dist: pyepics
231
231
  Requires-Dist: pyzmq
232
232
  Requires-Dist: requests
@@ -238,8 +238,8 @@ Requires-Dist: blueapi>=0.5.0
238
238
  Requires-Dist: daq-config-server>=0.1.1
239
239
  Requires-Dist: ophyd==1.9.0
240
240
  Requires-Dist: ophyd-async>=0.8a5
241
- Requires-Dist: bluesky>=1.13.0a4
242
- Requires-Dist: dls-dodal==1.36.3
241
+ Requires-Dist: bluesky>=1.13
242
+ Requires-Dist: dls-dodal==1.38.0
243
243
  Provides-Extra: dev
244
244
  Requires-Dist: black; extra == "dev"
245
245
  Requires-Dist: build; extra == "dev"
@@ -250,6 +250,7 @@ Requires-Dist: ipython; extra == "dev"
250
250
  Requires-Dist: mypy; extra == "dev"
251
251
  Requires-Dist: myst-parser; extra == "dev"
252
252
  Requires-Dist: pipdeptree; extra == "dev"
253
+ Requires-Dist: plantweb; extra == "dev"
253
254
  Requires-Dist: pre-commit; extra == "dev"
254
255
  Requires-Dist: pydata-sphinx-theme>=0.12; extra == "dev"
255
256
  Requires-Dist: pyright; extra == "dev"
@@ -260,7 +261,6 @@ Requires-Dist: pytest; extra == "dev"
260
261
  Requires-Dist: ruff; extra == "dev"
261
262
  Requires-Dist: sphinx-autobuild; extra == "dev"
262
263
  Requires-Dist: sphinx-copybutton; extra == "dev"
263
- Requires-Dist: sphinxcontrib-plantuml; extra == "dev"
264
264
  Requires-Dist: sphinx-design; extra == "dev"
265
265
  Requires-Dist: tox-direct; extra == "dev"
266
266
  Requires-Dist: tox; extra == "dev"
@@ -49,6 +49,8 @@ extensions = [
49
49
  "sphinx_design",
50
50
  # For markdown
51
51
  "myst_parser",
52
+ # For plantUML diagrams
53
+ "plantweb.directive",
52
54
  ]
53
55
 
54
56
  myst_enable_extensions = [
@@ -0,0 +1,109 @@
1
+ @startuml
2
+ title Gridscan Parameter Relationships
3
+
4
+ class DiffractionExperiment
5
+ class DiffractionExperimentWithSample
6
+ class GridCommon {
7
+ grid_width_um
8
+ exposure_time_s
9
+ }
10
+ class GridScanWithEdgeDetect {
11
+ box_size_um
12
+ }
13
+ class HyperionGridCommon {
14
+ enable_dev_shm
15
+ }
16
+ class HyperionThreeDGridScan {
17
+ x_step_size_um
18
+ y_step_size_um
19
+ z_step_size_um
20
+ y2_start_um
21
+ z2_start_um
22
+ --
23
+ grid_1_spec
24
+ grid_2_spec
25
+ scan_indices
26
+ scan_spec
27
+ scan_points
28
+ scan_points_first_grid
29
+ scan_points_second_grid
30
+ num_images
31
+ FGS_Params
32
+ panda_FGS_Params
33
+ }
34
+ class MxBlueSkyParameters
35
+ class SpecifiedGrid
36
+ class XyzStarts {
37
+ x_start_um
38
+ y_start_um
39
+ z_start_um
40
+ }
41
+ class OptionalXYZStarts {
42
+ x_start_um
43
+ y_start_um
44
+ z_start_um
45
+ }
46
+ class RotationScanPerSweep
47
+
48
+ MxBlueSkyParameters <|-- DiffractionExperiment
49
+ DiffractionExperiment <|-- DiffractionExperimentWithSample
50
+ DiffractionExperimentWithSample <|-- GridCommon
51
+ GridCommon <|-- GridScanWithEdgeDetect
52
+ GridCommon <|-- HyperionGridCommon
53
+ HyperionGridCommon <|-- HyperionThreeDGridScan
54
+ SpecifiedGrid <|-- HyperionThreeDGridScan
55
+ XyzStarts <|-- SpecifiedGrid
56
+ OptionalXYZStarts <|-- RotationScanPerSweep
57
+ class GridParamUpdate {
58
+ x_start_um
59
+ y_start_um
60
+ y2_start_um
61
+ z_start_um
62
+ z2_start_um
63
+ x_steps
64
+ y_steps
65
+ z_steps
66
+ x_step_size_um
67
+ y_step_size_um
68
+ z_step_size_um
69
+ }
70
+
71
+ class GridDetectionCallback {
72
+ get_grid_parameters() -> GridParamUpdate
73
+ }
74
+
75
+ GridDetectionCallback --> GridParamUpdate : generates from event. Adds 0.5 to get box-centres
76
+ GridParamUpdate --> HyperionThreeDGridScan : combines with GridScanWithEdgeDetect
77
+
78
+ class experiment_plans {
79
+ grid_detect_then_xray_centre()
80
+ flyscan_xray_centre_no_move()
81
+ create_parameters_for_flyscan_xray_centre(GridScanWithEdgeDetect, GridParamUpdate) -> HyperionThreeDGridScan
82
+ }
83
+
84
+ class AbstractExperimentBase
85
+ class AbstractExperimentWithBeamParams
86
+ class GridScanParamsCommon {
87
+ x_steps
88
+ y_steps
89
+ z_steps
90
+ x_step_size_mm
91
+ y_step_size_mm
92
+ z_step_size_mm
93
+ x_start_mm
94
+ y1_start_mm
95
+ y2_start_mm
96
+ z1_start_mm
97
+ z2_start_mm
98
+ }
99
+ class PandAGridScanParams
100
+ class ZebraGridScanParams
101
+
102
+ AbstractExperimentBase <|-- AbstractExperimentWithBeamParams
103
+ AbstractExperimentWithBeamParams <|-- GridScanParamsCommon
104
+ GridScanParamsCommon <|-- PandAGridScanParams
105
+ GridScanParamsCommon <|-- ZebraGridScanParams
106
+
107
+ HyperionThreeDGridScan --> ZebraGridScanParams : generates
108
+ HyperionThreeDGridScan --> PandAGridScanParams : generates
109
+ @enduml
@@ -1,4 +1,4 @@
1
1
  Hyperion Parameter class hierarchy
2
2
  ==================================
3
3
 
4
- TODO: automate including the param hierarchy here
4
+ .. uml:: param_hierarchy.puml
@@ -25,11 +25,11 @@ dependencies = [
25
25
  "matplotlib",
26
26
  "nexgen",
27
27
  "numpy",
28
- "opencv-python", # Needed for I24 ssx moveonclick. To be changed to headless once this is moved to separate ui.
28
+ "opencv-python", # Needed for I24 ssx moveonclick. To be changed to headless once this is moved to separate ui.
29
29
  "opentelemetry-distro",
30
30
  "opentelemetry-exporter-otlp",
31
31
  "pydantic",
32
- "pydantic-extra-types",
32
+ "pydantic-extra-types >= 2.10.1",
33
33
  "pyepics",
34
34
  "pyzmq",
35
35
  "requests",
@@ -45,8 +45,8 @@ dependencies = [
45
45
  "daq-config-server >= 0.1.1",
46
46
  "ophyd == 1.9.0",
47
47
  "ophyd-async >= 0.8a5",
48
- "bluesky >= 1.13.0a4",
49
- "dls-dodal == 1.36.3",
48
+ "bluesky >= 1.13",
49
+ "dls-dodal == 1.38.0",
50
50
  ]
51
51
 
52
52
 
@@ -68,6 +68,7 @@ dev = [
68
68
  "mypy",
69
69
  "myst-parser",
70
70
  "pipdeptree",
71
+ "plantweb",
71
72
  "pre-commit",
72
73
  "pydata-sphinx-theme>=0.12",
73
74
  "pyright",
@@ -78,7 +79,6 @@ dev = [
78
79
  "ruff",
79
80
  "sphinx-autobuild",
80
81
  "sphinx-copybutton",
81
- "sphinxcontrib-plantuml",
82
82
  "sphinx-design",
83
83
  "tox-direct",
84
84
  "tox",
@@ -180,6 +180,9 @@ commands =
180
180
  type-checking: pyright src tests {posargs}
181
181
  tests: pytest --cov=mx_bluesky --cov-report term --cov-report xml:cov.xml {posargs}
182
182
  docs: sphinx-{posargs:build -EW --keep-going} -T docs build/html
183
+ commands_pre =
184
+ docs: /usr/bin/bash -c "{toxinidir}/utility_scripts/generate_plantuml.py > \
185
+ docs/developer/hyperion/reference/param_hierarchy.puml"
183
186
  """
184
187
 
185
188
  [tool.ruff]
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.4.2'
16
- __version_tuple__ = version_tuple = (1, 4, 2)
15
+ __version__ = version = '1.4.3'
16
+ __version_tuple__ = version_tuple = (1, 4, 3)
@@ -4,7 +4,6 @@ import math
4
4
  import os
5
5
  import subprocess
6
6
  from functools import lru_cache
7
- from typing import Literal
8
7
 
9
8
  import bluesky.plan_stubs as bps
10
9
  import requests
@@ -18,6 +17,7 @@ from mx_bluesky.beamlines.i24.serial.fixed_target.ft_utils import PumpProbeSetti
18
17
  from mx_bluesky.beamlines.i24.serial.log import SSX_LOGGER
19
18
  from mx_bluesky.beamlines.i24.serial.parameters import (
20
19
  BeamSettings,
20
+ DetectorName,
21
21
  ExtruderParameters,
22
22
  FixedTargetParameters,
23
23
  )
@@ -50,7 +50,7 @@ def read_beam_info_from_hardware(
50
50
  dcm: DCM,
51
51
  mirrors: FocusMirrorsMode,
52
52
  beam_center: DetectorBeamCenter,
53
- detector_name: Literal["eiger", "pilatus"],
53
+ detector_name: DetectorName,
54
54
  ):
55
55
  """ Read the beam information from hardware.
56
56
 
@@ -59,7 +59,7 @@ def read_beam_info_from_hardware(
59
59
  mirrors (FocusMirrorMode): The device describing the focus mirror mode settings.
60
60
  beam_center (DetectorBeamCenter): A device to set and read the beam center on \
61
61
  the detector.
62
- detector_name (Literal["eiger", "pilatus"]): The detector currently in use.
62
+ detector_name (DetectorName): The detector currently in use.
63
63
 
64
64
  Returns:
65
65
  BeamSettings parameter model.
@@ -16,7 +16,7 @@ import bluesky.plan_stubs as bps
16
16
  import bluesky.preprocessors as bpp
17
17
  from bluesky.utils import MsgGenerator
18
18
  from dodal.common import inject
19
- from dodal.devices.attenuator import ReadOnlyAttenuator
19
+ from dodal.devices.attenuator.attenuator import ReadOnlyAttenuator
20
20
  from dodal.devices.hutch_shutter import HutchShutter, ShutterDemand
21
21
  from dodal.devices.i24.aperture import Aperture
22
22
  from dodal.devices.i24.beam_center import DetectorBeamCenter
@@ -25,7 +25,7 @@ from dodal.devices.i24.dcm import DCM
25
25
  from dodal.devices.i24.dual_backlight import DualBacklight
26
26
  from dodal.devices.i24.focus_mirrors import FocusMirrorsMode
27
27
  from dodal.devices.i24.i24_detector_motion import DetectorMotion
28
- from dodal.devices.zebra import DISCONNECT, SOFT_IN3, Zebra
28
+ from dodal.devices.zebra.zebra import Zebra
29
29
 
30
30
  from mx_bluesky.beamlines.i24.serial.dcid import (
31
31
  DCID,
@@ -38,6 +38,7 @@ from mx_bluesky.beamlines.i24.serial.log import (
38
38
  log_on_entry,
39
39
  )
40
40
  from mx_bluesky.beamlines.i24.serial.parameters import ExtruderParameters
41
+ from mx_bluesky.beamlines.i24.serial.parameters.constants import BEAM_CENTER_LUT_FILES
41
42
  from mx_bluesky.beamlines.i24.serial.setup_beamline import Pilatus, caget, caput, pv
42
43
  from mx_bluesky.beamlines.i24.serial.setup_beamline import setup_beamline as sup
43
44
  from mx_bluesky.beamlines.i24.serial.setup_beamline.setup_detector import (
@@ -46,8 +47,6 @@ from mx_bluesky.beamlines.i24.serial.setup_beamline.setup_detector import (
46
47
  )
47
48
  from mx_bluesky.beamlines.i24.serial.setup_beamline.setup_zebra_plans import (
48
49
  GATE_START,
49
- TTL_EIGER,
50
- TTL_PILATUS,
51
50
  arm_zebra,
52
51
  disarm_zebra,
53
52
  open_fast_shutter,
@@ -115,13 +114,22 @@ def laser_check(
115
114
 
116
115
  det_type = yield from get_detector_type(detector_stage)
117
116
 
118
- LASER_TTL = TTL_EIGER if isinstance(det_type, Pilatus) else TTL_PILATUS
117
+ LASER_TTL = (
118
+ zebra.mapping.outputs.TTL_EIGER
119
+ if isinstance(det_type, Pilatus)
120
+ else zebra.mapping.outputs.TTL_PILATUS
121
+ )
122
+
119
123
  if mode == "laseron":
120
- yield from bps.abs_set(zebra.output.out_pvs[LASER_TTL], SOFT_IN3)
124
+ yield from bps.abs_set(
125
+ zebra.output.out_pvs[LASER_TTL], zebra.mapping.sources.SOFT_IN3
126
+ )
121
127
  yield from set_shutter_mode(zebra, "auto")
122
128
 
123
129
  if mode == "laseroff":
124
- yield from bps.abs_set(zebra.output.out_pvs[LASER_TTL], DISCONNECT)
130
+ yield from bps.abs_set(
131
+ zebra.output.out_pvs[LASER_TTL], zebra.mapping.sources.DISCONNECT
132
+ )
125
133
  yield from set_shutter_mode(zebra, "manual")
126
134
 
127
135
 
@@ -206,8 +214,14 @@ def main_extruder_plan(
206
214
  dcid: DCID,
207
215
  start_time: datetime,
208
216
  ) -> MsgGenerator:
217
+ beam_center_pixels = sup.compute_beam_center_position_from_lut(
218
+ BEAM_CENTER_LUT_FILES[parameters.detector_name],
219
+ parameters.detector_distance_mm,
220
+ parameters.detector_size_constants,
221
+ )
209
222
  yield from sup.set_detector_beam_center_plan(
210
- beam_center_device, parameters.detector_name
223
+ beam_center_device,
224
+ beam_center_pixels,
211
225
  )
212
226
 
213
227
  # Setting up the beamline
@@ -281,7 +295,6 @@ def main_extruder_plan(
281
295
  SSX_LOGGER.info("Using Eiger detector")
282
296
 
283
297
  SSX_LOGGER.debug(f"Creating the directory for the collection in {filepath}.")
284
- Path(filepath).mkdir(parents=True, exist_ok=True)
285
298
 
286
299
  caput(pv.eiger_seqID, int(caget(pv.eiger_seqID)) + 1)
287
300
  SSX_LOGGER.info(f"Eiger quickshot setup: filepath {filepath}")
@@ -488,6 +501,8 @@ def run_extruder_plan(
488
501
  parameters: ExtruderParameters = yield from read_parameters(
489
502
  detector_stage, attenuator
490
503
  )
504
+ # Create collection directory
505
+ parameters.collection_directory.mkdir(parents=True, exist_ok=True)
491
506
 
492
507
  beam_center_device = sup.get_beam_center_device(parameters.detector_name)
493
508
 
@@ -10,7 +10,7 @@ import bluesky.plan_stubs as bps
10
10
  import bluesky.preprocessors as bpp
11
11
  from bluesky.utils import MsgGenerator
12
12
  from dodal.common import inject
13
- from dodal.devices.attenuator import ReadOnlyAttenuator
13
+ from dodal.devices.attenuator.attenuator import ReadOnlyAttenuator
14
14
  from dodal.devices.hutch_shutter import HutchShutter, ShutterDemand
15
15
  from dodal.devices.i24.aperture import Aperture
16
16
  from dodal.devices.i24.beam_center import DetectorBeamCenter
@@ -20,7 +20,7 @@ from dodal.devices.i24.dual_backlight import DualBacklight
20
20
  from dodal.devices.i24.focus_mirrors import FocusMirrorsMode
21
21
  from dodal.devices.i24.i24_detector_motion import DetectorMotion
22
22
  from dodal.devices.i24.pmac import PMAC
23
- from dodal.devices.zebra import Zebra
23
+ from dodal.devices.zebra.zebra import Zebra
24
24
 
25
25
  from mx_bluesky.beamlines.i24.serial.dcid import (
26
26
  DCID,
@@ -38,6 +38,7 @@ from mx_bluesky.beamlines.i24.serial.fixed_target.i24ssx_Chip_Manager_py3v1 impo
38
38
  )
39
39
  from mx_bluesky.beamlines.i24.serial.log import SSX_LOGGER, log_on_entry
40
40
  from mx_bluesky.beamlines.i24.serial.parameters import FixedTargetParameters
41
+ from mx_bluesky.beamlines.i24.serial.parameters.constants import BEAM_CENTER_LUT_FILES
41
42
  from mx_bluesky.beamlines.i24.serial.setup_beamline import caget, cagetstring, caput, pv
42
43
  from mx_bluesky.beamlines.i24.serial.setup_beamline import setup_beamline as sup
43
44
  from mx_bluesky.beamlines.i24.serial.setup_beamline.setup_zebra_plans import (
@@ -410,7 +411,6 @@ def start_i24(
410
411
  SSX_LOGGER.info("Using Eiger detector")
411
412
 
412
413
  SSX_LOGGER.debug(f"Creating the directory for the collection in {filepath}.")
413
- Path(filepath).mkdir(parents=True, exist_ok=True)
414
414
 
415
415
  SSX_LOGGER.info(f"Triggered Eiger setup: filepath {filepath}")
416
416
  SSX_LOGGER.info(f"Triggered Eiger setup: filename {filename}")
@@ -547,8 +547,14 @@ def main_fixed_target_plan(
547
547
  ) -> MsgGenerator:
548
548
  SSX_LOGGER.info("Running a chip collection on I24")
549
549
 
550
+ beam_center_pixels = sup.compute_beam_center_position_from_lut(
551
+ BEAM_CENTER_LUT_FILES[parameters.detector_name],
552
+ parameters.detector_distance_mm,
553
+ parameters.detector_size_constants,
554
+ )
550
555
  yield from sup.set_detector_beam_center_plan(
551
- beam_center_device, parameters.detector_name
556
+ beam_center_device,
557
+ beam_center_pixels,
552
558
  )
553
559
 
554
560
  SSX_LOGGER.info("Getting Program Dictionary")
@@ -697,6 +703,9 @@ def run_fixed_target_plan(
697
703
  detector_stage, attenuator
698
704
  )
699
705
 
706
+ # Create collection directory
707
+ parameters.collection_directory.mkdir(parents=True, exist_ok=True)
708
+
700
709
  if parameters.chip_map:
701
710
  upload_chip_map_to_geobrick(pmac, parameters.chip_map)
702
711
 
@@ -15,7 +15,7 @@ import bluesky.plan_stubs as bps
15
15
  import numpy as np
16
16
  from bluesky.utils import MsgGenerator
17
17
  from dodal.common import inject
18
- from dodal.devices.attenuator import ReadOnlyAttenuator
18
+ from dodal.devices.attenuator.attenuator import ReadOnlyAttenuator
19
19
  from dodal.devices.i24.beamstop import Beamstop, BeamstopPositions
20
20
  from dodal.devices.i24.dual_backlight import BacklightPositions, DualBacklight
21
21
  from dodal.devices.i24.i24_detector_motion import DetectorMotion
@@ -1,4 +1,4 @@
1
- from mx_bluesky.beamlines.i24.serial.parameters.constants import SSXType
1
+ from mx_bluesky.beamlines.i24.serial.parameters.constants import DetectorName, SSXType
2
2
  from mx_bluesky.beamlines.i24.serial.parameters.experiment_parameters import (
3
3
  BeamSettings,
4
4
  ChipDescription,
@@ -13,6 +13,7 @@ from mx_bluesky.beamlines.i24.serial.parameters.utils import (
13
13
 
14
14
  __all__ = [
15
15
  "SSXType",
16
+ "DetectorName",
16
17
  "BeamSettings",
17
18
  "ExtruderParameters",
18
19
  "ChipDescription",
@@ -1,18 +1,26 @@
1
- from enum import Enum
1
+ from enum import StrEnum
2
2
  from os import environ
3
3
  from pathlib import Path
4
4
 
5
5
  from mx_bluesky.beamlines.i24.serial.log import _read_visit_directory_from_file
6
6
 
7
7
 
8
- class SSXType(Enum):
8
+ class SSXType(StrEnum):
9
9
  FIXED = "Serial Fixed"
10
10
  EXTRUDER = "Serial Jet"
11
11
 
12
12
 
13
- BEAM_CENTER_POS: dict[str, list] = {
14
- "eiger": [1600.0, 1697.4],
15
- "pilatus": [1284.7, 1308.6],
13
+ class DetectorName(StrEnum):
14
+ EIGER = "eiger"
15
+ PILATUS = "pilatus"
16
+
17
+
18
+ # TODO figue sth out for tests
19
+ LUT_FILES_PATH = Path("/dls_sw/i24/software/daq_configuration/lookup")
20
+
21
+ BEAM_CENTER_LUT_FILES = {
22
+ DetectorName.EIGER: LUT_FILES_PATH / "DetDistToBeamXYConverterE9M.txt",
23
+ DetectorName.PILATUS: LUT_FILES_PATH / "DetDistToBeamXYConverterP6M.txt",
16
24
  }
17
25
 
18
26
 
@@ -1,9 +1,13 @@
1
1
  import json
2
2
  from abc import abstractmethod
3
3
  from pathlib import Path
4
- from typing import Literal
5
4
 
6
5
  import numpy as np
6
+ from dodal.devices.detector.det_dim_constants import (
7
+ EIGER2_X_9M_SIZE,
8
+ PILATUS_6M_SIZE,
9
+ DetectorSizeConstants,
10
+ )
7
11
  from pydantic import BaseModel, ConfigDict, computed_field, field_validator
8
12
 
9
13
  from mx_bluesky.beamlines.i24.serial.fixed_target.ft_utils import (
@@ -11,7 +15,10 @@ from mx_bluesky.beamlines.i24.serial.fixed_target.ft_utils import (
11
15
  MappingType,
12
16
  PumpProbeSetting,
13
17
  )
14
- from mx_bluesky.beamlines.i24.serial.parameters.constants import SSXType
18
+ from mx_bluesky.beamlines.i24.serial.parameters.constants import (
19
+ DetectorName,
20
+ SSXType,
21
+ )
15
22
 
16
23
 
17
24
  class SerialExperiment(BaseModel):
@@ -22,7 +29,7 @@ class SerialExperiment(BaseModel):
22
29
  filename: str
23
30
  exposure_time_s: float
24
31
  detector_distance_mm: float
25
- detector_name: Literal["eiger", "pilatus"]
32
+ detector_name: DetectorName
26
33
  transmission: float
27
34
 
28
35
  @field_validator("visit", mode="before")
@@ -34,7 +41,16 @@ class SerialExperiment(BaseModel):
34
41
 
35
42
  @property
36
43
  def collection_directory(self) -> Path:
37
- return Path(self.visit) / self.directory
44
+ directory = Path(self.visit) / self.directory
45
+ return directory
46
+
47
+ @property
48
+ def detector_size_constants(self) -> DetectorSizeConstants:
49
+ return (
50
+ EIGER2_X_9M_SIZE
51
+ if self.detector_name is DetectorName.EIGER
52
+ else PILATUS_6M_SIZE
53
+ )
38
54
 
39
55
 
40
56
  class LaserExperiment(BaseModel):
@@ -1,15 +1,20 @@
1
+ from pathlib import Path
1
2
  from time import sleep
2
3
 
3
4
  import bluesky.plan_stubs as bps
4
5
  from dodal.beamlines import i24
6
+ from dodal.devices.detector.det_dim_constants import DetectorSizeConstants
5
7
  from dodal.devices.i24.aperture import Aperture, AperturePositions
6
8
  from dodal.devices.i24.beam_center import DetectorBeamCenter
7
9
  from dodal.devices.i24.beamstop import Beamstop, BeamstopPositions
8
10
  from dodal.devices.i24.dual_backlight import BacklightPositions, DualBacklight
9
11
  from dodal.devices.i24.i24_detector_motion import DetectorMotion
12
+ from dodal.devices.util.lookup_tables import (
13
+ linear_interpolation_lut,
14
+ parse_lookup_table,
15
+ )
10
16
 
11
17
  from mx_bluesky.beamlines.i24.serial.log import SSX_LOGGER
12
- from mx_bluesky.beamlines.i24.serial.parameters.constants import BEAM_CENTER_POS
13
18
  from mx_bluesky.beamlines.i24.serial.setup_beamline import pv
14
19
  from mx_bluesky.beamlines.i24.serial.setup_beamline.ca import caget, caput
15
20
 
@@ -21,6 +26,35 @@ def get_beam_center_device(detector_in_use: str) -> DetectorBeamCenter:
21
26
  return i24.pilatus_beam_center()
22
27
 
23
28
 
29
+ def compute_beam_center_position_from_lut(
30
+ lut_path: Path,
31
+ detector_distance_mm: float,
32
+ det_size_constants: DetectorSizeConstants,
33
+ ) -> tuple[float, float]:
34
+ """Calculate the beam center position for the detector distance \
35
+ using the values in the lookup table for the conversion.
36
+ """
37
+ lut_values = parse_lookup_table(lut_path.as_posix())
38
+
39
+ calc_x = linear_interpolation_lut(lut_values[0], lut_values[1])
40
+ beam_x_mm = calc_x(detector_distance_mm)
41
+ beam_x = (
42
+ beam_x_mm
43
+ * det_size_constants.det_size_pixels.width
44
+ / det_size_constants.det_dimension.width
45
+ )
46
+
47
+ calc_y = linear_interpolation_lut(lut_values[0], lut_values[2])
48
+ beam_y_mm = calc_y(detector_distance_mm)
49
+ beam_y = (
50
+ beam_y_mm
51
+ * det_size_constants.det_size_pixels.height
52
+ / det_size_constants.det_dimension.height
53
+ )
54
+
55
+ return beam_x, beam_y
56
+
57
+
24
58
  def setup_beamline_for_collection_plan(
25
59
  aperture: Aperture,
26
60
  backlight: DualBacklight,
@@ -55,22 +89,17 @@ def move_detector_stage_to_position_plan(
55
89
 
56
90
  def set_detector_beam_center_plan(
57
91
  beam_center_device: DetectorBeamCenter,
58
- detector_name: str,
92
+ beam_center_pixels: tuple[float, float],
59
93
  group: str = "set_beamcenter",
60
94
  wait: bool = True,
61
95
  ):
62
96
  """A small temporary plan to set up the beam center on the detector in use."""
63
97
  # NOTE This will be removed once the detectors are using ophyd_async devices
64
98
  # See https://github.com/DiamondLightSource/mx-bluesky/issues/62
65
- SSX_LOGGER.debug(
66
- f"Set beam center on {detector_name} detector: {BEAM_CENTER_POS[detector_name]}"
67
- )
68
- yield from bps.abs_set(
69
- beam_center_device.beam_x, BEAM_CENTER_POS[detector_name][0], group=group
70
- )
71
- yield from bps.abs_set(
72
- beam_center_device.beam_y, BEAM_CENTER_POS[detector_name][1], group=group
73
- )
99
+ beam_position_x, beam_position_y = beam_center_pixels
100
+ SSX_LOGGER.info(f"Setting beam center to: {beam_position_x}, {beam_position_y}")
101
+ yield from bps.abs_set(beam_center_device.beam_x, beam_position_x, group=group)
102
+ yield from bps.abs_set(beam_center_device.beam_y, beam_position_y, group=group)
74
103
  if wait:
75
104
  yield from bps.wait(group=group)
76
105