mx-bluesky 1.4.7__tar.gz → 1.4.8__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 (521) hide show
  1. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/workflows/_test.yml +3 -1
  2. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.gitignore +1 -1
  3. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/PKG-INFO +5 -4
  4. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/conftest.py +1 -11
  5. mx_bluesky-1.4.8/docs/developer/code-map/grid_detect_then_xray_centre.drawio.png +0 -0
  6. mx_bluesky-1.4.8/docs/developer/code-map/grid_detect_xrc.rst +60 -0
  7. mx_bluesky-1.4.8/docs/developer/code-map/index.rst +17 -0
  8. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/tutorials/profile-tests.rst +1 -1
  9. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/hyperion/reference/gridscan.puml +1 -1
  10. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/hyperion/reference/readme.md +8 -13
  11. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/index.rst +12 -0
  12. mx_bluesky-1.4.7/docs/developer/serial-crystallography-on-i24/how-to/stage-pmac-moves.rst → mx_bluesky-1.4.8/docs/developer/serial-crystallography-on-i24/how-to/pmac-docs.rst +111 -4
  13. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/serial-crystallography-on-i24/index.rst +4 -4
  14. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/serial-crystallography-on-i24/project-planning/roadmap.rst +52 -39
  15. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/pyproject.toml +25 -8
  16. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/run_hyperion.sh +2 -8
  17. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/_version.py +2 -2
  18. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py +4 -4
  19. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i04/thawing_plan.py +8 -2
  20. mx_bluesky-1.4.8/src/mx_bluesky/beamlines/i23/__init__.py +3 -0
  21. mx_bluesky-1.4.8/src/mx_bluesky/beamlines/i23/serial.py +71 -0
  22. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/__init__.py +2 -0
  23. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +7 -2
  24. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +3 -3
  25. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +6 -56
  26. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/log.py +9 -10
  27. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/parameters/utils.py +36 -7
  28. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py +0 -1
  29. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py +4 -4
  30. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +4 -4
  31. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py +2 -1
  32. mx_bluesky-1.4.8/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py +169 -0
  33. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/write_nexus.py +3 -3
  34. {mx_bluesky-1.4.7/src/mx_bluesky/hyperion → mx_bluesky-1.4.8/src/mx_bluesky/common}/device_setup_plans/check_beamstop.py +1 -1
  35. {mx_bluesky-1.4.7/src/mx_bluesky/hyperion → mx_bluesky-1.4.8/src/mx_bluesky/common}/device_setup_plans/manipulate_sample.py +1 -1
  36. {mx_bluesky-1.4.7/src/mx_bluesky/hyperion → mx_bluesky-1.4.8/src/mx_bluesky/common}/device_setup_plans/setup_oav.py +12 -6
  37. {mx_bluesky-1.4.7/src/mx_bluesky/hyperion → mx_bluesky-1.4.8/src/mx_bluesky/common}/experiment_plans/change_aperture_then_move_plan.py +4 -5
  38. {mx_bluesky-1.4.7/src/mx_bluesky/hyperion → mx_bluesky-1.4.8/src/mx_bluesky/common}/experiment_plans/oav_grid_detection_plan.py +6 -6
  39. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py +6 -5
  40. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py +16 -47
  41. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_store.py +4 -1
  42. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_utils.py +4 -4
  43. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/parameters/components.py +22 -2
  44. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/parameters/constants.py +4 -16
  45. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/parameters/gridscan.py +36 -32
  46. mx_bluesky-1.4.8/src/mx_bluesky/common/plans/common_flyscan_xray_centre_plan.py +316 -0
  47. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/plans/read_hardware.py +3 -3
  48. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/utils/log.py +15 -12
  49. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/__main__.py +2 -15
  50. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +4 -4
  51. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +0 -33
  52. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/device_setup_plans/utils.py +4 -4
  53. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/__init__.py +0 -6
  54. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/experiment_registry.py +0 -9
  55. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py +71 -88
  56. mx_bluesky-1.4.8/src/mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py +183 -0
  57. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +12 -7
  58. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py +28 -7
  59. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +4 -4
  60. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +1 -1
  61. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +11 -3
  62. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +9 -8
  63. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +18 -56
  64. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +2 -2
  65. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/agamemnon.py +62 -70
  66. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +8 -6
  67. mx_bluesky-1.4.8/src/mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py +259 -0
  68. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/cli.py +2 -10
  69. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/constants.py +0 -5
  70. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/device_composites.py +40 -5
  71. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/gridscan.py +9 -58
  72. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/rotation.py +0 -4
  73. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/utils/context.py +2 -5
  74. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/utils/validation.py +13 -10
  75. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky.egg-info/PKG-INFO +5 -4
  76. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky.egg-info/SOURCES.txt +42 -21
  77. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky.egg-info/requires.txt +4 -3
  78. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/conftest.py +188 -162
  79. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/system_tests/conftest.py +15 -10
  80. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +23 -19
  81. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/conftest.py +31 -32
  82. mx_bluesky-1.4.8/tests/system_tests/hyperion/external_interaction/test_agamemnon.py +92 -0
  83. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/test_config_service.py +12 -6
  84. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/test_exp_eye_dev.py +8 -9
  85. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/test_ispyb_dev_connection.py +41 -14
  86. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/test_load_centre_collect_full_plan.py +200 -14
  87. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/test_nexgen.py +3 -1
  88. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/test_zocalo_system.py +8 -43
  89. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/agamemnon/example_collect.json +2 -2
  90. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/agamemnon/example_collect_multipin.json +3 -3
  91. mx_bluesky-1.4.8/tests/test_data/ispyb-test-credentials.cfg +19 -0
  92. mx_bluesky-1.4.8/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json +37 -0
  93. mx_bluesky-1.4.7/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters_nomove.json → mx_bluesky-1.4.8/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters_nomove.json +9 -5
  94. mx_bluesky-1.4.8/tests/test_data/rabbitmq-test-credentials.yml +6 -0
  95. mx_bluesky-1.4.8/tests/test_data/test_daq_configuration/OAVCentring_hyperion.json +23 -0
  96. mx_bluesky-1.4.8/tests/test_data/test_daq_configuration/display.configuration +42 -0
  97. mx_bluesky-1.4.8/tests/test_data/test_images/ins_15_33_0.png +0 -0
  98. mx_bluesky-1.4.8/tests/test_data/test_images/ins_15_33_90.png +0 -0
  99. mx_bluesky-1.4.8/tests/test_data/test_images/ins_15_33_expected_0.png +0 -0
  100. mx_bluesky-1.4.8/tests/test_data/test_images/ins_15_33_expected_270.png +0 -0
  101. mx_bluesky-1.4.8/tests/test_data/test_images/thau_1_91_0.png +0 -0
  102. mx_bluesky-1.4.8/tests/test_data/test_images/thau_1_91_90.png +0 -0
  103. mx_bluesky-1.4.8/tests/test_data/test_images/thau_1_91_expected_0.png +0 -0
  104. mx_bluesky-1.4.8/tests/test_data/test_images/thau_1_91_expected_270.png +0 -0
  105. mx_bluesky-1.4.8/tests/test_data/zocalo-test-configuration.yaml +20 -0
  106. mx_bluesky-1.4.8/tests/unit_tests/beamlines/i23/test_serial.py +163 -0
  107. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/conftest.py +7 -1
  108. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/extruder/test_extruder_collect.py +5 -10
  109. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_manager.py +2 -9
  110. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_ft_collect.py +32 -61
  111. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_moveonclick.py +2 -6
  112. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/parameters/test_utils.py +18 -0
  113. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_beamline.py +11 -7
  114. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_detector.py +25 -10
  115. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/test_dcid.py +1 -1
  116. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/test_write_nexus.py +22 -18
  117. mx_bluesky-1.4.8/tests/unit_tests/beamlines/i24/serial/web_gui/test_general_plans.py +95 -0
  118. {mx_bluesky-1.4.7/tests/unit_tests/hyperion → mx_bluesky-1.4.8/tests/unit_tests/common}/device_setup_plans/test_check_beamstop.py +2 -2
  119. {mx_bluesky-1.4.7/tests/unit_tests/hyperion → mx_bluesky-1.4.8/tests/unit_tests/common}/experiment_plans/test_change_aperture_then_move_plan.py +7 -7
  120. {mx_bluesky-1.4.7/tests/unit_tests/hyperion → mx_bluesky-1.4.8/tests/unit_tests/common}/experiment_plans/test_grid_detection_plan.py +13 -15
  121. mx_bluesky-1.4.8/tests/unit_tests/common/external_interaction/callbacks/common/test_snapshot_callback.py +372 -0
  122. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/callbacks/ispyb/conftest.py +2 -15
  123. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_gridscan_ispyb_store_3d.py +33 -41
  124. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_rotation_ispyb_store.py +21 -30
  125. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/conftest.py +0 -12
  126. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/nexus/test_nexus_utils.py +1 -1
  127. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_callback.py +0 -4
  128. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_handler.py +1 -6
  129. mx_bluesky-1.4.8/tests/unit_tests/common/parameters/test_components.py +64 -0
  130. mx_bluesky-1.4.8/tests/unit_tests/common/plans/test_common_flyscan_xray_centre_plan.py +700 -0
  131. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/plans/test_read_hardware.py +1 -1
  132. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/test_do_fgs.py +5 -5
  133. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/utils/test_log.py +14 -9
  134. mx_bluesky-1.4.8/tests/unit_tests/conftest.py +319 -0
  135. mx_bluesky-1.4.8/tests/unit_tests/hyperion/conftest.py +125 -0
  136. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py +3 -3
  137. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py +9 -12
  138. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/device_setup_plans/test_setup_oav.py +1 -1
  139. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/device_setup_plans/test_zebra_setup.py +0 -35
  140. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/conftest.py +7 -5
  141. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_grid_detect_then_xray_centre_plan.py +72 -45
  142. mx_bluesky-1.4.8/tests/unit_tests/hyperion/experiment_plans/test_hyperion_flyscan_xray_centre_plan.py +400 -0
  143. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py +18 -13
  144. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_multi_rotation_scan_plan.py +3 -2
  145. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_oav_snapshot_plan.py +70 -4
  146. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py +4 -4
  147. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_and_change_energy.py +54 -4
  148. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_then_centre.py +5 -4
  149. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_rotation_scan_plan.py +66 -59
  150. mx_bluesky-1.4.8/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +14 -0
  151. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/test_sample_handling_callback.py +2 -2
  152. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +12 -0
  153. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/callbacks/test_rotation_callbacks.py +18 -12
  154. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/nexus/test_compare_nexus_to_gda_exhaustively.py +2 -0
  155. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/nexus/test_write_nexus.py +2 -2
  156. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/test_agamemnon.py +76 -1
  157. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/test_write_rotation_nexus.py +2 -0
  158. mx_bluesky-1.4.8/tests/unit_tests/hyperion/parameters/__init__.py +0 -0
  159. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/test_main_system.py +47 -69
  160. mx_bluesky-1.4.8/tests/unit_tests/hyperion/utils/__init__.py +0 -0
  161. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/deploy/deploy_mx_bluesky.py +1 -1
  162. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/dls_dev_env.sh +1 -1
  163. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/docker/entrypoint.sh +2 -7
  164. mx_bluesky-1.4.7/hyperion_other/workflows/code.yml +0 -86
  165. mx_bluesky-1.4.7/hyperion_other/workflows/container_tests.sh +0 -1
  166. mx_bluesky-1.4.7/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py +0 -109
  167. mx_bluesky-1.4.7/src/mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +0 -467
  168. mx_bluesky-1.4.7/src/mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py +0 -107
  169. mx_bluesky-1.4.7/tests/system_tests/hyperion/experiment_plans/test_fgs_plan.py +0 -346
  170. mx_bluesky-1.4.7/tests/system_tests/hyperion/external_interaction/test_agamemnon.py +0 -59
  171. mx_bluesky-1.4.7/tests/system_tests/hyperion/test_device_setups_and_cleanups.py +0 -63
  172. mx_bluesky-1.4.7/tests/unit_tests/beamlines/i24/serial/web_gui/test_general_plans.py +0 -60
  173. mx_bluesky-1.4.7/tests/unit_tests/common/external_interaction/callbacks/common/test_snapshot_callback.py +0 -83
  174. mx_bluesky-1.4.7/tests/unit_tests/conftest.py +0 -72
  175. mx_bluesky-1.4.7/tests/unit_tests/hyperion/conftest.py +0 -53
  176. mx_bluesky-1.4.7/tests/unit_tests/hyperion/experiment_plans/test_flyscan_xray_centre_plan.py +0 -1122
  177. mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +0 -12
  178. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.copier-answers.yml +0 -0
  179. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.coveragerc +0 -0
  180. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.devcontainer/Dockerfile +0 -0
  181. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.devcontainer/devcontainer.json +0 -0
  182. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.dockerignore +0 -0
  183. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/CODEOWNERS +0 -0
  184. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/CONTRIBUTING.md +0 -0
  185. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  186. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/ISSUE_TEMPLATE/issue.md +0 -0
  187. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/actions/install_requirements/action.yml +0 -0
  188. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/actions/verify-nexus/Dockerfile +0 -0
  189. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/actions/verify-nexus/action.yml +0 -0
  190. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/actions/verify-nexus/entrypoint.sh +0 -0
  191. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/dependabot.yml +0 -0
  192. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/pages/index.html +0 -0
  193. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/pages/make_switcher.py +0 -0
  194. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/workflows/_check.yml +0 -0
  195. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/workflows/_container.yml +0 -0
  196. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/workflows/_dist.yml +0 -0
  197. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/workflows/_docs.yml +0 -0
  198. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/workflows/_pypi.yml +0 -0
  199. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/workflows/_release.yml +0 -0
  200. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/workflows/_tox.yml +0 -0
  201. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/workflows/ci.yml +0 -0
  202. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.github/workflows/periodic.yml +0 -0
  203. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.pre-commit-config.yaml +0 -0
  204. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.vscode/extensions.json +0 -0
  205. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.vscode/launch.json +0 -0
  206. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.vscode/mx-bluesky.code-workspace +0 -0
  207. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.vscode/mxb-with-core-dependencies.code-workspace +0 -0
  208. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.vscode/settings.json +0 -0
  209. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/.vscode/tasks.json +0 -0
  210. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/Dockerfile +0 -0
  211. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/Dockerfile.release +0 -0
  212. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/LICENSE +0 -0
  213. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/README.rst +0 -0
  214. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/catalog-info.yaml +0 -0
  215. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/codecov.yml +0 -0
  216. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/_api.rst +0 -0
  217. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/_templates/custom-module-template.rst +0 -0
  218. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/conf.py +0 -0
  219. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/explanations/callback_and_run_logic.rst +0 -0
  220. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  221. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/explanations/decisions/0002-repository-structure.rst +0 -0
  222. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/explanations/decisions/0003-python-version-support.rst +0 -0
  223. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/explanations/decisions.rst +0 -0
  224. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/how-to/contribute.rst +0 -0
  225. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/how-to/create-a-release.rst +0 -0
  226. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/how-to/deploy-a-release.rst +0 -0
  227. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/how-to/dev-ops/build-docs.rst +0 -0
  228. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/how-to/dev-ops/dev-ops.rst +0 -0
  229. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/how-to/dev-ops/lint.rst +0 -0
  230. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/how-to/dev-ops/run-tests.rst +0 -0
  231. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/how-to/dev-ops/update-tools.rst +0 -0
  232. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/how-to/get-started.rst +0 -0
  233. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/index.rst +0 -0
  234. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/general/reference/standards.rst +0 -0
  235. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/hyperion/deploying-hyperion.rst +0 -0
  236. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/hyperion/how-to/update-panda-ioc.rst +0 -0
  237. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/hyperion/index.rst +0 -0
  238. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/hyperion/reference/param-hierarchy.rst +0 -0
  239. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/hyperion/system-tests.rst +0 -0
  240. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/murko-integration/explanations/architecture.rst +0 -0
  241. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/murko-integration/images/murko_setup.drawio.png +0 -0
  242. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/murko-integration/index.rst +0 -0
  243. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/serial-crystallography-on-i24/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  244. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/serial-crystallography-on-i24/explanations/decisions.rst +0 -0
  245. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/serial-crystallography-on-i24/how-to/environment-setup.rst +0 -0
  246. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/developer/serial-crystallography-on-i24/how-to/run-a-collection.rst +0 -0
  247. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/images/dls-favicon.ico +0 -0
  248. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/images/dls-logo.svg +0 -0
  249. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/docs/index.rst +0 -0
  250. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/helmcharts/hyperion/Chart.yaml +0 -0
  251. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/helmcharts/hyperion/templates/deployment.yaml +0 -0
  252. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/helmcharts/hyperion/templates/ingress.yaml +0 -0
  253. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/helmcharts/hyperion/templates/service.yaml +0 -0
  254. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/helmcharts/hyperion/values.yaml +0 -0
  255. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/helmcharts/redis-to-murko/Chart.yaml +0 -0
  256. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/helmcharts/redis-to-murko/templates/deployment.yaml +0 -0
  257. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/helmcharts/redis-to-murko/values.yaml +0 -0
  258. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/hyperion_other/workflows/add_assignee_when_pr_opened.yml +0 -0
  259. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/hyperion_other/workflows/assigned_issues_to_in_progress.yml +0 -0
  260. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/hyperion_other/workflows/get_issue_from_pr.yml +0 -0
  261. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/hyperion_other/workflows/get_project_data_and_move_column.yml +0 -0
  262. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/hyperion_other/workflows/linkcheck.yml +0 -0
  263. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/hyperion_other/workflows/open_prs_to_review.yml +0 -0
  264. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/hyperion_other/workflows/opened_issues_to_backlog.yml +0 -0
  265. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/hyperion_other/workflows/pin_versions.py +0 -0
  266. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/hyperion_other/workflows/pre_release_workflow.yml +0 -0
  267. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/hyperion_other/workflows/rework_prs_to_in_progress.yml +0 -0
  268. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/hyperion_other/workflows/test_data/pip_freeze.txt +0 -0
  269. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/hyperion_other/workflows/test_data/setup.cfg +0 -0
  270. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/hyperion_other/workflows/test_data/setup.cfg.pinned +0 -0
  271. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/hyperion_other/workflows/test_data/setup.cfg.unpinned +0 -0
  272. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/hyperion_other/workflows/test_pin_versions.py +0 -0
  273. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/pull_request_template.md +0 -0
  274. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/run_hyperion_in_podman.sh +0 -0
  275. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/setup.cfg +0 -0
  276. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/__init__.py +0 -0
  277. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/__main__.py +0 -0
  278. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/__init__.py +0 -0
  279. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/aithre_lasershaping/__init__.py +0 -0
  280. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/aithre_lasershaping/check_goniometer_performance.py +0 -0
  281. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py +0 -0
  282. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i04/__init__.py +0 -0
  283. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i04/callbacks/murko_callback.py +0 -0
  284. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/__init__.py +0 -0
  285. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/blueapi_config.yaml +0 -0
  286. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/dcid.py +0 -0
  287. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl +0 -0
  288. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +0 -0
  289. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -0
  290. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/extruder/__init__.py +0 -0
  291. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +0 -0
  292. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl +0 -0
  293. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +0 -0
  294. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -0
  295. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +0 -0
  296. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -0
  297. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -0
  298. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -0
  299. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -0
  300. /mx_bluesky-1.4.7/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short1-laser.png → /mx_bluesky-1.4.8/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/s1l.png +0 -0
  301. /mx_bluesky-1.4.7/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short2-laser.png → /mx_bluesky-1.4.8/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/s2l.png +0 -0
  302. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py +0 -0
  303. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py +0 -0
  304. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +0 -0
  305. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +0 -0
  306. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py +0 -0
  307. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/parameters/__init__.py +0 -0
  308. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/parameters/constants.py +0 -0
  309. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py +0 -0
  310. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json +0 -0
  311. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt +0 -0
  312. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +0 -0
  313. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
  314. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/run_extruder.sh +0 -0
  315. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/run_fixed_target.sh +0 -0
  316. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/run_serial.py +0 -0
  317. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/run_ssx.sh +0 -0
  318. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/set_visit_directory.sh +0 -0
  319. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
  320. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py +0 -0
  321. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py +0 -0
  322. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/start_blueapi.sh +0 -0
  323. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/__init__.py +0 -0
  324. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/__init__.py +0 -0
  325. {mx_bluesky-1.4.7/src/mx_bluesky/hyperion → mx_bluesky-1.4.8/src/mx_bluesky/common}/device_setup_plans/position_detector.py +0 -0
  326. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/device_setup_plans/setup_panda.py +0 -0
  327. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/device_setup_plans/xbpm_feedback.py +0 -0
  328. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/__init__.py +0 -0
  329. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/__init__.py +0 -0
  330. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/abstract_event.py +0 -0
  331. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/grid_detection_callback.py +0 -0
  332. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py +0 -0
  333. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/log_uid_tag_callback.py +0 -0
  334. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/logging_callback.py +0 -0
  335. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/plan_reactive_callback.py +0 -0
  336. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py +0 -0
  337. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/sample_handling/__init__.py +0 -0
  338. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/sample_handling/sample_handling_callback.py +0 -0
  339. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/__init__.py +0 -0
  340. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py +0 -0
  341. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py +0 -0
  342. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/config_server.py +0 -0
  343. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/ispyb/__init__.py +0 -0
  344. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/ispyb/data_model.py +0 -0
  345. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py +0 -0
  346. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/nexus/__init__.py +0 -0
  347. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/nexus/nexus_utils.py +0 -0
  348. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/nexus/write_nexus.py +0 -0
  349. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/test_config_server.py +0 -0
  350. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/plans/__init__.py +0 -0
  351. /mx_bluesky-1.4.7/src/mx_bluesky/common/preprocessors/__init__.py → /mx_bluesky-1.4.8/src/mx_bluesky/common/plans/inner_plans/__init__ .py +0 -0
  352. {mx_bluesky-1.4.7/src/mx_bluesky/common/plans → mx_bluesky-1.4.8/src/mx_bluesky/common/plans/inner_plans}/do_fgs.py +0 -0
  353. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/plans/write_sample_status.py +0 -0
  354. {mx_bluesky-1.4.7/src/mx_bluesky/common/protocols → mx_bluesky-1.4.8/src/mx_bluesky/common/preprocessors}/__init__.py +0 -0
  355. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/preprocessors/preprocessors.py +0 -0
  356. {mx_bluesky-1.4.7/src/mx_bluesky/hyperion/device_setup_plans → mx_bluesky-1.4.8/src/mx_bluesky/common/protocols}/__init__.py +0 -0
  357. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/protocols/protocols.py +0 -0
  358. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/utils/context.py +0 -0
  359. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/utils/exceptions.py +0 -0
  360. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/utils/tracing.py +0 -0
  361. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/utils/utils.py +0 -0
  362. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/common/xrc_result.py +0 -0
  363. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/definitions.py +0 -0
  364. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/__init__.py +0 -0
  365. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/baton_handler.py +0 -0
  366. {mx_bluesky-1.4.7/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation → mx_bluesky-1.4.8/src/mx_bluesky/hyperion/device_setup_plans}/__init__.py +0 -0
  367. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py +0 -0
  368. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/device_setup_plans/smargon.py +0 -0
  369. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +0 -0
  370. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/__init__.py +0 -0
  371. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/__init__.py +0 -0
  372. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py +0 -0
  373. {mx_bluesky-1.4.7/tests → mx_bluesky-1.4.8/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
  374. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +0 -0
  375. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +0 -0
  376. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +0 -0
  377. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/config_server.py +0 -0
  378. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/__init__.py +0 -0
  379. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/components.py +0 -0
  380. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/load_centre_collect.py +0 -0
  381. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/robot_load.py +0 -0
  382. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml +0 -0
  383. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/utils/__init__.py +0 -0
  384. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky/jupyter_example.ipynb +0 -0
  385. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky.egg-info/dependency_links.txt +0 -0
  386. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky.egg-info/entry_points.txt +0 -0
  387. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/src/mx_bluesky.egg-info/top_level.txt +0 -0
  388. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/start_jupyter.sh +0 -0
  389. {mx_bluesky-1.4.7/tests/system_tests → mx_bluesky-1.4.8/tests}/__init__.py +0 -0
  390. {mx_bluesky-1.4.7/tests/system_tests/hyperion → mx_bluesky-1.4.8/tests/system_tests}/__init__.py +0 -0
  391. {mx_bluesky-1.4.7/tests/system_tests/hyperion/experiment_plans → mx_bluesky-1.4.8/tests/system_tests/hyperion}/__init__.py +0 -0
  392. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/__init__.py +0 -0
  393. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/callbacks/__init__.py +0 -0
  394. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/nexus_files/README.md +0 -0
  395. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/nexus_files/fake_data.h5 +0 -0
  396. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/nexus_files/rotation/ins_8_5.nxs +0 -0
  397. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/nexus_files/rotation/ins_8_5_expected_output.txt +0 -0
  398. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/nexus_files/rotation/ins_8_5_meta.h5.gz +0 -0
  399. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5.nxs +0 -0
  400. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_expected_output.txt +0 -0
  401. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_meta.h5.gz +0 -0
  402. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/example_load_centre_collect_params.json +0 -0
  403. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json +0 -0
  404. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json +0 -0
  405. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json +0 -0
  406. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +0 -0
  407. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_parameters.json +0 -0
  408. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json +0 -0
  409. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json +0 -0
  410. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_robot_load_params.json +0 -0
  411. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json +0 -0
  412. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json +0 -0
  413. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/load_centre_collect_params_top_n_by_max_count.json +0 -0
  414. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json +0 -0
  415. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/test_oav_snapshot_params.json +0 -0
  416. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/scratch/README +0 -0
  417. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_OAVCentring.json +0 -0
  418. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_beamline_dcm_pitch_converter.txt +0 -0
  419. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  420. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_beamline_parameters.txt +0 -0
  421. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_beamline_vfm_lat_converter.txt +0 -0
  422. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_config.cfg +0 -0
  423. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_daq_configuration/domain/beamlineParameters +0 -0
  424. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  425. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  426. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_daq_configuration/lookup/BeamLine_Undulator_toGap.txt +0 -0
  427. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_daq_configuration/lookup/test_det_dist_converter.txt +0 -0
  428. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_det_dist_converter.txt +0 -0
  429. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_display.configuration +0 -0
  430. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_images/generate_snapshot_input.png +0 -0
  431. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_images/generate_snapshot_output.png +0 -0
  432. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_jCameraManZoomLevels.xml +0 -0
  433. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_lookup_table.txt +0 -0
  434. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/test_data/test_mirror_focus.json +0 -0
  435. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/__init__.py +0 -0
  436. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/__init__.py +0 -0
  437. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/aithre_lasershaping/test_check_goniometer_performance.py +0 -0
  438. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/aithre_lasershaping/test_goniometer_controls.py +0 -0
  439. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i04/callbacks/test_murko_callback.py +0 -0
  440. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i04/test_redis_to_murko_forwarder.py +0 -0
  441. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i04/test_thawing.py +0 -0
  442. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/__init__.py +0 -0
  443. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/__init__.py +0 -0
  444. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/extruder/__init__.py +0 -0
  445. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/fixed_target/__init__.py +0 -0
  446. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/fixed_target/conftest.py +0 -0
  447. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_startup.py +0 -0
  448. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/parameters/test_parameter_model.py +0 -0
  449. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
  450. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_pv_abstract.py +0 -0
  451. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_zebra_plans.py +0 -0
  452. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/test_log.py +0 -0
  453. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/test_run_serial.py +0 -0
  454. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/web_gui/__init__.py +0 -0
  455. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/__init__.py +0 -0
  456. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/device_setup_plans/test_setup_panda.py +0 -0
  457. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/device_setup_plans/test_xbpm_feedback.py +0 -0
  458. {mx_bluesky-1.4.7/tests/unit_tests/common/external_interaction → mx_bluesky-1.4.8/tests/unit_tests/common/experiment_plans}/__init__.py +0 -0
  459. {mx_bluesky-1.4.7/tests/unit_tests/common/external_interaction/callbacks → mx_bluesky-1.4.8/tests/unit_tests/common/external_interaction}/__init__.py +0 -0
  460. {mx_bluesky-1.4.7/tests/unit_tests/common/external_interaction/callbacks/common → mx_bluesky-1.4.8/tests/unit_tests/common/external_interaction/callbacks}/__init__.py +0 -0
  461. {mx_bluesky-1.4.7/tests/unit_tests/common/external_interaction/callbacks/ispyb → mx_bluesky-1.4.8/tests/unit_tests/common/external_interaction/callbacks/common}/__init__.py +0 -0
  462. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/callbacks/common/test_abstract_event.py +0 -0
  463. {mx_bluesky-1.4.7/tests/unit_tests/common/plans → mx_bluesky-1.4.8/tests/unit_tests/common/external_interaction/callbacks/ispyb}/__init__.py +0 -0
  464. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_expeye_interaction.py +0 -0
  465. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/callbacks/test_plan_reactive_callback.py +0 -0
  466. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/callbacks/test_zocalo_handler.py +0 -0
  467. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/test_ispyb_utils.py +0 -0
  468. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/xray_centre/__init__.py +0 -0
  469. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_mapping.py +0 -0
  470. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/xray_centre/test_nexus_handler.py +0 -0
  471. {mx_bluesky-1.4.7/tests/unit_tests/common/preprocessors → mx_bluesky-1.4.8/tests/unit_tests/common/parameters}/__init__.py +0 -0
  472. {mx_bluesky-1.4.7/tests/unit_tests/common/utils → mx_bluesky-1.4.8/tests/unit_tests/common/plans}/__init__.py +0 -0
  473. {mx_bluesky-1.4.7/tests/unit_tests/hyperion → mx_bluesky-1.4.8/tests/unit_tests/common/preprocessors}/__init__.py +0 -0
  474. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/preprocessors/test_preprocessors.py +0 -0
  475. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/common/test_write_sample_status.py +0 -0
  476. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/device_setup_plans → mx_bluesky-1.4.8/tests/unit_tests/common/utils}/__init__.py +0 -0
  477. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/experiment_plans → mx_bluesky-1.4.8/tests/unit_tests/hyperion}/__init__.py +0 -0
  478. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction → mx_bluesky-1.4.8/tests/unit_tests/hyperion/device_setup_plans}/__init__.py +0 -0
  479. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/device_setup_plans/test_setup_panda.py +0 -0
  480. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/device_setup_plans/test_utils.py +0 -0
  481. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.4.8/tests/unit_tests/hyperion/experiment_plans}/__init__.py +0 -0
  482. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/common/test_flyscan_result.py +0 -0
  483. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_experiment_registry.py +0 -0
  484. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_optimise_attenuation_plan.py +0 -0
  485. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_pin_tip_centring.py +0 -0
  486. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_set_energy_plan.py +0 -0
  487. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction/callbacks/rotation → mx_bluesky-1.4.8/tests/unit_tests/hyperion/external_interaction}/__init__.py +0 -0
  488. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling → mx_bluesky-1.4.8/tests/unit_tests/hyperion/external_interaction/callbacks}/__init__.py +0 -0
  489. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/callbacks/robot_load/test_robot_load_ispyb_callback.py +0 -0
  490. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction/nexus → mx_bluesky-1.4.8/tests/unit_tests/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
  491. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py +0 -0
  492. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/parameters → mx_bluesky-1.4.8/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling}/__init__.py +0 -0
  493. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/conftest.py +0 -0
  494. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/utils → mx_bluesky-1.4.8/tests/unit_tests/hyperion/external_interaction/nexus}/__init__.py +0 -0
  495. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000001.h5 +0 -0
  496. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000002.h5 +0 -0
  497. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000003.h5 +0 -0
  498. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/parameters/test_parameter_model.py +0 -0
  499. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/test_baton_handler.py +0 -0
  500. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/test_exceptions.py +0 -0
  501. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/test_utils.py +0 -0
  502. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/utils/test_callback_sim.py +0 -0
  503. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/utils/test_context.py +0 -0
  504. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/tests/unit_tests/test_cli.py +0 -0
  505. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/beam_off_trickery.sh +0 -0
  506. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/build_docker_image.sh +0 -0
  507. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/build_imginfo.sh +0 -0
  508. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/deploy/create_venv.py +0 -0
  509. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/deploy/deploy_edm_for_ssx.sh +0 -0
  510. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/deploy/deploy_mx_bluesky_app_to_k8s.sh +0 -0
  511. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/deploy/test_deploy.py +0 -0
  512. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/dev_jaeger_container.sh +0 -0
  513. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/docker/healthcheck.sh +0 -0
  514. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/docker/i03-compose.yml +0 -0
  515. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/generate_plantuml.py +0 -0
  516. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/graylog/Dockerfile +0 -0
  517. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/graylog/tcp_input.json +0 -0
  518. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/procserv_ioc_start.sh +0 -0
  519. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/run_imginfo.sh +0 -0
  520. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/setup_graylog.sh +0 -0
  521. {mx_bluesky-1.4.7 → mx_bluesky-1.4.8}/utility_scripts/strip_metafile.py +0 -0
@@ -51,7 +51,9 @@ jobs:
51
51
  pip-install: ".[dev]"
52
52
 
53
53
  - name: Run tests
54
- run: tox -e tests -- -m "not dlstbx"
54
+ # Longer timeout for CI due to likelihood of cold caches,
55
+ # cloud infra hw contention etc.
56
+ run: tox -e tests -- -m "not dlstbx" --timeout=2
55
57
 
56
58
  - name: Upload coverage to Codecov
57
59
  uses: codecov/codecov-action@v4
@@ -11,7 +11,7 @@ __pycache__/
11
11
  env/
12
12
  # Output
13
13
  *.png
14
- !docs/*.png
14
+ !docs/**/*.png
15
15
  !tests/test_data/**/*.png
16
16
 
17
17
  # Distribution / packaging
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mx-bluesky
3
- Version: 1.4.7
3
+ Version: 1.4.8
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
@@ -236,10 +236,10 @@ Requires-Dist: semver
236
236
  Requires-Dist: matplotlib
237
237
  Requires-Dist: blueapi>=0.5.0
238
238
  Requires-Dist: daq-config-server>=0.1.1
239
- Requires-Dist: ophyd==1.9.0
240
- Requires-Dist: ophyd-async>=0.9.0a2
239
+ Requires-Dist: ophyd>=1.10.5
240
+ Requires-Dist: ophyd-async>=0.10.0a2
241
241
  Requires-Dist: bluesky>=1.13.1
242
- Requires-Dist: dls-dodal==1.44.0
242
+ Requires-Dist: dls-dodal==1.47.0
243
243
  Provides-Extra: dev
244
244
  Requires-Dist: black; extra == "dev"
245
245
  Requires-Dist: build; extra == "dev"
@@ -257,6 +257,7 @@ Requires-Dist: pyright; extra == "dev"
257
257
  Requires-Dist: pytest-asyncio; extra == "dev"
258
258
  Requires-Dist: pytest-cov; extra == "dev"
259
259
  Requires-Dist: pytest-random-order; extra == "dev"
260
+ Requires-Dist: pytest-timeout; extra == "dev"
260
261
  Requires-Dist: pytest; extra == "dev"
261
262
  Requires-Dist: ruff; extra == "dev"
262
263
  Requires-Dist: sphinx-autobuild; extra == "dev"
@@ -1,21 +1,11 @@
1
1
  from collections.abc import Iterator
2
- from os import environ, getenv
2
+ from os import environ
3
3
  from unittest.mock import patch
4
4
 
5
5
  import pytest
6
6
 
7
7
  environ["HYPERION_TEST_MODE"] = "true"
8
8
 
9
- print("Adjusting S03 EPICS environment ...")
10
- s03_epics_server_port = getenv("S03_EPICS_CA_SERVER_PORT")
11
- s03_epics_repeater_port = getenv("S03_EPICS_CA_REPEATER_PORT")
12
- if s03_epics_server_port:
13
- environ["EPICS_CA_SERVER_PORT"] = s03_epics_server_port
14
- print(f"[EPICS_CA_SERVER_PORT] = {s03_epics_server_port}")
15
- if s03_epics_repeater_port:
16
- environ["EPICS_CA_REPEATER_PORT"] = s03_epics_repeater_port
17
- print(f"[EPICS_CA_REPEATER_PORT] = {s03_epics_repeater_port}")
18
-
19
9
 
20
10
  def pytest_addoption(parser):
21
11
  parser.addoption(
@@ -0,0 +1,60 @@
1
+ Grid Detect Then Xray Centre
2
+ ============================
3
+
4
+ The aim of this page is to provide a general overview of the Hyperion ``grid_detect_then_xray_centre_plan``.
5
+
6
+ Most of the code for the ``grid_detect_then_xray_centre_plan`` plan is in ``mx-bluesky/hyperion``. Some code is located in ``mx-bluesky/common`` and `dodal <https://github.com/DiamondLightSource/dodal>`_, and plans are increasingly being generalised and moved into ``mx-bluesky/common`` where possible. Therefore, the structure of the codebase is subject to change and this document should be updated accordingly.
7
+
8
+ There are then a number of plans that make up the ``grid_detect_then_xray_centre_plan`` plan. Some important ones:
9
+
10
+ * :ref:`grid_detection_plan<grid-detect>` - Use the OAV to optically calculate a grid for a scan that would cover the whole sample.
11
+ * :ref:`flyscan_xray_centre_plan<flyscan>` - Triggers a hardware-based grid scan and moves to the X-ray centre as returned from ``zocalo``.
12
+ * :ref:`grid_detect_then_xray_centre_plan<grid-detect-xrc>` - This top-level plan performs an :ref:`OAV grid detection <grid-detect>` then a :ref:`flyscan x-ray centre <flyscan>`.
13
+
14
+ The diagram below shows all the plans that make up the ``grid_detect_then_xray_centre_plan``. The colors indicate where these plans can be found.
15
+
16
+ .. image:: grid_detect_then_xray_centre.drawio.png
17
+
18
+ .. _grid-detect-xrc:
19
+
20
+ Grid Detect Then Xray Centre Plan
21
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22
+
23
+ `This plan <https://github.com/DiamondLightSource/mx-bluesky/blob/main/src/mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py>`__ does the following, in roughly this order:
24
+
25
+ 1. If called standalone, start preparing for data collection.
26
+ 2. Perform an :ref:`OAV grid detection <grid-detect>`.
27
+ 3. Convert the parameters calculated in step 2 into something we can send to the flyscan X-ray centre.
28
+ 4. Move the backlight out, set the aperture to small, and wait for the detector to finish moving.
29
+ 5. Perform a :ref:`flyscan X-ray centre <flyscan>`.
30
+ 6. Move the sample based on the results of step 5.
31
+
32
+ .. _grid-detect:
33
+
34
+ OAV Grid Detection
35
+ ~~~~~~~~~~~~~~~~~~
36
+
37
+ `This plan <https://github.com/DiamondLightSource/mx-bluesky/blob/main/src/mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py>`__ does the following, in roughly this order:
38
+
39
+ 1. Move to omega 0.
40
+ 2. Calculate the 2D grid size using the edge arrays from the OAV.
41
+ 3. Trigger the OAV device to take snapshots, both with and without the grid.
42
+ 4. Read the snapshot paths (which will be gathered for ispyb in the background).
43
+ 5. Repeat steps 2–4 for omega 90.
44
+ 6. Return the grid positions.
45
+
46
+ .. _flyscan:
47
+
48
+ Flyscan Xray Centre No Move
49
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
50
+
51
+ `This plan <https://github.com/DiamondLightSource/mx-bluesky/blob/main/src/mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py>`__ does the following, in roughly this order:
52
+
53
+ 1. Move to the desired transmission (and turn off xbpm feedback).
54
+ 2. Move to omega 0.
55
+ 3. Read hardware values for ispyb (a grid scan entry will be added in the background).
56
+ 4. Set up zebra and motion devices for a grid scan to be done in the motion controller.
57
+ 5. Wait for the Eiger to finish arming or arm the Eiger if it hasn't already been done.
58
+ 6. Run the motion control grid scan.
59
+ 7. Wait for the grid scan to end.
60
+ 8. Retrieve the X-ray centering results from ``Zocalo`` (which will be gathered in the background).
@@ -0,0 +1,17 @@
1
+ Code Map
2
+ ==================================
3
+
4
+ Explanation of the structure of the codebase
5
+
6
+ .. grid:: 2
7
+ :gutter: 2
8
+
9
+ .. grid-item-card:: :material-regular:`code;3em`
10
+
11
+ .. toctree::
12
+ :caption: Grid Detect Then Xray Centre
13
+ :maxdepth: 1
14
+
15
+ grid_detect_xrc
16
+
17
+ +++
@@ -27,7 +27,7 @@ e.g.
27
27
 
28
28
  .. code-block:: bash
29
29
 
30
- pytest -m "not (s03 or dlstbx)" --durations=10
30
+ pytest -m "not dlstbx" --durations=10
31
31
 
32
32
  in order to find the top 10 slowest tests
33
33
 
@@ -77,7 +77,7 @@ GridParamUpdate --> HyperionThreeDGridScan : combines with GridScanWithEdgeDetec
77
77
 
78
78
  class experiment_plans {
79
79
  grid_detect_then_xray_centre()
80
- flyscan_xray_centre_no_move()
80
+ common_flyscan_xray_centre()
81
81
  create_parameters_for_flyscan_xray_centre(GridScanWithEdgeDetect, GridParamUpdate) -> HyperionThreeDGridScan
82
82
  }
83
83
 
@@ -1,7 +1,5 @@
1
1
  # hyperion
2
2
 
3
- ![Tests](https://github.com/DiamondLightSource/hyperion/actions/workflows/code.yml/badge.svg) [![codecov](https://codecov.io/gh/DiamondLightSource/hyperion/branch/main/graph/badge.svg?token=00Ww81MHe8)](https://codecov.io/gh/DiamondLightSource/hyperion)
4
-
5
3
  Repository for the Hyperion project to implement Unattended Data Collections on the Diamond MX beamlines using the [BlueSky](https://nsls-ii.github.io/bluesky/) / Ophyd framework from BNL.
6
4
 
7
5
  Currently the software is able to:
@@ -27,9 +25,14 @@ Note that because Hyperion makes heavy use of [Dodal](https://github.com/Diamond
27
25
 
28
26
  ## Starting the bluesky runner
29
27
 
30
- You can start the bluesky runner by running `run_hyperion.sh`. Note that this will fail on a developer machine unless you have a simulated beamline running, instead you should do `run_hyperion.sh --dev --skip-startup-connection`, which will give you a running instance (note that without hardware trying to run a plan on this will fail). The `--dev` flag ensures that logging will not be sent to the production Graylog.
28
+ The bluesky runner is (re)started in production by GDA when it invokes `run_hyperion.sh`.
29
+
30
+ If you wish to attempt to run from a developer machine, then (if you are able to connect all devices)
31
+ you may `run_hyperion.sh --dev --beamline=<beamline>`, which will give you a running instance albeit with
32
+ read-only devices. The `--dev` flag ensures that logging will not be sent to the production Graylog/output folders.
31
33
 
32
- This script will determine whether you are on a beamline or a production machine based on the `BEAMLINE` environment variable. If on a beamline Hyperion will run with `INFO` level logging, sending its logs to both production graylog and to the beamline/log/bluesky/hyperion.log on the shared file system.
34
+ This script will determine which beamline you are on based on the `BEAMLINE` environment variable. If on a
35
+ beamline Hyperion will run with `INFO` level logging, sending its logs to both production graylog and to the beamline/log/bluesky/hyperion.log on the shared file system.
33
36
 
34
37
  If in a dev environment Hyperion will log to a local graylog instance instead and into a file at `./tmp/dev/hyperion.log`. A local instance of graylog will need to be running for this to work correctly. To set this up and run up the containers on your local machine run the `setup_graylog.sh` script.
35
38
 
@@ -43,17 +46,9 @@ The hyperion python module can also be run directly without the startup script.
43
46
  python -m hyperion --dev --verbose-event-logging
44
47
  ```
45
48
 
46
- Lastly, you can choose to skip running the hardware connection scripts on startup with the flag
47
-
48
- ```
49
- python -m hyperion --skip-startup-connection
50
- ```
51
-
52
49
  ## Testing
53
50
 
54
- Unit tests can be run with `python -m pytest -m "not s03" --random-order`. To see log output from tests you can turn on logging with the `--logging` command line option and then use the `-s` command line option to print logs into the console. So to run the unit tests such that all logs are at printed to the terminal, you can use `python -m pytest -m "not s03" --random-order --logging -s`. Note that this will likely overrun your terminal buffer, so you can narrow the selection of tests with the `-k "<test name pattern>"` option.
55
-
56
- To be able to run the system tests, or a complete fake scan, we need the simulated S03 beamline. This can be found at: https://gitlab.diamond.ac.uk/controls/python3/s03_utils
51
+ Unit tests can be run with `pytest --random-order`. To see log output from tests you can turn on logging with the `--logging` command line option and then use the `-s` command line option to print logs into the console. So to run the unit tests such that all logs are at printed to the terminal, you can use `python -m pytest --random-order --logging -s`. Note that this will likely overrun your terminal buffer, so you can narrow the selection of tests with the `-k "<test name pattern>"` option.
57
52
 
58
53
  To fake interaction and processing with Zocalo, you can run `fake_zocalo/dls_start_fake_zocalo.sh`, and make sure to run `module load dials/latest` before starting hyperion (in the same terminal).
59
54
 
@@ -53,3 +53,15 @@ Documentation is split general and topic-specific sections. Each section is spli
53
53
  +++
54
54
 
55
55
  Documentation relating to integrating the murko image recognition system
56
+
57
+ .. grid-item-card:: :material-regular:`code;3em`
58
+
59
+ .. toctree::
60
+ :caption: Code Map
61
+ :maxdepth: 1
62
+
63
+ code-map/index
64
+
65
+ +++
66
+
67
+ Code map explaining the structure of the codebase
@@ -1,3 +1,20 @@
1
+ =================================
2
+ PMAC-run operations on I24 serial
3
+ =================================
4
+
5
+
6
+ Several operations in a fixed target (FT) collection are run vie the PMAC, by sending a command to the ``PMAC_STRING`` PV.
7
+
8
+ Among these:
9
+
10
+ - Stage moves
11
+ - Kickoff data collection
12
+ - Laser control
13
+
14
+
15
+ For reference, see also the PMAC device implementation in dodal: `PMAC docs <https://diamondlightsource.github.io/dodal/main/reference/generated/dodal.devices.i24.pmac.html>`_
16
+
17
+
1
18
  Stage motor moves using the PMAC device
2
19
  ---------------------------------------
3
20
 
@@ -18,6 +35,8 @@ to motors. The axes allocations defined for the chip stages set up are:
18
35
 
19
36
  When an X-axis move is executed, the #1 motor will make the move.
20
37
 
38
+ It should be noted that the PMAC coordinate system used by I24 serial is number 2, which can be specified in a PMAC string by starting the command with ``&2``.
39
+
21
40
  When running chip collections, the stage motors are moved via the `PMAC
22
41
  device <https://github.com/DiamondLightSource/dodal/blob/main/src/dodal/devices/i24/pmac.py>`__
23
42
  in a couple of different ways.
@@ -28,19 +47,31 @@ in a couple of different ways.
28
47
  - Using a JOG command ``J:{const}``, to jog the motor a specified
29
48
  distance from the current position. For example, this will move
30
49
  motor Y by 10 motor steps:
31
- ``python yield from bps.abs_set(pmac.pmac_string, "#2J:10")``
50
+
51
+ .. code:: python
52
+
53
+ yield from bps.abs_set(pmac.pmac_string, "#2J:10")
54
+
32
55
 
33
56
  - The ``hmz`` strings are homing commands which will reset the
34
57
  encoders counts to 0 for the axis. All three motors are homed by
35
58
  sending the string: ``#1hmz#2hmz#3hmz``. In the plans this is done
36
59
  by triggering the home move:
37
- ``python yield from bps.trigger(pmac.home)``
60
+
61
+ .. code:: python
62
+
63
+ yield from bps.trigger(pmac.home)
64
+
38
65
 
39
66
  - Another pmac_string that can start a move has the format
40
67
  ``!x..y..``. This is a command designed to blend any ongoing move
41
68
  into a new position. A common one through the serial collection
42
69
  code is ``!x0y0z0``, which will start a move to 0 for all motors.
43
- ``python yield from bps.trigger(pmac.to_xyz_zero)``
70
+
71
+ .. code:: python
72
+
73
+ yield from bps.trigger(pmac.to_xyz_zero)
74
+
44
75
 
45
76
  2. The stage motors can also be moved directly through the existing PVs
46
77
  ``ME14E-MO-CHIP-01:{X,Y,Z}``, for example:
@@ -49,6 +80,7 @@ in a couple of different ways.
49
80
 
50
81
  yield from bps.mv(pmac.x, 0, pmac.y, 1)
51
82
 
83
+
52
84
  Notes on the coordinate system for a fixed-target collection
53
85
  ============================================================
54
86
 
@@ -81,7 +113,7 @@ Theory for this computation
81
113
 
82
114
  The plan needs information stored in a few files:
83
115
 
84
- * The motor directions are stored in ``src/mx_bluesky/i24/serial/parameters/fixed_target/cs/motor_directions.txt.`` The motor number multiplied by the motor direction should give the positive chip direction.
116
+ * The motor directions are stored in ``src/mx_bluesky/i24/serial/parameters/fixed_target/cs/motor_direction.txt.`` The motor number multiplied by the motor direction should give the positive chip direction.
85
117
  * The scale values for x,y,z, the skew value and the sign of Sx, Sy, Sz are all stored in ``src/mx_bluesky/i24/serial/parameters/fixed_target/cs/cs_maker.json``
86
118
  * The fiducials 1 and 2 positions are written to file when selecting the fiducials (Setting fiducial 0 instead sends a homing command directly to the pmac_string PV)
87
119
 
@@ -106,3 +138,78 @@ the following pmac_strings:
106
138
  "#1->10000X+0Y+0Z"
107
139
  "#2->+0X-10000Y+0Z"
108
140
  "#3->0X+0Y-10000Z"
141
+
142
+
143
+
144
+
145
+ Data collection via the PMAC
146
+ ----------------------------
147
+
148
+ The data collection for a FT experiment is kicked off by sending a PMAC_STRING with the program number of the motion program the PMAC should run.
149
+
150
+ Two P-variables - general purpose variables that can be used to store information on the PMAC - have been set aside to monitor the collection run:
151
+
152
+ ::
153
+
154
+ P2401 is the "scan_status" variable. It goes to 1 once the motion program starts and will go back to 0 at the very end of the collection
155
+ P2402 is the "counter" variable. It keeps count of how many images have been acquired so far in the collection.
156
+
157
+
158
+ The program number is chosen depending on the input collection parameters:
159
+
160
+ ::
161
+
162
+ 11 -> Custom, Mini and PSI type chip collections, as well as Oxford chips with mapping set to "None" (full chip collections)
163
+ 12 -> Oxford Chips with Lite mapping (only some blocks collected)
164
+ 13 -> In the past was used for "Full Mapping". **CURRENTLY DISABLED**
165
+ 14 -> Any Pump Probe collection, with any chip type. **WARNING** Assumes Lite mapping for Oxford chips.
166
+
167
+ To do this, the PMAC device in dodal implements a Flyable device (``ProgramRunner``) and a soft signal (``program_number``).
168
+ The ``kickoff_and_complete_collection_plan`` first sets up the PMAC by setting the program_number signal and calculating the expected duration of the collection, and then triggers the collection by:
169
+
170
+ .. code:: python
171
+
172
+ yield from bps.kickoff(pmac.run_program, wait=True)
173
+ yield from bps.complete(pmac.run_program, wait=True)
174
+
175
+
176
+ The ``kickoff`` method works out the pmac_string to send from the program number in the following way:
177
+
178
+ ::
179
+
180
+ "&2b{prog_num}r" where
181
+ - &2 is the coordinate system in use
182
+ - b sets the motion program to run
183
+ - r runs it
184
+
185
+
186
+ and then waits for the scan status P-variable to go to 1.
187
+ The ``complete`` method instead monitors the scan status variable and waits for it to go back to 0.
188
+
189
+
190
+ In the event of an aborted data collection, an additional Triggerable signal has been added to the PMAC device to be able to reset the PMAC.
191
+ The abort plan for FT will call:
192
+
193
+ .. code:: python
194
+
195
+ yield from bps.trigger(pmac.abort_program)
196
+
197
+
198
+ which first sends a ``A`` command to the PMAC to tell it to abort the motion program being currently run and then resets the ``P2041`` variable to 0.
199
+ There is no need to reset the ``P2402`` variable as it's automatically reset once the new motion program starts.
200
+
201
+
202
+
203
+ Laser control
204
+ -------------
205
+
206
+ The ``laser_control`` plan switches a laser on and off by sending PMAC_STRINGS that set a pair of M-variables.
207
+ M-variables point to a location in memory and are usually used for user access or I/O operations - in this case they have to do with position compare settings.
208
+
209
+ The M-variables used here are M712/M711 for laser1 and M812/M811 for laser2.
210
+ M711 and M811 are set to 1, while and the value set to M712/M812 indicates when the triggering happens, eg:
211
+
212
+ ::
213
+
214
+ M712 = 0 if triggering on the falling edge -> laser off
215
+ M712 = 1 if triggering on the rising edge -> laser on
@@ -1,11 +1,11 @@
1
- I24 Serial Crystallography
1
+ I24 Serial Crystallography
2
2
  ==========================
3
3
 
4
4
  Documentation is split into four categories, and each is also accessible from links in the side-bar.
5
5
 
6
6
  .. grid:: 2
7
7
  :gutter: 2
8
-
8
+
9
9
  .. grid-item-card:: :material-regular:`map;3em`
10
10
 
11
11
  .. toctree::
@@ -26,7 +26,7 @@ Documentation is split into four categories, and each is also accessible from li
26
26
 
27
27
  how-to/environment-setup
28
28
  how-to/run-a-collection
29
- how-to/stage-pmac-moves
29
+ how-to/pmac-docs
30
30
 
31
31
  +++
32
32
 
@@ -62,4 +62,4 @@ Documentation is split into four categories, and each is also accessible from li
62
62
 
63
63
  +++
64
64
 
65
- Tutorials for getting up and running as a developer.
65
+ Tutorials for getting up and running as a developer.
@@ -4,42 +4,49 @@ Roadmap
4
4
  For a closer look at the ongoing work: `I24ssx
5
5
  board <https://github.com/orgs/DiamondLightSource/projects/10/views/2>`__
6
6
 
7
- Ongoing list of TODOs:
7
+ Ongoing list of TODOs (Updated 04/2025)
8
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8
9
 
9
- 1. Improve alignment of chip: get it to work correctly for multiple
10
- zooms.
10
+ **Bluesky**:
11
11
 
12
- - Close to being completed (see issue #44)
12
+ 1. Set up blueapi and run mx-bluesky on the beamline kubernetes cluster. I24 should be due to get one in shutdown 4 2024.
13
+
14
+ 2. Improve/fix the issues with the PMAC ProgramRunner: it should monitor the counter PV as well as the status PV.
13
15
 
14
- 2. Refactor and fix the logger.
15
16
  3. Use callbacks for file IO, eg. to write parameter and map files, nexus writer and ispyb deposition.
16
- 4. Solution for enabling users to run mx-bluesky instead of old scripts: blocked by permission issues.
17
17
 
18
- - This should also allow us to stop using the Pilatus to make directories during an Eiger collection.
19
- - The preferred permanent solution is to run mx-bluesky on the beamline kubernetes cluster. I24 should be due to get on in shutdown 4 2024.
20
- - Other possibility is to run the ``blueapi`` server on procServ. An example of this has now been set up on ws002 on the beamline and is being tested.
21
- - A temporary workaround in place for beamline staff, who should be starting to run this for testing/in house beamtimes. Staff have started using this set up in September 24.
18
+ - Improve nexgen-server use
22
19
 
23
- 5. Convert detector set up to use bluesky plans and ophyd_async devices.
20
+ 4. Convert detector set up to use bluesky plans and ophyd_async devices.
24
21
 
25
22
  - Eiger device in dodal needs to be converted to ophyd_async and updated to work with different Eigers on several beamlines. This work is dependent on other work out of the scope of this project, see `Dodal#700 <https://github.com/DiamondLightSource/dodal/issues/700>`__ and linked issues.
23
+ - Update JF code for serial, move devices into dodal and merge it.
26
24
  - Investigate using the existing Pilatus in ophyd_async which writes HDF5 instead of CBFs, but we may want to make a CBF-writing Pilatus. However, the Pilatus detector is due to be removed soon.
27
25
 
28
- 6. Start looking into moving away from edm screens towards a web-based GUI.
29
-
30
- - Prepare generic react components to match the features in the edms.
31
- - Components for things currently managed by general purpose PVs (eg. map).
32
- - OAV viewer.
26
+ 5. Start integrating Panda, at least for fixed-target collections.
33
27
 
34
- 7. Start integrating Panda, at least for fixed-target collections.
35
- 8. Implementation of serial tools to be used at XFELS.
28
+ 6. Implementation of serial tools to be used at XFELS.
36
29
 
37
30
  - Reinstate removed code from sacla and move it to bluesky.
38
31
  - Add any plans/devices that might be needed for other locations.
39
-
40
- 9. Reinstate full mapping code using bluesky.
41
32
 
42
- (TBC…)
33
+ 7. Reinstate full mapping code using bluesky.
34
+
35
+ **React UI**:
36
+
37
+ 1. Prepare generic react components to match the features in the edms.
38
+
39
+ - Components for things currently managed by general purpose PVs (eg. mapping, pump probe).
40
+ - Set up collection parameters
41
+ - Move hardware: eg. detector stage
42
+ - Monitor beamline state
43
+ 2. Move the moveonclick to the wbe UI
44
+
45
+ - Component for the OAV viewer on the UI.
46
+ - Components to set the zoom and move the backlight using bluesky plans.
47
+ - Look into drawing the crosshair in epics.
48
+ - Refactor moveonclick code.
49
+
43
50
 
44
51
 
45
52
  .. list-table:: Rough Roadmap
@@ -49,11 +56,11 @@ Ongoing list of TODOs:
49
56
  * - Work Ongoing
50
57
  - Rough Timeline
51
58
  - Completed
52
- * - Fully test extruder collections
53
- - Nov. 24
59
+ * - PMAC ProgramRunner updates/fixes
60
+ - Apr. 24
54
61
  - :material-regular:`pending;2em`
55
- * - Fix permissions and allow for user collections
56
- - Dec. 24 / Jan. 25
62
+ * - Update/improve coordinate system maker on the PMAC
63
+ - Apr. /May 25
57
64
  - :material-regular:`pending;2em`
58
65
  * - Convert the current detector set up code to bluesky plans using the device
59
66
  - Dependent on `FastCS Eiger issues <https://github.com/bluesky/ophyd-async/issues?q=is%3Aissue+is%3Aopen+eiger>`__ being completed
@@ -64,24 +71,30 @@ Ongoing list of TODOs:
64
71
  * - Set up callback for ispyb deposition
65
72
  - Dec. 24
66
73
  - :material-regular:`pending;2em`
67
- * - Set up callback for parameter and map file I/O
68
- - Dec. 24
74
+ * - Prepare first React components to switch from EDM to a web GUI
75
+ - Dec. 24 / Jan. 25
76
+ - :material-regular:`check;2em`
77
+ * - Move the OAV viewer to a web GUI
78
+ - May / Jun. 25
79
+ - :material-regular:`pending;2em`
80
+ * - Deploy a first basic version of the web UI
81
+ - May 25
69
82
  - :material-regular:`pending;2em`
83
+ * - Fully test extruder collections
84
+ - Nov. 24
85
+ - :material-regular:`check;2em`
86
+ * - Fix permissions and allow for user collections
87
+ - Dec. 24 / Jan. 25
88
+ - :material-regular:`check;2em`
70
89
  * - Refactor logger
71
90
  - Nov. 24
72
- - :material-regular:`pending;2em`
73
- * - Improve current alignment (moveonclick)
91
+ - :material-regular:`check;2em`
92
+ * - Improve current alignment - use multiple zooms (moveonclick)
74
93
  - Nov. 24
75
- - :material-regular:`pending;2em`
94
+ - :material-regular:`check;2em`
76
95
  * - Set up a PV backend, eg. ``pvws``, for web GUI on the beamline.
77
96
  - Jan. 25
78
- - :material-regular:`pending;2em`
79
- * - Prepare React components to switch from EDM to a web GUI
80
- - Dec. 24 / Jan. 25
81
- - :material-regular:`pending;2em`
82
- * - Move the OAV viewer to a web GUI
83
- - Jan. 25 / Feb. 25
84
- - :material-regular:`pending;2em`
97
+ - :material-regular:`check;2em`
85
98
 
86
99
 
87
100
  Experiment types required
@@ -110,8 +123,8 @@ Experiment types required
110
123
  Details of zebra settings for each type:
111
124
  https://confluence.diamond.ac.uk/display/MXTech/Zebra+settings+I24
112
125
 
113
- Note that most of the set up for the fixed target is actually done by
114
- the PMAC via PMAC strings.
126
+ Note that most of the set up for the fixed target is actually done internally
127
+ by the PMAC, via sending PMAC strings.
115
128
 
116
129
 
117
130
 
@@ -43,10 +43,10 @@ dependencies = [
43
43
  #
44
44
  "blueapi >= 0.5.0",
45
45
  "daq-config-server >= 0.1.1",
46
- "ophyd == 1.9.0",
47
- "ophyd-async >= 0.9.0a2",
46
+ "ophyd >= 1.10.5",
47
+ "ophyd-async >= 0.10.0a2",
48
48
  "bluesky >= 1.13.1",
49
- "dls-dodal == 1.44.0",
49
+ "dls-dodal == 1.47.0",
50
50
  ]
51
51
 
52
52
 
@@ -75,6 +75,7 @@ dev = [
75
75
  "pytest-asyncio",
76
76
  "pytest-cov",
77
77
  "pytest-random-order",
78
+ "pytest-timeout",
78
79
  "pytest",
79
80
  "ruff",
80
81
  "sphinx-autobuild",
@@ -115,8 +116,8 @@ reportMissingImports = false # Ignore missing stubs in imported modules
115
116
  # Run pytest with all our checkers, and don't spam us with massive tracebacks on error
116
117
  asyncio_mode = "auto"
117
118
  asyncio_default_fixture_loop_scope = "function"
119
+ timeout = 1
118
120
  markers = [
119
- "s03: marks tests as requiring the s03 simulator running (deselect with '-m \"not s03\"')",
120
121
  "dlstbx: marks tests as requiring dlstbx (deselect with '-m \"not dlstbx\"')",
121
122
  "skip_log_setup: marks tests so that loggers are not setup before the test.",
122
123
  "skip_in_pycharm: marks test as not working in pycharm testrunner",
@@ -174,27 +175,43 @@ legacy_tox_ini = """
174
175
  [tox]
175
176
  skipsdist=True
176
177
 
177
- [testenv:{pre-commit,type-checking,tests,docs,systemtests}]
178
+ [testenv]
178
179
  # Don't create a virtualenv for the command, requires tox-direct plugin
179
180
  direct = True
180
181
  passenv = *
181
- setenv =
182
- systemtests: DODAL_TEST_MODE=true
183
182
  allowlist_externals =
184
183
  pytest
185
184
  pre-commit
186
185
  pyright
187
186
  sphinx-build
188
187
  sphinx-autobuild
188
+
189
+ [testenv:{pre-commit,type-checking,tests,docs}]
189
190
  commands =
190
191
  pre-commit: pre-commit run --all-files --show-diff-on-failure {posargs}
191
192
  type-checking: pyright src tests {posargs}
192
193
  tests: pytest --cov=mx_bluesky --cov-report term --cov-report xml:cov.xml {posargs}
193
194
  docs: sphinx-{posargs:build -EW --keep-going} -T docs build/html
194
- systemtests: pytest --junit-xml=systemtests_output.xml -m system_test tests/system_tests
195
195
  commands_pre =
196
196
  docs: /usr/bin/bash -c "{toxinidir}/utility_scripts/generate_plantuml.py > \
197
197
  docs/developer/hyperion/reference/param_hierarchy.puml"
198
+
199
+ # Runs the system tests in CI
200
+ [testenv:systemtests]
201
+ setenv =
202
+ DODAL_TEST_MODE=true
203
+ commands =
204
+ pytest --junit-xml=systemtests_output.xml -m system_test --timeout=60 tests/system_tests
205
+
206
+ # Runs the system tests locally
207
+ [testenv:localsystemtests]
208
+ setenv =
209
+ DOCKER=podman
210
+ DODAL_TEST_MODE=true
211
+ ISPYB_CONFIG_PATH={toxinidir}/tests/test_data/ispyb-test-credentials.cfg
212
+ ZOCALO_CONFIG={toxinidir}/tests/test_data/zocalo-test-configuration.yaml
213
+ commands =
214
+ pytest -m system_test --timeout=60 tests/system_tests
198
215
  """
199
216
 
200
217
  [tool.ruff]