mx-bluesky 1.4.6__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 (526) hide show
  1. mx_bluesky-1.4.8/.github/CODEOWNERS +1 -0
  2. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/CONTRIBUTING.md +17 -0
  3. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/workflows/_test.yml +3 -1
  4. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.gitignore +2 -1
  5. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/PKG-INFO +10 -9
  6. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/README.rst +1 -1
  7. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/conftest.py +1 -11
  8. mx_bluesky-1.4.8/docs/developer/code-map/grid_detect_then_xray_centre.drawio.png +0 -0
  9. mx_bluesky-1.4.8/docs/developer/code-map/grid_detect_xrc.rst +60 -0
  10. mx_bluesky-1.4.8/docs/developer/code-map/index.rst +17 -0
  11. mx_bluesky-1.4.8/docs/developer/general/explanations/callback_and_run_logic.rst +27 -0
  12. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/general/how-to/get-started.rst +2 -2
  13. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/general/index.rst +1 -0
  14. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/general/tutorials/profile-tests.rst +1 -1
  15. mx_bluesky-1.4.8/docs/developer/hyperion/how-to/update-panda-ioc.rst +44 -0
  16. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/hyperion/index.rst +12 -0
  17. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/hyperion/reference/gridscan.puml +1 -1
  18. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/hyperion/reference/readme.md +8 -13
  19. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/index.rst +12 -0
  20. mx_bluesky-1.4.6/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
  21. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/serial-crystallography-on-i24/index.rst +4 -4
  22. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/serial-crystallography-on-i24/project-planning/roadmap.rst +52 -39
  23. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/pull_request_template.md +1 -1
  24. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/pyproject.toml +47 -22
  25. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/run_hyperion.sh +2 -8
  26. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/_version.py +2 -2
  27. mx_bluesky-1.4.8/src/mx_bluesky/beamlines/aithre_lasershaping/__init__.py +13 -0
  28. mx_bluesky-1.4.8/src/mx_bluesky/beamlines/aithre_lasershaping/check_goniometer_performance.py +29 -0
  29. mx_bluesky-1.4.8/src/mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py +18 -0
  30. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py +35 -29
  31. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i04/thawing_plan.py +18 -3
  32. mx_bluesky-1.4.8/src/mx_bluesky/beamlines/i23/__init__.py +3 -0
  33. mx_bluesky-1.4.8/src/mx_bluesky/beamlines/i23/serial.py +71 -0
  34. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/__init__.py +2 -0
  35. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +12 -12
  36. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +36 -30
  37. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +3 -3
  38. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +15 -66
  39. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +8 -10
  40. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py +10 -3
  41. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/parameters/utils.py +36 -7
  42. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/set_visit_directory.sh +1 -1
  43. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py +16 -17
  44. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py +4 -4
  45. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +51 -52
  46. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py +3 -2
  47. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py +9 -7
  48. mx_bluesky-1.4.8/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py +169 -0
  49. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/write_nexus.py +6 -5
  50. {mx_bluesky-1.4.6/src/mx_bluesky/hyperion → mx_bluesky-1.4.8/src/mx_bluesky/common}/device_setup_plans/check_beamstop.py +1 -1
  51. {mx_bluesky-1.4.6/src/mx_bluesky/hyperion → mx_bluesky-1.4.8/src/mx_bluesky/common}/device_setup_plans/manipulate_sample.py +1 -1
  52. {mx_bluesky-1.4.6/src/mx_bluesky/hyperion → mx_bluesky-1.4.8/src/mx_bluesky/common}/device_setup_plans/setup_oav.py +12 -6
  53. mx_bluesky-1.4.8/src/mx_bluesky/common/device_setup_plans/xbpm_feedback.py +45 -0
  54. {mx_bluesky-1.4.6/src/mx_bluesky/hyperion → mx_bluesky-1.4.8/src/mx_bluesky/common}/experiment_plans/change_aperture_then_move_plan.py +13 -29
  55. {mx_bluesky-1.4.6/src/mx_bluesky/hyperion → mx_bluesky-1.4.8/src/mx_bluesky/common}/experiment_plans/oav_grid_detection_plan.py +6 -6
  56. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py +8 -9
  57. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py +1 -1
  58. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py +18 -15
  59. {mx_bluesky-1.4.6/src/mx_bluesky/hyperion → mx_bluesky-1.4.8/src/mx_bluesky/common}/external_interaction/callbacks/sample_handling/sample_handling_callback.py +16 -4
  60. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py +50 -45
  61. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py +2 -1
  62. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/ispyb/data_model.py +1 -0
  63. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_store.py +18 -2
  64. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/ispyb/ispyb_utils.py +4 -4
  65. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/nexus/nexus_utils.py +1 -1
  66. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/parameters/components.py +22 -2
  67. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/parameters/constants.py +6 -16
  68. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/parameters/gridscan.py +36 -32
  69. mx_bluesky-1.4.8/src/mx_bluesky/common/plans/common_flyscan_xray_centre_plan.py +316 -0
  70. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/plans/read_hardware.py +3 -3
  71. mx_bluesky-1.4.8/src/mx_bluesky/common/plans/write_sample_status.py +46 -0
  72. mx_bluesky-1.4.8/src/mx_bluesky/common/preprocessors/preprocessors.py +105 -0
  73. mx_bluesky-1.4.8/src/mx_bluesky/common/protocols/protocols.py +10 -0
  74. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/utils/log.py +15 -12
  75. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/__main__.py +5 -24
  76. mx_bluesky-1.4.8/src/mx_bluesky/hyperion/baton_handler.py +84 -0
  77. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +4 -4
  78. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py +5 -1
  79. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +0 -33
  80. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/device_setup_plans/utils.py +4 -4
  81. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/__init__.py +0 -10
  82. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/experiment_registry.py +0 -16
  83. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py +71 -88
  84. mx_bluesky-1.4.8/src/mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py +183 -0
  85. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +17 -8
  86. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py +29 -8
  87. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +4 -4
  88. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +6 -4
  89. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +11 -3
  90. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +9 -34
  91. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +35 -68
  92. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +27 -8
  93. mx_bluesky-1.4.8/src/mx_bluesky/hyperion/external_interaction/agamemnon.py +234 -0
  94. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +17 -9
  95. mx_bluesky-1.4.8/src/mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py +259 -0
  96. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/cli.py +2 -10
  97. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/constants.py +0 -5
  98. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/device_composites.py +40 -5
  99. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/gridscan.py +9 -58
  100. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/rotation.py +1 -5
  101. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/utils/context.py +2 -5
  102. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/utils/validation.py +13 -10
  103. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky.egg-info/PKG-INFO +10 -9
  104. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky.egg-info/SOURCES.txt +71 -28
  105. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky.egg-info/requires.txt +6 -6
  106. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/conftest.py +211 -163
  107. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/system_tests/conftest.py +31 -10
  108. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +23 -19
  109. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/conftest.py +31 -32
  110. mx_bluesky-1.4.8/tests/system_tests/hyperion/external_interaction/test_agamemnon.py +92 -0
  111. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/test_config_service.py +12 -6
  112. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/test_exp_eye_dev.py +8 -9
  113. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/test_ispyb_dev_connection.py +45 -18
  114. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/test_load_centre_collect_full_plan.py +278 -18
  115. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/test_nexgen.py +3 -1
  116. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/system_tests/hyperion/external_interaction/test_zocalo_system.py +8 -43
  117. mx_bluesky-1.4.8/tests/test_data/agamemnon/example_collect.json +83 -0
  118. mx_bluesky-1.4.8/tests/test_data/agamemnon/example_collect_multipin.json +83 -0
  119. mx_bluesky-1.4.8/tests/test_data/ispyb-test-credentials.cfg +19 -0
  120. mx_bluesky-1.4.8/tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json +37 -0
  121. mx_bluesky-1.4.6/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
  122. mx_bluesky-1.4.8/tests/test_data/rabbitmq-test-credentials.yml +6 -0
  123. mx_bluesky-1.4.8/tests/test_data/test_daq_configuration/OAVCentring_hyperion.json +23 -0
  124. mx_bluesky-1.4.8/tests/test_data/test_daq_configuration/display.configuration +42 -0
  125. mx_bluesky-1.4.8/tests/test_data/test_images/generate_snapshot_input.png +0 -0
  126. mx_bluesky-1.4.8/tests/test_data/test_images/generate_snapshot_output.png +0 -0
  127. mx_bluesky-1.4.8/tests/test_data/test_images/ins_15_33_0.png +0 -0
  128. mx_bluesky-1.4.8/tests/test_data/test_images/ins_15_33_90.png +0 -0
  129. mx_bluesky-1.4.8/tests/test_data/test_images/ins_15_33_expected_0.png +0 -0
  130. mx_bluesky-1.4.8/tests/test_data/test_images/ins_15_33_expected_270.png +0 -0
  131. mx_bluesky-1.4.8/tests/test_data/test_images/thau_1_91_0.png +0 -0
  132. mx_bluesky-1.4.8/tests/test_data/test_images/thau_1_91_90.png +0 -0
  133. mx_bluesky-1.4.8/tests/test_data/test_images/thau_1_91_expected_0.png +0 -0
  134. mx_bluesky-1.4.8/tests/test_data/test_images/thau_1_91_expected_270.png +0 -0
  135. mx_bluesky-1.4.8/tests/test_data/zocalo-test-configuration.yaml +20 -0
  136. mx_bluesky-1.4.8/tests/unit_tests/beamlines/aithre_lasershaping/test_check_goniometer_performance.py +31 -0
  137. mx_bluesky-1.4.8/tests/unit_tests/beamlines/aithre_lasershaping/test_goniometer_controls.py +39 -0
  138. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i04/test_redis_to_murko_forwarder.py +34 -7
  139. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i04/test_thawing.py +8 -6
  140. mx_bluesky-1.4.8/tests/unit_tests/beamlines/i23/test_serial.py +163 -0
  141. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/conftest.py +7 -1
  142. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/extruder/test_extruder_collect.py +17 -14
  143. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_manager.py +5 -10
  144. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_ft_collect.py +49 -64
  145. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_moveonclick.py +9 -13
  146. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/parameters/test_utils.py +18 -0
  147. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_beamline.py +26 -20
  148. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_detector.py +25 -10
  149. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_zebra_plans.py +9 -9
  150. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/test_dcid.py +1 -1
  151. mx_bluesky-1.4.8/tests/unit_tests/beamlines/i24/serial/test_write_nexus.py +63 -0
  152. mx_bluesky-1.4.8/tests/unit_tests/beamlines/i24/serial/web_gui/test_general_plans.py +95 -0
  153. {mx_bluesky-1.4.6/tests/unit_tests/hyperion → mx_bluesky-1.4.8/tests/unit_tests/common}/device_setup_plans/test_check_beamstop.py +2 -2
  154. mx_bluesky-1.4.8/tests/unit_tests/common/device_setup_plans/test_xbpm_feedback.py +132 -0
  155. {mx_bluesky-1.4.6/tests/unit_tests/hyperion → mx_bluesky-1.4.8/tests/unit_tests/common}/experiment_plans/test_change_aperture_then_move_plan.py +7 -7
  156. {mx_bluesky-1.4.6/tests/unit_tests/hyperion → mx_bluesky-1.4.8/tests/unit_tests/common}/experiment_plans/test_grid_detection_plan.py +15 -15
  157. mx_bluesky-1.4.8/tests/unit_tests/common/external_interaction/callbacks/common/test_snapshot_callback.py +372 -0
  158. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/callbacks/ispyb/conftest.py +2 -15
  159. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_gridscan_ispyb_store_3d.py +33 -41
  160. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_rotation_ispyb_store.py +21 -40
  161. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/callbacks/test_zocalo_handler.py +50 -32
  162. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/nexus/test_nexus_utils.py +1 -1
  163. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_callback.py +52 -4
  164. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_handler.py +5 -7
  165. mx_bluesky-1.4.8/tests/unit_tests/common/parameters/test_components.py +64 -0
  166. mx_bluesky-1.4.8/tests/unit_tests/common/plans/test_common_flyscan_xray_centre_plan.py +700 -0
  167. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/plans/test_read_hardware.py +1 -1
  168. mx_bluesky-1.4.8/tests/unit_tests/common/preprocessors/test_preprocessors.py +192 -0
  169. {mx_bluesky-1.4.6/tests/unit_tests/common/plan_stubs → mx_bluesky-1.4.8/tests/unit_tests/common}/test_do_fgs.py +5 -5
  170. mx_bluesky-1.4.8/tests/unit_tests/common/test_write_sample_status.py +65 -0
  171. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/utils/test_log.py +14 -9
  172. mx_bluesky-1.4.8/tests/unit_tests/conftest.py +319 -0
  173. mx_bluesky-1.4.8/tests/unit_tests/hyperion/conftest.py +125 -0
  174. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py +3 -3
  175. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py +9 -12
  176. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/device_setup_plans/test_setup_oav.py +1 -1
  177. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/device_setup_plans/test_zebra_setup.py +0 -35
  178. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/conftest.py +37 -17
  179. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_grid_detect_then_xray_centre_plan.py +72 -45
  180. mx_bluesky-1.4.8/tests/unit_tests/hyperion/experiment_plans/test_hyperion_flyscan_xray_centre_plan.py +400 -0
  181. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py +18 -13
  182. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_multi_rotation_scan_plan.py +236 -7
  183. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_oav_snapshot_plan.py +75 -9
  184. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py +4 -4
  185. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_pin_tip_centring.py +58 -1
  186. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_and_change_energy.py +54 -4
  187. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_then_centre.py +25 -106
  188. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_rotation_scan_plan.py +123 -60
  189. mx_bluesky-1.4.8/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +14 -0
  190. mx_bluesky-1.4.8/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/__init__.py +0 -0
  191. mx_bluesky-1.4.8/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/__init__.py +0 -0
  192. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/test_sample_handling_callback.py +15 -10
  193. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +12 -0
  194. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/callbacks/test_rotation_callbacks.py +18 -91
  195. mx_bluesky-1.4.8/tests/unit_tests/hyperion/external_interaction/nexus/__init__.py +0 -0
  196. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/nexus/test_compare_nexus_to_gda_exhaustively.py +2 -0
  197. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/nexus/test_write_nexus.py +2 -2
  198. mx_bluesky-1.4.8/tests/unit_tests/hyperion/external_interaction/test_agamemnon.py +449 -0
  199. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/test_write_rotation_nexus.py +2 -0
  200. mx_bluesky-1.4.8/tests/unit_tests/hyperion/parameters/__init__.py +0 -0
  201. mx_bluesky-1.4.8/tests/unit_tests/hyperion/test_baton_handler.py +162 -0
  202. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/test_main_system.py +47 -74
  203. mx_bluesky-1.4.8/tests/unit_tests/hyperion/utils/__init__.py +0 -0
  204. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/deploy/deploy_mx_bluesky.py +1 -1
  205. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/dls_dev_env.sh +1 -1
  206. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/docker/entrypoint.sh +2 -7
  207. mx_bluesky-1.4.6/hyperion_other/workflows/code.yml +0 -86
  208. mx_bluesky-1.4.6/hyperion_other/workflows/container_tests.sh +0 -1
  209. mx_bluesky-1.4.6/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py +0 -109
  210. mx_bluesky-1.4.6/src/mx_bluesky/common/external_interaction/callbacks/common/aperture_change_callback.py +0 -22
  211. mx_bluesky-1.4.6/src/mx_bluesky/hyperion/device_setup_plans/xbpm_feedback.py +0 -103
  212. mx_bluesky-1.4.6/src/mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +0 -466
  213. mx_bluesky-1.4.6/src/mx_bluesky/hyperion/external_interaction/agamemnon.py +0 -104
  214. mx_bluesky-1.4.6/tests/system_tests/hyperion/experiment_plans/test_fgs_plan.py +0 -345
  215. mx_bluesky-1.4.6/tests/system_tests/hyperion/external_interaction/test_agamemnon.py +0 -12
  216. mx_bluesky-1.4.6/tests/system_tests/hyperion/test_aperturescatterguard_system.py +0 -53
  217. mx_bluesky-1.4.6/tests/system_tests/hyperion/test_device_setups_and_cleanups.py +0 -63
  218. mx_bluesky-1.4.6/tests/unit_tests/beamlines/i24/serial/test_write_nexus.py +0 -48
  219. mx_bluesky-1.4.6/tests/unit_tests/beamlines/i24/serial/web_gui/test_general_plans.py +0 -60
  220. mx_bluesky-1.4.6/tests/unit_tests/conftest.py +0 -72
  221. mx_bluesky-1.4.6/tests/unit_tests/hyperion/conftest.py +0 -41
  222. mx_bluesky-1.4.6/tests/unit_tests/hyperion/device_setup_plans/test_xbpm_feedback.py +0 -135
  223. mx_bluesky-1.4.6/tests/unit_tests/hyperion/experiment_plans/test_flyscan_xray_centre_plan.py +0 -1012
  224. mx_bluesky-1.4.6/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +0 -12
  225. mx_bluesky-1.4.6/tests/unit_tests/hyperion/external_interaction/test_agamemnon.py +0 -186
  226. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.copier-answers.yml +0 -0
  227. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.coveragerc +0 -0
  228. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.devcontainer/Dockerfile +0 -0
  229. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.devcontainer/devcontainer.json +0 -0
  230. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.dockerignore +0 -0
  231. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  232. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/ISSUE_TEMPLATE/issue.md +0 -0
  233. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/actions/install_requirements/action.yml +0 -0
  234. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/actions/verify-nexus/Dockerfile +0 -0
  235. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/actions/verify-nexus/action.yml +0 -0
  236. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/actions/verify-nexus/entrypoint.sh +0 -0
  237. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/dependabot.yml +0 -0
  238. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/pages/index.html +0 -0
  239. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/pages/make_switcher.py +0 -0
  240. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/workflows/_check.yml +0 -0
  241. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/workflows/_container.yml +0 -0
  242. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/workflows/_dist.yml +0 -0
  243. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/workflows/_docs.yml +0 -0
  244. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/workflows/_pypi.yml +0 -0
  245. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/workflows/_release.yml +0 -0
  246. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/workflows/_tox.yml +0 -0
  247. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/workflows/ci.yml +0 -0
  248. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.github/workflows/periodic.yml +0 -0
  249. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.pre-commit-config.yaml +0 -0
  250. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.vscode/extensions.json +0 -0
  251. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.vscode/launch.json +0 -0
  252. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.vscode/mx-bluesky.code-workspace +0 -0
  253. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.vscode/mxb-with-core-dependencies.code-workspace +0 -0
  254. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.vscode/settings.json +0 -0
  255. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/.vscode/tasks.json +0 -0
  256. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/Dockerfile +0 -0
  257. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/Dockerfile.release +0 -0
  258. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/LICENSE +0 -0
  259. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/catalog-info.yaml +0 -0
  260. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/codecov.yml +0 -0
  261. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/_api.rst +0 -0
  262. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/_templates/custom-module-template.rst +0 -0
  263. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/conf.py +0 -0
  264. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/general/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  265. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/general/explanations/decisions/0002-repository-structure.rst +0 -0
  266. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/general/explanations/decisions/0003-python-version-support.rst +0 -0
  267. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/general/explanations/decisions.rst +0 -0
  268. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/general/how-to/contribute.rst +0 -0
  269. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/general/how-to/create-a-release.rst +0 -0
  270. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/general/how-to/deploy-a-release.rst +0 -0
  271. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/general/how-to/dev-ops/build-docs.rst +0 -0
  272. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/general/how-to/dev-ops/dev-ops.rst +0 -0
  273. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/general/how-to/dev-ops/lint.rst +0 -0
  274. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/general/how-to/dev-ops/run-tests.rst +0 -0
  275. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/general/how-to/dev-ops/update-tools.rst +0 -0
  276. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/general/reference/standards.rst +0 -0
  277. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/hyperion/deploying-hyperion.rst +0 -0
  278. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/hyperion/reference/param-hierarchy.rst +0 -0
  279. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/hyperion/system-tests.rst +0 -0
  280. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/murko-integration/explanations/architecture.rst +0 -0
  281. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/murko-integration/images/murko_setup.drawio.png +0 -0
  282. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/murko-integration/index.rst +0 -0
  283. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/serial-crystallography-on-i24/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  284. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/serial-crystallography-on-i24/explanations/decisions.rst +0 -0
  285. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/serial-crystallography-on-i24/how-to/environment-setup.rst +0 -0
  286. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/developer/serial-crystallography-on-i24/how-to/run-a-collection.rst +0 -0
  287. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/images/dls-favicon.ico +0 -0
  288. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/images/dls-logo.svg +0 -0
  289. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/docs/index.rst +0 -0
  290. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/helmcharts/hyperion/Chart.yaml +0 -0
  291. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/helmcharts/hyperion/templates/deployment.yaml +0 -0
  292. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/helmcharts/hyperion/templates/ingress.yaml +0 -0
  293. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/helmcharts/hyperion/templates/service.yaml +0 -0
  294. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/helmcharts/hyperion/values.yaml +0 -0
  295. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/helmcharts/redis-to-murko/Chart.yaml +0 -0
  296. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/helmcharts/redis-to-murko/templates/deployment.yaml +0 -0
  297. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/helmcharts/redis-to-murko/values.yaml +0 -0
  298. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/hyperion_other/workflows/add_assignee_when_pr_opened.yml +0 -0
  299. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/hyperion_other/workflows/assigned_issues_to_in_progress.yml +0 -0
  300. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/hyperion_other/workflows/get_issue_from_pr.yml +0 -0
  301. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/hyperion_other/workflows/get_project_data_and_move_column.yml +0 -0
  302. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/hyperion_other/workflows/linkcheck.yml +0 -0
  303. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/hyperion_other/workflows/open_prs_to_review.yml +0 -0
  304. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/hyperion_other/workflows/opened_issues_to_backlog.yml +0 -0
  305. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/hyperion_other/workflows/pin_versions.py +0 -0
  306. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/hyperion_other/workflows/pre_release_workflow.yml +0 -0
  307. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/hyperion_other/workflows/rework_prs_to_in_progress.yml +0 -0
  308. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/hyperion_other/workflows/test_data/pip_freeze.txt +0 -0
  309. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/hyperion_other/workflows/test_data/setup.cfg +0 -0
  310. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/hyperion_other/workflows/test_data/setup.cfg.pinned +0 -0
  311. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/hyperion_other/workflows/test_data/setup.cfg.unpinned +0 -0
  312. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/hyperion_other/workflows/test_pin_versions.py +0 -0
  313. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/run_hyperion_in_podman.sh +0 -0
  314. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/setup.cfg +0 -0
  315. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/__init__.py +0 -0
  316. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/__main__.py +0 -0
  317. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/__init__.py +0 -0
  318. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i04/__init__.py +0 -0
  319. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i04/callbacks/murko_callback.py +0 -0
  320. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/__init__.py +0 -0
  321. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/blueapi_config.yaml +0 -0
  322. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/dcid.py +0 -0
  323. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl +0 -0
  324. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -0
  325. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/extruder/__init__.py +0 -0
  326. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +0 -0
  327. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl +0 -0
  328. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +0 -0
  329. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -0
  330. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +0 -0
  331. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -0
  332. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -0
  333. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -0
  334. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -0
  335. mx_bluesky-1.4.6/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
  336. mx_bluesky-1.4.6/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
  337. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py +0 -0
  338. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py +0 -0
  339. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +0 -0
  340. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/log.py +9 -9
  341. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/parameters/__init__.py +0 -0
  342. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/parameters/constants.py +0 -0
  343. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py +0 -0
  344. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json +0 -0
  345. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt +0 -0
  346. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +0 -0
  347. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
  348. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/run_extruder.sh +0 -0
  349. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/run_fixed_target.sh +0 -0
  350. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/run_serial.py +0 -0
  351. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/run_ssx.sh +0 -0
  352. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
  353. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py +0 -0
  354. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/start_blueapi.sh +0 -0
  355. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/beamlines/i24/serial/web_gui_plans/__init__.py +0 -0
  356. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/__init__.py +0 -0
  357. {mx_bluesky-1.4.6/src/mx_bluesky/hyperion → mx_bluesky-1.4.8/src/mx_bluesky/common}/device_setup_plans/position_detector.py +0 -0
  358. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/device_setup_plans/setup_panda.py +0 -0
  359. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/__init__.py +0 -0
  360. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/__init__.py +0 -0
  361. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/abstract_event.py +0 -0
  362. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/grid_detection_callback.py +0 -0
  363. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/log_uid_tag_callback.py +0 -0
  364. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/logging_callback.py +0 -0
  365. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/common/plan_reactive_callback.py +0 -0
  366. {mx_bluesky-1.4.6/src/mx_bluesky/common/external_interaction/callbacks/xray_centre → mx_bluesky-1.4.8/src/mx_bluesky/common/external_interaction/callbacks/sample_handling}/__init__.py +0 -0
  367. {mx_bluesky-1.4.6/src/mx_bluesky/common/external_interaction/ispyb → mx_bluesky-1.4.8/src/mx_bluesky/common/external_interaction/callbacks/xray_centre}/__init__.py +0 -0
  368. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py +0 -0
  369. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/config_server.py +0 -0
  370. {mx_bluesky-1.4.6/src/mx_bluesky/common/external_interaction/nexus → mx_bluesky-1.4.8/src/mx_bluesky/common/external_interaction/ispyb}/__init__.py +0 -0
  371. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py +0 -0
  372. {mx_bluesky-1.4.6/src/mx_bluesky/hyperion/device_setup_plans → mx_bluesky-1.4.8/src/mx_bluesky/common/external_interaction/nexus}/__init__.py +0 -0
  373. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/nexus/write_nexus.py +0 -0
  374. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/external_interaction/test_config_server.py +0 -0
  375. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/plans/__init__.py +0 -0
  376. /mx_bluesky-1.4.6/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/__init__.py → /mx_bluesky-1.4.8/src/mx_bluesky/common/plans/inner_plans/__init__ .py +0 -0
  377. {mx_bluesky-1.4.6/src/mx_bluesky/common/plans → mx_bluesky-1.4.8/src/mx_bluesky/common/plans/inner_plans}/do_fgs.py +0 -0
  378. {mx_bluesky-1.4.6/src/mx_bluesky/hyperion/external_interaction/callbacks/sample_handling → mx_bluesky-1.4.8/src/mx_bluesky/common/preprocessors}/__init__.py +0 -0
  379. {mx_bluesky-1.4.6/tests → mx_bluesky-1.4.8/src/mx_bluesky/common/protocols}/__init__.py +0 -0
  380. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/utils/context.py +0 -0
  381. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/utils/exceptions.py +0 -0
  382. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/utils/tracing.py +0 -0
  383. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/utils/utils.py +0 -0
  384. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/common/xrc_result.py +0 -0
  385. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/definitions.py +0 -0
  386. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/__init__.py +0 -0
  387. {mx_bluesky-1.4.6/tests/system_tests → mx_bluesky-1.4.8/src/mx_bluesky/hyperion/device_setup_plans}/__init__.py +0 -0
  388. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/device_setup_plans/smargon.py +0 -0
  389. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +0 -0
  390. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/__init__.py +0 -0
  391. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/__init__.py +0 -0
  392. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py +0 -0
  393. {mx_bluesky-1.4.6/tests/system_tests/hyperion → mx_bluesky-1.4.8/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation}/__init__.py +0 -0
  394. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +0 -0
  395. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +0 -0
  396. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +0 -0
  397. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/external_interaction/config_server.py +0 -0
  398. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/__init__.py +0 -0
  399. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/components.py +0 -0
  400. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/load_centre_collect.py +0 -0
  401. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/parameters/robot_load.py +0 -0
  402. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml +0 -0
  403. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/hyperion/utils/__init__.py +0 -0
  404. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky/jupyter_example.ipynb +0 -0
  405. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky.egg-info/dependency_links.txt +0 -0
  406. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky.egg-info/entry_points.txt +0 -0
  407. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/src/mx_bluesky.egg-info/top_level.txt +0 -0
  408. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/start_jupyter.sh +0 -0
  409. {mx_bluesky-1.4.6/tests/system_tests/hyperion/experiment_plans → mx_bluesky-1.4.8/tests}/__init__.py +0 -0
  410. {mx_bluesky-1.4.6/tests/system_tests/hyperion/external_interaction → mx_bluesky-1.4.8/tests/system_tests}/__init__.py +0 -0
  411. {mx_bluesky-1.4.6/tests/system_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.4.8/tests/system_tests/hyperion}/__init__.py +0 -0
  412. {mx_bluesky-1.4.6/tests/unit_tests → mx_bluesky-1.4.8/tests/system_tests/hyperion/external_interaction}/__init__.py +0 -0
  413. {mx_bluesky-1.4.6/tests/unit_tests/beamlines → mx_bluesky-1.4.8/tests/system_tests/hyperion/external_interaction/callbacks}/__init__.py +0 -0
  414. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/nexus_files/README.md +0 -0
  415. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/nexus_files/fake_data.h5 +0 -0
  416. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/nexus_files/rotation/ins_8_5.nxs +0 -0
  417. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/nexus_files/rotation/ins_8_5_expected_output.txt +0 -0
  418. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/nexus_files/rotation/ins_8_5_meta.h5.gz +0 -0
  419. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5.nxs +0 -0
  420. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_expected_output.txt +0 -0
  421. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_meta.h5.gz +0 -0
  422. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/example_load_centre_collect_params.json +0 -0
  423. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json +0 -0
  424. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json +0 -0
  425. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params_multi_rotation.json +0 -0
  426. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +0 -0
  427. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_parameters.json +0 -0
  428. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json +0 -0
  429. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json +0 -0
  430. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_robot_load_params.json +0 -0
  431. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json +0 -0
  432. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json +0 -0
  433. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/load_centre_collect_params_top_n_by_max_count.json +0 -0
  434. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json +0 -0
  435. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/parameter_json_files/test_oav_snapshot_params.json +0 -0
  436. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/scratch/README +0 -0
  437. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/test_OAVCentring.json +0 -0
  438. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/test_beamline_dcm_pitch_converter.txt +0 -0
  439. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  440. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/test_beamline_parameters.txt +0 -0
  441. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/test_beamline_vfm_lat_converter.txt +0 -0
  442. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/test_config.cfg +0 -0
  443. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/test_daq_configuration/domain/beamlineParameters +0 -0
  444. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  445. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  446. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/test_daq_configuration/lookup/BeamLine_Undulator_toGap.txt +0 -0
  447. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/test_daq_configuration/lookup/test_det_dist_converter.txt +0 -0
  448. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/test_det_dist_converter.txt +0 -0
  449. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/test_display.configuration +0 -0
  450. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/test_jCameraManZoomLevels.xml +0 -0
  451. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/test_lookup_table.txt +0 -0
  452. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/test_data/test_mirror_focus.json +0 -0
  453. {mx_bluesky-1.4.6/tests/unit_tests/beamlines/i24 → mx_bluesky-1.4.8/tests/unit_tests}/__init__.py +0 -0
  454. {mx_bluesky-1.4.6/tests/unit_tests/beamlines/i24/serial → mx_bluesky-1.4.8/tests/unit_tests/beamlines}/__init__.py +0 -0
  455. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i04/callbacks/test_murko_callback.py +0 -0
  456. {mx_bluesky-1.4.6/tests/unit_tests/beamlines/i24/serial/extruder → mx_bluesky-1.4.8/tests/unit_tests/beamlines/i24}/__init__.py +0 -0
  457. {mx_bluesky-1.4.6/tests/unit_tests/beamlines/i24/serial/fixed_target → mx_bluesky-1.4.8/tests/unit_tests/beamlines/i24/serial}/__init__.py +0 -0
  458. {mx_bluesky-1.4.6/tests/unit_tests/beamlines/i24/serial/setup_beamline → mx_bluesky-1.4.8/tests/unit_tests/beamlines/i24/serial/extruder}/__init__.py +0 -0
  459. {mx_bluesky-1.4.6/tests/unit_tests/beamlines/i24/serial/web_gui → mx_bluesky-1.4.8/tests/unit_tests/beamlines/i24/serial/fixed_target}/__init__.py +0 -0
  460. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/fixed_target/conftest.py +0 -0
  461. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_startup.py +0 -0
  462. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/parameters/test_parameter_model.py +0 -0
  463. {mx_bluesky-1.4.6/tests/unit_tests/common → mx_bluesky-1.4.8/tests/unit_tests/beamlines/i24/serial/setup_beamline}/__init__.py +0 -0
  464. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_pv_abstract.py +0 -0
  465. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/test_log.py +0 -0
  466. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/beamlines/i24/serial/test_run_serial.py +0 -0
  467. {mx_bluesky-1.4.6/tests/unit_tests/common/external_interaction → mx_bluesky-1.4.8/tests/unit_tests/beamlines/i24/serial/web_gui}/__init__.py +0 -0
  468. {mx_bluesky-1.4.6/tests/unit_tests/common/external_interaction/callbacks → mx_bluesky-1.4.8/tests/unit_tests/common}/__init__.py +0 -0
  469. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/device_setup_plans/test_setup_panda.py +0 -0
  470. {mx_bluesky-1.4.6/tests/unit_tests/common/external_interaction/callbacks/common → mx_bluesky-1.4.8/tests/unit_tests/common/experiment_plans}/__init__.py +0 -0
  471. {mx_bluesky-1.4.6/tests/unit_tests/common/external_interaction/callbacks/ispyb → mx_bluesky-1.4.8/tests/unit_tests/common/external_interaction}/__init__.py +0 -0
  472. {mx_bluesky-1.4.6/tests/unit_tests/common/plans → mx_bluesky-1.4.8/tests/unit_tests/common/external_interaction/callbacks}/__init__.py +0 -0
  473. {mx_bluesky-1.4.6/tests/unit_tests/common/utils → mx_bluesky-1.4.8/tests/unit_tests/common/external_interaction/callbacks/common}/__init__.py +0 -0
  474. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/callbacks/common/test_abstract_event.py +0 -0
  475. {mx_bluesky-1.4.6/tests/unit_tests/hyperion → mx_bluesky-1.4.8/tests/unit_tests/common/external_interaction/callbacks/ispyb}/__init__.py +0 -0
  476. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/callbacks/ispyb/test_expeye_interaction.py +0 -0
  477. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/callbacks/test_plan_reactive_callback.py +0 -0
  478. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/conftest.py +0 -0
  479. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/test_ispyb_utils.py +0 -0
  480. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/xray_centre/__init__.py +0 -0
  481. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/xray_centre/test_ispyb_mapping.py +0 -0
  482. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/common/external_interaction/xray_centre/test_nexus_handler.py +0 -0
  483. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/device_setup_plans → mx_bluesky-1.4.8/tests/unit_tests/common/parameters}/__init__.py +0 -0
  484. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/experiment_plans → mx_bluesky-1.4.8/tests/unit_tests/common/plans}/__init__.py +0 -0
  485. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/external_interaction → mx_bluesky-1.4.8/tests/unit_tests/common/preprocessors}/__init__.py +0 -0
  486. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/external_interaction/callbacks → mx_bluesky-1.4.8/tests/unit_tests/common/utils}/__init__.py +0 -0
  487. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/external_interaction/callbacks/rotation → mx_bluesky-1.4.8/tests/unit_tests/hyperion}/__init__.py +0 -0
  488. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling → mx_bluesky-1.4.8/tests/unit_tests/hyperion/device_setup_plans}/__init__.py +0 -0
  489. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/device_setup_plans/test_setup_panda.py +0 -0
  490. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/device_setup_plans/test_utils.py +0 -0
  491. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/external_interaction/nexus → mx_bluesky-1.4.8/tests/unit_tests/hyperion/experiment_plans}/__init__.py +0 -0
  492. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/common/test_flyscan_result.py +0 -0
  493. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_experiment_registry.py +0 -0
  494. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_optimise_attenuation_plan.py +0 -0
  495. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/experiment_plans/test_set_energy_plan.py +0 -0
  496. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/parameters → mx_bluesky-1.4.8/tests/unit_tests/hyperion/external_interaction}/__init__.py +0 -0
  497. {mx_bluesky-1.4.6/tests/unit_tests/hyperion/utils → mx_bluesky-1.4.8/tests/unit_tests/hyperion/external_interaction/callbacks}/__init__.py +0 -0
  498. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/callbacks/robot_load/test_robot_load_ispyb_callback.py +0 -0
  499. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py +0 -0
  500. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/conftest.py +0 -0
  501. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000001.h5 +0 -0
  502. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000002.h5 +0 -0
  503. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000003.h5 +0 -0
  504. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/parameters/test_parameter_model.py +0 -0
  505. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/test_exceptions.py +0 -0
  506. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/test_utils.py +0 -0
  507. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/utils/test_callback_sim.py +0 -0
  508. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/hyperion/utils/test_context.py +0 -0
  509. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/tests/unit_tests/test_cli.py +0 -0
  510. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/beam_off_trickery.sh +0 -0
  511. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/build_docker_image.sh +0 -0
  512. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/build_imginfo.sh +0 -0
  513. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/deploy/create_venv.py +0 -0
  514. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/deploy/deploy_edm_for_ssx.sh +0 -0
  515. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/deploy/deploy_mx_bluesky_app_to_k8s.sh +0 -0
  516. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/deploy/test_deploy.py +0 -0
  517. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/dev_jaeger_container.sh +0 -0
  518. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/docker/healthcheck.sh +0 -0
  519. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/docker/i03-compose.yml +0 -0
  520. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/generate_plantuml.py +0 -0
  521. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/graylog/Dockerfile +0 -0
  522. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/graylog/tcp_input.json +0 -0
  523. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/procserv_ioc_start.sh +0 -0
  524. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/run_imginfo.sh +0 -0
  525. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/setup_graylog.sh +0 -0
  526. {mx_bluesky-1.4.6 → mx_bluesky-1.4.8}/utility_scripts/strip_metafile.py +0 -0
@@ -0,0 +1 @@
1
+ * @DiamondLightSource/developers-mx-daq
@@ -17,6 +17,23 @@ Contributions and issues are most welcome! All issues and pull requests are hand
17
17
 
18
18
  **Work should not be done without an associated ticket describing what the work is**
19
19
 
20
+ ## Developing mx-bluesky and dodal
21
+
22
+ Some issues will span the mx-bluesky repo and the dodal repo. When working on both at the same time, follow these instructions:
23
+ 1. An issue is created for the work, inside mx-bluesky. This issue should describe in as much detail as possible the work that needs to be done. Anyone is free to make a ticket and/or comment on one.
24
+ 2. If a developer is going to do the work they assign themselves to the issue.
25
+ 3. The developer makes a new branch in mx-bluesky with the format `issue_short_description` e.g. `122_create_a_contributing_file`. The developer also creates a new branch in dodal, with the format `mx_bluesky_issue_short_description` - the same as the mx-bluesky branch name but with `mx_bluesky_` in front. (External developers are also welcome to make forks)
26
+ 4. The developer does the work on these branches, adding their work in small commits. Commit messages should be informative and prefixed with the issue number e.g. `(#122) Added contributing file`.
27
+ 5. Once the developer has done the final commit in both repos, they find the latest commit SHA in the dodal repo using `git log`. In `mx-bluesky/pyproject.toml`, the developer changes `dls-dodal @ git+https://github.com/DiamondLightSource/dodal.git@{dodal_commmit_SHA}` using the SHA they just found.
28
+ 6. The developer commits and pushes this final change on mx-bluesky.
29
+ 7. The developer submits a dodal PR for the work they have done in the dodal repo. The pull request should start with `Fixes #issue_num` e.g. `Fixes #122`, and should link to the issue created in mx-bluesky. The developer should also add some background on how the reviewer might test the change.
30
+ 8. The developer submits a mx-bluesky PR for the work they have done in the mx-bluesky repo. The pull request should start with `Fixes #issue_num` e.g. `Fixes #122`. This PR should link to the dodal PR just created with something like "Also needs #456". Again, the developer should add some background on how the reviewer might test the change.
31
+ 9. If the developer has a particular person in mind to review the work they should assign that person to the PRs as a reviewer.
32
+ 10. The reviewer and developer go back and forth on the code until the reviewer approves it. (See "Reviewing Work" below)
33
+ 11. Once the work is approved on both PRs, the original developer merges them. The PRs should be merged at the same time.
34
+
35
+ **Work should not be done without an associated ticket describing what the work is**
36
+
20
37
  ## Reviewing Work
21
38
 
22
39
  **Work must be reviewed by another developer before it can be merged**. Remember that work is reviewed for a number of reasons:
@@ -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,8 @@ __pycache__/
11
11
  env/
12
12
  # Output
13
13
  *.png
14
- !docs/*.png
14
+ !docs/**/*.png
15
+ !tests/test_data/**/*.png
15
16
 
16
17
  # Distribution / packaging
17
18
  .Python
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: mx-bluesky
3
- Version: 1.4.6
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
@@ -215,7 +215,6 @@ Description-Content-Type: text/x-rst
215
215
  License-File: LICENSE
216
216
  Requires-Dist: annotated_types
217
217
  Requires-Dist: caproto
218
- Requires-Dist: confluent-kafka==2.8.0
219
218
  Requires-Dist: fastapi[all]
220
219
  Requires-Dist: flask-restful
221
220
  Requires-Dist: ispyb
@@ -237,10 +236,10 @@ Requires-Dist: semver
237
236
  Requires-Dist: matplotlib
238
237
  Requires-Dist: blueapi>=0.5.0
239
238
  Requires-Dist: daq-config-server>=0.1.1
240
- Requires-Dist: ophyd==1.9.0
241
- Requires-Dist: ophyd-async>=0.9.0a2
242
- Requires-Dist: bluesky>=1.13
243
- Requires-Dist: dls-dodal==1.41.0
239
+ Requires-Dist: ophyd>=1.10.5
240
+ Requires-Dist: ophyd-async>=0.10.0a2
241
+ Requires-Dist: bluesky>=1.13.1
242
+ Requires-Dist: dls-dodal==1.47.0
244
243
  Provides-Extra: dev
245
244
  Requires-Dist: black; extra == "dev"
246
245
  Requires-Dist: build; extra == "dev"
@@ -254,10 +253,11 @@ Requires-Dist: pipdeptree; extra == "dev"
254
253
  Requires-Dist: plantweb; extra == "dev"
255
254
  Requires-Dist: pre-commit; extra == "dev"
256
255
  Requires-Dist: pydata-sphinx-theme>=0.12; extra == "dev"
257
- Requires-Dist: pyright==1.1.394; extra == "dev"
256
+ Requires-Dist: pyright; extra == "dev"
258
257
  Requires-Dist: pytest-asyncio; extra == "dev"
259
258
  Requires-Dist: pytest-cov; extra == "dev"
260
259
  Requires-Dist: pytest-random-order; extra == "dev"
260
+ Requires-Dist: pytest-timeout; extra == "dev"
261
261
  Requires-Dist: pytest; extra == "dev"
262
262
  Requires-Dist: ruff; extra == "dev"
263
263
  Requires-Dist: sphinx-autobuild; extra == "dev"
@@ -267,6 +267,7 @@ Requires-Dist: tox-direct; extra == "dev"
267
267
  Requires-Dist: tox; extra == "dev"
268
268
  Requires-Dist: types-mock; extra == "dev"
269
269
  Requires-Dist: types-requests; extra == "dev"
270
+ Dynamic: license-file
270
271
 
271
272
  mx-bluesky
272
273
  ===========================
@@ -285,7 +286,7 @@ Releases https://github.com/DiamondLightSource/mx-bluesky/releases
285
286
  Getting Started
286
287
  ===============
287
288
 
288
- To get started with developing this repo at DLS run ``dls_dev_setup.sh``.
289
+ To get started with developing this repo at DLS run ``./utility_scripts/dls_dev_env.sh``.
289
290
 
290
291
  If you want to develop interactively at the beamline we recommend using jupyter notebooks. You can get started with this by running::
291
292
 
@@ -15,7 +15,7 @@ Releases https://github.com/DiamondLightSource/mx-bluesky/releases
15
15
  Getting Started
16
16
  ===============
17
17
 
18
- To get started with developing this repo at DLS run ``dls_dev_setup.sh``.
18
+ To get started with developing this repo at DLS run ``./utility_scripts/dls_dev_env.sh``.
19
19
 
20
20
  If you want to develop interactively at the beamline we recommend using jupyter notebooks. You can get started with this by running::
21
21
 
@@ -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
+ +++
@@ -0,0 +1,27 @@
1
+ Callbacks and Run Logic
2
+ ========================
3
+
4
+ Callbacks are used to trigger external services:
5
+
6
+ - Ispyb deposition
7
+ - Nexus writing
8
+ - Zocalo triggering
9
+
10
+ These are linked in that to trigger zocalo you need to have made an ispyb deposition, written a nexus file and have finished writing raw data to disk. Nexus files and ispyb depositions can be made at anytime, we do not need to have necessarily finished writing raw data.
11
+
12
+ Currently, the requirement of needing to have written to ispyb is explicit as the ispyb callback will emit to the zocalo callback. The nexus file is written when the hardware is read during a collection and so its ordering is implied. When instantiated the zocalo callback is told on which plan to trigger and it is up to the plan developer to make sure this plan finishes after data is written to the detector.
13
+
14
+ In general, the ordering flow of when callbacks are triggered is controlled by emitting documents with the expected plan name and data.
15
+
16
+ Rotation Scans
17
+ ---------------------
18
+
19
+ There are currently two ways of doing rotation scans. A single scan creates one hdf file, one ispyb deposition and then triggers zocalo once. Multi rotation scans create one hdf file for all rotations but then N nexus files, N ispyb depositions and triggers zocalo N times.
20
+
21
+ Single scans will be removed in https://github.com/DiamondLightSource/mx-bluesky/issues/847
22
+
23
+ For multi rotations this is does by starting 1+2*N different runs:
24
+
25
+ 1. ``CONST.PLAN.ROTATION_MULTI``: This is emitted once for the whole multiple rotation. It is used by the nexus callback to get the full number of images and meta_data_run_number so that it knows which hdf file to use. When this is finished zocalo end is triggered.
26
+ 2. ``CONST.PLAN.ROTATION_OUTER``: Emitted N times, inside a ``CONST.PLAN.ROTATION_MULTI`` run. This is used to create the initial ispyb deposition and create the nexus writer (but not actually write the file)
27
+ 3. ``CONST.PLAN.ROTATION_MAIN``: Emitted N times, inside ``CONST.PLAN.ROTATION_OUTER`` run. Used to finish writing to ispyb (i.e. write success/failure) and to send collection information to zocalo.
@@ -4,8 +4,8 @@ Get Started with mx-bluesky
4
4
  Development Environment
5
5
  =======================
6
6
 
7
- - Clone this repo: ``git@github.com:DiamondLightSource/mx-bluesky.git``
8
- - To install a ``dev`` environment run ``./dls_dev_setup.sh``. Note that this will also clone and install a local version of ``dodal``, as the ``mx-bluesky`` package makes use of the devices instantiated there.
7
+ - Clone this repo using SSH: ``git clone git@github.com:DiamondLightSource/mx-bluesky.git``
8
+ - To install a ``dev`` environment, from the top level ``mx-bluesky`` directory, run ``./utility_scripts/dls_dev_env.sh``. Note that this will also clone and install a local version of ``dodal``, as the ``mx-bluesky`` package makes use of the devices instantiated there.
9
9
 
10
10
  The recommended IDE is vscode, and a workspace which includes dodal has been set up in the repo. This can be used on a DLS machine as follows:
11
11
 
@@ -41,6 +41,7 @@ Documentation is split into four categories, and each is also accessible from li
41
41
  :maxdepth: 1
42
42
 
43
43
  explanations/decisions
44
+ explanations/callback_and_run_logic
44
45
 
45
46
  +++
46
47
 
@@ -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
 
@@ -0,0 +1,44 @@
1
+ Update the PandA IOC
2
+ =====================
3
+
4
+ The IOC for the PandA can sometimes get out of sync with the production version of Ophyd-Async. Here is how to update it
5
+
6
+ Check if the IOC needs updating
7
+ """"""""""""""""""""""""""""""""
8
+
9
+ - Check the minimum panda IOC version required in the version of ophyd-async used in Hyperion's release version. This can be found in the ``MINIMUM_PANDA_IOC`` constant in `_hdf_panda.py <https://github.com/bluesky/ophyd-async/blob/main/src/ophyd_async/fastcs/panda/_hdf_panda.py>`_
10
+
11
+ - In a terminal:
12
+
13
+ .. code-block:: bash
14
+
15
+ cd /dls_sw/work/R3.14.12.7/ioc/BL03I/BL03I-PY-IOC-02
16
+ source venv/bin/activate
17
+ pip freeze | grep pandablocks-ioc
18
+
19
+ Note that the IOC location will soon be moving to ``prod`` instead of ``work``.
20
+
21
+ - Compare the version from step one
22
+
23
+ Updating the IOC
24
+ """"""""""""""""""""""""""
25
+
26
+ - Update the Python IOC repo in the venv:
27
+
28
+ .. code-block:: bash
29
+
30
+ cd /dls_sw/work/R3.14.12.7/ioc/BL03I/BL03I-PY-IOC-02
31
+ source venv/bin/activate
32
+ pip install --upgrade pandablocks-ioc=={desired version}
33
+
34
+
35
+ - After making sure the beamline isn't in use, restart the IOC:
36
+
37
+ .. code-block:: bash
38
+
39
+ module load controls-tools
40
+
41
+ console BL03I-PY-IOC-02
42
+
43
+ - Press ``ctrl+x``
44
+ - Disconnect by pressing ``ctrl+e``, then press ``c``, then press ``.``
@@ -20,3 +20,15 @@ Documentation specific for the Hyperion module within MX-Bluesky
20
20
  +++
21
21
 
22
22
  Technical reference material on standards in use.
23
+
24
+ .. grid-item-card:: :material-regular:`task;3em`
25
+
26
+ .. toctree::
27
+ :caption: How-to Guides
28
+ :maxdepth: 1
29
+
30
+ how-to/update-panda-ioc
31
+
32
+ +++
33
+
34
+ Practical step-by-step guides for day-to-day dev tasks.
@@ -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.