mx-bluesky 0.3.1__py3-none-any.whl → 1.2.0__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 (142) hide show
  1. mx_bluesky/_version.py +2 -2
  2. mx_bluesky/beamlines/i04/__init__.py +3 -0
  3. mx_bluesky/{i04 → beamlines/i04}/thawing_plan.py +5 -4
  4. mx_bluesky/{i24 → beamlines/i24}/serial/blueapi_config.yaml +1 -1
  5. mx_bluesky/{i24 → beamlines/i24}/serial/dcid.py +2 -2
  6. mx_bluesky/{i24 → beamlines/i24}/serial/extruder/EX-gui-edm/DetStage.edl +3 -3
  7. mx_bluesky/{i24 → beamlines/i24}/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +7 -7
  8. mx_bluesky/{i24 → beamlines/i24}/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +12 -9
  9. mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +3 -3
  10. mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/DetStage.edl +3 -3
  11. mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +245 -200
  12. mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +4 -4
  13. mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +8 -8
  14. mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py +0 -0
  15. mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +80 -70
  16. mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +20 -21
  17. mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/i24ssx_Chip_Mapping_py3v1.py +5 -5
  18. mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +7 -4
  19. mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/i24ssx_moveonclick.py +59 -39
  20. mx_bluesky/{i24 → beamlines/i24}/serial/log.py +1 -9
  21. mx_bluesky/beamlines/i24/serial/parameters/__init__.py +15 -0
  22. mx_bluesky/{i24 → beamlines/i24}/serial/parameters/constants.py +1 -1
  23. mx_bluesky/{i24 → beamlines/i24}/serial/parameters/experiment_parameters.py +4 -25
  24. mx_bluesky/{i24 → beamlines/i24}/serial/parameters/utils.py +5 -3
  25. mx_bluesky/{i24 → beamlines/i24}/serial/run_serial.py +1 -1
  26. mx_bluesky/{i24 → beamlines/i24}/serial/setup_beamline/pv_abstract.py +1 -1
  27. mx_bluesky/{i24 → beamlines/i24}/serial/setup_beamline/setup_beamline.py +2 -2
  28. mx_bluesky/{i24 → beamlines/i24}/serial/setup_beamline/setup_detector.py +5 -5
  29. mx_bluesky/{i24 → beamlines/i24}/serial/write_nexus.py +6 -3
  30. mx_bluesky/hyperion/__init__.py +1 -0
  31. mx_bluesky/hyperion/__main__.py +374 -0
  32. mx_bluesky/hyperion/device_setup_plans/__init__.py +0 -0
  33. mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +134 -0
  34. mx_bluesky/hyperion/device_setup_plans/manipulate_sample.py +110 -0
  35. mx_bluesky/hyperion/device_setup_plans/position_detector.py +16 -0
  36. mx_bluesky/hyperion/device_setup_plans/read_hardware_for_setup.py +60 -0
  37. mx_bluesky/hyperion/device_setup_plans/setup_oav.py +87 -0
  38. mx_bluesky/hyperion/device_setup_plans/setup_panda.py +210 -0
  39. mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +214 -0
  40. mx_bluesky/hyperion/device_setup_plans/smargon.py +25 -0
  41. mx_bluesky/hyperion/device_setup_plans/utils.py +55 -0
  42. mx_bluesky/hyperion/device_setup_plans/xbpm_feedback.py +93 -0
  43. mx_bluesky/hyperion/exceptions.py +47 -0
  44. mx_bluesky/hyperion/experiment_plans/__init__.py +30 -0
  45. mx_bluesky/hyperion/experiment_plans/experiment_registry.py +93 -0
  46. mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +537 -0
  47. mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py +209 -0
  48. mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +46 -0
  49. mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py +173 -0
  50. mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py +81 -0
  51. mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +463 -0
  52. mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +119 -0
  53. mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +164 -0
  54. mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +237 -0
  55. mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +162 -0
  56. mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +436 -0
  57. mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +60 -0
  58. mx_bluesky/hyperion/external_interaction/__init__.py +9 -0
  59. mx_bluesky/hyperion/external_interaction/callbacks/__init__.py +10 -0
  60. mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +148 -0
  61. mx_bluesky/hyperion/external_interaction/callbacks/aperture_change_callback.py +22 -0
  62. mx_bluesky/hyperion/external_interaction/callbacks/common/__init__.py +0 -0
  63. mx_bluesky/hyperion/external_interaction/callbacks/common/callback_util.py +64 -0
  64. mx_bluesky/hyperion/external_interaction/callbacks/common/ispyb_mapping.py +62 -0
  65. mx_bluesky/hyperion/external_interaction/callbacks/grid_detection_callback.py +88 -0
  66. mx_bluesky/hyperion/external_interaction/callbacks/ispyb_callback_base.py +203 -0
  67. mx_bluesky/hyperion/external_interaction/callbacks/log_uid_tag_callback.py +20 -0
  68. mx_bluesky/hyperion/external_interaction/callbacks/logging_callback.py +29 -0
  69. mx_bluesky/hyperion/external_interaction/callbacks/plan_reactive_callback.py +101 -0
  70. mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py +86 -0
  71. mx_bluesky/hyperion/external_interaction/callbacks/rotation/__init__.py +0 -0
  72. mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +174 -0
  73. mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +17 -0
  74. mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +102 -0
  75. mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/__init__.py +0 -0
  76. mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/ispyb_callback.py +269 -0
  77. mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/ispyb_mapping.py +53 -0
  78. mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/nexus_callback.py +95 -0
  79. mx_bluesky/hyperion/external_interaction/callbacks/zocalo_callback.py +92 -0
  80. mx_bluesky/hyperion/external_interaction/config_server.py +35 -0
  81. mx_bluesky/hyperion/external_interaction/exceptions.py +13 -0
  82. mx_bluesky/hyperion/external_interaction/ispyb/__init__.py +0 -0
  83. mx_bluesky/hyperion/external_interaction/ispyb/data_model.py +95 -0
  84. mx_bluesky/hyperion/external_interaction/ispyb/exp_eye_store.py +125 -0
  85. mx_bluesky/hyperion/external_interaction/ispyb/ispyb_store.py +276 -0
  86. mx_bluesky/hyperion/external_interaction/ispyb/ispyb_utils.py +27 -0
  87. mx_bluesky/hyperion/external_interaction/nexus/__init__.py +0 -0
  88. mx_bluesky/hyperion/external_interaction/nexus/nexus_utils.py +148 -0
  89. mx_bluesky/hyperion/external_interaction/nexus/write_nexus.py +114 -0
  90. mx_bluesky/hyperion/log.py +99 -0
  91. mx_bluesky/hyperion/parameters/__init__.py +2 -0
  92. mx_bluesky/hyperion/parameters/cli.py +68 -0
  93. mx_bluesky/{parameters → hyperion/parameters}/components.py +80 -26
  94. mx_bluesky/hyperion/parameters/constants.py +158 -0
  95. mx_bluesky/hyperion/parameters/gridscan.py +221 -0
  96. mx_bluesky/hyperion/parameters/load_centre_collect.py +50 -0
  97. mx_bluesky/hyperion/parameters/robot_load.py +16 -0
  98. mx_bluesky/hyperion/parameters/rotation.py +160 -0
  99. mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml +964 -0
  100. mx_bluesky/hyperion/tracing.py +28 -0
  101. mx_bluesky/hyperion/utils/context.py +84 -0
  102. mx_bluesky/hyperion/utils/utils.py +25 -0
  103. mx_bluesky/hyperion/utils/validation.py +196 -0
  104. mx_bluesky/jupyter_example.ipynb +3 -2
  105. {mx_bluesky-0.3.1.dist-info → mx_bluesky-1.2.0.dist-info}/METADATA +26 -11
  106. mx_bluesky-1.2.0.dist-info/RECORD +140 -0
  107. {mx_bluesky-0.3.1.dist-info → mx_bluesky-1.2.0.dist-info}/WHEEL +1 -1
  108. mx_bluesky-1.2.0.dist-info/entry_points.txt +8 -0
  109. mx_bluesky/i04/__init__.py +0 -3
  110. mx_bluesky/i24/serial/parameters/__init__.py +0 -15
  111. mx_bluesky/parameters/__init__.py +0 -31
  112. mx_bluesky-0.3.1.dist-info/RECORD +0 -67
  113. mx_bluesky-0.3.1.dist-info/entry_points.txt +0 -4
  114. /mx_bluesky/{i24 → beamlines}/__init__.py +0 -0
  115. /mx_bluesky/{i04 → beamlines/i04}/callbacks/murko_callback.py +0 -0
  116. /mx_bluesky/{i24/serial/extruder → beamlines/i24}/__init__.py +0 -0
  117. /mx_bluesky/{i24 → beamlines/i24}/serial/__init__.py +0 -0
  118. /mx_bluesky/{i24 → beamlines/i24}/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -0
  119. /mx_bluesky/{i24/serial/fixed_target → beamlines/i24/serial/extruder}/__init__.py +0 -0
  120. /mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -0
  121. /mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -0
  122. /mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -0
  123. /mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -0
  124. /mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -0
  125. /mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/short1-laser.png +0 -0
  126. /mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/short2-laser.png +0 -0
  127. /mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/ft_utils.py +0 -0
  128. /mx_bluesky/{i24 → beamlines/i24}/serial/parameters/fixed_target/cs/cs_maker.json +0 -0
  129. /mx_bluesky/{i24 → beamlines/i24}/serial/parameters/fixed_target/cs/motor_direction.txt +0 -0
  130. /mx_bluesky/{i24 → beamlines/i24}/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +0 -0
  131. /mx_bluesky/{i24 → beamlines/i24}/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
  132. /mx_bluesky/{i24 → beamlines/i24}/serial/run_extruder.sh +0 -0
  133. /mx_bluesky/{i24 → beamlines/i24}/serial/run_fixed_target.sh +0 -0
  134. /mx_bluesky/{i24 → beamlines/i24}/serial/run_ssx.sh +0 -0
  135. /mx_bluesky/{i24 → beamlines/i24}/serial/set_visit_directory.sh +0 -0
  136. /mx_bluesky/{i24 → beamlines/i24}/serial/setup_beamline/__init__.py +0 -0
  137. /mx_bluesky/{i24 → beamlines/i24}/serial/setup_beamline/ca.py +0 -0
  138. /mx_bluesky/{i24 → beamlines/i24}/serial/setup_beamline/pv.py +0 -0
  139. /mx_bluesky/{i24 → beamlines/i24}/serial/setup_beamline/setup_zebra_plans.py +0 -0
  140. /mx_bluesky/{i24 → beamlines/i24}/serial/start_blueapi.sh +0 -0
  141. {mx_bluesky-0.3.1.dist-info → mx_bluesky-1.2.0.dist-info}/LICENSE +0 -0
  142. {mx_bluesky-0.3.1.dist-info → mx_bluesky-1.2.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,28 @@
1
+ from opentelemetry import metrics, trace
2
+ from opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter
3
+ from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
4
+ from opentelemetry.sdk.metrics import MeterProvider
5
+ from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
6
+ from opentelemetry.sdk.resources import SERVICE_NAME, Resource
7
+ from opentelemetry.sdk.trace import TracerProvider
8
+ from opentelemetry.sdk.trace.export import BatchSpanProcessor
9
+
10
+
11
+ def setup_tracing():
12
+ resource = Resource(attributes={SERVICE_NAME: "Hyperion"})
13
+
14
+ traceProvider = TracerProvider(resource=resource)
15
+ processor = BatchSpanProcessor(
16
+ OTLPSpanExporter(endpoint="http://0.0.0.0:4318/v1/traces")
17
+ )
18
+ traceProvider.add_span_processor(processor)
19
+ trace.set_tracer_provider(traceProvider)
20
+
21
+ reader = PeriodicExportingMetricReader(
22
+ OTLPMetricExporter(endpoint="http://0.0.0.0:4318/v1/metrics")
23
+ )
24
+ meterProvider = MeterProvider(resource=resource, metric_readers=[reader])
25
+ metrics.set_meter_provider(meterProvider)
26
+
27
+
28
+ TRACER = trace.get_tracer(__name__)
@@ -0,0 +1,84 @@
1
+ import dataclasses
2
+ from typing import Any, ClassVar, Protocol, TypeVar, get_type_hints
3
+
4
+ from blueapi.core import BlueskyContext
5
+ from blueapi.core.bluesky_types import Device
6
+ from dodal.utils import get_beamline_based_on_environment_variable
7
+
8
+ import mx_bluesky.hyperion.experiment_plans as hyperion_plans
9
+ from mx_bluesky.hyperion.log import LOGGER
10
+
11
+ T = TypeVar("T", bound=Device)
12
+
13
+
14
+ class _IsDataclass(Protocol):
15
+ """Protocol followed by any dataclass"""
16
+
17
+ __dataclass_fields__: ClassVar[dict]
18
+
19
+
20
+ DT = TypeVar("DT", bound=_IsDataclass)
21
+
22
+
23
+ def find_device_in_context(
24
+ context: BlueskyContext,
25
+ name: str,
26
+ # Typing in here is wrong (see https://github.com/microsoft/pyright/issues/7228#issuecomment-1934500232)
27
+ # but this whole thing will go away when we do https://github.com/DiamondLightSource/hyperion/issues/868
28
+ expected_type: type[T] = Device, # type: ignore
29
+ ) -> T:
30
+ LOGGER.debug(f"Looking for device {name} of type {expected_type} in context")
31
+
32
+ device = context.find_device(name)
33
+ if device is None:
34
+ raise ValueError(
35
+ f"Cannot find device named '{name}' in bluesky context {context.devices}."
36
+ )
37
+
38
+ if not isinstance(device, expected_type):
39
+ raise ValueError(
40
+ f"Found device named '{name}' and expected it to be a '{expected_type}' but it was a '{device.__class__.__name__}'"
41
+ )
42
+
43
+ LOGGER.debug(f"Found matching device {device}")
44
+ return device
45
+
46
+
47
+ def device_composite_from_context(context: BlueskyContext, dc: type[DT]) -> DT:
48
+ """
49
+ Initializes all of the devices referenced in a given dataclass from a provided
50
+ context, checking that the types of devices returned by the context are compatible
51
+ with the type annotations of the dataclass.
52
+
53
+ Note that if the context was not created with `wait_for_connection=True` devices may
54
+ still be unconnected.
55
+ """
56
+ LOGGER.debug(
57
+ f"Attempting to initialize devices referenced in dataclass {dc} from blueapi context"
58
+ )
59
+
60
+ devices: dict[str, Any] = {}
61
+ dc_type_hints: dict[str, Any] = get_type_hints(dc)
62
+
63
+ for field in dataclasses.fields(dc):
64
+ device = find_device_in_context(
65
+ context, field.name, expected_type=dc_type_hints.get(field.name, Device)
66
+ )
67
+
68
+ devices[field.name] = device
69
+
70
+ return dc(**devices)
71
+
72
+
73
+ def setup_context(wait_for_connection: bool = True) -> BlueskyContext:
74
+ context = BlueskyContext()
75
+ context.with_plan_module(hyperion_plans)
76
+
77
+ context.with_dodal_module(
78
+ get_beamline_based_on_environment_variable(),
79
+ wait_for_connection=wait_for_connection,
80
+ )
81
+
82
+ LOGGER.info(f"Plans found in context: {context.plan_functions.keys()}")
83
+
84
+ return context
@@ -0,0 +1,25 @@
1
+ from scanspec.core import AxesPoints, Axis
2
+ from scipy.constants import physical_constants
3
+
4
+ hc_in_eV_and_Angstrom: float = (
5
+ physical_constants["speed of light in vacuum"][0]
6
+ * physical_constants["Planck constant in eV/Hz"][0]
7
+ * 1e10 # Angstroms per metre
8
+ )
9
+
10
+
11
+ def interconvert_eV_Angstrom(wavelength_or_energy: float) -> float:
12
+ return hc_in_eV_and_Angstrom / wavelength_or_energy
13
+
14
+
15
+ def convert_eV_to_angstrom(hv: float) -> float:
16
+ return interconvert_eV_Angstrom(hv)
17
+
18
+
19
+ def convert_angstrom_to_eV(wavelength: float) -> float:
20
+ return interconvert_eV_Angstrom(wavelength)
21
+
22
+
23
+ def number_of_frames_from_scan_spec(scan_points: AxesPoints[Axis]):
24
+ ax = list(scan_points.keys())[0]
25
+ return len(scan_points[ax])
@@ -0,0 +1,196 @@
1
+ import gzip
2
+ import json
3
+ import os
4
+ import shutil
5
+ from pathlib import Path
6
+ from unittest.mock import patch
7
+
8
+ import bluesky.preprocessors as bpp
9
+ from bluesky.run_engine import RunEngine
10
+ from dodal.beamlines import i03
11
+ from dodal.devices.oav.oav_parameters import OAVConfigParams
12
+ from ophyd_async.core import set_mock_value
13
+
14
+ from mx_bluesky.hyperion.device_setup_plans.read_hardware_for_setup import (
15
+ read_hardware_during_collection,
16
+ )
17
+ from mx_bluesky.hyperion.experiment_plans.rotation_scan_plan import (
18
+ RotationScanComposite,
19
+ )
20
+ from mx_bluesky.hyperion.external_interaction.callbacks.rotation.nexus_callback import (
21
+ RotationNexusFileCallback,
22
+ )
23
+ from mx_bluesky.hyperion.parameters.constants import CONST
24
+ from mx_bluesky.hyperion.parameters.rotation import RotationScan
25
+
26
+ DISPLAY_CONFIGURATION = "tests/devices/unit_tests/test_display.configuration"
27
+ ZOOM_LEVELS_XML = "tests/devices/unit_tests/test_jCameraManZoomLevels.xml"
28
+ TEST_DATA_DIRECTORY = Path("tests/test_data/nexus_files/rotation")
29
+ TEST_METAFILE = "ins_8_5_meta.h5.gz"
30
+ FAKE_DATAFILE = "../fake_data.h5"
31
+ FILENAME_STUB = "test_rotation_nexus"
32
+
33
+
34
+ def test_params(filename_stub, dir):
35
+ def get_params(filename):
36
+ with open(filename) as f:
37
+ return json.loads(f.read())
38
+
39
+ params = RotationScan(
40
+ **get_params(
41
+ "tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json"
42
+ )
43
+ )
44
+ params.file_name = filename_stub
45
+ params.scan_width_deg = 360
46
+ params.demand_energy_ev = 12700
47
+ params.storage_directory = str(dir)
48
+ params.x_start_um = 0
49
+ params.y_start_um = 0
50
+ params.z_start_um = 0
51
+ params.exposure_time_s = 0.004
52
+ return params
53
+
54
+
55
+ def fake_rotation_scan(
56
+ parameters: RotationScan,
57
+ subscription: RotationNexusFileCallback,
58
+ rotation_devices: RotationScanComposite,
59
+ ):
60
+ @bpp.subs_decorator(subscription)
61
+ @bpp.set_run_key_decorator("rotation_scan_with_cleanup_and_subs")
62
+ @bpp.run_decorator( # attach experiment metadata to the start document
63
+ md={
64
+ "subplan_name": CONST.PLAN.ROTATION_OUTER,
65
+ "hyperion_parameters": parameters.model_dump_json(),
66
+ "activate_callbacks": "RotationNexusFileCallback",
67
+ }
68
+ )
69
+ def plan():
70
+ yield from read_hardware_during_collection(
71
+ rotation_devices.aperture_scatterguard,
72
+ rotation_devices.attenuator,
73
+ rotation_devices.flux,
74
+ rotation_devices.dcm,
75
+ rotation_devices.eiger,
76
+ )
77
+
78
+ return plan()
79
+
80
+
81
+ def fake_create_rotation_devices():
82
+ eiger = i03.eiger(fake_with_ophyd_sim=True)
83
+ smargon = i03.smargon(fake_with_ophyd_sim=True)
84
+ zebra = i03.zebra(fake_with_ophyd_sim=True)
85
+ detector_motion = i03.detector_motion(fake_with_ophyd_sim=True)
86
+ backlight = i03.backlight(fake_with_ophyd_sim=True)
87
+ attenuator = i03.attenuator(fake_with_ophyd_sim=True)
88
+ flux = i03.flux(fake_with_ophyd_sim=True)
89
+ undulator = i03.undulator(fake_with_ophyd_sim=True)
90
+ aperture_scatterguard = i03.aperture_scatterguard(fake_with_ophyd_sim=True)
91
+ synchrotron = i03.synchrotron(fake_with_ophyd_sim=True)
92
+ s4_slit_gaps = i03.s4_slit_gaps(fake_with_ophyd_sim=True)
93
+ dcm = i03.dcm(fake_with_ophyd_sim=True)
94
+ robot = i03.robot(fake_with_ophyd_sim=True)
95
+ oav = i03.oav(
96
+ fake_with_ophyd_sim=True,
97
+ params=OAVConfigParams(
98
+ zoom_params_file=ZOOM_LEVELS_XML, display_config=DISPLAY_CONFIGURATION
99
+ ),
100
+ )
101
+ xbpm_feedback = i03.xbpm_feedback(fake_with_ophyd_sim=True)
102
+
103
+ set_mock_value(smargon.omega.max_velocity, 131)
104
+ set_mock_value(dcm.energy_in_kev.user_readback, 12700)
105
+ oav.zoom_controller.fvst.sim_put("1.0x") # type: ignore
106
+
107
+ return RotationScanComposite(
108
+ attenuator=attenuator,
109
+ backlight=backlight,
110
+ dcm=dcm,
111
+ detector_motion=detector_motion,
112
+ eiger=eiger,
113
+ flux=flux,
114
+ smargon=smargon,
115
+ undulator=undulator,
116
+ aperture_scatterguard=aperture_scatterguard,
117
+ synchrotron=synchrotron,
118
+ s4_slit_gaps=s4_slit_gaps,
119
+ zebra=zebra,
120
+ robot=robot,
121
+ oav=oav,
122
+ sample_shutter=i03.sample_shutter(fake_with_ophyd_sim=True),
123
+ xbpm_feedback=xbpm_feedback,
124
+ )
125
+
126
+
127
+ def sim_rotation_scan_to_create_nexus(
128
+ test_params: RotationScan,
129
+ fake_create_rotation_devices: RotationScanComposite,
130
+ filename_stub,
131
+ RE,
132
+ ):
133
+ run_number = test_params.detector_params.run_number
134
+ nexus_filename = f"{filename_stub}_{run_number}.nxs"
135
+
136
+ fake_create_rotation_devices.eiger.bit_depth.sim_put(32) # type: ignore
137
+
138
+ with patch(
139
+ "mx_bluesky.hyperion.external_interaction.nexus.write_nexus.get_start_and_predicted_end_time",
140
+ return_value=("test_time", "test_time"),
141
+ ):
142
+ RE(
143
+ fake_rotation_scan(
144
+ test_params, RotationNexusFileCallback(), fake_create_rotation_devices
145
+ )
146
+ )
147
+
148
+ nexus_path = Path(test_params.storage_directory) / nexus_filename
149
+ assert os.path.isfile(nexus_path)
150
+ return filename_stub, run_number
151
+
152
+
153
+ def extract_metafile(input_filename, output_filename):
154
+ with gzip.open(input_filename) as metafile_fo:
155
+ with open(output_filename, "wb") as output_fo:
156
+ output_fo.write(metafile_fo.read())
157
+
158
+
159
+ def _generate_fake_nexus(filename, dir=os.getcwd()):
160
+ RE = RunEngine({})
161
+ params = test_params(filename, dir)
162
+ run_number = params.detector_params.run_number
163
+ filename_stub, run_number = sim_rotation_scan_to_create_nexus(
164
+ params, fake_create_rotation_devices(), filename, RE
165
+ )
166
+ return filename_stub, run_number
167
+
168
+
169
+ def generate_test_nexus():
170
+ filename_stub, run_number = _generate_fake_nexus(FILENAME_STUB)
171
+ # ugly hack because we get double free error on exit
172
+ with open("OUTPUT_FILENAME", "x") as f:
173
+ f.write(f"{filename_stub}_{run_number}.nxs")
174
+
175
+ extract_metafile(
176
+ str(TEST_DATA_DIRECTORY / TEST_METAFILE),
177
+ f"{FILENAME_STUB}_{run_number}_meta.h5",
178
+ )
179
+
180
+ new_hyp_data = [f"{FILENAME_STUB}_{run_number}_00000{n}.h5" for n in [1, 2, 3, 4]]
181
+ [shutil.copy(TEST_DATA_DIRECTORY / FAKE_DATAFILE, d) for d in new_hyp_data]
182
+
183
+ exit(0)
184
+
185
+
186
+ def copy_test_meta_data_files():
187
+ extract_metafile(
188
+ str(TEST_DATA_DIRECTORY / TEST_METAFILE),
189
+ f"{TEST_DATA_DIRECTORY}/ins_8_5_meta.h5",
190
+ )
191
+ new_data = [f"{TEST_DATA_DIRECTORY}/ins_8_5_00000{n}.h5" for n in [1, 2, 3, 4]]
192
+ [shutil.copy(TEST_DATA_DIRECTORY / FAKE_DATAFILE, d) for d in new_data]
193
+
194
+
195
+ if __name__ == "__main__":
196
+ generate_test_nexus()
@@ -41,9 +41,10 @@
41
41
  "metadata": {},
42
42
  "outputs": [],
43
43
  "source": [
44
- "from ophyd.sim import det, motor\n",
45
44
  "from bluesky.plans import scan\n",
46
- "dets = [det] # just one in this case, but it could be more than one\n",
45
+ "from ophyd.sim import det, motor\n",
46
+ "\n",
47
+ "dets = [det] # just one in this case, but it could be more than one\n",
47
48
  "\n",
48
49
  "RE(scan(dets, motor, -1, 1, 10))"
49
50
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mx-bluesky
3
- Version: 0.3.1
3
+ Version: 1.2.0
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
@@ -208,29 +208,42 @@ License: Apache License
208
208
  Project-URL: GitHub, https://github.com/DiamondLightSource/mx-bluesky
209
209
  Classifier: Development Status :: 3 - Alpha
210
210
  Classifier: License :: OSI Approved :: Apache Software License
211
- Classifier: Programming Language :: Python :: 3.10
212
211
  Classifier: Programming Language :: Python :: 3.11
213
212
  Classifier: Programming Language :: Python :: 3.12
214
- Requires-Python: >=3.10
213
+ Requires-Python: >=3.11
215
214
  Description-Content-Type: text/x-rst
216
215
  License-File: LICENSE
217
- Requires-Dist: bluesky
218
- Requires-Dist: ophyd
219
- Requires-Dist: pyepics
216
+ Requires-Dist: annotated-types
220
217
  Requires-Dist: caproto
218
+ Requires-Dist: fastapi[all]
219
+ Requires-Dist: flask-restful
220
+ Requires-Dist: ispyb
221
221
  Requires-Dist: jupyterlab
222
222
  Requires-Dist: matplotlib
223
- Requires-Dist: requests
223
+ Requires-Dist: nexgen
224
+ Requires-Dist: numpy
224
225
  Requires-Dist: opencv-python
226
+ Requires-Dist: opentelemetry-distro
227
+ Requires-Dist: opentelemetry-exporter-otlp
225
228
  Requires-Dist: pydantic
229
+ Requires-Dist: pyepics
230
+ Requires-Dist: pyzmq
231
+ Requires-Dist: requests
232
+ Requires-Dist: scanspec
233
+ Requires-Dist: scipy
226
234
  Requires-Dist: semver
227
- Requires-Dist: fastapi[all]
228
- Requires-Dist: dls-dodal ==1.30.0
229
- Requires-Dist: blueapi ==0.4.4
235
+ Requires-Dist: blueapi >=0.5.0
236
+ Requires-Dist: daq-config-server >=0.1.1
237
+ Requires-Dist: ophyd ==1.9.0
238
+ Requires-Dist: ophyd-async >=0.3a5
239
+ Requires-Dist: bluesky >=1.13.0a4
240
+ Requires-Dist: dls-dodal ==1.33.0
230
241
  Provides-Extra: dev
231
242
  Requires-Dist: black ; extra == 'dev'
232
- Requires-Dist: copier ; extra == 'dev'
243
+ Requires-Dist: build ; extra == 'dev'
244
+ Requires-Dist: diff-cover ; extra == 'dev'
233
245
  Requires-Dist: GitPython ; extra == 'dev'
246
+ Requires-Dist: ipython ; extra == 'dev'
234
247
  Requires-Dist: mypy ; extra == 'dev'
235
248
  Requires-Dist: myst-parser ; extra == 'dev'
236
249
  Requires-Dist: pipdeptree ; extra == 'dev'
@@ -244,8 +257,10 @@ Requires-Dist: pytest ; extra == 'dev'
244
257
  Requires-Dist: ruff ; extra == 'dev'
245
258
  Requires-Dist: sphinx-autobuild ; extra == 'dev'
246
259
  Requires-Dist: sphinx-copybutton ; extra == 'dev'
260
+ Requires-Dist: sphinxcontrib-plantuml ; extra == 'dev'
247
261
  Requires-Dist: sphinx-design ; extra == 'dev'
248
262
  Requires-Dist: tox-direct ; extra == 'dev'
263
+ Requires-Dist: tox ; extra == 'dev'
249
264
  Requires-Dist: types-mock ; extra == 'dev'
250
265
  Requires-Dist: types-requests ; extra == 'dev'
251
266
 
@@ -0,0 +1,140 @@
1
+ mx_bluesky/__init__.py,sha256=twUymKa_5teVCbYPgxRDu87WyQhJa8nMRb8HLTCFJZ8,115
2
+ mx_bluesky/__main__.py,sha256=bmFrxcsN8zGadkDLRnE3qV3-iXJcEWVPp5GNx2rsTJ0,383
3
+ mx_bluesky/_version.py,sha256=zMnMemknXglcJs59xkicNzeEJTVgYd1omSfLWj76yWw,411
4
+ mx_bluesky/example.py,sha256=_zBoGrKAI1ReOvBz51F9PDorKWQufrb0_ydmoqJ2UAA,478
5
+ mx_bluesky/jupyter_example.ipynb,sha256=wpwvPrBvwtRMS5AIFk8F54cIlUoD0o4ji8tKK5cZHA4,1672
6
+ mx_bluesky/beamlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ mx_bluesky/beamlines/i04/__init__.py,sha256=jZjAMN5_oOEjQoR3iTrnMFW3ElxlHhQ7pEQZIv21Y4I,129
8
+ mx_bluesky/beamlines/i04/thawing_plan.py,sha256=hOYC8Hd3o5ZzFBD2Qwo6AIud4ev_RsWpJjTx63zIwY4,3517
9
+ mx_bluesky/beamlines/i04/callbacks/murko_callback.py,sha256=tq7dWDoTonuJZCTfrq6dBs7eOgCql88lnMOwRQCCP_o,1701
10
+ mx_bluesky/beamlines/i24/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
+ mx_bluesky/beamlines/i24/serial/__init__.py,sha256=Jfc9eLVRgPIai_Sob8E4yn35-PTKYajZX7PmQUeDNwM,1096
12
+ mx_bluesky/beamlines/i24/serial/blueapi_config.yaml,sha256=gwOfjzZMbcvpVH71CCyHaxr8hgPYCJIWWWfg1zErtmM,245
13
+ mx_bluesky/beamlines/i24/serial/dcid.py,sha256=Yv9SkRf1any4WVG6zI3jUxjgzQdBOKdV3XkdKZl8hto,15172
14
+ mx_bluesky/beamlines/i24/serial/log.py,sha256=dsyu062WhFmHgr4rnjICT7P-6-IspjsySkH5jXt9svw,4331
15
+ mx_bluesky/beamlines/i24/serial/run_extruder.sh,sha256=Rujzmh3J6VZ7ZiupK5MVWJsCp0a4Z9Oh3eR64-v1F1Y,436
16
+ mx_bluesky/beamlines/i24/serial/run_fixed_target.sh,sha256=BMpmLWbBpWNOFC5lYhEUw06DJIoq8KeIOJQDZuT_qVo,585
17
+ mx_bluesky/beamlines/i24/serial/run_serial.py,sha256=0hIDSy60G4DQuokX9f4RgxWtGVCpRLJc5zU1Fj1m0-Q,940
18
+ mx_bluesky/beamlines/i24/serial/run_ssx.sh,sha256=0Ir5iQQ-xSN_5teHtxzht6G-mJ08mE1gxBS32vkh1eM,714
19
+ mx_bluesky/beamlines/i24/serial/set_visit_directory.sh,sha256=WuN5PUBxTofzuESk1-3gWtTcbPjOx-26JaQSVCsZhZs,1660
20
+ mx_bluesky/beamlines/i24/serial/start_blueapi.sh,sha256=4iBzQljTLXQiVIF4UO7drc9qUkP7KSRC6Mjh8hcGxpI,608
21
+ mx_bluesky/beamlines/i24/serial/write_nexus.py,sha256=qRLGfrerYnlLUdyDxAso5VPI1PlFUh9gSw0bRcp8GiQ,4050
22
+ mx_bluesky/beamlines/i24/serial/extruder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
+ mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py,sha256=ePfyCvr0-8xD0X8K_I1mhQFVb4t9HYYTFd4PxJaqHvo,17900
24
+ mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl,sha256=9L1CgEdxZD4N3QvM5HLlAlJTcxpzd4ahB2nVJ9jHujw,2013
25
+ mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl,sha256=k7b_91X5VQEmlHI2DrOmuNXTTMLcvlyJICo6F19h61I,31289
26
+ mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl,sha256=K79vmGAcf9qVEQLXTgr0g4bZDWaJ7nFoK4e0Ex7qAwM,14690
27
+ mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
+ mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py,sha256=cLZBEN-PK_7V6T5mjaHv53xa3rvKBStD4g-GUqCjkOM,1223
29
+ mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py,sha256=m1OU17bBw8hn4QBgSZ6lZu4qqShsP4abEfhK3SBN-l8,28600
30
+ mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py,sha256=WgT-ffr98JjSHPLCZu_JgYkIsc3TvAk7KEQXDvOJ5_E,35311
31
+ mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Mapping_py3v1.py,sha256=eTspHh6cB8cgT5eYyAC_27r4UJ9xgXk1x67KtnEQ81A,5252
32
+ mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py,sha256=lTJ9h7vqJA9NjrE73To2IsSVVXrS1ghyeCVvOrhUQzM,10843
33
+ mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py,sha256=H9BfhEu3fhiI0P5lwKu9Zt83Lo6KpCXl38jQimu58TU,6298
34
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl,sha256=H9BVU1S3oy8tAVHtKvJvp7YTHA-4X-jtOtiu3jJ7of4,10348
35
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl,sha256=WBji5SaRQ5e0KFRgrPuv6IgaFxkal1jh7MZW8SqQN88,2016
36
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl,sha256=yT91wdAQ7sJsoniEc5yGKEiHSFQOGtf2oXjbMS3IavE,56602
37
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl,sha256=cpKpXfU668mGjIz35jUMTF8KAi0RI7WlVO2AR-EnJ8U,60868
38
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl,sha256=CPMPU-imtWeKERXydJn30svgx-s2u6SuuamsFRsstyM,38860
39
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl,sha256=2KUy2iEcX9AC07zSH3Sp97b5qauGIm8_HjvoQ4pkyCU,1417
40
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl,sha256=o2PDoIFzeErIUijDbGdfWdrh3wd5GFAqEsDD2at2a4k,1601
41
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl,sha256=8TWQTIBnX3OLa1kjsibsCnG5wCVotPYIOHwFam7rJe4,14679
42
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl,sha256=IgLLF7gcNoG8Z4t9FTA7_4ggUccNm6-ekK5bb0V4ekY,15711
43
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl,sha256=CrCo1nSIzT3OcSy4OXq1vu4lz5OvI4U8-yl-ruQ57m4,22665
44
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short1-laser.png,sha256=wDNuKCa_8hUPy4W01vdIrfdZtCyQKT8qVS5AS6kOTmo,9740
45
+ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short2-laser.png,sha256=MrdiCFX7j-ODkfSdzc4NQ_8hj2Gs8i9gQqWyNXvdM5s,10189
46
+ mx_bluesky/beamlines/i24/serial/parameters/__init__.py,sha256=oyY7qXs1dDTzE2DNiPdZIzMoDWfghujygEWCQa7YozA,434
47
+ mx_bluesky/beamlines/i24/serial/parameters/constants.py,sha256=w20hRzHoUGeJJ3hECtALEheEz60rt-Ffi4boiYkhu50,1494
48
+ mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py,sha256=UO5t7Pmx-yyXiQSWKmb8mQPbrZ70RCLbHcPRqtdDMaU,2771
49
+ mx_bluesky/beamlines/i24/serial/parameters/utils.py,sha256=IR1ulMWW0PEoF-kddqXtFVm8MoA7oB_MbS0XO7a-k4w,2118
50
+ mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json,sha256=n8FxMtq3iFsbG3IIrFmgQWDdnG_BsFXZ_P40Z7wIuE4,142
51
+ mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt,sha256=oIPpcQpqCrKz5dPZ-qQ5gQ2Sdqtj6nsnf66pN8PGU50,199
52
+ mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar,sha256=SN4deU199dMcA1Bcx1BF6CBMvoSszxJWZC6vt7_5fHc,284
53
+ mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar,sha256=pZbFOEiN_S5yiTEtqdNHmTMtnQY-W2ImXVBYCovPCx0,1842
54
+ mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py,sha256=UhBdMcPdJMzwV0d8DKOBzvYNd6TDSwcP9GJVqfGa7Jc,261
55
+ mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py,sha256=HdU4OUAT2du7cPfIssMjUNvIe9jQQChvCwnkiTw1_aA,1590
56
+ mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py,sha256=Wen5tTUBggb5Gf4f2yar5Rkn0GbkLRpKu6rbbFb6qPM,15566
57
+ 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=MqMaoDU_O8Zny9Lq1WUn1-EEEZx0nQKVwHaOHMTdW2I,18352
59
+ mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py,sha256=odNDKReW01GZ2C_yxPzkhUjZEl45jeRxzcfDlSZnZ4g,3365
60
+ mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py,sha256=dzkml6AbJovQr4znygV4yg2wrUffNQcRpgAQqGx0siY,17019
61
+ mx_bluesky/hyperion/__init__.py,sha256=f4E8wInL1Ll4eeFtAiyKmipOBTPlUtKmVK-m_LOQG4M,35
62
+ mx_bluesky/hyperion/__main__.py,sha256=UwvVJlDTb42CZIh1HjlOlSV26OYr0Op9zQGGIW8iO2s,13600
63
+ mx_bluesky/hyperion/exceptions.py,sha256=RUKfRG8V4TZY6dQFg1tISbUOG0p3cG-LUJdWkc32_5s,1298
64
+ mx_bluesky/hyperion/log.py,sha256=WClOd2edCk3kxisMcQgFQucDc1K04UYcCiBVf3jfhqs,2909
65
+ mx_bluesky/hyperion/tracing.py,sha256=rmHtH74WKUxn_Y73YIo7ogDgKakUTwvLtuasq1ocf2c,1139
66
+ mx_bluesky/hyperion/device_setup_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
+ mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py,sha256=sO11UoCkUDd1pN6kSBl4ydE4eXnBnIyF516ir898Pig,4639
68
+ mx_bluesky/hyperion/device_setup_plans/manipulate_sample.py,sha256=vJdlTs9LILfkifqNcn15sQgG4_OJbK30v70YzJq0B8c,3217
69
+ mx_bluesky/hyperion/device_setup_plans/position_detector.py,sha256=g2gJZFqOF2klH92uKQAMoyXRSD7ehloe9wToIVfV-CM,631
70
+ mx_bluesky/hyperion/device_setup_plans/read_hardware_for_setup.py,sha256=Syn1fmk90tGcC_ekhQUUwQVvTxAnIUlc97X9arFIpNQ,2115
71
+ mx_bluesky/hyperion/device_setup_plans/setup_oav.py,sha256=LkhhcAyiNiTpeHCzW7vbz86PpnaoKGbcqym5ne4kcoc,2856
72
+ mx_bluesky/hyperion/device_setup_plans/setup_panda.py,sha256=ZnH2hTMR-Q35D0Gu00cwr-aobIRrfRxoQKW3A0j3fk4,7783
73
+ mx_bluesky/hyperion/device_setup_plans/setup_zebra.py,sha256=rzzxU1d3ahe5tIk0h2TULvabKlY57OhrtO4mM8oKyuc,8049
74
+ mx_bluesky/hyperion/device_setup_plans/smargon.py,sha256=sSqrURldwwqPvbS-y7y-9Y1LM6Rq3AO0JgA9cHCPais,788
75
+ mx_bluesky/hyperion/device_setup_plans/utils.py,sha256=5xuz4SFYfAA14pvYycvw3zQiwUq2_gscn3LiTdKRz8M,1813
76
+ mx_bluesky/hyperion/device_setup_plans/xbpm_feedback.py,sha256=tx9Sl3LMw4r9ls8J8TGf6COz__ISgLjJaEpInzlmnP8,3679
77
+ mx_bluesky/hyperion/experiment_plans/__init__.py,sha256=Tq9XXh8-N4obZMizxi5H1laV-toJQ9olu4K05gMFo8E,936
78
+ mx_bluesky/hyperion/experiment_plans/experiment_registry.py,sha256=n7A0yK4ftpwB0GoNop4ZM1jcFvdqEQuq6qLabzprLKo,2995
79
+ mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py,sha256=mGxz_6rMR3_z9hihP-e_DDtWzMulxdJrgIU2qoWGNEc,19321
80
+ mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py,sha256=C03cKIQLyDAeGnI05tW6Z2kzItTIfHL_wlXqd0X8TcM,7186
81
+ mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py,sha256=vmqqlZANQB9LAl9QgMNmGU3yB624_gMuM7pJlglPOOc,1711
82
+ mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py,sha256=lzkC1mZCuXW_GmGhgWeTjKGTgAP1uqNWlcEpY5_dOgc,6943
83
+ mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py,sha256=7OcQ3nm7m-xLdPkct41-HrrQKrs9q_U8qOy80QqhnFg,2821
84
+ mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py,sha256=JZJW3hOzcxFyCEmsMYWWGwA9tAgGgg85nBKxBxKXeX0,16276
85
+ mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py,sha256=vV9UOubh2v6clL4LHFSQhqVBGcKPaNVWqK2rDrdPcQI,4146
86
+ mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py,sha256=YcGGckesXe_5NhaIEd0SFOPbtTYkpDKLSi3g7_2d52o,5969
87
+ mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py,sha256=jogvdhNYIb5B2dZihPX3EgL_o3iFUYMTNumNWZNRHRI,7802
88
+ mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py,sha256=lIGqj_ugGUfiS-1eTbO_5Q6MRfhA5QgINbUvY9JMhjI,5422
89
+ mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py,sha256=iYsLw3nlIlpdccK1EeWH1S7nN1JoINvVxNRfZG52DE4,15802
90
+ mx_bluesky/hyperion/experiment_plans/set_energy_plan.py,sha256=sBCwDxtBb-XzWPIYeIOqjKSeeOmdLzDvDihONA_Qcwg,1729
91
+ mx_bluesky/hyperion/external_interaction/__init__.py,sha256=95DwXDmKsx36RgAL-AtLZl2LQoLPKbzeYdlkkP_4Coc,559
92
+ mx_bluesky/hyperion/external_interaction/config_server.py,sha256=hA5r4v071gkV91F9YPwTVQGLPq3iMb1pjcBEE14Uxh4,1077
93
+ mx_bluesky/hyperion/external_interaction/exceptions.py,sha256=XBDES13VaW9fhxRZYNvSfLC_Mvg4M4RqMseW_u18Mb8,342
94
+ mx_bluesky/hyperion/external_interaction/callbacks/__init__.py,sha256=njGhxi0Qf06vvDXCpVlQhFAOebf6iVAVm3CjGCjwr1g,331
95
+ mx_bluesky/hyperion/external_interaction/callbacks/__main__.py,sha256=Ke_3nKJXOnPu06rq3r9oULoTqgfwfbQYQgt5GDEidYE,4860
96
+ mx_bluesky/hyperion/external_interaction/callbacks/aperture_change_callback.py,sha256=pWd84QldTGLoxPdyqXZk6_SLhvF7O-CQRsiXqWDQEkg,837
97
+ mx_bluesky/hyperion/external_interaction/callbacks/grid_detection_callback.py,sha256=tWtbpdq3dcTpoVpuDIeSAf-naziky38wgMeW6S1Dh7c,2914
98
+ mx_bluesky/hyperion/external_interaction/callbacks/ispyb_callback_base.py,sha256=ynztJNtM-Njs_kTIFI6aM1YzcX7TK3c_7p4gge2QUCg,8875
99
+ mx_bluesky/hyperion/external_interaction/callbacks/log_uid_tag_callback.py,sha256=MnpHKTwBbI5_xDtm5VK1cSObrfkWBuWP0_OXnU1qQCA,622
100
+ mx_bluesky/hyperion/external_interaction/callbacks/logging_callback.py,sha256=W5jO7uHvi84FmEwVC_wNk93oc3-SJ8pZq61cYS-qalU,708
101
+ mx_bluesky/hyperion/external_interaction/callbacks/plan_reactive_callback.py,sha256=7UtkXZluAag_Mx_JnESd7ODPSN3WrcNCgN8mquIpxjE,4086
102
+ mx_bluesky/hyperion/external_interaction/callbacks/zocalo_callback.py,sha256=Jwf_jFLnC1lRm-WIlZ6ZozbQyw_SHtXK_5HUA5RT7Fw,3960
103
+ mx_bluesky/hyperion/external_interaction/callbacks/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
+ mx_bluesky/hyperion/external_interaction/callbacks/common/callback_util.py,sha256=CjB3SOITmwv9I7pokwN0pmPomDAri7fJrg7Ww2kpXPo,1981
105
+ mx_bluesky/hyperion/external_interaction/callbacks/common/ispyb_mapping.py,sha256=g7g_YmW3ZqFSN_uIXV-gONoMWS_mrQUdv51vJ2UOe0s,2584
106
+ mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py,sha256=R60oJdMwx8l0qqfRoyNrcj7Qg0fL0VU9IDm0YzR8xi0,3580
107
+ mx_bluesky/hyperion/external_interaction/callbacks/rotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
+ mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py,sha256=tYc5B1UN8K_69rRBhx1KjpLv_r6htRJxjG05sAIFKvg,7220
109
+ mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py,sha256=gXub8lt04ClC4sU_QGaBW4w3wrH8hJK7Tjy0AY4zf7g,718
110
+ mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py,sha256=tx7G1Q9W3bCLB1h_IaNh1FvOmsE2Oy9LJMLC8NSWgCc,4478
111
+ mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
+ mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/ispyb_callback.py,sha256=kyEu2SXyN6kL4fcQm3HmAO4KEdEZvBH_7cDX9gEeyqw,11294
113
+ mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/ispyb_mapping.py,sha256=8SiT3Yes58HJNro4CatIM1dcnyIvTBt0DNtAGbcEx7g,1818
114
+ mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/nexus_callback.py,sha256=FvO6OcRgQNBm8HEeM6Gc-j2a1yH3OOGUat-GTtfh-gM,4409
115
+ mx_bluesky/hyperion/external_interaction/ispyb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
+ mx_bluesky/hyperion/external_interaction/ispyb/data_model.py,sha256=7P2Tz3Y9k-vKSGsdk8ppvKg15z1iBGGKbw3RNv_8y-E,2632
117
+ mx_bluesky/hyperion/external_interaction/ispyb/exp_eye_store.py,sha256=ekMaDRkshbC72_hY0VWjaBA5b1vQgUfHoYBW22wEzNw,4487
118
+ mx_bluesky/hyperion/external_interaction/ispyb/ispyb_store.py,sha256=K71lAHoqMBh-ayqFdfafIwRd8AIqnyj6LR6rzk00nl8,10318
119
+ mx_bluesky/hyperion/external_interaction/ispyb/ispyb_utils.py,sha256=2Vl5qvGoCvbZ-lJFJSSNpTkbE4YfHAhy79jP7Oap6gg,720
120
+ mx_bluesky/hyperion/external_interaction/nexus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
+ mx_bluesky/hyperion/external_interaction/nexus/nexus_utils.py,sha256=dVeKUc92TQcO1rpssqTsufwzlIdlHUu2e6zWm4mUYqs,5131
122
+ mx_bluesky/hyperion/external_interaction/nexus/write_nexus.py,sha256=L67UUdauzbXqsf2GJveGT6NP5YxbSzvcD0RjK5zrErI,4136
123
+ mx_bluesky/hyperion/parameters/__init__.py,sha256=kf2wfcILBUBpT0tJ8-W39BywQUkn67yxl9IVsfrr1LE,115
124
+ mx_bluesky/hyperion/parameters/cli.py,sha256=FGzvEB76YnQvBydUMPUNHJuqxvEe7Zc627w7gA2KODY,2125
125
+ mx_bluesky/hyperion/parameters/components.py,sha256=ayIH6QLX15Qeebbz5W66kXUpLpH70JuwdF2E3YyjEmE,7171
126
+ mx_bluesky/hyperion/parameters/constants.py,sha256=U21htONRj9Tvr7nyRbnrSyW6SRAADIkS0wLU0A3gvUQ,4458
127
+ mx_bluesky/hyperion/parameters/gridscan.py,sha256=eTBsjMmzRpS5BacbDmRhH4uncLS96EKrMgKQ1u4Chpg,8310
128
+ mx_bluesky/hyperion/parameters/load_centre_collect.py,sha256=Q0TpVoAZeqPvRBayWPacU3wOWdawmlqhB7361xRKVvc,1583
129
+ mx_bluesky/hyperion/parameters/robot_load.py,sha256=nWiFrakYIn55Y9FDM10TN3Leq5TsAVFpDfY59FU3pIw,435
130
+ mx_bluesky/hyperion/parameters/rotation.py,sha256=HP25ZPlM0U7rRsUxUQFvBPs5pI5NWE2PHSlCg3fI_2Y,5602
131
+ mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml,sha256=xrhgok-9X2VXdyLEWiYOUEeRCBqhYM6IJFAefnNdgzw,26521
132
+ mx_bluesky/hyperion/utils/context.py,sha256=TYG3e4lu88ssngoNbsR5pfEXI0DveDemLWaBuThtvbI,2710
133
+ mx_bluesky/hyperion/utils/utils.py,sha256=GoxupsUcAhGg0TmK_KMgGSB2rDDSd8tV5zGGLOfiAKk,731
134
+ mx_bluesky/hyperion/utils/validation.py,sha256=Cw8TDODble039-lqnSUmFu01p9jdgf-bchcTkByRxok,6569
135
+ mx_bluesky-1.2.0.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
136
+ mx_bluesky-1.2.0.dist-info/METADATA,sha256=6yz0owOp839jruq_KMLvJ2WlDWnlHZ1pgz7mLenyKKI,17163
137
+ mx_bluesky-1.2.0.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
138
+ mx_bluesky-1.2.0.dist-info/entry_points.txt,sha256=Bt3iHCqzZtHYnnSKoh_qM2k3K4LbK1Uxr0gF8B34F98,528
139
+ mx_bluesky-1.2.0.dist-info/top_level.txt,sha256=S4rrzXIUef58ulf_04wn01XGZ3xeJjXs4LPEJ_xoF-I,11
140
+ mx_bluesky-1.2.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (73.0.0)
2
+ Generator: setuptools (75.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -0,0 +1,8 @@
1
+ [console_scripts]
2
+ hyperion = mx_bluesky.hyperion.__main__:main
3
+ hyperion-callbacks = mx_bluesky.hyperion.external_interaction.callbacks.__main__:main
4
+ hyperion-generate-test-nexus = mx_bluesky.hyperion.utils.validation:generate_test_nexus
5
+ hyperion-populate-test-and-meta-files = mx_bluesky.hyperion.utils.validation:copy_test_meta_data_files
6
+ mx-bluesky = mx_bluesky.__main__:main
7
+ run_extruder = mx_bluesky.beamlines.i24.serial.run_serial:run_extruder
8
+ run_fixed_target = mx_bluesky.beamlines.i24.serial.run_serial:run_fixed_target
@@ -1,3 +0,0 @@
1
- from mx_bluesky.i04.thawing_plan import thaw, thaw_and_center
2
-
3
- __all__ = ["thaw", "thaw_and_center"]
@@ -1,15 +0,0 @@
1
- from mx_bluesky.i24.serial.parameters.constants import SSXType
2
- from mx_bluesky.i24.serial.parameters.experiment_parameters import (
3
- ChipDescription,
4
- ExtruderParameters,
5
- FixedTargetParameters,
6
- )
7
- from mx_bluesky.i24.serial.parameters.utils import get_chip_format
8
-
9
- __all__ = [
10
- "SSXType",
11
- "ExtruderParameters",
12
- "ChipDescription",
13
- "FixedTargetParameters",
14
- "get_chip_format",
15
- ]
@@ -1,31 +0,0 @@
1
- from .components import (
2
- DiffractionExperiment,
3
- IspybExperimentType,
4
- OptionalGonioAngleStarts,
5
- OptionalXyzStarts,
6
- ParameterVersion,
7
- RotationAxis,
8
- SplitScan,
9
- WithOavCentring,
10
- WithSample,
11
- WithScan,
12
- WithSnapshot,
13
- XyzAxis,
14
- XyzStarts,
15
- )
16
-
17
- __all__ = [
18
- "DiffractionExperiment",
19
- "IspybExperimentType",
20
- "OptionalGonioAngleStarts",
21
- "OptionalXyzStarts",
22
- "ParameterVersion",
23
- "RotationAxis",
24
- "SplitScan",
25
- "WithOavCentring",
26
- "WithSample",
27
- "WithScan",
28
- "WithSnapshot",
29
- "XyzAxis",
30
- "XyzStarts",
31
- ]