mx-bluesky 1.4.7__tar.gz → 1.4.9__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 (535) hide show
  1. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/workflows/_test.yml +3 -1
  2. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.gitignore +1 -1
  3. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/PKG-INFO +7 -6
  4. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/conftest.py +1 -11
  5. mx_bluesky-1.4.9/docs/developer/code-map/grid_detect_then_xray_centre.drawio.png +0 -0
  6. mx_bluesky-1.4.9/docs/developer/code-map/grid_detect_xrc.rst +60 -0
  7. mx_bluesky-1.4.9/docs/developer/code-map/index.rst +17 -0
  8. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/tutorials/profile-tests.rst +1 -1
  9. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/hyperion/deploying-hyperion.rst +14 -3
  10. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/hyperion/index.rst +1 -0
  11. mx_bluesky-1.4.9/docs/developer/hyperion/reference/coordinate-systems.puml +20 -0
  12. mx_bluesky-1.4.9/docs/developer/hyperion/reference/coordinate-systems.rst +76 -0
  13. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/hyperion/reference/gridscan.puml +1 -1
  14. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/hyperion/reference/readme.md +11 -19
  15. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/index.rst +12 -0
  16. mx_bluesky-1.4.7/docs/developer/serial-crystallography-on-i24/how-to/stage-pmac-moves.rst → mx_bluesky-1.4.9/docs/developer/serial-crystallography-on-i24/how-to/pmac-docs.rst +111 -4
  17. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/serial-crystallography-on-i24/index.rst +4 -4
  18. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/serial-crystallography-on-i24/project-planning/roadmap.rst +52 -39
  19. mx_bluesky-1.4.9/docs/images/176701633-b93bba62-b2e7-4740-a863-c6b388beb14f.png +0 -0
  20. mx_bluesky-1.4.9/docs/images/207297611-f67dfc25-a3a5-4ade-a1e7-28b54a136fa6.png +0 -0
  21. mx_bluesky-1.4.9/docs/images/motor coordinate systems.odg +0 -0
  22. mx_bluesky-1.4.9/docs/images/motor-coords-omega-0.svg +243 -0
  23. mx_bluesky-1.4.9/docs/images/motor-coords-omega-alpha.svg +277 -0
  24. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/helmcharts/hyperion/templates/deployment.yaml +26 -9
  25. mx_bluesky-1.4.9/helmcharts/hyperion/templates/zocalo-config.yaml +40 -0
  26. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/helmcharts/hyperion/values.yaml +15 -0
  27. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/pyproject.toml +27 -26
  28. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/run_hyperion.sh +31 -36
  29. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/_version.py +2 -2
  30. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/aithre_lasershaping/__init__.py +8 -0
  31. mx_bluesky-1.4.9/src/mx_bluesky/beamlines/aithre_lasershaping/beamline_safe.py +36 -0
  32. mx_bluesky-1.4.9/src/mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py +61 -0
  33. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py +4 -4
  34. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i04/thawing_plan.py +8 -2
  35. mx_bluesky-1.4.9/src/mx_bluesky/beamlines/i23/__init__.py +3 -0
  36. mx_bluesky-1.4.9/src/mx_bluesky/beamlines/i23/serial.py +71 -0
  37. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/__init__.py +2 -0
  38. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/blueapi_config.yaml +2 -1
  39. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/dcid.py +5 -5
  40. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl +2 -2
  41. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +9 -9
  42. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +25 -5
  43. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl +2 -2
  44. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +14 -14
  45. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +5 -5
  46. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +29 -60
  47. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +7 -1
  48. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/log.py +9 -10
  49. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/parameters/utils.py +36 -7
  50. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py +0 -1
  51. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py +4 -4
  52. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +4 -12
  53. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py +2 -1
  54. mx_bluesky-1.4.9/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py +169 -0
  55. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/write_nexus.py +3 -3
  56. {mx_bluesky-1.4.7/src/mx_bluesky/hyperion → mx_bluesky-1.4.9/src/mx_bluesky/common}/device_setup_plans/manipulate_sample.py +6 -14
  57. {mx_bluesky-1.4.7/src/mx_bluesky/hyperion → mx_bluesky-1.4.9/src/mx_bluesky/common}/device_setup_plans/setup_oav.py +12 -6
  58. {mx_bluesky-1.4.7/src/mx_bluesky/hyperion → mx_bluesky-1.4.9/src/mx_bluesky/common}/experiment_plans/change_aperture_then_move_plan.py +4 -5
  59. {mx_bluesky-1.4.7/src/mx_bluesky/hyperion → mx_bluesky-1.4.9/src/mx_bluesky/common}/experiment_plans/oav_grid_detection_plan.py +6 -6
  60. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py +6 -5
  61. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py +16 -47
  62. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_store.py +4 -1
  63. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_utils.py +4 -4
  64. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/nexus/nexus_utils.py +2 -2
  65. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/parameters/components.py +22 -2
  66. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/parameters/constants.py +4 -16
  67. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/parameters/gridscan.py +36 -32
  68. mx_bluesky-1.4.9/src/mx_bluesky/common/plans/common_flyscan_xray_centre_plan.py +316 -0
  69. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/plans/read_hardware.py +3 -3
  70. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/utils/log.py +19 -15
  71. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/__main__.py +6 -24
  72. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/baton_handler.py +8 -3
  73. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +4 -4
  74. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +0 -33
  75. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/device_setup_plans/smargon.py +2 -7
  76. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/device_setup_plans/utils.py +6 -5
  77. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/experiment_plans/__init__.py +1 -7
  78. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/experiment_plans/experiment_registry.py +3 -13
  79. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py +80 -87
  80. mx_bluesky-1.4.9/src/mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py +183 -0
  81. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +50 -15
  82. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py +31 -7
  83. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +4 -4
  84. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +1 -1
  85. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +13 -14
  86. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +9 -8
  87. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +30 -71
  88. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +2 -2
  89. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/external_interaction/agamemnon.py +78 -80
  90. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +8 -6
  91. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +3 -3
  92. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +6 -3
  93. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +2 -2
  94. mx_bluesky-1.4.9/src/mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py +259 -0
  95. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/external_interaction/config_server.py +4 -1
  96. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/parameters/cli.py +4 -19
  97. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/parameters/constants.py +1 -5
  98. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/parameters/device_composites.py +40 -5
  99. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/parameters/gridscan.py +9 -58
  100. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/parameters/load_centre_collect.py +4 -4
  101. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/parameters/rotation.py +9 -12
  102. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/utils/context.py +2 -2
  103. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/utils/validation.py +15 -19
  104. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky.egg-info/PKG-INFO +7 -6
  105. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky.egg-info/SOURCES.txt +52 -24
  106. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky.egg-info/requires.txt +6 -5
  107. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/conftest.py +205 -176
  108. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/system_tests/conftest.py +17 -12
  109. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/system_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +19 -15
  110. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/system_tests/hyperion/external_interaction/conftest.py +30 -31
  111. mx_bluesky-1.4.9/tests/system_tests/hyperion/external_interaction/test_agamemnon.py +94 -0
  112. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/system_tests/hyperion/external_interaction/test_config_service.py +12 -6
  113. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/system_tests/hyperion/external_interaction/test_exp_eye_dev.py +8 -9
  114. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/system_tests/hyperion/external_interaction/test_ispyb_dev_connection.py +37 -10
  115. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/system_tests/hyperion/external_interaction/test_load_centre_collect_full_plan.py +202 -42
  116. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/system_tests/hyperion/external_interaction/test_nexgen.py +19 -17
  117. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/system_tests/hyperion/external_interaction/test_zocalo_system.py +8 -43
  118. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/agamemnon/example_collect_multipin.json +4 -4
  119. mx_bluesky-1.4.9/tests/test_data/agamemnon/example_native.json +84 -0
  120. mx_bluesky-1.4.9/tests/test_data/ispyb-test-credentials.cfg +19 -0
  121. {mx_bluesky-1.4.7/tests/test_data/nexus_files/rotation_unicode_metafile → mx_bluesky-1.4.9/tests/test_data/nexus_files/rotation}/ins_8_5_expected_output.txt +1 -0
  122. {mx_bluesky-1.4.7/tests/test_data/nexus_files/rotation → mx_bluesky-1.4.9/tests/test_data/nexus_files/rotation_unicode_metafile}/ins_8_5_expected_output.txt +1 -0
  123. mx_bluesky-1.4.9/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json +37 -0
  124. mx_bluesky-1.4.7/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters_nomove.json → mx_bluesky-1.4.9/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters_nomove.json +9 -5
  125. mx_bluesky-1.4.9/tests/test_data/rabbitmq-test-credentials.yml +6 -0
  126. mx_bluesky-1.4.9/tests/test_data/test_daq_configuration/OAVCentring_hyperion.json +23 -0
  127. mx_bluesky-1.4.9/tests/test_data/test_daq_configuration/display.configuration +42 -0
  128. mx_bluesky-1.4.9/tests/test_data/test_images/ins_15_33_0.png +0 -0
  129. mx_bluesky-1.4.9/tests/test_data/test_images/ins_15_33_90.png +0 -0
  130. mx_bluesky-1.4.9/tests/test_data/test_images/ins_15_33_expected_0.png +0 -0
  131. mx_bluesky-1.4.9/tests/test_data/test_images/ins_15_33_expected_270.png +0 -0
  132. mx_bluesky-1.4.9/tests/test_data/test_images/thau_1_91_0.png +0 -0
  133. mx_bluesky-1.4.9/tests/test_data/test_images/thau_1_91_90.png +0 -0
  134. mx_bluesky-1.4.9/tests/test_data/test_images/thau_1_91_expected_0.png +0 -0
  135. mx_bluesky-1.4.9/tests/test_data/test_images/thau_1_91_expected_270.png +0 -0
  136. mx_bluesky-1.4.9/tests/test_data/zocalo-test-configuration.yaml +20 -0
  137. mx_bluesky-1.4.9/tests/unit_tests/beamlines/aithre_lasershaping/test_beamline_safe.py +66 -0
  138. mx_bluesky-1.4.9/tests/unit_tests/beamlines/aithre_lasershaping/test_goniometer_controls.py +111 -0
  139. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i04/test_thawing.py +3 -3
  140. mx_bluesky-1.4.9/tests/unit_tests/beamlines/i23/test_serial.py +163 -0
  141. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/conftest.py +28 -1
  142. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/extruder/test_extruder_collect.py +57 -10
  143. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_manager.py +23 -10
  144. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_ft_collect.py +122 -67
  145. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_moveonclick.py +2 -6
  146. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/parameters/test_utils.py +18 -0
  147. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_beamline.py +11 -7
  148. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_detector.py +25 -10
  149. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/test_dcid.py +13 -1
  150. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/test_write_nexus.py +22 -18
  151. mx_bluesky-1.4.9/tests/unit_tests/beamlines/i24/serial/web_gui/test_general_plans.py +95 -0
  152. {mx_bluesky-1.4.7/tests/unit_tests/hyperion → mx_bluesky-1.4.9/tests/unit_tests/common}/experiment_plans/test_change_aperture_then_move_plan.py +10 -22
  153. {mx_bluesky-1.4.7/tests/unit_tests/hyperion → mx_bluesky-1.4.9/tests/unit_tests/common}/experiment_plans/test_grid_detection_plan.py +15 -17
  154. mx_bluesky-1.4.9/tests/unit_tests/common/external_interaction/callbacks/common/test_snapshot_callback.py +372 -0
  155. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/external_interaction/callbacks/ispyb/conftest.py +2 -15
  156. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_gridscan_ispyb_store_3d.py +33 -41
  157. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_rotation_ispyb_store.py +21 -30
  158. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/external_interaction/conftest.py +0 -12
  159. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/external_interaction/nexus/test_nexus_utils.py +1 -1
  160. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_callback.py +0 -4
  161. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_handler.py +1 -6
  162. mx_bluesky-1.4.9/tests/unit_tests/common/parameters/test_components.py +64 -0
  163. mx_bluesky-1.4.9/tests/unit_tests/common/plans/test_common_flyscan_xray_centre_plan.py +680 -0
  164. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/plans/test_read_hardware.py +1 -1
  165. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/test_do_fgs.py +5 -5
  166. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/utils/test_log.py +37 -37
  167. mx_bluesky-1.4.9/tests/unit_tests/conftest.py +319 -0
  168. mx_bluesky-1.4.9/tests/unit_tests/hyperion/conftest.py +125 -0
  169. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py +3 -3
  170. mx_bluesky-1.4.9/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py +106 -0
  171. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/device_setup_plans/test_setup_oav.py +1 -1
  172. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/device_setup_plans/test_zebra_setup.py +0 -35
  173. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/experiment_plans/conftest.py +7 -5
  174. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/experiment_plans/test_grid_detect_then_xray_centre_plan.py +178 -50
  175. mx_bluesky-1.4.9/tests/unit_tests/hyperion/experiment_plans/test_hyperion_flyscan_xray_centre_plan.py +400 -0
  176. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py +234 -38
  177. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/experiment_plans/test_oav_snapshot_plan.py +70 -4
  178. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py +41 -29
  179. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_and_change_energy.py +54 -4
  180. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_then_centre.py +25 -14
  181. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/experiment_plans/test_rotation_scan_plan.py +767 -43
  182. mx_bluesky-1.4.9/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +14 -0
  183. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py +1 -1
  184. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/test_sample_handling_callback.py +2 -2
  185. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +12 -0
  186. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/external_interaction/callbacks/test_rotation_callbacks.py +10 -4
  187. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/external_interaction/conftest.py +2 -8
  188. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/external_interaction/nexus/test_compare_nexus_to_gda_exhaustively.py +3 -2
  189. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/external_interaction/nexus/test_write_nexus.py +5 -3
  190. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/external_interaction/test_agamemnon.py +184 -67
  191. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/external_interaction/test_write_rotation_nexus.py +34 -40
  192. mx_bluesky-1.4.9/tests/unit_tests/hyperion/parameters/__init__.py +0 -0
  193. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/parameters/test_parameter_model.py +3 -3
  194. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/test_baton_handler.py +19 -3
  195. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/test_main_system.py +61 -71
  196. mx_bluesky-1.4.9/tests/unit_tests/hyperion/utils/__init__.py +0 -0
  197. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/deploy/deploy_mx_bluesky.py +1 -1
  198. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/deploy/deploy_mx_bluesky_app_to_k8s.sh +7 -1
  199. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/dls_dev_env.sh +1 -2
  200. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/docker/entrypoint.sh +0 -18
  201. mx_bluesky-1.4.7/hyperion_other/workflows/code.yml +0 -86
  202. mx_bluesky-1.4.7/hyperion_other/workflows/container_tests.sh +0 -1
  203. mx_bluesky-1.4.7/src/mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py +0 -18
  204. mx_bluesky-1.4.7/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py +0 -109
  205. mx_bluesky-1.4.7/src/mx_bluesky/hyperion/device_setup_plans/check_beamstop.py +0 -27
  206. mx_bluesky-1.4.7/src/mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +0 -467
  207. mx_bluesky-1.4.7/src/mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py +0 -107
  208. mx_bluesky-1.4.7/tests/system_tests/hyperion/experiment_plans/test_fgs_plan.py +0 -346
  209. mx_bluesky-1.4.7/tests/system_tests/hyperion/external_interaction/test_agamemnon.py +0 -59
  210. mx_bluesky-1.4.7/tests/system_tests/hyperion/test_device_setups_and_cleanups.py +0 -63
  211. mx_bluesky-1.4.7/tests/test_data/agamemnon/example_collect.json +0 -83
  212. mx_bluesky-1.4.7/tests/unit_tests/beamlines/aithre_lasershaping/test_goniometer_controls.py +0 -39
  213. mx_bluesky-1.4.7/tests/unit_tests/beamlines/i24/serial/web_gui/test_general_plans.py +0 -60
  214. mx_bluesky-1.4.7/tests/unit_tests/common/external_interaction/callbacks/common/test_snapshot_callback.py +0 -83
  215. mx_bluesky-1.4.7/tests/unit_tests/conftest.py +0 -72
  216. mx_bluesky-1.4.7/tests/unit_tests/hyperion/conftest.py +0 -53
  217. mx_bluesky-1.4.7/tests/unit_tests/hyperion/device_setup_plans/test_check_beamstop.py +0 -24
  218. mx_bluesky-1.4.7/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py +0 -128
  219. mx_bluesky-1.4.7/tests/unit_tests/hyperion/experiment_plans/test_flyscan_xray_centre_plan.py +0 -1122
  220. mx_bluesky-1.4.7/tests/unit_tests/hyperion/experiment_plans/test_multi_rotation_scan_plan.py +0 -751
  221. mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +0 -12
  222. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.copier-answers.yml +0 -0
  223. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.coveragerc +0 -0
  224. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.devcontainer/Dockerfile +0 -0
  225. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.devcontainer/devcontainer.json +0 -0
  226. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.dockerignore +0 -0
  227. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/CODEOWNERS +0 -0
  228. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/CONTRIBUTING.md +0 -0
  229. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  230. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/ISSUE_TEMPLATE/issue.md +0 -0
  231. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/actions/install_requirements/action.yml +0 -0
  232. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/actions/verify-nexus/Dockerfile +0 -0
  233. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/actions/verify-nexus/action.yml +0 -0
  234. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/actions/verify-nexus/entrypoint.sh +0 -0
  235. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/dependabot.yml +0 -0
  236. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/pages/index.html +0 -0
  237. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/pages/make_switcher.py +0 -0
  238. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/workflows/_check.yml +0 -0
  239. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/workflows/_container.yml +0 -0
  240. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/workflows/_dist.yml +0 -0
  241. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/workflows/_docs.yml +0 -0
  242. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/workflows/_pypi.yml +0 -0
  243. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/workflows/_release.yml +0 -0
  244. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/workflows/_tox.yml +0 -0
  245. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/workflows/ci.yml +0 -0
  246. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.github/workflows/periodic.yml +0 -0
  247. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.pre-commit-config.yaml +0 -0
  248. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.vscode/extensions.json +0 -0
  249. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.vscode/launch.json +0 -0
  250. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.vscode/mx-bluesky.code-workspace +0 -0
  251. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.vscode/mxb-with-core-dependencies.code-workspace +0 -0
  252. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.vscode/settings.json +0 -0
  253. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/.vscode/tasks.json +0 -0
  254. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/Dockerfile +0 -0
  255. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/Dockerfile.release +0 -0
  256. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/LICENSE +0 -0
  257. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/README.rst +0 -0
  258. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/catalog-info.yaml +0 -0
  259. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/codecov.yml +0 -0
  260. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/_api.rst +0 -0
  261. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/_templates/custom-module-template.rst +0 -0
  262. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/conf.py +0 -0
  263. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/explanations/callback_and_run_logic.rst +0 -0
  264. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  265. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/explanations/decisions/0002-repository-structure.rst +0 -0
  266. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/explanations/decisions/0003-python-version-support.rst +0 -0
  267. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/explanations/decisions.rst +0 -0
  268. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/how-to/contribute.rst +0 -0
  269. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/how-to/create-a-release.rst +0 -0
  270. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/how-to/deploy-a-release.rst +0 -0
  271. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/how-to/dev-ops/build-docs.rst +0 -0
  272. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/how-to/dev-ops/dev-ops.rst +0 -0
  273. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/how-to/dev-ops/lint.rst +0 -0
  274. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/how-to/dev-ops/run-tests.rst +0 -0
  275. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/how-to/dev-ops/update-tools.rst +0 -0
  276. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/how-to/get-started.rst +0 -0
  277. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/index.rst +0 -0
  278. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/general/reference/standards.rst +0 -0
  279. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/hyperion/how-to/update-panda-ioc.rst +0 -0
  280. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/hyperion/reference/param-hierarchy.rst +0 -0
  281. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/hyperion/system-tests.rst +0 -0
  282. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/murko-integration/explanations/architecture.rst +0 -0
  283. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/murko-integration/images/murko_setup.drawio.png +0 -0
  284. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/murko-integration/index.rst +0 -0
  285. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/serial-crystallography-on-i24/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  286. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/serial-crystallography-on-i24/explanations/decisions.rst +0 -0
  287. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/serial-crystallography-on-i24/how-to/environment-setup.rst +0 -0
  288. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/developer/serial-crystallography-on-i24/how-to/run-a-collection.rst +0 -0
  289. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/images/dls-favicon.ico +0 -0
  290. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/images/dls-logo.svg +0 -0
  291. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/docs/index.rst +0 -0
  292. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/helmcharts/hyperion/Chart.yaml +0 -0
  293. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/helmcharts/hyperion/templates/ingress.yaml +0 -0
  294. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/helmcharts/hyperion/templates/service.yaml +0 -0
  295. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/helmcharts/redis-to-murko/Chart.yaml +0 -0
  296. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/helmcharts/redis-to-murko/templates/deployment.yaml +0 -0
  297. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/helmcharts/redis-to-murko/values.yaml +0 -0
  298. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/hyperion_other/workflows/add_assignee_when_pr_opened.yml +0 -0
  299. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/hyperion_other/workflows/assigned_issues_to_in_progress.yml +0 -0
  300. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/hyperion_other/workflows/get_issue_from_pr.yml +0 -0
  301. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/hyperion_other/workflows/get_project_data_and_move_column.yml +0 -0
  302. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/hyperion_other/workflows/linkcheck.yml +0 -0
  303. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/hyperion_other/workflows/open_prs_to_review.yml +0 -0
  304. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/hyperion_other/workflows/opened_issues_to_backlog.yml +0 -0
  305. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/hyperion_other/workflows/pin_versions.py +0 -0
  306. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/hyperion_other/workflows/pre_release_workflow.yml +0 -0
  307. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/hyperion_other/workflows/rework_prs_to_in_progress.yml +0 -0
  308. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/hyperion_other/workflows/test_data/pip_freeze.txt +0 -0
  309. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/hyperion_other/workflows/test_data/setup.cfg +0 -0
  310. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/hyperion_other/workflows/test_data/setup.cfg.pinned +0 -0
  311. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/hyperion_other/workflows/test_data/setup.cfg.unpinned +0 -0
  312. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/hyperion_other/workflows/test_pin_versions.py +0 -0
  313. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/pull_request_template.md +0 -0
  314. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/run_hyperion_in_podman.sh +0 -0
  315. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/setup.cfg +0 -0
  316. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/__init__.py +0 -0
  317. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/__main__.py +0 -0
  318. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/__init__.py +0 -0
  319. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/aithre_lasershaping/check_goniometer_performance.py +0 -0
  320. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i04/__init__.py +0 -0
  321. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i04/callbacks/murko_callback.py +0 -0
  322. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/__init__.py +0 -0
  323. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -0
  324. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/extruder/__init__.py +0 -0
  325. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +0 -0
  326. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -0
  327. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +0 -0
  328. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -0
  329. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -0
  330. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -0
  331. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -0
  332. /mx_bluesky-1.4.7/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short1-laser.png → /mx_bluesky-1.4.9/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/s1l.png +0 -0
  333. /mx_bluesky-1.4.7/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short2-laser.png → /mx_bluesky-1.4.9/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/s2l.png +0 -0
  334. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py +0 -0
  335. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py +0 -0
  336. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +0 -0
  337. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py +0 -0
  338. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/parameters/__init__.py +0 -0
  339. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/parameters/constants.py +0 -0
  340. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py +0 -0
  341. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json +0 -0
  342. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt +0 -0
  343. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +0 -0
  344. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
  345. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/run_extruder.sh +0 -0
  346. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/run_fixed_target.sh +0 -0
  347. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/run_serial.py +0 -0
  348. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/run_ssx.sh +0 -0
  349. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/set_visit_directory.sh +0 -0
  350. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
  351. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py +0 -0
  352. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py +0 -0
  353. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/start_blueapi.sh +0 -0
  354. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/__init__.py +0 -0
  355. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/__init__.py +0 -0
  356. {mx_bluesky-1.4.7/src/mx_bluesky/hyperion → mx_bluesky-1.4.9/src/mx_bluesky/common}/device_setup_plans/position_detector.py +0 -0
  357. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/device_setup_plans/setup_panda.py +0 -0
  358. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/device_setup_plans/xbpm_feedback.py +0 -0
  359. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/__init__.py +0 -0
  360. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/callbacks/common/__init__.py +0 -0
  361. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/callbacks/common/abstract_event.py +0 -0
  362. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/callbacks/common/grid_detection_callback.py +0 -0
  363. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py +0 -0
  364. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/callbacks/common/log_uid_tag_callback.py +0 -0
  365. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/callbacks/common/logging_callback.py +0 -0
  366. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/callbacks/common/plan_reactive_callback.py +0 -0
  367. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py +0 -0
  368. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/callbacks/sample_handling/__init__.py +0 -0
  369. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/callbacks/sample_handling/sample_handling_callback.py +0 -0
  370. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/__init__.py +0 -0
  371. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py +0 -0
  372. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py +0 -0
  373. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/config_server.py +0 -0
  374. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/ispyb/__init__.py +0 -0
  375. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/ispyb/data_model.py +0 -0
  376. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py +0 -0
  377. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/nexus/__init__.py +0 -0
  378. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/external_interaction/nexus/write_nexus.py +0 -0
  379. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/plans/__init__.py +0 -0
  380. /mx_bluesky-1.4.7/src/mx_bluesky/common/preprocessors/__init__.py → /mx_bluesky-1.4.9/src/mx_bluesky/common/plans/inner_plans/__init__ .py +0 -0
  381. {mx_bluesky-1.4.7/src/mx_bluesky/common/plans → mx_bluesky-1.4.9/src/mx_bluesky/common/plans/inner_plans}/do_fgs.py +0 -0
  382. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/plans/write_sample_status.py +0 -0
  383. {mx_bluesky-1.4.7/src/mx_bluesky/common/protocols → mx_bluesky-1.4.9/src/mx_bluesky/common/preprocessors}/__init__.py +0 -0
  384. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/preprocessors/preprocessors.py +0 -0
  385. {mx_bluesky-1.4.7/src/mx_bluesky/hyperion/device_setup_plans → mx_bluesky-1.4.9/src/mx_bluesky/common/protocols}/__init__.py +0 -0
  386. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/protocols/protocols.py +0 -0
  387. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/utils/context.py +0 -0
  388. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/utils/exceptions.py +0 -0
  389. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/utils/tracing.py +0 -0
  390. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/utils/utils.py +0 -0
  391. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/common/xrc_result.py +0 -0
  392. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/definitions.py +0 -0
  393. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/__init__.py +0 -0
  394. {mx_bluesky-1.4.7/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation → mx_bluesky-1.4.9/src/mx_bluesky/hyperion/device_setup_plans}/__init__.py +0 -0
  395. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py +0 -0
  396. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +0 -0
  397. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/external_interaction/__init__.py +0 -0
  398. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/external_interaction/callbacks/__init__.py +0 -0
  399. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py +0 -0
  400. {mx_bluesky-1.4.7/tests → mx_bluesky-1.4.9/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
  401. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/parameters/__init__.py +0 -0
  402. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/parameters/components.py +0 -0
  403. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/parameters/robot_load.py +0 -0
  404. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml +0 -0
  405. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/hyperion/utils/__init__.py +0 -0
  406. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky/jupyter_example.ipynb +0 -0
  407. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky.egg-info/dependency_links.txt +0 -0
  408. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky.egg-info/entry_points.txt +0 -0
  409. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/src/mx_bluesky.egg-info/top_level.txt +0 -0
  410. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/start_jupyter.sh +0 -0
  411. {mx_bluesky-1.4.7/tests/system_tests → mx_bluesky-1.4.9/tests}/__init__.py +0 -0
  412. {mx_bluesky-1.4.7/tests/system_tests/hyperion → mx_bluesky-1.4.9/tests/system_tests}/__init__.py +0 -0
  413. {mx_bluesky-1.4.7/tests/system_tests/hyperion/experiment_plans → mx_bluesky-1.4.9/tests/system_tests/hyperion}/__init__.py +0 -0
  414. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/system_tests/hyperion/external_interaction/__init__.py +0 -0
  415. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/system_tests/hyperion/external_interaction/callbacks/__init__.py +0 -0
  416. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/nexus_files/README.md +0 -0
  417. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/nexus_files/fake_data.h5 +0 -0
  418. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/nexus_files/rotation/ins_8_5.nxs +0 -0
  419. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/nexus_files/rotation/ins_8_5_meta.h5.gz +0 -0
  420. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5.nxs +0 -0
  421. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_meta.h5.gz +0 -0
  422. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/parameter_json_files/example_load_centre_collect_params.json +0 -0
  423. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json +0 -0
  424. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json +0 -0
  425. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json +0 -0
  426. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +0 -0
  427. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/parameter_json_files/good_test_parameters.json +0 -0
  428. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json +0 -0
  429. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json +0 -0
  430. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/parameter_json_files/good_test_robot_load_params.json +0 -0
  431. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json +0 -0
  432. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json +0 -0
  433. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/parameter_json_files/load_centre_collect_params_top_n_by_max_count.json +0 -0
  434. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json +0 -0
  435. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/parameter_json_files/test_oav_snapshot_params.json +0 -0
  436. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/scratch/README +0 -0
  437. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_OAVCentring.json +0 -0
  438. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_beamline_dcm_pitch_converter.txt +0 -0
  439. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  440. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_beamline_parameters.txt +0 -0
  441. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_beamline_vfm_lat_converter.txt +0 -0
  442. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_config.cfg +0 -0
  443. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_daq_configuration/domain/beamlineParameters +0 -0
  444. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  445. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  446. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_daq_configuration/lookup/BeamLine_Undulator_toGap.txt +0 -0
  447. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_daq_configuration/lookup/test_det_dist_converter.txt +0 -0
  448. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_det_dist_converter.txt +0 -0
  449. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_display.configuration +0 -0
  450. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_images/generate_snapshot_input.png +0 -0
  451. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_images/generate_snapshot_output.png +0 -0
  452. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_jCameraManZoomLevels.xml +0 -0
  453. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_lookup_table.txt +0 -0
  454. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/test_data/test_mirror_focus.json +0 -0
  455. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/__init__.py +0 -0
  456. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/__init__.py +0 -0
  457. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/aithre_lasershaping/test_check_goniometer_performance.py +0 -0
  458. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i04/callbacks/test_murko_callback.py +0 -0
  459. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i04/test_redis_to_murko_forwarder.py +0 -0
  460. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/__init__.py +0 -0
  461. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/__init__.py +0 -0
  462. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/extruder/__init__.py +0 -0
  463. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/fixed_target/__init__.py +0 -0
  464. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/fixed_target/conftest.py +0 -0
  465. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_startup.py +0 -0
  466. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/parameters/test_parameter_model.py +0 -0
  467. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
  468. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_pv_abstract.py +0 -0
  469. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_zebra_plans.py +0 -0
  470. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/test_log.py +0 -0
  471. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/test_run_serial.py +0 -0
  472. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/beamlines/i24/serial/web_gui/__init__.py +0 -0
  473. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/__init__.py +0 -0
  474. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/device_setup_plans/test_setup_panda.py +0 -0
  475. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/device_setup_plans/test_xbpm_feedback.py +0 -0
  476. {mx_bluesky-1.4.7/tests/unit_tests/common/external_interaction → mx_bluesky-1.4.9/tests/unit_tests/common/experiment_plans}/__init__.py +0 -0
  477. {mx_bluesky-1.4.7/tests/unit_tests/common/external_interaction/callbacks → mx_bluesky-1.4.9/tests/unit_tests/common/external_interaction}/__init__.py +0 -0
  478. {mx_bluesky-1.4.7/tests/unit_tests/common/external_interaction/callbacks/common → mx_bluesky-1.4.9/tests/unit_tests/common/external_interaction/callbacks}/__init__.py +0 -0
  479. {mx_bluesky-1.4.7/tests/unit_tests/common/external_interaction/callbacks/ispyb → mx_bluesky-1.4.9/tests/unit_tests/common/external_interaction/callbacks/common}/__init__.py +0 -0
  480. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/external_interaction/callbacks/common/test_abstract_event.py +0 -0
  481. {mx_bluesky-1.4.7/tests/unit_tests/common/plans → mx_bluesky-1.4.9/tests/unit_tests/common/external_interaction/callbacks/ispyb}/__init__.py +0 -0
  482. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_expeye_interaction.py +0 -0
  483. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/external_interaction/callbacks/test_plan_reactive_callback.py +0 -0
  484. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/external_interaction/callbacks/test_zocalo_handler.py +0 -0
  485. {mx_bluesky-1.4.7/src/mx_bluesky → mx_bluesky-1.4.9/tests/unit_tests}/common/external_interaction/test_config_server.py +0 -0
  486. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/external_interaction/test_ispyb_utils.py +0 -0
  487. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/external_interaction/xray_centre/__init__.py +0 -0
  488. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_mapping.py +0 -0
  489. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/external_interaction/xray_centre/test_nexus_handler.py +0 -0
  490. {mx_bluesky-1.4.7/tests/unit_tests/common/preprocessors → mx_bluesky-1.4.9/tests/unit_tests/common/parameters}/__init__.py +0 -0
  491. {mx_bluesky-1.4.7/tests/unit_tests/common/utils → mx_bluesky-1.4.9/tests/unit_tests/common/plans}/__init__.py +0 -0
  492. {mx_bluesky-1.4.7/tests/unit_tests/hyperion → mx_bluesky-1.4.9/tests/unit_tests/common/preprocessors}/__init__.py +0 -0
  493. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/preprocessors/test_preprocessors.py +0 -0
  494. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/common/test_write_sample_status.py +0 -0
  495. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/device_setup_plans → mx_bluesky-1.4.9/tests/unit_tests/common/utils}/__init__.py +0 -0
  496. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/experiment_plans → mx_bluesky-1.4.9/tests/unit_tests/hyperion}/__init__.py +0 -0
  497. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction → mx_bluesky-1.4.9/tests/unit_tests/hyperion/device_setup_plans}/__init__.py +0 -0
  498. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/device_setup_plans/test_setup_panda.py +0 -0
  499. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/device_setup_plans/test_utils.py +0 -0
  500. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.4.9/tests/unit_tests/hyperion/experiment_plans}/__init__.py +0 -0
  501. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/experiment_plans/common/test_flyscan_result.py +0 -0
  502. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/experiment_plans/test_experiment_registry.py +0 -0
  503. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/experiment_plans/test_optimise_attenuation_plan.py +0 -0
  504. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/experiment_plans/test_pin_tip_centring.py +0 -0
  505. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/experiment_plans/test_set_energy_plan.py +0 -0
  506. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction/callbacks/rotation → mx_bluesky-1.4.9/tests/unit_tests/hyperion/external_interaction}/__init__.py +0 -0
  507. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling → mx_bluesky-1.4.9/tests/unit_tests/hyperion/external_interaction/callbacks}/__init__.py +0 -0
  508. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/external_interaction/callbacks/robot_load/test_robot_load_ispyb_callback.py +0 -0
  509. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/external_interaction/nexus → mx_bluesky-1.4.9/tests/unit_tests/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
  510. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/parameters → mx_bluesky-1.4.9/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling}/__init__.py +0 -0
  511. {mx_bluesky-1.4.7/tests/unit_tests/hyperion/utils → mx_bluesky-1.4.9/tests/unit_tests/hyperion/external_interaction/nexus}/__init__.py +0 -0
  512. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000001.h5 +0 -0
  513. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000002.h5 +0 -0
  514. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000003.h5 +0 -0
  515. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/test_exceptions.py +0 -0
  516. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/test_utils.py +0 -0
  517. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/utils/test_callback_sim.py +0 -0
  518. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/hyperion/utils/test_context.py +0 -0
  519. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/tests/unit_tests/test_cli.py +0 -0
  520. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/beam_off_trickery.sh +0 -0
  521. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/build_docker_image.sh +0 -0
  522. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/build_imginfo.sh +0 -0
  523. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/deploy/create_venv.py +0 -0
  524. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/deploy/deploy_edm_for_ssx.sh +0 -0
  525. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/deploy/test_deploy.py +0 -0
  526. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/dev_jaeger_container.sh +0 -0
  527. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/docker/healthcheck.sh +0 -0
  528. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/docker/i03-compose.yml +0 -0
  529. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/generate_plantuml.py +0 -0
  530. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/graylog/Dockerfile +0 -0
  531. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/graylog/tcp_input.json +0 -0
  532. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/procserv_ioc_start.sh +0 -0
  533. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/run_imginfo.sh +0 -0
  534. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/utility_scripts/setup_graylog.sh +0 -0
  535. {mx_bluesky-1.4.7 → mx_bluesky-1.4.9}/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.9
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
@@ -220,7 +220,7 @@ Requires-Dist: flask-restful
220
220
  Requires-Dist: ispyb
221
221
  Requires-Dist: jupyterlab
222
222
  Requires-Dist: matplotlib
223
- Requires-Dist: nexgen
223
+ Requires-Dist: nexgen>=0.11.0
224
224
  Requires-Dist: numpy
225
225
  Requires-Dist: opencv-python
226
226
  Requires-Dist: opentelemetry-distro
@@ -235,11 +235,11 @@ Requires-Dist: scipy
235
235
  Requires-Dist: semver
236
236
  Requires-Dist: matplotlib
237
237
  Requires-Dist: blueapi>=0.5.0
238
- Requires-Dist: daq-config-server>=0.1.1
239
- Requires-Dist: ophyd==1.9.0
240
- Requires-Dist: ophyd-async>=0.9.0a2
238
+ Requires-Dist: daq-config-server==0.1.1
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.48.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
 
@@ -68,7 +68,17 @@ For further information, see https://github.com/containers/podman/issues/2542
68
68
  Deploying to kubernetes
69
69
  -----------------------
70
70
 
71
- Once the docker image is built, the image can be deployed to kubernetes using the ``deploy_hyperion_to_k8s.sh`` script
71
+ Once the docker image is built, the image can be deployed to kubernetes using the ``deploy_mx_bluesky_app_to_k8s.sh``
72
+ script.
73
+
74
+ Secrets
75
+ ~~~~~~~
76
+
77
+ The deployment requires the following secrets to be created with the corresponding zocalo rabbitmq credentials if they
78
+ are not already present:
79
+
80
+ * ``rmq-creds``
81
+ * ``rmq-api-reader``
72
82
 
73
83
  Production deployment
74
84
  ~~~~~~~~~~~~~~~~~~~~~
@@ -77,12 +87,13 @@ Then create and deploy the helm release
77
87
 
78
88
  ::
79
89
 
80
- ./utility_scripts/deploy/deploy_hyperion_to_k8s.sh --beamline=<beamline> --checkout-to-prod hyperion
90
+ ./utility_scripts/deploy/deploy_mx_bluesky_app_to_k8s.sh --appVersion=x.y.z --beamline=<beamline> --checkout-to-prod hyperion hyperion
81
91
 
82
92
  This will run the ``deploy_mx_bluesky.py`` script to deploy the latest hyperion to ``/dls_sw``.
83
93
  You will be prompted to log into the beamline cluster, then it will create a helm release "hyperion".
84
94
  The source folders will be mounted as bind mounts to allow the pod to pick up changes in production.
85
95
  For production these are expected to be in the normal place defined in ``values.yaml``.
96
+ If the non-k8s deployment of hyperion has already been performed, then omit ``--checkout-to-prod``.
86
97
 
87
98
  Development deployment
88
99
  ~~~~~~~~~~~~~~~~~~~~~~
@@ -93,7 +104,7 @@ above, you install a dev deployment to the cluster you are currently logged into
93
104
 
94
105
  ::
95
106
 
96
- ./utility_scripts/deploy/deploy_hyperion_to_k8s.sh --dev --beamline=<beamline> --repository=<your image repo> hyperion-test
107
+ ./utility_scripts/deploy/deploy_mx_bluesky_app_to_k8s.sh --dev --beamline=<beamline> --repository=<your image repo> hyperion-test hyperion
97
108
 
98
109
 
99
110
  The dev deployment bind-mounts the current ``hyperion`` workspace and ``../dodal`` into the container so that you can
@@ -14,6 +14,7 @@ Documentation specific for the Hyperion module within MX-Bluesky
14
14
 
15
15
  reference/param-hierarchy
16
16
  reference/readme
17
+ reference/coordinate-systems
17
18
  deploying-hyperion
18
19
  system-tests
19
20
 
@@ -0,0 +1,20 @@
1
+ @startuml
2
+ box "Request Coordinate Space"
3
+ participant "GDA/Agamemnon"
4
+ participant Hyperion
5
+ end box
6
+
7
+ boundary omega_flip
8
+
9
+ box "Hardware Coordinate Space"
10
+ participant "Ophyd Devices"
11
+ participant "Nexus File"
12
+ end box
13
+
14
+ "GDA/Agamemnon" -> Hyperion: Hyperion Request\n(Request Coordinate Space)
15
+ Hyperion -> "Ophyd Devices": Rotation Operations
16
+ "Ophyd Devices" -> "Nexus File": PCAP Data
17
+ Hyperion -> "Nexus File": Write metadata\nRecord actual hardware coordinate system
18
+
19
+
20
+ @enduml
@@ -0,0 +1,76 @@
1
+ Hyperion Coordinate Systems
2
+ ===========================
3
+
4
+ Rotation Coordinate Systems
5
+ ---------------------------
6
+
7
+ Within hyperion coordinates are expressed both in requests to Hyperion, in commands issued to hardware, and in the
8
+ output files sent to downstream analysis.
9
+
10
+ .. uml:: coordinate-systems.puml
11
+
12
+ Within requests to Hyperion, the requested rotations are defined with respect to a fixed coordinate system, that is
13
+ defined to be the same for all installations and the intention is that this should be the same as that defined by the
14
+ nexus file format when all axes are in their positive orientations. Thus the same request made across different
15
+ deployments of Hyperion should result in the same physical motion regardless of the coordinate space conventions of
16
+ the underlying hardware.
17
+
18
+ In the ``RotationScan`` parameter class ``scan_width_deg`` is defined to always be positive and the direction is
19
+ defined by ``rotation_direction`` which can be ``POSITIVE`` or ``NEGATIVE``
20
+
21
+ The coordinate systems of the underlying hardware may differ from the request. At Diamond traditionally the omega
22
+ axis is implemented to be in the opposite direction, therefore the commands sent to the hardware are transformed and
23
+ the ``omega_flip`` feature flag controls this behaviour, which by default is set to ``True`` as this is
24
+ generally expected to be required for the beamlines here.
25
+
26
+ In the Nexus output file, there is provision for describing the choice of axis orientations in the nexus file, and
27
+ the ``omega_flip`` parameter affects the omega axis description in ``/entry/sample/transformations/omega``.
28
+ This is especially important as if PCAP position capture is enabled then referenced data files will contain positions
29
+ with respect to this axis.
30
+
31
+
32
+ Gridscan Coordinate System
33
+ --------------------------
34
+
35
+ The diagram below shows how the coordinate system used in the 3D gridscan relates to the beam and sample loop. The blue arrows indicate the direction of the beam. The red grids represent the grids used during the scan.
36
+
37
+ .. image:: ../../../images/176701633-b93bba62-b2e7-4740-a863-c6b388beb14f.png
38
+
39
+ Motors Coordinate System
40
+ ------------------------
41
+
42
+ .. include:: <isogrk1.txt>
43
+
44
+ The diagram below shows the x,y,z directions of the smargon motor coordinate system. The smargon y, z axes change with the :math:`\omega`. x,y,z are measured in millimetres.
45
+
46
+
47
+ * The pin runs from -ve x to +ve x
48
+ * y is +ve towards the ceiling when :math:`\omega = 0`.
49
+ * z is +ve towards the detector/away from the oav and parallel to the beam when :math:`\omega = 0`.
50
+ * The x and y coordinates of the image are also shown, the image feed has x from left to right, y from top to bottom, with the pin to the right of the image.
51
+ * |ohgr| rotates from the y axis at :math:`\omega = 0` (the floor to ceiling).
52
+
53
+ :math:`\omega = 0`
54
+
55
+
56
+ .. image:: ../../../images/motor-coords-omega-0.svg
57
+
58
+
59
+ :math:`\omega = \alpha`
60
+
61
+ .. image:: ../../../images/motor-coords-omega-alpha.svg
62
+
63
+
64
+ OAV Image Coordinate System
65
+ ---------------------------
66
+
67
+ In the OAV image the below coordinate system is used (with units in pixels).
68
+
69
+ .. image:: ../../../images/207297611-f67dfc25-a3a5-4ade-a1e7-28b54a136fa6.png
70
+
71
+ Conversion Between OAV Image and Smargon
72
+ ----------------------------------------
73
+
74
+ At :math:`\omega = 0`, :math:`x` and :math:`y` in the camera are antiparallel to :math:`x` and :math:`y` in the smargon. :math:`y` in the camera are is parallel to :math:`z` of the smargon at :math:`x` = :math:`\frac{\pi}{2}`. Then to convert from the camera to smargon coordinate systems we map
75
+
76
+ :math:`x_\text{smargon} = -x, \quad y_\text{smargon} = -y\cos(\omega),\quad z_\text{smargon} = y sin(\omega).`
@@ -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,17 @@ 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
+
31
+ This script will determine which beamline you are on based on the `BEAMLINE` environment variable. If on a
32
+ beamline Hyperion will run with `INFO` level logging, sending its logs to both production graylog and to the
33
+ beamline/log/bluesky/hyperion.log on the shared file system.
31
34
 
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.
35
+ If you wish to attempt to run from a developer machine, then (if you are able to connect all devices)
36
+ you may `run_hyperion.sh --dev --beamline=<beamline>`, which will give you a running instance albeit with
37
+ read-only devices. The `--dev` flag ensures that logging will not be sent to the production Graylog/output folders
38
+ and that hyperion will create mock devices.
33
39
 
34
40
  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
41
 
@@ -37,23 +43,9 @@ This uses the generic defaults for a local graylog instance. It can be accessed
37
43
 
38
44
  The hyperion python module can also be run directly without the startup script. It takes the same command line options, including:
39
45
 
40
- `INFO` level logging of the Bluesky event documents can be enabled with the flag
41
-
42
- ```
43
- python -m hyperion --dev --verbose-event-logging
44
- ```
45
-
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
46
  ## Testing
53
47
 
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
48
+ 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
49
 
58
50
  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
51
 
@@ -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.