mx-bluesky 1.4.6__py3-none-any.whl → 1.4.7__py3-none-any.whl

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 (62) hide show
  1. mx_bluesky/_version.py +2 -2
  2. mx_bluesky/beamlines/aithre_lasershaping/__init__.py +13 -0
  3. mx_bluesky/beamlines/aithre_lasershaping/check_goniometer_performance.py +29 -0
  4. mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py +18 -0
  5. mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py +31 -25
  6. mx_bluesky/beamlines/i04/thawing_plan.py +10 -1
  7. mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +12 -12
  8. mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +30 -29
  9. mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +10 -11
  10. mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +8 -10
  11. mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py +10 -3
  12. mx_bluesky/beamlines/i24/serial/log.py +1 -0
  13. mx_bluesky/beamlines/i24/serial/set_visit_directory.sh +1 -1
  14. mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py +16 -16
  15. mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +47 -48
  16. mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py +1 -1
  17. mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py +9 -7
  18. mx_bluesky/beamlines/i24/serial/write_nexus.py +3 -2
  19. mx_bluesky/common/device_setup_plans/xbpm_feedback.py +45 -0
  20. mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py +2 -4
  21. mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py +1 -1
  22. mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py +18 -15
  23. mx_bluesky/{hyperion → common}/external_interaction/callbacks/sample_handling/sample_handling_callback.py +16 -4
  24. mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py +41 -5
  25. mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py +2 -1
  26. mx_bluesky/common/external_interaction/ispyb/data_model.py +1 -0
  27. mx_bluesky/common/external_interaction/ispyb/ispyb_store.py +14 -1
  28. mx_bluesky/common/external_interaction/nexus/nexus_utils.py +1 -1
  29. mx_bluesky/common/parameters/constants.py +2 -0
  30. mx_bluesky/common/parameters/gridscan.py +1 -1
  31. mx_bluesky/common/plans/write_sample_status.py +46 -0
  32. mx_bluesky/common/preprocessors/__init__.py +0 -0
  33. mx_bluesky/common/preprocessors/preprocessors.py +105 -0
  34. mx_bluesky/common/protocols/__init__.py +0 -0
  35. mx_bluesky/common/protocols/protocols.py +10 -0
  36. mx_bluesky/hyperion/__main__.py +3 -9
  37. mx_bluesky/hyperion/baton_handler.py +84 -0
  38. mx_bluesky/hyperion/device_setup_plans/setup_panda.py +5 -1
  39. mx_bluesky/hyperion/experiment_plans/__init__.py +0 -4
  40. mx_bluesky/hyperion/experiment_plans/change_aperture_then_move_plan.py +10 -25
  41. mx_bluesky/hyperion/experiment_plans/experiment_registry.py +0 -7
  42. mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +11 -10
  43. mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +5 -1
  44. mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py +2 -2
  45. mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +5 -3
  46. mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +0 -26
  47. mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +23 -18
  48. mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +25 -6
  49. mx_bluesky/hyperion/external_interaction/agamemnon.py +148 -10
  50. mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +12 -6
  51. mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py +107 -0
  52. mx_bluesky/hyperion/parameters/gridscan.py +2 -2
  53. mx_bluesky/hyperion/parameters/rotation.py +1 -1
  54. {mx_bluesky-1.4.6.dist-info → mx_bluesky-1.4.7.dist-info}/METADATA +7 -7
  55. {mx_bluesky-1.4.6.dist-info → mx_bluesky-1.4.7.dist-info}/RECORD +60 -51
  56. {mx_bluesky-1.4.6.dist-info → mx_bluesky-1.4.7.dist-info}/WHEEL +1 -1
  57. mx_bluesky/common/external_interaction/callbacks/common/aperture_change_callback.py +0 -22
  58. mx_bluesky/hyperion/device_setup_plans/xbpm_feedback.py +0 -103
  59. /mx_bluesky/{hyperion → common}/external_interaction/callbacks/sample_handling/__init__.py +0 -0
  60. {mx_bluesky-1.4.6.dist-info → mx_bluesky-1.4.7.dist-info}/entry_points.txt +0 -0
  61. {mx_bluesky-1.4.6.dist-info → mx_bluesky-1.4.7.dist-info/licenses}/LICENSE +0 -0
  62. {mx_bluesky-1.4.6.dist-info → mx_bluesky-1.4.7.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,107 @@
1
+ import re
2
+
3
+ from dodal.devices.oav.snapshots.snapshot_image_processing import (
4
+ compute_beam_centre_pixel_xy_for_mm_position,
5
+ draw_crosshair,
6
+ )
7
+ from event_model import Event, EventDescriptor, RunStart
8
+ from PIL import Image
9
+
10
+ from mx_bluesky.common.external_interaction.callbacks.common.plan_reactive_callback import (
11
+ PlanReactiveCallback,
12
+ )
13
+ from mx_bluesky.common.parameters.constants import DocDescriptorNames
14
+ from mx_bluesky.common.utils.log import ISPYB_ZOCALO_CALLBACK_LOGGER as CALLBACK_LOGGER
15
+
16
+
17
+ class BeamDrawingCallback(PlanReactiveCallback):
18
+ """
19
+ Callback that monitors for OAV_ROTATION_SNAPSHOT_TRIGGERED events and
20
+ draws a crosshair at the beam centre, saving the snapshot to a file.
21
+ The callback assumes an OAV device "oav"
22
+ Examples:
23
+ Take a snapshot at the current location
24
+ >>> from bluesky.run_engine import RunEngine
25
+ >>> import bluesky.preprocessors as bpp
26
+ >>> import bluesky.plan_stubs as bps
27
+ >>> from dodal.devices.oav.oav_detector import OAV
28
+ >>> from mx_bluesky.common.parameters.components import WithSnapshot
29
+ >>> def take_snapshot(params: WithSnapshot, oav: OAV, run_engine: RunEngine):
30
+ ... run_engine.subscribe(BeamDrawingCallback())
31
+ ... @bpp.run_decorator(md={
32
+ ... "activate_callbacks": ["BeamDrawingCallback"],
33
+ ... "with_snapshot": params.model_dump_json(),
34
+ ... })
35
+ ... def inner_plan():
36
+ ... yield from bps.abs_set(oav.snapshot.directory, "/path/to/snapshot_folder", wait=True)
37
+ ... yield from bps.abs_set(oav.snapshot.filename, "my_snapshot_prefix", wait=True)
38
+ ... yield from bps.trigger(oav.snapshot, wait=True)
39
+ ... yield from bps.create(DocDescriptorNames.OAV_ROTATION_SNAPSHOT_TRIGGERED)
40
+ ... yield from bps.read(oav)
41
+ ... yield from bps.save()
42
+ """
43
+
44
+ def __init__(self, *args, **kwargs):
45
+ super().__init__(*args, log=CALLBACK_LOGGER, **kwargs)
46
+ self._snapshot_files: list[str] = []
47
+ self._microns_per_pixel: tuple[float, float]
48
+ self._beam_centre: tuple[int, int]
49
+ self._rotation_snapshot_descriptor: str = ""
50
+
51
+ def activity_gated_start(self, doc: RunStart):
52
+ if self.activity_uid == doc.get("uid"):
53
+ with_snapshot_json = doc.get("with_snapshot") # type: ignore
54
+ assert with_snapshot_json, (
55
+ "run start event did not have expected snapshot json"
56
+ )
57
+ return doc
58
+
59
+ def activity_gated_descriptor(self, doc: EventDescriptor) -> EventDescriptor | None:
60
+ if doc.get("name") == DocDescriptorNames.OAV_ROTATION_SNAPSHOT_TRIGGERED:
61
+ self._rotation_snapshot_descriptor = doc["uid"]
62
+ return doc
63
+
64
+ def activity_gated_event(self, doc: Event) -> Event:
65
+ if doc["descriptor"] == self._rotation_snapshot_descriptor:
66
+ self._handle_rotation_snapshot(doc)
67
+ return doc
68
+
69
+ def _extract_base_snapshot_params(self, doc: Event):
70
+ data = doc["data"]
71
+ self._snapshot_files.append(data["oav-snapshot-last_saved_path"])
72
+ self._microns_per_pixel = (
73
+ data["oav-microns_per_pixel_x"],
74
+ data["oav-microns_per_pixel_y"],
75
+ )
76
+ self._beam_centre = (data["oav-beam_centre_i"], data["oav-beam_centre_j"])
77
+
78
+ def _handle_rotation_snapshot(self, doc: Event):
79
+ self._extract_base_snapshot_params(doc)
80
+ data = doc["data"]
81
+ snapshot_path = data["oav-snapshot-last_saved_path"]
82
+ match = re.match("(.*)\\.png", snapshot_path)
83
+ assert match, f"Snapshot {snapshot_path} was not a .png file"
84
+ snapshot_base = match.groups()[0]
85
+ output_snapshot_path = f"{snapshot_base}_with_beam_centre.png"
86
+ self._generate_snapshot_at(snapshot_path, output_snapshot_path, 0, 0)
87
+ data["oav-snapshot-last_saved_path"] = output_snapshot_path
88
+ return doc
89
+
90
+ def _generate_snapshot_at(
91
+ self, input_snapshot_path: str, output_snapshot_path: str, x_mm: int, y_mm: int
92
+ ):
93
+ """
94
+ Save a snapshot to the specified path, with an annotated crosshair at the specified
95
+ position
96
+ Args:
97
+ input_snapshot_path: The non-annotated image path.
98
+ output_snapshot_path: The path to the image that will be annotated.
99
+ x_mm: Relative x location of the sample to the original image (mm)
100
+ y_mm: Relative y location of the sample to the original image (mm)
101
+ """
102
+ image = Image.open(input_snapshot_path)
103
+ x_px, y_px = compute_beam_centre_pixel_xy_for_mm_position(
104
+ (x_mm, y_mm), self._beam_centre, self._microns_per_pixel
105
+ )
106
+ draw_crosshair(image, x_px, y_px)
107
+ image.save(output_snapshot_path, format="png")
@@ -36,7 +36,7 @@ class GridCommonWithHyperionDetectorParams(GridCommon, WithHyperionUDCFeatures):
36
36
  return DetectorParams(
37
37
  detector_size_constants=I03Constants.DETECTOR,
38
38
  expected_energy_ev=self.demand_energy_ev,
39
- exposure_time=self.exposure_time_s,
39
+ exposure_time_s=self.exposure_time_s,
40
40
  directory=self.storage_directory,
41
41
  prefix=self.file_name,
42
42
  detector_distance=self.detector_distance_mm,
@@ -73,7 +73,7 @@ class HyperionSpecifiedThreeDGridScan(WithHyperionUDCFeatures, SpecifiedThreeDGr
73
73
  return DetectorParams(
74
74
  detector_size_constants=I03Constants.DETECTOR,
75
75
  expected_energy_ev=self.demand_energy_ev,
76
- exposure_time=self.exposure_time_s,
76
+ exposure_time_s=self.exposure_time_s,
77
77
  directory=self.storage_directory,
78
78
  prefix=self.file_name,
79
79
  detector_distance=self.detector_distance_mm,
@@ -75,7 +75,7 @@ class RotationExperiment(DiffractionExperimentWithSample, WithHyperionUDCFeature
75
75
  return DetectorParams(
76
76
  detector_size_constants=I03Constants.DETECTOR,
77
77
  expected_energy_ev=self.demand_energy_ev,
78
- exposure_time=self.exposure_time_s,
78
+ exposure_time_s=self.exposure_time_s,
79
79
  directory=self.storage_directory,
80
80
  prefix=self.file_name,
81
81
  detector_distance=self.detector_distance_mm,
@@ -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.7
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
@@ -239,8 +238,8 @@ Requires-Dist: blueapi>=0.5.0
239
238
  Requires-Dist: daq-config-server>=0.1.1
240
239
  Requires-Dist: ophyd==1.9.0
241
240
  Requires-Dist: ophyd-async>=0.9.0a2
242
- Requires-Dist: bluesky>=1.13
243
- Requires-Dist: dls-dodal==1.41.0
241
+ Requires-Dist: bluesky>=1.13.1
242
+ Requires-Dist: dls-dodal==1.44.0
244
243
  Provides-Extra: dev
245
244
  Requires-Dist: black; extra == "dev"
246
245
  Requires-Dist: build; extra == "dev"
@@ -254,7 +253,7 @@ 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"
@@ -267,6 +266,7 @@ Requires-Dist: tox-direct; extra == "dev"
267
266
  Requires-Dist: tox; extra == "dev"
268
267
  Requires-Dist: types-mock; extra == "dev"
269
268
  Requires-Dist: types-requests; extra == "dev"
269
+ Dynamic: license-file
270
270
 
271
271
  mx-bluesky
272
272
  ===========================
@@ -285,7 +285,7 @@ Releases https://github.com/DiamondLightSource/mx-bluesky/releases
285
285
  Getting Started
286
286
  ===============
287
287
 
288
- To get started with developing this repo at DLS run ``dls_dev_setup.sh``.
288
+ To get started with developing this repo at DLS run ``./utility_scripts/dls_dev_env.sh``.
289
289
 
290
290
  If you want to develop interactively at the beamline we recommend using jupyter notebooks. You can get started with this by running::
291
291
 
@@ -1,36 +1,39 @@
1
1
  mx_bluesky/__init__.py,sha256=Ksms_WJF8LTkbm38gEpm1jBpGqcQ8NGvmb2ZJlOE1j8,198
2
2
  mx_bluesky/__main__.py,sha256=RVqPnxDisFMIn_aoEi0drlThNHgKTJULnSrotouIKI0,480
3
- mx_bluesky/_version.py,sha256=X_hmmrOxuP6swjoZFdUO_TT0Oqty4TKqejPSCRgbntM,511
3
+ mx_bluesky/_version.py,sha256=s-Eu9jsJQLZM8_9AlFjyCzqOgTZ3BB_7dc7mXsC3CzU,511
4
4
  mx_bluesky/definitions.py,sha256=ULpEYAUzdQiEbBoTgYTMxfUf3DDDjhYtvDxofs7Qxqw,168
5
5
  mx_bluesky/jupyter_example.ipynb,sha256=wpwvPrBvwtRMS5AIFk8F54cIlUoD0o4ji8tKK5cZHA4,1672
6
6
  mx_bluesky/beamlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ mx_bluesky/beamlines/aithre_lasershaping/__init__.py,sha256=MGOtd-CsJYRfCVxbwwvRJSZcsqMU_uV3vsbmBd7pbHk,374
8
+ mx_bluesky/beamlines/aithre_lasershaping/check_goniometer_performance.py,sha256=AqWAFey_Ih1JcRxVNiZDGFsVg4kvA9LH2p5SJeXfe2I,834
9
+ mx_bluesky/beamlines/aithre_lasershaping/goniometer_controls.py,sha256=qYALVNt69e7mpEonTmHH4xY7ByKXi27BvCskkR8KN9I,633
7
10
  mx_bluesky/beamlines/i04/__init__.py,sha256=jZjAMN5_oOEjQoR3iTrnMFW3ElxlHhQ7pEQZIv21Y4I,129
8
- mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py,sha256=gcSHxYbmUO9DEVw86jfSR7eFpgYR_XgBN9hwP5_N6y0,6130
9
- mx_bluesky/beamlines/i04/thawing_plan.py,sha256=1khKSUcY67_kqFF44rYxjv2KIfwrrj71GEzZSak-Jqo,4771
11
+ mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py,sha256=iYtsjr94TaYjZ0mKvL9kbs6a3ZfojuQHahfHZl1skG8,6593
12
+ mx_bluesky/beamlines/i04/thawing_plan.py,sha256=95V-y9sjdXTRE7J9GU7YNARCqtWBOeYLUZ7K_2fg0b4,4999
10
13
  mx_bluesky/beamlines/i04/callbacks/murko_callback.py,sha256=ZIwkY6gdcmIE-aMBvehN8DVcjGRtb9wwzpgHJNMZ39Q,2125
11
14
  mx_bluesky/beamlines/i24/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
15
  mx_bluesky/beamlines/i24/serial/__init__.py,sha256=XnCeh2GahduKp7d9aFgNjm_SMgh6F0E5M2tk0bNFivY,1423
13
16
  mx_bluesky/beamlines/i24/serial/blueapi_config.yaml,sha256=gwOfjzZMbcvpVH71CCyHaxr8hgPYCJIWWWfg1zErtmM,245
14
17
  mx_bluesky/beamlines/i24/serial/dcid.py,sha256=Y2bL0AGPvBqQ4gbqbxjCMG2UJqqIY1B7YAW0C_UxS7Q,14530
15
- mx_bluesky/beamlines/i24/serial/log.py,sha256=o9xydsKeYdj_sSE56lY4el3FkKjC7cX2VykByiP5UUE,4798
18
+ mx_bluesky/beamlines/i24/serial/log.py,sha256=oK7HHjIeuiWdy1vNZL6p-mU8Y3kzeCAgsifCxhAYqOQ,4799
16
19
  mx_bluesky/beamlines/i24/serial/run_extruder.sh,sha256=FXYsqdTpVgxB1-QrY4Tg5pl5Ex7PgUoXnuAcr9iDZTE,1078
17
20
  mx_bluesky/beamlines/i24/serial/run_fixed_target.sh,sha256=ZzxcVFoitBRvcqsJaBxjtepgkG-ZCGBW6X9xuV_Y478,1229
18
21
  mx_bluesky/beamlines/i24/serial/run_serial.py,sha256=Zrudosavh2HnnBXd2CLtOPs3lyQFxaN8YyO_sradRGs,1511
19
22
  mx_bluesky/beamlines/i24/serial/run_ssx.sh,sha256=0Ir5iQQ-xSN_5teHtxzht6G-mJ08mE1gxBS32vkh1eM,714
20
- mx_bluesky/beamlines/i24/serial/set_visit_directory.sh,sha256=WuN5PUBxTofzuESk1-3gWtTcbPjOx-26JaQSVCsZhZs,1660
23
+ mx_bluesky/beamlines/i24/serial/set_visit_directory.sh,sha256=heQWMqUHNERQurt2tRgU-kve2ov6L6gyNamjLTRpb48,1660
21
24
  mx_bluesky/beamlines/i24/serial/start_blueapi.sh,sha256=4iBzQljTLXQiVIF4UO7drc9qUkP7KSRC6Mjh8hcGxpI,608
22
- mx_bluesky/beamlines/i24/serial/write_nexus.py,sha256=oCaaPHoEsZ4OhnQIMl4egcyxE_yrGJJBJXVCxws0P9g,3977
25
+ mx_bluesky/beamlines/i24/serial/write_nexus.py,sha256=mcW2y0syeIPjdyqDcaEasMrcbAzXFGws05ky2rCUa4c,4030
23
26
  mx_bluesky/beamlines/i24/serial/extruder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py,sha256=hEPr1rVltE4AtS92tGrkxAC3PKgI_56q-KRMOWx17Ng,18763
27
+ mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py,sha256=NK_9gzVQqm5JgmEbw-hb7DS9R3v43FPIdEt1eHm1GRY,18884
25
28
  mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl,sha256=9L1CgEdxZD4N3QvM5HLlAlJTcxpzd4ahB2nVJ9jHujw,2013
26
- mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl,sha256=JaS-PvAHEOqHRuH3LbdpOk2T-TlO8Enq_uwzokQXzZU,31349
29
+ mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl,sha256=JsvqKR_NPbnJsWhAeIhCIUFAZ_ZH2CAt8FCOoMrLH7o,31349
27
30
  mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl,sha256=K79vmGAcf9qVEQLXTgr0g4bZDWaJ7nFoK4e0Ex7qAwM,14690
28
31
  mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
32
  mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py,sha256=puO1vg0x-TPgv8FbEFg73ohJqbwDpcG50_2cLUTa2FA,1210
30
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py,sha256=YRE7iO4cbzXLW5gTyDaLsdFMCVbhQCAdx7uJdw7ubXs,26273
31
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py,sha256=TYdr4XWbLNsmouFmDPhhjEvSXl-fnRULyP52IcDqZlw,32846
33
+ mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py,sha256=Ncr008eHFlr-xaF7yK7MVc-NhmjQqBgK36udX8pp82Q,26384
34
+ mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py,sha256=aQHcB0vVvbO9jWa3DKjYASl-CWd4gpBKRFK2xMJdZxA,32926
32
35
  mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py,sha256=Vokr_Gl_lpqcUwG18C2h8TYMmyTx1HmUSDd9zgR9-7M,3275
33
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py,sha256=IngONbndrLjCmnvMJwHSQcbDul05wFFgI9L4FWkgwLE,6396
36
+ mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py,sha256=QLg4wryENBeFfOYFaIgE9R12r2KvUuKIP9ZY8iyYibY,6582
34
37
  mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl,sha256=H9BVU1S3oy8tAVHtKvJvp7YTHA-4X-jtOtiu3jJ7of4,10348
35
38
  mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl,sha256=WBji5SaRQ5e0KFRgrPuv6IgaFxkal1jh7MZW8SqQN88,2016
36
39
  mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl,sha256=-O_kRA5-m741Mja8OXQlGJWrRu9uBUkTvJ_uqUBjuFY,56616
@@ -53,108 +56,114 @@ mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxfo
53
56
  mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar,sha256=pZbFOEiN_S5yiTEtqdNHmTMtnQY-W2ImXVBYCovPCx0,1842
54
57
  mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py,sha256=UhBdMcPdJMzwV0d8DKOBzvYNd6TDSwcP9GJVqfGa7Jc,261
55
58
  mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py,sha256=H2gPmsLheYReFlGPFa5zzWbnyqdWbCmgKiAwcpVoYfk,1516
56
- mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py,sha256=aYgIKeBck2wliQyLq-uukuPiyN7WTkNutLAM6ys3WuM,15623
59
+ mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py,sha256=YSJnx-o562Lh9zYkQfYCPL7cJxcc_7Ypp6XrFodoJqw,15639
57
60
  mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py,sha256=WbD5ghgTG0F3-MR0XYm4nkiKYswVP5a2COYx_k_cngE,1806
58
- mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py,sha256=UnfYQwCUGo6rCmJphZ28I8SK8WoVEUFEaTyshGwufeI,20573
59
- mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py,sha256=E8G2F9rvmWJpMEApAmOMOITcIN4JSzmplnLZSXtRokk,3171
60
- mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py,sha256=BkJ3ZrE7g-KnQQHbLhtpDtZYD3vOWoL5zSc4ZX7vBLE,17938
61
+ mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py,sha256=Yx99IzxIpm556GXei5IOWCeSSzD4oQK-G0_mvCTYjlI,21251
62
+ mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py,sha256=l8GCfAQYs_sMeFYgBuT10f8WFuJVr8q8CTmONNDBrpY,3171
63
+ mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py,sha256=oRNZLA2uxiRM5eheAuRMM5eT0Oxe1YHqg59BHys3sXY,17970
61
64
  mx_bluesky/beamlines/i24/serial/web_gui_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
65
  mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py,sha256=R1VwqqhPAfG0C8DtIu1ymPpWqJBxYdoWSc0lAdqi1Tk,3538
63
66
  mx_bluesky/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
67
  mx_bluesky/common/xrc_result.py,sha256=J1uB9Bujz_Sq_MwvYdWOZL3c6kX09TSaZW3eetRXBpw,2351
65
68
  mx_bluesky/common/device_setup_plans/setup_panda.py,sha256=OF-ZygZyAyQEUdrAWiIxWZ6QhAsVx4Mm9ngRYB1mzKI,433
69
+ mx_bluesky/common/device_setup_plans/xbpm_feedback.py,sha256=WsUMdeOZBgbj-bFp7x66aHp2oWffQmjyp61-qmtQAmI,2153
66
70
  mx_bluesky/common/external_interaction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
71
  mx_bluesky/common/external_interaction/config_server.py,sha256=EmvLfOkvoJlnKa0sffAKNICkY26YsQQqY9sYHKmOGzw,2441
68
72
  mx_bluesky/common/external_interaction/test_config_server.py,sha256=4wdYsOpXJfc3yNBZvdcjZGSllOHzKBTB8oYFjjSOufU,960
69
73
  mx_bluesky/common/external_interaction/callbacks/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
74
  mx_bluesky/common/external_interaction/callbacks/common/abstract_event.py,sha256=iBj4WNK5ikieZzTePBZ9AEu6ehlnpew1nDK3ONJqibI,2093
71
- mx_bluesky/common/external_interaction/callbacks/common/aperture_change_callback.py,sha256=vrURLPOri400hQcNPyHomXBBapZ_FTRa_axvZpxmMCQ,841
72
75
  mx_bluesky/common/external_interaction/callbacks/common/grid_detection_callback.py,sha256=JmF5FssUqNPgsnxqrgxB9Pmw5Dd7W6GCPb9Mur8DHCo,4017
73
- mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py,sha256=Hfjw-HVRmelVkWOKiuC28E3Wa9O-iX-9v4Jm4J5_DH4,9832
74
- mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py,sha256=n4HUDvJyBmX4pmc0JAFI_pSxYbOL6QFKv2NxH3WF_Ac,2576
76
+ mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py,sha256=8uvPwDNSk8gBQq0aRd5To0jFSyxeKkFhFbBjy_LBviE,9821
77
+ mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py,sha256=bHtnDZfxIR5zzSRiBSehZ51y42wzkEcCJ7rFg93aONA,2578
75
78
  mx_bluesky/common/external_interaction/callbacks/common/log_uid_tag_callback.py,sha256=pfZxQfS9SnXep3F2YAPptDX5bjjWvbXtgy5fINfsoTU,626
76
79
  mx_bluesky/common/external_interaction/callbacks/common/logging_callback.py,sha256=NHb8Gp86TAk6PRTV3inWrlW-Lj96LmnZda7ZGewlrFA,712
77
80
  mx_bluesky/common/external_interaction/callbacks/common/plan_reactive_callback.py,sha256=3TYQXibOWIKnvM2PMTIjE2IOoX2Jkt9b2KpDCytQtYE,4088
78
- mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py,sha256=RubHJ6wjImsweISHZCG1rI2xcN-49HxmVcwDIaLR6Lc,3728
81
+ mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py,sha256=5Sjl2VU57huKkNtEExvypoSVb0I8nVItIJ4vH1vrp48,3930
82
+ mx_bluesky/common/external_interaction/callbacks/sample_handling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
+ mx_bluesky/common/external_interaction/callbacks/sample_handling/sample_handling_callback.py,sha256=niZ7CG1vqbp0MUjRfchevmLwJMg-puMz4i_HDPQavI0,2880
79
84
  mx_bluesky/common/external_interaction/callbacks/xray_centre/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
- mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py,sha256=jm41IQVU08RLjl0c1y9Vm3NAEXYJfi0hg4m_G7bn3tQ,12126
85
+ mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py,sha256=7GzE5u1dd5vhl_LS9ud5B7XapofIcf_yicb7vtZT1A0,13938
81
86
  mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py,sha256=fOYJkqaXEfCdLGQwGhTrzfGOj6Ed3t2wcRgv68DOOHc,1790
82
- mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py,sha256=g9ovYSnb6-bB4RqG1KKuzpAArK-d80DPYTKZ6rDzQOQ,4687
87
+ mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py,sha256=64ZA2ACcq8mI9tKG1MMTf46PYdb_B-sul8xQGM56_WA,4709
83
88
  mx_bluesky/common/external_interaction/ispyb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
- mx_bluesky/common/external_interaction/ispyb/data_model.py,sha256=WURy8W0L4VAULzz39lTW6kYpFDLDiGU2aYO28dq-4II,2706
89
+ mx_bluesky/common/external_interaction/ispyb/data_model.py,sha256=HJZPT_j5EMK7-j-0tdaugiS3kDp44_jzvVoP-xcFCsA,2738
85
90
  mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py,sha256=Y3nZV5NZ-XnYThettFMhZin4dQb5jAZfT2mGmtLlv74,6076
86
- mx_bluesky/common/external_interaction/ispyb/ispyb_store.py,sha256=QVgprU9hfBfGIbxPxIBAdzmigLT9S0CtnT4IMf-obyo,10631
91
+ mx_bluesky/common/external_interaction/ispyb/ispyb_store.py,sha256=7dQ7BVL_dwQ6UTRivBo9bzvziJeyNFzIIUatSsweres,11070
87
92
  mx_bluesky/common/external_interaction/ispyb/ispyb_utils.py,sha256=Kv0JQVaT8z9Qzt6L1NJEx0U7ZYD6NeyBGF1_wGcI1Dc,728
88
93
  mx_bluesky/common/external_interaction/nexus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
- mx_bluesky/common/external_interaction/nexus/nexus_utils.py,sha256=CCKQeDBEmXZvCwBy1-o5hQ6CDdwsnuAwlIK_uq0I26Y,5587
94
+ mx_bluesky/common/external_interaction/nexus/nexus_utils.py,sha256=UmBlTi9zvSV_MxcDV74yJ5Y4oIDHDanCtBjX6_SEf94,5589
90
95
  mx_bluesky/common/external_interaction/nexus/write_nexus.py,sha256=tIz9PFFSiaUs1olbMtLGHddTLj132rEuFSWBK9rOM6Y,4087
91
96
  mx_bluesky/common/parameters/components.py,sha256=Ru76EFT2wG4oPeJge6lVwq1vCHYd7T0EFuqp13EoJk4,7299
92
- mx_bluesky/common/parameters/constants.py,sha256=JI6W-5GusvU8vqhutw2sJFiQymOajx-1sU6I1GSDlTc,4622
93
- mx_bluesky/common/parameters/gridscan.py,sha256=rkts8vWuvfzqJaql-Rz8gWQPr1EMPUN5cGYfzQwzpo0,6991
97
+ mx_bluesky/common/parameters/constants.py,sha256=S3Y4uwOn18skz5y_WTI8naP-rE80CKG03aGZM2IC9js,4684
98
+ mx_bluesky/common/parameters/gridscan.py,sha256=a-jR6EuxEOj9ddRv5NvPQvC5rwPpY3b3_T78d2NvVtI,6993
94
99
  mx_bluesky/common/plans/__init__.py,sha256=FMA-4VN1TJCPcyURKF0qPIQ8uo8YBbtHPRdJokVF4MA,129
95
100
  mx_bluesky/common/plans/do_fgs.py,sha256=6aFWvQAuDgBfySzKgt567U_aoDYhAxfUhEDpn3wMjSQ,4775
96
101
  mx_bluesky/common/plans/read_hardware.py,sha256=s3Mz11wQOnzO4i4BvV6yWzpDvtQtjZnY-clENH7CVQU,2332
102
+ mx_bluesky/common/plans/write_sample_status.py,sha256=pmS4Lsndp90CCIKzD_wssvbzt1qu7rEzfXgxvDwDrQ8,1313
103
+ mx_bluesky/common/preprocessors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
+ mx_bluesky/common/preprocessors/preprocessors.py,sha256=BNpSM7S9gxhVbG39rjH14k89sOmKiII0cqApH3pF_H0,4476
105
+ mx_bluesky/common/protocols/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
+ mx_bluesky/common/protocols/protocols.py,sha256=I-Yd1AFDarfTe14fMgv0VONEJ-9K-5IwDAItNWZPZ90,298
97
107
  mx_bluesky/common/utils/context.py,sha256=Fe_YSNv3ZEIZvpdWs-9UqiG6-xEEdCpK6oMYYdCSYT8,2198
98
108
  mx_bluesky/common/utils/exceptions.py,sha256=aB_26oowu7gvoaWWKpiBEllrvtGG-Hd6HLsE86mQgKI,2153
99
109
  mx_bluesky/common/utils/log.py,sha256=ZgFZu6zSutGD5A0FDp_n9M0rJ6gU1FuZCmD-r5suchY,3913
100
110
  mx_bluesky/common/utils/tracing.py,sha256=stnBZIvPuKiAm2wVc8lFr3ns7V5C52rUigULi9V-IFs,1171
101
111
  mx_bluesky/common/utils/utils.py,sha256=q2uCaK1E8zLVk1BFmj7qlTnQf3JRKjCjyadIVnL1-4M,1180
102
112
  mx_bluesky/hyperion/__init__.py,sha256=f4E8wInL1Ll4eeFtAiyKmipOBTPlUtKmVK-m_LOQG4M,35
103
- mx_bluesky/hyperion/__main__.py,sha256=jsHCj6dyrVa2TyGQNXzw9ylanzQgFlDeWMnnKIX2lPE,12321
113
+ mx_bluesky/hyperion/__main__.py,sha256=3Gl9MGw4SW1Gaoz9ckhwk2Vv5xzDM142OGri1jA8l9E,12009
114
+ mx_bluesky/hyperion/baton_handler.py,sha256=rYAizzWeO-OYlU5N1nE5tX5eZUhw83D7Mh2jC9DvSEU,3238
104
115
  mx_bluesky/hyperion/device_setup_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
116
  mx_bluesky/hyperion/device_setup_plans/check_beamstop.py,sha256=PG2AXIB_z7U0glz9MTHkapaokMgrHyYSoKYSIGaRgLE,844
106
117
  mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py,sha256=68L4Fd8nvvH_VeQJfOYK_3WLrlKRt09TRsaA9T2uqU0,4703
107
118
  mx_bluesky/hyperion/device_setup_plans/manipulate_sample.py,sha256=fuNRH8slknuZ0iNVv2htiuDozc9LzvxUrWuwYQTtLt8,3293
108
119
  mx_bluesky/hyperion/device_setup_plans/position_detector.py,sha256=S49ml0KNZ6wXPQqOxNJ2whKTCyRTcKdBXBhyeEyFDQQ,635
109
120
  mx_bluesky/hyperion/device_setup_plans/setup_oav.py,sha256=jVbDCSKDXxJXPfr-dR6dQgKLPmh7pzewj8gH9y-psy8,2564
110
- mx_bluesky/hyperion/device_setup_plans/setup_panda.py,sha256=GPa42uf4P8B41s_K2mjZfOT0SdaNTjABsoQK3wrz5pc,8383
121
+ mx_bluesky/hyperion/device_setup_plans/setup_panda.py,sha256=96eFp4acQLOthe1PA-S14uv635uGVP71DpP7qy_uo40,8509
111
122
  mx_bluesky/hyperion/device_setup_plans/setup_zebra.py,sha256=q4KRAufuUi-G6xGKYLhmxhLr8EcTu08HMBca5OpigxM,10177
112
123
  mx_bluesky/hyperion/device_setup_plans/smargon.py,sha256=Zzej-9uBVTzZuB4lv9QRiHeJKq_3-lnXOhCqZZIZV-o,789
113
124
  mx_bluesky/hyperion/device_setup_plans/utils.py,sha256=Hdw_tocY6scVaVc2jlsNG-W4vS0LCbEKF8g5kDRuAeQ,2216
114
- mx_bluesky/hyperion/device_setup_plans/xbpm_feedback.py,sha256=iDK7g4MxYkEH43ITh0oSymTMAb1GwEC7QJDcdkNhTXs,4287
115
- mx_bluesky/hyperion/experiment_plans/__init__.py,sha256=3ldTMxgz4yKHJH9iF3nw7uueyX2zQ5Z84V0dsCzW5us,1081
116
- mx_bluesky/hyperion/experiment_plans/change_aperture_then_move_plan.py,sha256=umlxNEVRh3iosiPiWe7mWgfOjy9s5DyqoY_uItHLxEw,3531
117
- mx_bluesky/hyperion/experiment_plans/experiment_registry.py,sha256=25uwWsMnJrwKYPgbAQpJ119lmCK_GdbYHcsf_7LSdR8,2376
118
- mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py,sha256=h6HFfFAxNgWzc-cH2oax_LqWHF7DpLmmx8La0qYK1bA,17213
125
+ mx_bluesky/hyperion/experiment_plans/__init__.py,sha256=3fNT6-LpOen_sfYv95FkMiuHiCuVaSOBx7BMBHXkYoE,942
126
+ mx_bluesky/hyperion/experiment_plans/change_aperture_then_move_plan.py,sha256=vWPhmm3p3jmVfkpasFQYZNYCgyyVYx5Xi-8aHn56w0c,3023
127
+ mx_bluesky/hyperion/experiment_plans/experiment_registry.py,sha256=aSpo7pWQ1X_Y0a42TYv8LmJ8DNzvX5u5y0V2549MZCw,2096
128
+ mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py,sha256=AuRn-ti0T5XNwHPDYzsiJBbLZutUvYDbiikwwY-ONNs,17278
119
129
  mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py,sha256=MuYjeY0JVK6lE4w0b45tJthVi9_AkQDWFB0XfEu84Ps,8524
120
- mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py,sha256=6ya0mLSRdrShAW-0FzzSHPbaC6SihFAygfE5NAhCFF4,4540
130
+ mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py,sha256=VSTZZBw6Bo8nh4qEFknXYeKa11oHF0lUjcSIOY2196g,4793
121
131
  mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py,sha256=PRwV04KuvefTm4mV4iE-hB3lLb5LAmJshYKfMnLE-k0,6950
122
- mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py,sha256=BT6xrYAEqyqas0ommGAKBluzOxtIFhJuuSd44X-ar-Q,2751
132
+ mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py,sha256=DAQZzyw8-yNsUpVWlXFFOtoyUVEh8EskmyBgdSTExqU,2748
123
133
  mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py,sha256=5ZAH17F5T1YyVgA2ML0NEf4ufrD1G0jPRU0_5pINdTg,16195
124
134
  mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py,sha256=MT1uuxF6g4BGrdKV3MAYO91VLaiBP7VMGdYtx1wyaJA,5006
125
- mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py,sha256=XjgnSu9RM2UGpyJ4Nepg-Xg5qHvcBAgSFRtWMPSpRRw,6136
135
+ mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py,sha256=AF7B84s0QGUoSKxPvpU0pBW8xt30qg_LN9gWq3nE2J0,6249
126
136
  mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py,sha256=vHAm3AdDaTNeDZ3zc-z6pP1bYXl7c5WImsTI5hutofQ,7917
127
- mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py,sha256=j2UrQQhTUMDNlXX3aJ98GCDJ0bL1BbGw8g_JnxPW0jY,7743
128
- mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py,sha256=WUlLuob8zTGjXScahufrOFEYmLYSozL0TmhiQlGjqQM,16971
129
- mx_bluesky/hyperion/experiment_plans/set_energy_plan.py,sha256=D-4p4eMK_jGqAvAZICMkhyieBn7YIZTQZLg_7of9gwc,1938
137
+ mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py,sha256=fwaDoKvFN0gRIAiR1XxD0xqpHIVLAfoX561cEuBFiWk,6731
138
+ mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py,sha256=y0HnhKRMweFwkt9wpJ4Dd4rMIqugAG_i-b_MShcQ6Dc,17260
139
+ mx_bluesky/hyperion/experiment_plans/set_energy_plan.py,sha256=aYgutFhMQjcB_q02t-TXkWLkBCS8BeBIwqBdMNEHYVE,2635
130
140
  mx_bluesky/hyperion/external_interaction/__init__.py,sha256=95DwXDmKsx36RgAL-AtLZl2LQoLPKbzeYdlkkP_4Coc,559
131
- mx_bluesky/hyperion/external_interaction/agamemnon.py,sha256=f8t23jKpMbhvwnjbonyKh2IoJlEYEYPzHcLmMwwimQs,4208
141
+ mx_bluesky/hyperion/external_interaction/agamemnon.py,sha256=Y7v5MASzZ6pNgSVSfDzc_bl_ErmWQyFhQW6uEfO6YnU,9418
132
142
  mx_bluesky/hyperion/external_interaction/config_server.py,sha256=ZI9QCyWLPKzV3stEpXrg7T2IyRb8Y3dd6LWI30tYvqw,1825
133
143
  mx_bluesky/hyperion/external_interaction/callbacks/__init__.py,sha256=1XHaxDljMveu_DYIlk7n963gHffyC6r4C_RhF6HA-N8,283
134
- mx_bluesky/hyperion/external_interaction/callbacks/__main__.py,sha256=6u-jcwGbZmPY994iu30mnnpoVUMN-fE0CRxsgxhdceI,5849
144
+ mx_bluesky/hyperion/external_interaction/callbacks/__main__.py,sha256=Xvhr_h8-net89376qZbHmonIOP_U6y7N_Aw7-srVScc,6106
145
+ mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py,sha256=zJ13Clnvb4Ef-3qpg5U58tXpPc6oAmbC3hLWdrQhDPQ,4758
135
146
  mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py,sha256=7xSvCd95tXjvmsbFLecI1hEwJj_rm8yGuJJ1Pmg-RKU,4142
136
147
  mx_bluesky/hyperion/external_interaction/callbacks/rotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
148
  mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py,sha256=eFKpDEJaH6zluhNZZkrWOW0BRIjj-Bs2xiGbun7pnSs,7442
138
149
  mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py,sha256=yz2Z_P6qH2DGlSXCi36E3Xwv7mVVcvYzqQc0NqwW4DI,716
139
150
  mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py,sha256=w86HvDMznS1wBH3mLYJMe2TgX8SghTYR4G6dajho3Pk,4724
140
- mx_bluesky/hyperion/external_interaction/callbacks/sample_handling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
- mx_bluesky/hyperion/external_interaction/callbacks/sample_handling/sample_handling_callback.py,sha256=RDjcQFVEk7o5ybyQOK5sCz6XVz6V3cDELgSu_WsnIbM,2366
142
151
  mx_bluesky/hyperion/parameters/__init__.py,sha256=kf2wfcILBUBpT0tJ8-W39BywQUkn67yxl9IVsfrr1LE,115
143
152
  mx_bluesky/hyperion/parameters/cli.py,sha256=tw8u-_THJ69_Rn8IzeEWjwfUJO8VsTKKqz9K0iZHls0,1796
144
153
  mx_bluesky/hyperion/parameters/components.py,sha256=uXxdW6nIE1VZnh4ZXe5O-LOwsx4MbENEWfLGm2ACvsI,313
145
154
  mx_bluesky/hyperion/parameters/constants.py,sha256=9divI1XYUDsGq3HGm2ehq1yGGOD7tUf66xWvhVxEpB0,1982
146
155
  mx_bluesky/hyperion/parameters/device_composites.py,sha256=iBm3qNFBG8dmVW4BPAwnhdi-HvpJ-6AuM1ZZceUembE,1645
147
- mx_bluesky/hyperion/parameters/gridscan.py,sha256=-8pfO7aLMgtNwq60Lx9Q2Mdnp6Z8vPsvBZ5fNN90GGs,6014
156
+ mx_bluesky/hyperion/parameters/gridscan.py,sha256=G49cDDRRh9HWVY8N71K6GWjKkHU04hNse0Mhe-1vsSQ,6018
148
157
  mx_bluesky/hyperion/parameters/load_centre_collect.py,sha256=khLBCSeafuw0dNrvDTvKv4GrlBo1LXJZ87NTI1A92jw,3693
149
158
  mx_bluesky/hyperion/parameters/robot_load.py,sha256=DSOwIosO629WoXbVFokEjmgqKZz3xzv0feRQHC_ZgpI,1233
150
- mx_bluesky/hyperion/parameters/rotation.py,sha256=270m55MCYBFEK2LM5DjVqhnMJC1JupMMX-O4UulBSMc,7518
159
+ mx_bluesky/hyperion/parameters/rotation.py,sha256=5OVstRvUMf4X9QqcyTZc5GaYNsaVuU1W3Y36uop38co,7520
151
160
  mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml,sha256=mhLBJTSjHCkM9F6mjtqbhNmmrV8qSctbCUfhb0q7pYo,28085
152
161
  mx_bluesky/hyperion/utils/__init__.py,sha256=f4E8wInL1Ll4eeFtAiyKmipOBTPlUtKmVK-m_LOQG4M,35
153
162
  mx_bluesky/hyperion/utils/context.py,sha256=JztC2qhd8ChAGYNUltJnuld_r2zYA37J3LiwxRE3dxQ,604
154
163
  mx_bluesky/hyperion/utils/validation.py,sha256=a23OeppZcEMWDffbCk8UFlOk26jS9i9IhTWPkQhP28s,6743
155
- mx_bluesky-1.4.6.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
156
- mx_bluesky-1.4.6.dist-info/METADATA,sha256=kNmqvzVzK_6-H0ahVkDpSv5X48_F2ByaUZFOSmnwheE,17311
157
- mx_bluesky-1.4.6.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
158
- mx_bluesky-1.4.6.dist-info/entry_points.txt,sha256=-hM2jXf6TAwgqnUHaEVx02j7sdB0L_WaeHW_tIRuj6o,600
159
- mx_bluesky-1.4.6.dist-info/top_level.txt,sha256=S4rrzXIUef58ulf_04wn01XGZ3xeJjXs4LPEJ_xoF-I,11
160
- mx_bluesky-1.4.6.dist-info/RECORD,,
164
+ mx_bluesky-1.4.7.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
165
+ mx_bluesky-1.4.7.dist-info/METADATA,sha256=h1Y0Q0e_XKcYDaeGkj6wzyspW4TnTd3lf188W2Ja-_g,17304
166
+ mx_bluesky-1.4.7.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
167
+ mx_bluesky-1.4.7.dist-info/entry_points.txt,sha256=-hM2jXf6TAwgqnUHaEVx02j7sdB0L_WaeHW_tIRuj6o,600
168
+ mx_bluesky-1.4.7.dist-info/top_level.txt,sha256=S4rrzXIUef58ulf_04wn01XGZ3xeJjXs4LPEJ_xoF-I,11
169
+ mx_bluesky-1.4.7.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.2)
2
+ Generator: setuptools (78.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,22 +0,0 @@
1
- from bluesky.callbacks import CallbackBase
2
- from event_model.documents.run_start import RunStart
3
-
4
- from mx_bluesky.common.utils.log import LOGGER
5
-
6
- from .logging_callback import format_doc_for_log
7
-
8
-
9
- class ApertureChangeCallback(CallbackBase):
10
- """A callback that's used to send the selected aperture back to GDA"""
11
-
12
- def __init__(self, *args, **kwargs) -> None:
13
- super().__init__(*args, **kwargs)
14
- self.last_selected_aperture: str = "NONE"
15
-
16
- def start(self, doc: RunStart):
17
- if doc.get("subplan_name") == "change_aperture":
18
- LOGGER.debug(f"START: {format_doc_for_log(doc)}")
19
- ap_size = doc.get("aperture_size")
20
- assert isinstance(ap_size, str)
21
- LOGGER.info(f"Updating most recent in-plan aperture change to {ap_size}.")
22
- self.last_selected_aperture = ap_size
@@ -1,103 +0,0 @@
1
- from bluesky import plan_stubs as bps
2
- from bluesky.preprocessors import finalize_wrapper
3
- from bluesky.utils import make_decorator
4
- from dodal.devices.attenuator.attenuator import BinaryFilterAttenuator
5
- from dodal.devices.dcm import DCM
6
- from dodal.devices.undulator import Undulator
7
- from dodal.devices.xbpm_feedback import Pause, XBPMFeedback
8
-
9
- from mx_bluesky.common.utils.log import LOGGER
10
-
11
-
12
- def _check_and_pause_feedback(
13
- xbpm_feedback: XBPMFeedback,
14
- attenuator: BinaryFilterAttenuator,
15
- desired_transmission_fraction: float,
16
- ):
17
- """Checks that the xbpm is in position before then turning it off and setting a new
18
- transmission.
19
-
20
- Args:
21
- xbpm_feedback (XBPMFeedback): The XBPM device that is responsible for keeping
22
- the beam in position
23
- attenuator (BinaryFilterAttenuator): The attenuator used to set transmission
24
- desired_transmission_fraction (float): The desired transmission to set after
25
- turning XBPM feedback off.
26
-
27
- """
28
- yield from bps.mv(attenuator, 1.0)
29
- LOGGER.info("Waiting for XBPM feedback to be stable")
30
- yield from bps.trigger(xbpm_feedback, wait=True)
31
- LOGGER.info(
32
- f"XPBM feedback in position, pausing and setting transmission to {desired_transmission_fraction}"
33
- )
34
- yield from bps.mv(xbpm_feedback.pause_feedback, Pause.PAUSE)
35
- yield from bps.mv(attenuator, desired_transmission_fraction)
36
-
37
-
38
- def _unpause_xbpm_feedback_and_set_transmission_to_1(
39
- xbpm_feedback: XBPMFeedback, attenuator: BinaryFilterAttenuator
40
- ):
41
- """Turns the XBPM feedback back on and sets transmission to 1 so that it keeps the
42
- beam aligned whilst not collecting.
43
-
44
- Args:
45
- xbpm_feedback (XBPMFeedback): The XBPM device that is responsible for keeping
46
- the beam in position
47
- attenuator (BinaryFilterAttenuator): The attenuator used to set transmission
48
- """
49
- yield from bps.mv(xbpm_feedback.pause_feedback, Pause.RUN, attenuator, 1.0)
50
-
51
-
52
- def transmission_and_xbpm_feedback_for_collection_wrapper(
53
- plan,
54
- undulator: Undulator,
55
- xbpm_feedback: XBPMFeedback,
56
- attenuator: BinaryFilterAttenuator,
57
- dcm: DCM,
58
- desired_transmission_fraction: float,
59
- ):
60
- """Sets the transmission for the data collection, ensuring the xbpm feedback is valid
61
- this wrapper should be run around every data collection or movement that may disrupt
62
- the XBPM feedback.
63
-
64
- XBPM feedback isn't reliable during collections due to:
65
- * Objects (e.g. attenuator) crossing the beam can cause large (incorrect) feedback movements
66
- * Lower transmissions/higher energies are less reliable for the xbpm
67
-
68
- So we need to keep the transmission at 100% and the feedback on when not collecting
69
- and then turn it off and set the correct transmission for collection. The feedback
70
- mostly accounts for slow thermal drift so it is safe to assume that the beam is
71
- stable during a collection.
72
-
73
- In the case of a beam dump, undulator gap may not return. Therefore, we check here
74
- that the undulator gap is correct after XBPM is stable, and before collection.
75
-
76
- Args:
77
- plan: The plan performing the data collection
78
- xbpm_feedback (XBPMFeedback): The XBPM device that is responsible for keeping
79
- the beam in position
80
- attenuator (BinaryFilterAttenuator): The attenuator used to set transmission
81
- desired_transmission_fraction (float): The desired transmission for the collection
82
- """
83
-
84
- def _inner_plan():
85
- yield from _check_and_pause_feedback(
86
- xbpm_feedback, attenuator, desired_transmission_fraction
87
- )
88
- # Verify Undulator gap is correct, as may not be after a beam dump
89
- energy_in_kev = yield from bps.rd(dcm.energy_in_kev.user_readback)
90
- yield from bps.abs_set(undulator, energy_in_kev, wait=True)
91
- return (yield from plan)
92
-
93
- return (
94
- yield from finalize_wrapper(
95
- _inner_plan(),
96
- _unpause_xbpm_feedback_and_set_transmission_to_1(xbpm_feedback, attenuator),
97
- )
98
- )
99
-
100
-
101
- transmission_and_xbpm_feedback_for_collection_decorator = make_decorator(
102
- transmission_and_xbpm_feedback_for_collection_wrapper
103
- )