mx-bluesky 1.4.1__tar.gz → 1.4.2__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 (441) hide show
  1. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/workflows/_container.yml +1 -0
  2. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/PKG-INFO +2 -2
  3. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/pyproject.toml +1 -1
  4. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/_version.py +2 -2
  5. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/__init__.py +0 -6
  6. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +18 -21
  7. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +2 -46
  8. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +22 -95
  9. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +50 -63
  10. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +1 -19
  11. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/parameters/__init__.py +5 -1
  12. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py +34 -2
  13. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/parameters/utils.py +19 -0
  14. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/write_nexus.py +2 -5
  15. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/common/parameters/components.py +3 -3
  16. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/device_setup_plans/manipulate_sample.py +6 -6
  17. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +14 -2
  18. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +7 -1
  19. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/utils/validation.py +1 -1
  20. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky.egg-info/PKG-INFO +2 -2
  21. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky.egg-info/SOURCES.txt +1 -0
  22. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky.egg-info/requires.txt +1 -1
  23. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/conftest.py +1 -2
  24. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/conftest.py +1 -1
  25. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/hyperion/experiment_plans/test_fgs_plan.py +1 -1
  26. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/hyperion/external_interaction/conftest.py +16 -5
  27. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/hyperion/external_interaction/test_load_centre_collect_full_plan.py +2 -1
  28. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i04/test_thawing.py +3 -1
  29. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/conftest.py +4 -3
  30. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/extruder/test_extruder_collect.py +8 -14
  31. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/fixed_target/conftest.py +1 -0
  32. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_manager.py +25 -51
  33. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_ft_collect.py +18 -14
  34. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_moveonclick.py +1 -1
  35. mx_bluesky-1.4.2/tests/unit_tests/beamlines/i24/serial/parameters/test_parameter_model.py +95 -0
  36. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/parameters/test_utils.py +27 -1
  37. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_detector.py +1 -1
  38. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/test_dcid.py +1 -1
  39. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/common/plan_stubs/test_do_fgs.py +2 -1
  40. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/device_setup_plans/test_dcm_pitch_roll_mirror_adjuster.py +1 -1
  41. mx_bluesky-1.4.2/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py +128 -0
  42. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/device_setup_plans/test_utils.py +1 -1
  43. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/device_setup_plans/test_xbpm_feedback.py +1 -1
  44. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/conftest.py +2 -1
  45. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/test_flyscan_xray_centre_plan.py +47 -35
  46. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/test_grid_detect_then_xray_centre_plan.py +1 -1
  47. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/test_grid_detection_plan.py +1 -1
  48. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/test_load_centre_collect_full_plan.py +1 -1
  49. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/test_multi_rotation_scan_plan.py +1 -1
  50. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/test_optimise_attenuation_plan.py +2 -1
  51. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/test_pin_tip_centring.py +1 -1
  52. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_and_change_energy.py +1 -1
  53. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/test_rotation_scan_plan.py +1 -1
  54. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/robot_load/test_robot_load_ispyb_callback.py +1 -1
  55. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/deploy/create_venv.py +3 -7
  56. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/deploy/deploy_hyperion_to_k8s.sh +16 -7
  57. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/deploy/deploy_mx_bluesky.py +5 -7
  58. mx_bluesky-1.4.1/tests/unit_tests/hyperion/device_setup_plans/test_manipulate_sample.py +0 -78
  59. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.copier-answers.yml +0 -0
  60. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.coveragerc +0 -0
  61. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.devcontainer/Dockerfile +0 -0
  62. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.devcontainer/devcontainer.json +0 -0
  63. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.dockerignore +0 -0
  64. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/CONTRIBUTING.md +0 -0
  65. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  66. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/ISSUE_TEMPLATE/issue.md +0 -0
  67. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
  68. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/actions/install_requirements/action.yml +0 -0
  69. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/actions/verify-nexus/Dockerfile +0 -0
  70. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/actions/verify-nexus/action.yml +0 -0
  71. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/actions/verify-nexus/entrypoint.sh +0 -0
  72. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/dependabot.yml +0 -0
  73. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/pages/index.html +0 -0
  74. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/pages/make_switcher.py +0 -0
  75. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/workflows/_check.yml +0 -0
  76. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/workflows/_dist.yml +0 -0
  77. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/workflows/_docs.yml +0 -0
  78. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/workflows/_pypi.yml +0 -0
  79. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/workflows/_release.yml +0 -0
  80. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/workflows/_test.yml +0 -0
  81. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/workflows/_tox.yml +0 -0
  82. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/workflows/ci.yml +0 -0
  83. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.github/workflows/periodic.yml +0 -0
  84. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.gitignore +0 -0
  85. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.pre-commit-config.yaml +0 -0
  86. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.vscode/extensions.json +0 -0
  87. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.vscode/launch.json +0 -0
  88. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.vscode/mx-bluesky.code-workspace +0 -0
  89. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.vscode/mxb-with-core-dependencies.code-workspace +0 -0
  90. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.vscode/settings.json +0 -0
  91. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/.vscode/tasks.json +0 -0
  92. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/Dockerfile +0 -0
  93. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/Dockerfile.release +0 -0
  94. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/LICENSE +0 -0
  95. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/README.rst +0 -0
  96. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/catalog-info.yaml +0 -0
  97. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/codecov.yml +0 -0
  98. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/conftest.py +0 -0
  99. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/_api.rst +0 -0
  100. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/_templates/custom-module-template.rst +0 -0
  101. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/conf.py +0 -0
  102. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/general/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  103. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/general/explanations/decisions/0002-repository-structure.rst +0 -0
  104. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/general/explanations/decisions/0003-python-version-support.rst +0 -0
  105. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/general/explanations/decisions.rst +0 -0
  106. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/general/how-to/contribute.rst +0 -0
  107. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/general/how-to/create-a-release.rst +0 -0
  108. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/general/how-to/deploy-a-release.rst +0 -0
  109. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/general/how-to/dev-ops/build-docs.rst +0 -0
  110. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/general/how-to/dev-ops/dev-ops.rst +0 -0
  111. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/general/how-to/dev-ops/lint.rst +0 -0
  112. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/general/how-to/dev-ops/run-tests.rst +0 -0
  113. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/general/how-to/dev-ops/update-tools.rst +0 -0
  114. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/general/how-to/get-started.rst +0 -0
  115. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/general/index.rst +0 -0
  116. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/general/reference/standards.rst +0 -0
  117. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/general/tutorials/profile-tests.rst +0 -0
  118. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/hyperion/deploying-hyperion.rst +0 -0
  119. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/hyperion/index.rst +0 -0
  120. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/hyperion/reference/param-hierarchy.rst +0 -0
  121. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/hyperion/reference/param_hierarchy.puml +0 -0
  122. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/hyperion/reference/readme.md +0 -0
  123. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/index.rst +0 -0
  124. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/murko-integration/explanations/architecture.rst +0 -0
  125. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/murko-integration/images/murko_setup.drawio.png +0 -0
  126. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/murko-integration/index.rst +0 -0
  127. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/serial-crystallography-on-i24/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  128. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/serial-crystallography-on-i24/explanations/decisions.rst +0 -0
  129. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/serial-crystallography-on-i24/how-to/environment-setup.rst +0 -0
  130. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/serial-crystallography-on-i24/how-to/run-a-collection.rst +0 -0
  131. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/serial-crystallography-on-i24/how-to/stage-pmac-moves.rst +0 -0
  132. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/serial-crystallography-on-i24/index.rst +0 -0
  133. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/developer/serial-crystallography-on-i24/project-planning/roadmap.rst +0 -0
  134. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/images/dls-favicon.ico +0 -0
  135. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/images/dls-logo.svg +0 -0
  136. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/docs/index.rst +0 -0
  137. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/helmchart/Chart.yaml +0 -0
  138. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/helmchart/templates/deployment.yaml +0 -0
  139. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/helmchart/templates/ingress.yaml +0 -0
  140. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/helmchart/templates/service.yaml +0 -0
  141. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/helmchart/values.yaml +0 -0
  142. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/add_assignee_when_pr_opened.yml +0 -0
  143. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/assigned_issues_to_in_progress.yml +0 -0
  144. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/code.yml +0 -0
  145. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/container_tests.sh +0 -0
  146. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/get_issue_from_pr.yml +0 -0
  147. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/get_project_data_and_move_column.yml +0 -0
  148. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/linkcheck.yml +0 -0
  149. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/open_prs_to_review.yml +0 -0
  150. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/opened_issues_to_backlog.yml +0 -0
  151. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/pin_versions.py +0 -0
  152. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/pre_release_workflow.yml +0 -0
  153. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/rework_prs_to_in_progress.yml +0 -0
  154. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/test_data/pip_freeze.txt +0 -0
  155. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/test_data/setup.cfg +0 -0
  156. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/test_data/setup.cfg.pinned +0 -0
  157. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/test_data/setup.cfg.unpinned +0 -0
  158. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/hyperion_other/workflows/test_pin_versions.py +0 -0
  159. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/run_hyperion.sh +0 -0
  160. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/run_hyperion_in_podman.sh +0 -0
  161. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/setup.cfg +0 -0
  162. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/__init__.py +0 -0
  163. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/__main__.py +0 -0
  164. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/__init__.py +0 -0
  165. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i04/__init__.py +0 -0
  166. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i04/callbacks/murko_callback.py +0 -0
  167. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py +0 -0
  168. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i04/thawing_plan.py +0 -0
  169. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/__init__.py +0 -0
  170. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/blueapi_config.yaml +0 -0
  171. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/dcid.py +0 -0
  172. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl +0 -0
  173. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +0 -0
  174. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -0
  175. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/extruder/__init__.py +0 -0
  176. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +0 -0
  177. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl +0 -0
  178. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +0 -0
  179. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -0
  180. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -0
  181. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -0
  182. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -0
  183. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -0
  184. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +0 -0
  185. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short1-laser.png +0 -0
  186. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short2-laser.png +0 -0
  187. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py +0 -0
  188. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py +0 -0
  189. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py +0 -0
  190. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/log.py +0 -0
  191. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/parameters/constants.py +0 -0
  192. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json +0 -0
  193. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt +0 -0
  194. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +0 -0
  195. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
  196. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/run_extruder.sh +0 -0
  197. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/run_fixed_target.sh +0 -0
  198. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/run_serial.py +0 -0
  199. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/run_ssx.sh +0 -0
  200. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/set_visit_directory.sh +0 -0
  201. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
  202. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py +0 -0
  203. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py +0 -0
  204. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py +0 -0
  205. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +0 -0
  206. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py +0 -0
  207. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py +0 -0
  208. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/beamlines/i24/serial/start_blueapi.sh +0 -0
  209. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/common/__init__.py +0 -0
  210. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/common/device_setup_plans/read_hardware_for_setup.py +0 -0
  211. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/common/external_interaction/config_server.py +0 -0
  212. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/common/parameters/constants.py +0 -0
  213. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/common/parameters/gridscan.py +0 -0
  214. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/common/parameters/robot_load.py +0 -0
  215. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/common/plans/__init__.py +0 -0
  216. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/common/plans/do_fgs.py +0 -0
  217. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/common/utils/log.py +0 -0
  218. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/common/utils/tracing.py +0 -0
  219. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/__init__.py +0 -0
  220. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/__main__.py +0 -0
  221. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/device_setup_plans/__init__.py +0 -0
  222. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +0 -0
  223. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/device_setup_plans/position_detector.py +0 -0
  224. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/device_setup_plans/read_hardware_for_setup.py +0 -0
  225. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/device_setup_plans/setup_oav.py +0 -0
  226. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/device_setup_plans/setup_panda.py +0 -0
  227. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +0 -0
  228. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/device_setup_plans/smargon.py +0 -0
  229. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/device_setup_plans/utils.py +0 -0
  230. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/device_setup_plans/xbpm_feedback.py +0 -0
  231. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/exceptions.py +0 -0
  232. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/experiment_plans/__init__.py +0 -0
  233. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/experiment_plans/change_aperture_then_move_plan.py +0 -0
  234. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/experiment_plans/common/xrc_result.py +0 -0
  235. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/experiment_plans/experiment_registry.py +0 -0
  236. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py +0 -0
  237. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +0 -0
  238. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py +0 -0
  239. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py +0 -0
  240. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +0 -0
  241. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +0 -0
  242. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +0 -0
  243. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +0 -0
  244. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +0 -0
  245. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +0 -0
  246. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/__init__.py +0 -0
  247. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/__init__.py +0 -0
  248. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +0 -0
  249. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/aperture_change_callback.py +0 -0
  250. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/common/__init__.py +0 -0
  251. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/common/abstract_event.py +0 -0
  252. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/common/callback_util.py +0 -0
  253. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/common/ispyb_mapping.py +0 -0
  254. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/grid_detection_callback.py +0 -0
  255. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/ispyb_callback_base.py +0 -0
  256. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/log_uid_tag_callback.py +0 -0
  257. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/logging_callback.py +0 -0
  258. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/plan_reactive_callback.py +0 -0
  259. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py +0 -0
  260. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/__init__.py +0 -0
  261. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +0 -0
  262. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +0 -0
  263. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +0 -0
  264. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/sample_handling/__init__.py +0 -0
  265. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/sample_handling/sample_handling_callback.py +0 -0
  266. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/__init__.py +0 -0
  267. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/ispyb_callback.py +0 -0
  268. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/ispyb_mapping.py +0 -0
  269. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/nexus_callback.py +0 -0
  270. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/callbacks/zocalo_callback.py +0 -0
  271. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/config_server.py +0 -0
  272. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/exceptions.py +0 -0
  273. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/ispyb/__init__.py +0 -0
  274. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/ispyb/data_model.py +0 -0
  275. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/ispyb/exp_eye_store.py +0 -0
  276. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/ispyb/ispyb_store.py +0 -0
  277. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/ispyb/ispyb_utils.py +0 -0
  278. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/nexus/__init__.py +0 -0
  279. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/nexus/nexus_utils.py +0 -0
  280. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/external_interaction/nexus/write_nexus.py +0 -0
  281. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/log.py +0 -0
  282. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/parameters/__init__.py +0 -0
  283. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/parameters/cli.py +0 -0
  284. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/parameters/components.py +0 -0
  285. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/parameters/constants.py +0 -0
  286. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/parameters/gridscan.py +0 -0
  287. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/parameters/load_centre_collect.py +0 -0
  288. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/parameters/rotation.py +0 -0
  289. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml +0 -0
  290. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/utils/context.py +0 -0
  291. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/hyperion/utils/utils.py +0 -0
  292. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky/jupyter_example.ipynb +0 -0
  293. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky.egg-info/dependency_links.txt +0 -0
  294. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky.egg-info/entry_points.txt +0 -0
  295. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/src/mx_bluesky.egg-info/top_level.txt +0 -0
  296. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/start_jupyter.sh +0 -0
  297. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/__init__.py +0 -0
  298. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/__init__.py +0 -0
  299. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/hyperion/__init__.py +0 -0
  300. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/hyperion/experiment_plans/__init__.py +0 -0
  301. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/hyperion/experiment_plans/test_plan_system.py +0 -0
  302. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/hyperion/external_interaction/__init__.py +0 -0
  303. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/hyperion/external_interaction/callbacks/__init__.py +0 -0
  304. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +0 -0
  305. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/hyperion/external_interaction/test_config_service.py +0 -0
  306. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/hyperion/external_interaction/test_exp_eye_dev.py +0 -0
  307. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/hyperion/external_interaction/test_ispyb_dev_connection.py +0 -0
  308. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/hyperion/external_interaction/test_nexgen.py +0 -0
  309. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/hyperion/external_interaction/test_zocalo_system.py +0 -0
  310. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/hyperion/test_aperturescatterguard_system.py +0 -0
  311. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/system_tests/hyperion/test_device_setups_and_cleanups.py +0 -0
  312. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/nexus_files/README.md +0 -0
  313. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/nexus_files/fake_data.h5 +0 -0
  314. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/nexus_files/rotation/ins_8_5.nxs +0 -0
  315. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/nexus_files/rotation/ins_8_5_expected_output.txt +0 -0
  316. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/nexus_files/rotation/ins_8_5_meta.h5.gz +0 -0
  317. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5.nxs +0 -0
  318. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_expected_output.txt +0 -0
  319. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/nexus_files/rotation_unicode_metafile/ins_8_5_meta.h5.gz +0 -0
  320. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/parameter_json_files/example_load_centre_collect_params.json +0 -0
  321. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/parameter_json_files/good_test_grid_with_edge_detect_parameters.json +0 -0
  322. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/parameter_json_files/good_test_load_centre_collect_params.json +0 -0
  323. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/parameter_json_files/good_test_multi_rotation_scan_parameters.json +0 -0
  324. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/parameter_json_files/good_test_parameters.json +0 -0
  325. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/parameter_json_files/good_test_pin_centre_then_xray_centre_parameters.json +0 -0
  326. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/parameter_json_files/good_test_robot_load_and_centre_params.json +0 -0
  327. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/parameter_json_files/good_test_robot_load_params.json +0 -0
  328. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json +0 -0
  329. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/parameter_json_files/good_test_rotation_scan_parameters_nomove.json +0 -0
  330. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/parameter_json_files/ispyb_gridscan_system_test_parameters.json +0 -0
  331. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/parameter_json_files/load_centre_collect_params_top_n_by_max_count.json +0 -0
  332. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/parameter_json_files/test_gridscan_param_defaults.json +0 -0
  333. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/parameter_json_files/test_oav_snapshot_params.json +0 -0
  334. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/scratch/README +0 -0
  335. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/test_OAVCentring.json +0 -0
  336. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/test_beamline_dcm_pitch_converter.txt +0 -0
  337. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/test_beamline_dcm_roll_converter.txt +0 -0
  338. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/test_beamline_parameters.txt +0 -0
  339. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/test_beamline_vfm_lat_converter.txt +0 -0
  340. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/test_config.cfg +0 -0
  341. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/test_daq_configuration/domain/beamlineParameters +0 -0
  342. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Pitch_converter.txt +0 -0
  343. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/test_daq_configuration/lookup/BeamLineEnergy_DCM_Roll_converter.txt +0 -0
  344. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/test_det_dist_converter.txt +0 -0
  345. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/test_display.configuration +0 -0
  346. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/test_jCameraManZoomLevels.xml +0 -0
  347. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/test_lookup_table.txt +0 -0
  348. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/test_data/test_mirror_focus.json +0 -0
  349. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/__init__.py +0 -0
  350. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/__init__.py +0 -0
  351. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i04/callbacks/test_murko_callback.py +0 -0
  352. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i04/test_redis_to_murko_forwarder.py +0 -0
  353. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/__init__.py +0 -0
  354. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/extruder/__init__.py +0 -0
  355. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/fixed_target/__init__.py +0 -0
  356. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/fixed_target/test_chip_startup.py +0 -0
  357. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/setup_beamline/__init__.py +0 -0
  358. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_pv_abstract.py +0 -0
  359. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_setup_beamline.py +0 -0
  360. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/setup_beamline/test_zebra_plans.py +0 -0
  361. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/test_log.py +0 -0
  362. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/test_run_serial.py +0 -0
  363. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/beamlines/i24/serial/test_write_nexus.py +0 -0
  364. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/common/__init__.py +0 -0
  365. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/common/device_setup_plans/test_read_hardware_for_setup.py +0 -0
  366. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/common/utils/__init__.py +0 -0
  367. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/common/utils/test_log.py +0 -0
  368. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/conftest.py +0 -0
  369. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/__init__.py +0 -0
  370. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/conftest.py +0 -0
  371. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/device_setup_plans/__init__.py +0 -0
  372. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/device_setup_plans/test_setup_oav.py +0 -0
  373. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/device_setup_plans/test_setup_panda.py +0 -0
  374. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/device_setup_plans/test_zebra_setup.py +0 -0
  375. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/__init__.py +0 -0
  376. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/common/test_flyscan_result.py +0 -0
  377. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/test_change_aperture_then_move_plan.py +0 -0
  378. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/test_experiment_registry.py +0 -0
  379. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/test_oav_snapshot_plan.py +0 -0
  380. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/test_pin_centre_then_xray_centre_plan.py +0 -0
  381. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/test_robot_load_then_centre.py +0 -0
  382. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/experiment_plans/test_set_energy_plan.py +0 -0
  383. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/__init__.py +0 -0
  384. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/__init__.py +0 -0
  385. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/common/__init__.py +0 -0
  386. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/common/test_abstract_event.py +0 -0
  387. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/conftest.py +0 -0
  388. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/__init__.py +0 -0
  389. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/rotation/test_ispyb_callback.py +0 -0
  390. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/__init__.py +0 -0
  391. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/sample_handling/test_sample_handling_callback.py +0 -0
  392. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/test_external_callbacks.py +0 -0
  393. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/test_plan_reactive_callback.py +0 -0
  394. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/test_rotation_callbacks.py +0 -0
  395. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/test_zocalo_handler.py +0 -0
  396. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/xray_centre/__init__.py +0 -0
  397. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/xray_centre/conftest.py +0 -0
  398. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/xray_centre/test_ispyb_callback.py +0 -0
  399. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/xray_centre/test_ispyb_handler.py +0 -0
  400. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/xray_centre/test_ispyb_mapping.py +0 -0
  401. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/callbacks/xray_centre/test_nexus_handler.py +0 -0
  402. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/conftest.py +0 -0
  403. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/ispyb/__init__.py +0 -0
  404. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/ispyb/conftest.py +0 -0
  405. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/ispyb/test_expeye_interaction.py +0 -0
  406. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/ispyb/test_gridscan_ispyb_store_3d.py +0 -0
  407. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/ispyb/test_rotation_ispyb_store.py +0 -0
  408. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/nexus/__init__.py +0 -0
  409. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/nexus/test_compare_nexus_to_gda_exhaustively.py +0 -0
  410. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/nexus/test_nexus_utils.py +0 -0
  411. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/nexus/test_write_nexus.py +0 -0
  412. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000001.h5 +0 -0
  413. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000002.h5 +0 -0
  414. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/test_data/dummy_1_000003.h5 +0 -0
  415. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/test_ispyb_utils.py +0 -0
  416. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/external_interaction/test_write_rotation_nexus.py +0 -0
  417. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/parameters/__init__.py +0 -0
  418. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/parameters/test_parameter_model.py +0 -0
  419. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/test_exceptions.py +0 -0
  420. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/test_main_system.py +0 -0
  421. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/test_utils.py +0 -0
  422. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/utils/__init__.py +0 -0
  423. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/utils/test_callback_sim.py +0 -0
  424. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/hyperion/utils/test_context.py +0 -0
  425. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/tests/unit_tests/test_cli.py +0 -0
  426. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/beam_off_trickery.sh +0 -0
  427. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/build_docker_image.sh +0 -0
  428. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/build_imginfo.sh +0 -0
  429. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/deploy/deploy_edm_for_ssx.sh +0 -0
  430. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/deploy/test_deploy.py +0 -0
  431. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/dev_jaeger_container.sh +0 -0
  432. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/dls_dev_env.sh +0 -0
  433. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/docker/entrypoint.sh +0 -0
  434. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/docker/healthcheck.sh +0 -0
  435. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/docker/i03-compose.yml +0 -0
  436. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/graylog/Dockerfile +0 -0
  437. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/graylog/tcp_input.json +0 -0
  438. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/procserv_ioc_start.sh +0 -0
  439. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/run_imginfo.sh +0 -0
  440. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/setup_graylog.sh +0 -0
  441. {mx_bluesky-1.4.1 → mx_bluesky-1.4.2}/utility_scripts/strip_metafile.py +0 -0
@@ -51,6 +51,7 @@ jobs:
51
51
  # Docker cache and publish it
52
52
  with:
53
53
  context: .
54
+ file: Dockerfile.release
54
55
  push: true
55
56
  tags: ${{ steps.meta.outputs.tags }}
56
57
  labels: ${{ steps.meta.outputs.labels }}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mx-bluesky
3
- Version: 1.4.1
3
+ Version: 1.4.2
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
@@ -239,7 +239,7 @@ Requires-Dist: daq-config-server>=0.1.1
239
239
  Requires-Dist: ophyd==1.9.0
240
240
  Requires-Dist: ophyd-async>=0.8a5
241
241
  Requires-Dist: bluesky>=1.13.0a4
242
- Requires-Dist: dls-dodal==1.36.2
242
+ Requires-Dist: dls-dodal==1.36.3
243
243
  Provides-Extra: dev
244
244
  Requires-Dist: black; extra == "dev"
245
245
  Requires-Dist: build; extra == "dev"
@@ -46,7 +46,7 @@ dependencies = [
46
46
  "ophyd == 1.9.0",
47
47
  "ophyd-async >= 0.8a5",
48
48
  "bluesky >= 1.13.0a4",
49
- "dls-dodal == 1.36.2",
49
+ "dls-dodal == 1.36.3",
50
50
  ]
51
51
 
52
52
 
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.4.1'
16
- __version_tuple__ = version_tuple = (1, 4, 1)
15
+ __version__ = version = '1.4.2'
16
+ __version_tuple__ = version_tuple = (1, 4, 2)
@@ -18,9 +18,6 @@ from .fixed_target.i24ssx_Chip_Manager_py3v1 import (
18
18
  moveto,
19
19
  moveto_preset,
20
20
  pumpprobe_calc,
21
- save_screen_map,
22
- upload_parameters,
23
- write_parameter_file,
24
21
  )
25
22
  from .log import clean_up_log_config_at_end, setup_collection_logs
26
23
  from .setup_beamline.setup_detector import setup_detector_stage
@@ -44,9 +41,6 @@ __all__ = [
44
41
  "load_lite_map",
45
42
  "load_stock_map",
46
43
  "pumpprobe_calc",
47
- "save_screen_map",
48
- "upload_parameters",
49
- "write_parameter_file",
50
44
  "setup_collection_logs",
51
45
  "clean_up_log_config_at_end",
52
46
  ]
@@ -4,9 +4,7 @@ This version in python3 new Feb2021 by RLO
4
4
  - March 21 added logging and Eiger functionality
5
5
  """
6
6
 
7
- import json
8
7
  import re
9
- import shutil
10
8
  import sys
11
9
  import time
12
10
  from datetime import datetime
@@ -40,10 +38,6 @@ from mx_bluesky.beamlines.i24.serial.log import (
40
38
  log_on_entry,
41
39
  )
42
40
  from mx_bluesky.beamlines.i24.serial.parameters import ExtruderParameters
43
- from mx_bluesky.beamlines.i24.serial.parameters.constants import (
44
- PARAM_FILE_NAME,
45
- PARAM_FILE_PATH,
46
- )
47
41
  from mx_bluesky.beamlines.i24.serial.setup_beamline import Pilatus, caget, caput, pv
48
42
  from mx_bluesky.beamlines.i24.serial.setup_beamline import setup_beamline as sup
49
43
  from mx_bluesky.beamlines.i24.serial.setup_beamline.setup_detector import (
@@ -141,12 +135,20 @@ def enter_hutch(
141
135
 
142
136
 
143
137
  @log_on_entry
144
- def write_parameter_file(
145
- detector_stage: DetectorMotion, attenuator: ReadOnlyAttenuator
146
- ):
147
- """Writes a json parameter file that can later be parsed by the model."""
148
- param_file: Path = PARAM_FILE_PATH / PARAM_FILE_NAME
149
- SSX_LOGGER.debug(f"Writing Parameter File to: {param_file}\n")
138
+ def read_parameters(detector_stage: DetectorMotion, attenuator: ReadOnlyAttenuator):
139
+ """ Read the parameters from user input and create the parameter model for an \
140
+ extruder collection.
141
+
142
+ Args:
143
+ detector_stage (DetectorMotion): The detector stage device.
144
+ attenuator (ReadOnlyAttenuator): A read-only attenuator device to get the \
145
+ transmission value.
146
+
147
+ Returns:
148
+ ExtruderParameters: Parameter model for extruder collections
149
+
150
+ """
151
+ SSX_LOGGER.info("Creating parameter model from input.")
150
152
 
151
153
  det_type = yield from get_detector_type(detector_stage)
152
154
  SSX_LOGGER.warning(f"DETECTOR TYPE: {det_type}")
@@ -182,12 +184,11 @@ def write_parameter_file(
182
184
  "laser_dwell_s": pump_exp,
183
185
  "laser_delay_s": pump_delay,
184
186
  }
185
- with open(param_file, "w") as f:
186
- json.dump(params_dict, f, indent=4)
187
187
 
188
188
  SSX_LOGGER.info("Parameters \n")
189
189
  SSX_LOGGER.info(pformat(params_dict))
190
190
  yield from bps.null()
191
+ return ExtruderParameters(**params_dict)
191
192
 
192
193
 
193
194
  @log_on_entry
@@ -467,11 +468,6 @@ def collection_complete_plan(
467
468
  dcid.collection_complete(end_time, aborted=False)
468
469
  SSX_LOGGER.info(f"End Time = {end_time.ctime()}")
469
470
 
470
- # Copy parameter file
471
- shutil.copy2(
472
- PARAM_FILE_PATH / PARAM_FILE_NAME,
473
- collection_directory / PARAM_FILE_NAME,
474
- )
475
471
  yield from bps.null()
476
472
 
477
473
 
@@ -489,8 +485,9 @@ def run_extruder_plan(
489
485
  start_time = datetime.now()
490
486
  SSX_LOGGER.info(f"Collection start time: {start_time.ctime()}")
491
487
 
492
- yield from write_parameter_file(detector_stage, attenuator)
493
- parameters = ExtruderParameters.from_file(PARAM_FILE_PATH / PARAM_FILE_NAME)
488
+ parameters: ExtruderParameters = yield from read_parameters(
489
+ detector_stage, attenuator
490
+ )
494
491
 
495
492
  beam_center_device = sup.get_beam_center_device(parameters.detector_name)
496
493
 
@@ -3,8 +3,8 @@ beginScreenProperties
3
3
  major 4
4
4
  minor 0
5
5
  release 1
6
- x 1062
7
- y 369
6
+ x 308
7
+ y 339
8
8
  w 650
9
9
  h 400
10
10
  font "arial-medium-r-18.0"
@@ -179,50 +179,6 @@ font "arial-medium-r-18.0"
179
179
  colorPv "ME14E-MO-IOC-01:GP67"
180
180
  endObjectProperties
181
181
 
182
- # (Shell Command)
183
- object shellCmdClass
184
- beginObjectProperties
185
- major 4
186
- minor 3
187
- release 0
188
- x 40
189
- y 290
190
- w 194
191
- h 40
192
- fgColor index 0
193
- bgColor index 23
194
- topShadowColor index 1
195
- botShadowColor index 11
196
- font "arial-medium-r-18.0"
197
- buttonLabel "Save Screen Map"
198
- numCmds 1
199
- command {
200
- 0 "blueapi -c CONFIG_LOCATION controller run save_screen_map"
201
- }
202
- endObjectProperties
203
-
204
- # (Shell Command)
205
- object shellCmdClass
206
- beginObjectProperties
207
- major 4
208
- minor 3
209
- release 0
210
- x 12
211
- y 337
212
- w 244
213
- h 53
214
- fgColor index 13
215
- bgColor index 49
216
- topShadowColor index 1
217
- botShadowColor index 11
218
- font "arial-medium-r-18.0"
219
- buttonLabel "Upload Parameters"
220
- numCmds 1
221
- command {
222
- 0 "blueapi -c CONFIG_LOCATION controller run upload_parameters '\{\"pmac\":\"pmac\"\}'"
223
- }
224
- endObjectProperties
225
-
226
182
  # (Message Button)
227
183
  object activeMessageButtonClass
228
184
  beginObjectProperties
@@ -2,14 +2,12 @@
2
2
  Fixed target data collection
3
3
  """
4
4
 
5
- import shutil
6
5
  from datetime import datetime
7
6
  from pathlib import Path
8
7
  from time import sleep
9
8
 
10
9
  import bluesky.plan_stubs as bps
11
10
  import bluesky.preprocessors as bpp
12
- import numpy as np
13
11
  from bluesky.utils import MsgGenerator
14
12
  from dodal.common import inject
15
13
  from dodal.devices.attenuator import ReadOnlyAttenuator
@@ -35,18 +33,11 @@ from mx_bluesky.beamlines.i24.serial.fixed_target.ft_utils import (
35
33
  PumpProbeSetting,
36
34
  )
37
35
  from mx_bluesky.beamlines.i24.serial.fixed_target.i24ssx_Chip_Manager_py3v1 import (
38
- write_parameter_file,
36
+ read_parameters,
37
+ upload_chip_map_to_geobrick,
39
38
  )
40
39
  from mx_bluesky.beamlines.i24.serial.log import SSX_LOGGER, log_on_entry
41
- from mx_bluesky.beamlines.i24.serial.parameters import (
42
- ChipDescription,
43
- FixedTargetParameters,
44
- )
45
- from mx_bluesky.beamlines.i24.serial.parameters.constants import (
46
- LITEMAP_PATH,
47
- PARAM_FILE_NAME,
48
- PARAM_FILE_PATH_FT,
49
- )
40
+ from mx_bluesky.beamlines.i24.serial.parameters import FixedTargetParameters
50
41
  from mx_bluesky.beamlines.i24.serial.setup_beamline import caget, cagetstring, caput, pv
51
42
  from mx_bluesky.beamlines.i24.serial.setup_beamline import setup_beamline as sup
52
43
  from mx_bluesky.beamlines.i24.serial.setup_beamline.setup_zebra_plans import (
@@ -107,19 +98,6 @@ def calculate_collection_timeout(parameters: FixedTargetParameters) -> float:
107
98
  return timeout
108
99
 
109
100
 
110
- def copy_files_to_data_location(
111
- dest_dir: Path | str,
112
- param_path: Path = PARAM_FILE_PATH_FT,
113
- map_file: Path = LITEMAP_PATH,
114
- map_type: MappingType = MappingType.Lite,
115
- ):
116
- if not isinstance(dest_dir, Path):
117
- dest_dir = Path(dest_dir)
118
- shutil.copy2(param_path / "parameters.txt", dest_dir / "parameters.txt")
119
- if map_type == MappingType.Lite:
120
- shutil.copy2(map_file / "currentchip.map", dest_dir / "currentchip.map")
121
-
122
-
123
101
  def write_userlog(
124
102
  parameters: FixedTargetParameters,
125
103
  filename: str,
@@ -308,50 +286,18 @@ def get_prog_num(
308
286
 
309
287
 
310
288
  @log_on_entry
311
- def datasetsizei24(
312
- n_exposures: int,
313
- chip_params: ChipDescription,
314
- map_type: MappingType,
315
- ) -> int:
316
- # Calculates how many images will be collected based on map type and N repeats
317
- SSX_LOGGER.info("Calculate total number of images expected in data collection.")
318
-
319
- if map_type == MappingType.NoMap:
320
- if chip_params.chip_type == ChipType.Custom:
321
- total_numb_imgs = chip_params.x_num_steps * chip_params.y_num_steps
322
- SSX_LOGGER.info(
323
- f"Map type: None \tCustom chip \tNumber of images {total_numb_imgs}"
324
- )
325
- else:
326
- chip_format = chip_params.chip_format[:4]
327
- total_numb_imgs = int(np.prod(chip_format))
328
- SSX_LOGGER.info(
329
- f"""Map type: None \tOxford chip {chip_params.chip_type} \t \
330
- Number of images {total_numb_imgs}"""
331
- )
332
-
333
- elif map_type == MappingType.Lite:
334
- SSX_LOGGER.info(f"Using Mapping Lite on chip type {chip_params.chip_type}")
335
- chip_format = chip_params.chip_format[2:4]
336
- block_count = 0
337
- with open(LITEMAP_PATH / "currentchip.map") as f:
338
- for line in f.readlines():
339
- entry = line.split()
340
- if entry[2] == "1":
341
- block_count += 1
342
-
343
- SSX_LOGGER.info(f"Block count={block_count}")
344
- SSX_LOGGER.info(f"Chip format={chip_format}")
345
-
346
- SSX_LOGGER.info(f"Number of exposures={n_exposures}")
347
-
348
- total_numb_imgs = int(np.prod(chip_format) * block_count * n_exposures)
349
- SSX_LOGGER.info(f"Calculated number of images: {total_numb_imgs}")
289
+ def set_datasize(
290
+ parameters: FixedTargetParameters,
291
+ ):
292
+ SSX_LOGGER.info("Setting PV to calculated total number of images")
350
293
 
351
- SSX_LOGGER.info("Set PV to calculated number of images.")
352
- caput(pv.me14e_gp10, int(total_numb_imgs))
294
+ SSX_LOGGER.debug(f"Map type: {parameters.map_type}")
295
+ SSX_LOGGER.debug(f"Chip type: {parameters.chip.chip_type}")
296
+ if parameters.map_type == MappingType.Lite:
297
+ SSX_LOGGER.debug(f"Num exposures: {parameters.num_exposures}")
298
+ SSX_LOGGER.debug(f"Block count: {len(parameters.chip_map)}")
353
299
 
354
- return int(total_numb_imgs)
300
+ caput(pv.me14e_gp10, parameters.total_num_images)
355
301
 
356
302
 
357
303
  @log_on_entry
@@ -622,9 +568,7 @@ def main_fixed_target_plan(
622
568
  parameters.checker_pattern,
623
569
  )
624
570
 
625
- parameters.total_num_images = datasetsizei24(
626
- parameters.num_exposures, parameters.chip, parameters.map_type
627
- )
571
+ set_datasize(parameters)
628
572
 
629
573
  start_time = yield from start_i24(
630
574
  zebra,
@@ -695,8 +639,7 @@ def collection_complete_plan(
695
639
  SSX_LOGGER.debug(f"Collection end time {end_time}")
696
640
  dcid.collection_complete(end_time, aborted=False)
697
641
 
698
- # Copy parameter file and eventual chip map to collection directory
699
- copy_files_to_data_location(collection_directory, map_type=map_type)
642
+ # NOTE no files to copy anymore but shoud write userlog here
700
643
  yield from bps.null()
701
644
 
702
645
 
@@ -749,29 +692,13 @@ def run_fixed_target_plan(
749
692
  mirrors: FocusMirrorsMode = inject("focus_mirrors"),
750
693
  attenuator: ReadOnlyAttenuator = inject("attenuator"),
751
694
  ) -> MsgGenerator:
752
- # in the first instance, write params here
753
- yield from write_parameter_file(detector_stage, attenuator)
754
-
755
- SSX_LOGGER.info("Getting parameters from file.")
756
- parameters = FixedTargetParameters.from_file(PARAM_FILE_PATH_FT / PARAM_FILE_NAME)
757
-
758
- log_msg = f"""
759
- Parameters for I24 serial collection: \n
760
- Chip name is {parameters.filename}
761
- visit = {parameters.visit}
762
- sub_dir = {parameters.directory}
763
- n_exposures = {parameters.num_exposures}
764
- chip_type = {str(parameters.chip.chip_type)}
765
- map_type = {str(parameters.map_type)}
766
- dcdetdist = {parameters.detector_distance_mm}
767
- exptime = {parameters.exposure_time_s}
768
- det_type = {parameters.detector_name}
769
- pump_repeat = {str(parameters.pump_repeat)}
770
- pumpexptime = {parameters.laser_dwell_s}
771
- pumpdelay = {parameters.laser_delay_s}
772
- prepumpexptime = {parameters.pre_pump_exposure_s}
773
- """
774
- SSX_LOGGER.info(log_msg)
695
+ # Read the parameters
696
+ parameters: FixedTargetParameters = yield from read_parameters(
697
+ detector_stage, attenuator
698
+ )
699
+
700
+ if parameters.chip_map:
701
+ upload_chip_map_to_geobrick(pmac, parameters.chip_map)
775
702
 
776
703
  beam_center_device = sup.get_beam_center_device(parameters.detector_name)
777
704
 
@@ -21,17 +21,24 @@ from dodal.devices.i24.dual_backlight import BacklightPositions, DualBacklight
21
21
  from dodal.devices.i24.i24_detector_motion import DetectorMotion
22
22
  from dodal.devices.i24.pmac import PMAC, EncReset, LaserSettings
23
23
 
24
- from mx_bluesky.beamlines.i24.serial.fixed_target.ft_utils import ChipType, Fiducials
24
+ from mx_bluesky.beamlines.i24.serial.fixed_target.ft_utils import (
25
+ ChipType,
26
+ Fiducials,
27
+ MappingType,
28
+ )
25
29
  from mx_bluesky.beamlines.i24.serial.log import (
26
30
  SSX_LOGGER,
27
31
  _read_visit_directory_from_file,
28
32
  log_on_entry,
29
33
  )
30
- from mx_bluesky.beamlines.i24.serial.parameters import get_chip_format
34
+ from mx_bluesky.beamlines.i24.serial.parameters import (
35
+ FixedTargetParameters,
36
+ get_chip_format,
37
+ get_chip_map,
38
+ )
31
39
  from mx_bluesky.beamlines.i24.serial.parameters.constants import (
32
40
  CS_FILES_PATH,
33
41
  LITEMAP_PATH,
34
- PARAM_FILE_NAME,
35
42
  PARAM_FILE_PATH_FT,
36
43
  PVAR_FILE_PATH,
37
44
  )
@@ -47,6 +54,8 @@ CHIP_MOVES = {
47
54
  ChipType.Custom: 25.40,
48
55
  ChipType.Minichip: 25.40,
49
56
  }
57
+ OXFORD_CHIP_WIDTH = 8
58
+ PVAR_TEMPLATE = f"P3%0{2}d1"
50
59
  CHIPTYPE_PV = pv.me14e_gp1
51
60
  MAPTYPE_PV = pv.me14e_gp2
52
61
  NUM_EXPOSURES_PV = pv.me14e_gp3
@@ -107,22 +116,35 @@ def initialise_stages(
107
116
 
108
117
 
109
118
  @log_on_entry
110
- def write_parameter_file(
119
+ def read_parameters(
111
120
  detector_stage: DetectorMotion,
112
121
  attenuator: ReadOnlyAttenuator,
113
122
  ) -> MsgGenerator:
114
- param_path: Path = PARAM_FILE_PATH_FT
115
- # Create directory if it doesn't yet exist.
116
- param_path.mkdir(parents=True, exist_ok=True)
123
+ """ Read the parameters from user input and create the parameter model for a fixed \
124
+ target collection.
117
125
 
118
- SSX_LOGGER.info(
119
- f"Writing Parameter File: {(param_path / PARAM_FILE_NAME).as_posix()}"
120
- )
126
+ Args:
127
+ detector_stage (DetectorMotion): The detector stage device.
128
+ attenuator (ReadOnlyAttenuator): A read-only attenuator device to get the \
129
+ transmission value.
130
+
131
+ Returns:
132
+ FixedTargetParameters: Parameter model for fixed target collections
133
+
134
+ """
135
+ SSX_LOGGER.info("Creating parameter model from input.")
121
136
 
122
137
  filename = caget(pv.me14e_chip_name)
123
138
  det_type = yield from get_detector_type(detector_stage)
124
139
  chip_params = get_chip_format(ChipType(int(caget(CHIPTYPE_PV))))
125
140
  map_type = int(caget(MAPTYPE_PV))
141
+ if map_type == MappingType.Lite and chip_params.chip_type in [
142
+ ChipType.Oxford,
143
+ ChipType.OxfordInner,
144
+ ]:
145
+ chip_map = get_chip_map()
146
+ else:
147
+ chip_map = []
126
148
  pump_repeat = int(caget(PUMP_REPEAT_PV))
127
149
 
128
150
  # If file name ends in a digit this causes processing/pilatus pain.
@@ -153,6 +175,7 @@ def write_parameter_file(
153
175
  "map_type": map_type,
154
176
  "pump_repeat": pump_repeat,
155
177
  "checker_pattern": bool(caget(pv.me14e_gp111)),
178
+ "chip_map": chip_map,
156
179
  "laser_dwell_s": float(caget(pv.me14e_gp103)) if pump_repeat != 0 else 0.0,
157
180
  "laser_delay_s": float(caget(pv.me14e_gp110)) if pump_repeat != 0 else 0.0,
158
181
  "pre_pump_exposure_s": float(caget(pv.me14e_gp109))
@@ -160,13 +183,11 @@ def write_parameter_file(
160
183
  else None,
161
184
  }
162
185
 
163
- with open(param_path / PARAM_FILE_NAME, "w") as f:
164
- json.dump(params_dict, f, indent=4)
165
-
166
- SSX_LOGGER.info("Information written to file \n")
186
+ SSX_LOGGER.info("Parameters for I24 serial collection: \n")
167
187
  SSX_LOGGER.info(pformat(params_dict))
168
188
 
169
189
  yield from bps.null()
190
+ return FixedTargetParameters(**params_dict)
170
191
 
171
192
 
172
193
  def scrape_pvar_file(fid: str, pvar_dir: Path = PVAR_FILE_PATH):
@@ -221,59 +242,25 @@ def define_current_chip(
221
242
 
222
243
 
223
244
  @log_on_entry
224
- def save_screen_map() -> MsgGenerator:
225
- litemap_path: Path = LITEMAP_PATH
226
- litemap_path.mkdir(parents=True, exist_ok=True)
227
-
228
- SSX_LOGGER.info(f"Saving {litemap_path.as_posix()} currentchip.map")
229
- with open(litemap_path / "currentchip.map", "w") as f:
230
- SSX_LOGGER.debug("Printing only blocks with block_val == 1")
231
- for x in range(1, 82):
232
- block_str = f"ME14E-MO-IOC-01:GP{x + 10:d}"
233
- block_val = int(caget(block_str))
234
- if block_val == 1:
235
- SSX_LOGGER.info(f"{block_str} {block_val:d}")
236
- line = f"{x:02d}status P3{x:02d}1 \t{block_val}\n"
237
- f.write(line)
238
- yield from bps.null()
245
+ def upload_chip_map_to_geobrick(pmac: PMAC, chip_map: list[int]) -> MsgGenerator:
246
+ """Upload the map parameters for an Oxford-type chip (width=8) to the geobrick.
239
247
 
248
+ Args:
249
+ pmac (PMAC): The PMAC device.
250
+ chip_map (list[int]): A list of selected blocks to be collected.
240
251
 
241
- @log_on_entry
242
- def upload_parameters(pmac: PMAC = inject("pmac")) -> MsgGenerator:
252
+ """
243
253
  SSX_LOGGER.info("Uploading Parameters for Oxford Chip to the GeoBrick")
244
- caput(CHIPTYPE_PV, 0)
245
- width = 8
246
-
247
- map_file: Path = LITEMAP_PATH / "currentchip.map"
248
- if not map_file.exists():
249
- raise FileNotFoundError(f"The file {map_file} has not yet been created")
250
-
251
- with open(map_file) as f:
252
- SSX_LOGGER.info(f"Chipid {ChipType.Oxford}")
253
- SSX_LOGGER.info(f"width {width}")
254
- x = 1
255
- for line in f.readlines()[: width**2]:
256
- cols = line.split()
257
- pvar = cols[1]
258
- value = cols[2]
259
- s = pvar + "=" + value
260
- if value != "1":
261
- s2 = pvar + " "
262
- sys.stdout.write(s2)
263
- else:
264
- sys.stdout.write(s + " ")
265
- sys.stdout.flush()
266
- if x == width:
267
- print()
268
- x = 1
269
- else:
270
- x += 1
271
- yield from bps.abs_set(pmac.pmac_string, s, wait=True)
272
- sleep(0.02)
273
-
274
- SSX_LOGGER.warning("Automatic Setting Mapping Type to Lite has been disabled")
254
+ SSX_LOGGER.info(f"Chipid {ChipType.Oxford}, width {OXFORD_CHIP_WIDTH}")
255
+ for block in range(1, 65):
256
+ value = 1 if block in chip_map else 0
257
+ pvar = PVAR_TEMPLATE % block
258
+ pvar_str = f"{pvar}={value}"
259
+ SSX_LOGGER.debug(f"Set {pvar_str} for block {block}")
260
+ yield from bps.abs_set(pmac.pmac_string, pvar_str, wait=True)
261
+ # Wait for PMAC to be done processing PVAR string
262
+ sleep(0.02)
275
263
  SSX_LOGGER.debug("Upload parameters done.")
276
- yield from bps.null()
277
264
 
278
265
 
279
266
  @log_on_entry
@@ -3,28 +3,10 @@ Startup utilities for chip
3
3
  """
4
4
 
5
5
  import string
6
- from pathlib import Path
7
6
 
8
7
  from mx_bluesky.beamlines.i24.serial.fixed_target.ft_utils import ChipType
9
8
  from mx_bluesky.beamlines.i24.serial.log import SSX_LOGGER, log_on_entry
10
- from mx_bluesky.beamlines.i24.serial.parameters import (
11
- FixedTargetParameters,
12
- get_chip_format,
13
- )
14
- from mx_bluesky.beamlines.i24.serial.parameters.constants import (
15
- PARAM_FILE_NAME,
16
- PARAM_FILE_PATH_FT,
17
- )
18
-
19
-
20
- def read_parameter_file(
21
- param_path: Path | str = PARAM_FILE_PATH_FT,
22
- ) -> FixedTargetParameters:
23
- if not isinstance(param_path, Path):
24
- param_path = Path(param_path)
25
- params_file = param_path / PARAM_FILE_NAME
26
- params = FixedTargetParameters.from_file(params_file)
27
- return params
9
+ from mx_bluesky.beamlines.i24.serial.parameters import get_chip_format
28
10
 
29
11
 
30
12
  @log_on_entry
@@ -6,7 +6,10 @@ from mx_bluesky.beamlines.i24.serial.parameters.experiment_parameters import (
6
6
  FixedTargetParameters,
7
7
  SerialAndLaserExperiment,
8
8
  )
9
- from mx_bluesky.beamlines.i24.serial.parameters.utils import get_chip_format
9
+ from mx_bluesky.beamlines.i24.serial.parameters.utils import (
10
+ get_chip_format,
11
+ get_chip_map,
12
+ )
10
13
 
11
14
  __all__ = [
12
15
  "SSXType",
@@ -16,4 +19,5 @@ __all__ = [
16
19
  "FixedTargetParameters",
17
20
  "SerialAndLaserExperiment",
18
21
  "get_chip_format",
22
+ "get_chip_map",
19
23
  ]
@@ -3,7 +3,8 @@ from abc import abstractmethod
3
3
  from pathlib import Path
4
4
  from typing import Literal
5
5
 
6
- from pydantic import BaseModel, ConfigDict, field_validator
6
+ import numpy as np
7
+ from pydantic import BaseModel, ConfigDict, computed_field, field_validator
7
8
 
8
9
  from mx_bluesky.beamlines.i24.serial.fixed_target.ft_utils import (
9
10
  ChipType,
@@ -56,6 +57,11 @@ class SerialAndLaserExperiment(SerialExperiment, LaserExperiment):
56
57
  def nexgen_experiment_type(self) -> str:
57
58
  pass
58
59
 
60
+ @property
61
+ @abstractmethod
62
+ def ispyb_experiment_type(self) -> SSXType:
63
+ pass
64
+
59
65
 
60
66
  class ExtruderParameters(SerialAndLaserExperiment):
61
67
  """Extruder parameter model."""
@@ -103,6 +109,10 @@ class ChipDescription(BaseModel):
103
109
  else:
104
110
  return ((self.y_num_steps - 1) * self.y_step_size) + self.b2b_vert
105
111
 
112
+ @property
113
+ def tot_num_blocks(self) -> int:
114
+ return self.x_blocks * self.y_blocks
115
+
106
116
 
107
117
  class FixedTargetParameters(SerialAndLaserExperiment):
108
118
  """Fixed target parameter model."""
@@ -112,7 +122,7 @@ class FixedTargetParameters(SerialAndLaserExperiment):
112
122
  map_type: MappingType
113
123
  pump_repeat: PumpProbeSetting
114
124
  checker_pattern: bool = False
115
- total_num_images: int = 0 # Calculated in the code for now
125
+ chip_map: list[int]
116
126
 
117
127
  @property
118
128
  def nexgen_experiment_type(self) -> str:
@@ -122,6 +132,28 @@ class FixedTargetParameters(SerialAndLaserExperiment):
122
132
  def ispyb_experiment_type(self) -> SSXType:
123
133
  return SSXType.FIXED
124
134
 
135
+ @computed_field # type: ignore # Mypy doesn't like it
136
+ @property
137
+ def total_num_images(self) -> int:
138
+ match self.map_type:
139
+ case MappingType.NoMap:
140
+ if self.chip.chip_type is ChipType.Custom:
141
+ num_images = (
142
+ self.chip.x_num_steps
143
+ * self.chip.y_num_steps
144
+ * self.num_exposures
145
+ )
146
+ else:
147
+ chip_format = self.chip.chip_format[:4]
148
+ num_images = int(np.prod(chip_format) * self.num_exposures)
149
+ case MappingType.Lite:
150
+ chip_format = self.chip.chip_format[2:4]
151
+ block_count = len(self.chip_map) # type: ignore
152
+ num_images = int(
153
+ np.prod(chip_format) * block_count * self.num_exposures
154
+ )
155
+ return num_images
156
+
125
157
 
126
158
  class BeamSettings(BaseModel):
127
159
  model_config = ConfigDict(frozen=True)