mx-bluesky 1.4.1a0__py3-none-any.whl → 1.4.3__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.
- mx_bluesky/_version.py +2 -2
- mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py +178 -0
- mx_bluesky/beamlines/i24/serial/__init__.py +0 -6
- mx_bluesky/beamlines/i24/serial/dcid.py +125 -151
- mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +1 -1
- mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +88 -43
- mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +1 -1
- mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +2 -46
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +85 -122
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +58 -66
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +1 -19
- mx_bluesky/beamlines/i24/serial/parameters/__init__.py +11 -2
- mx_bluesky/beamlines/i24/serial/parameters/constants.py +16 -2
- mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py +94 -19
- mx_bluesky/beamlines/i24/serial/parameters/utils.py +19 -0
- mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py +2 -0
- mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +61 -8
- mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py +81 -40
- mx_bluesky/beamlines/i24/serial/write_nexus.py +66 -67
- mx_bluesky/{hyperion/external_interaction/callbacks → common/external_interaction/callbacks/common}/aperture_change_callback.py +1 -1
- mx_bluesky/{hyperion/external_interaction/callbacks → common/external_interaction/callbacks/common}/grid_detection_callback.py +19 -1
- mx_bluesky/{hyperion/external_interaction/callbacks → common/external_interaction/callbacks/common}/ispyb_callback_base.py +40 -34
- mx_bluesky/{hyperion → common}/external_interaction/callbacks/common/ispyb_mapping.py +4 -4
- mx_bluesky/{hyperion/external_interaction/callbacks → common/external_interaction/callbacks/common}/logging_callback.py +1 -1
- mx_bluesky/{hyperion/external_interaction/callbacks → common/external_interaction/callbacks/common}/zocalo_callback.py +14 -9
- mx_bluesky/{hyperion → common}/external_interaction/callbacks/xray_centre/ispyb_callback.py +46 -38
- mx_bluesky/{hyperion → common}/external_interaction/callbacks/xray_centre/ispyb_mapping.py +2 -2
- mx_bluesky/{hyperion → common}/external_interaction/callbacks/xray_centre/nexus_callback.py +20 -15
- mx_bluesky/common/external_interaction/config_server.py +11 -0
- mx_bluesky/common/external_interaction/ispyb/__init__.py +0 -0
- mx_bluesky/{hyperion → common}/external_interaction/ispyb/data_model.py +2 -0
- mx_bluesky/{hyperion → common}/external_interaction/ispyb/exp_eye_store.py +67 -17
- mx_bluesky/{hyperion → common}/external_interaction/ispyb/ispyb_store.py +20 -18
- mx_bluesky/{hyperion → common}/external_interaction/ispyb/ispyb_utils.py +2 -2
- mx_bluesky/common/external_interaction/nexus/__init__.py +0 -0
- mx_bluesky/{hyperion → common}/external_interaction/nexus/nexus_utils.py +21 -6
- mx_bluesky/{hyperion → common}/external_interaction/nexus/write_nexus.py +5 -5
- mx_bluesky/common/external_interaction/test_config_server.py +38 -0
- mx_bluesky/common/parameters/components.py +10 -8
- mx_bluesky/common/parameters/constants.py +6 -0
- mx_bluesky/common/parameters/gridscan.py +102 -53
- mx_bluesky/common/plans/do_fgs.py +4 -4
- mx_bluesky/{hyperion → common/utils}/exceptions.py +27 -1
- mx_bluesky/common/utils/log.py +17 -7
- mx_bluesky/hyperion/__main__.py +15 -14
- mx_bluesky/hyperion/device_setup_plans/check_beamstop.py +27 -0
- mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +34 -37
- mx_bluesky/hyperion/device_setup_plans/manipulate_sample.py +7 -7
- mx_bluesky/hyperion/device_setup_plans/position_detector.py +1 -1
- mx_bluesky/hyperion/device_setup_plans/read_hardware_for_setup.py +3 -3
- mx_bluesky/hyperion/device_setup_plans/setup_panda.py +21 -4
- mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +62 -36
- mx_bluesky/hyperion/device_setup_plans/smargon.py +3 -3
- mx_bluesky/hyperion/device_setup_plans/utils.py +4 -0
- mx_bluesky/hyperion/device_setup_plans/xbpm_feedback.py +8 -8
- mx_bluesky/hyperion/experiment_plans/change_aperture_then_move_plan.py +28 -17
- mx_bluesky/hyperion/experiment_plans/common/xrc_result.py +10 -1
- mx_bluesky/hyperion/experiment_plans/experiment_registry.py +9 -9
- mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +54 -58
- mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py +22 -31
- mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +57 -40
- mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py +3 -3
- mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py +8 -2
- mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +6 -14
- mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +12 -11
- mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +4 -4
- mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +39 -30
- mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +36 -18
- mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +33 -21
- mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +10 -9
- mx_bluesky/hyperion/external_interaction/callbacks/__init__.py +0 -4
- mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +31 -20
- mx_bluesky/hyperion/external_interaction/callbacks/common/callback_util.py +46 -30
- mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py +39 -24
- mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +25 -24
- mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +1 -1
- mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +13 -9
- mx_bluesky/hyperion/external_interaction/callbacks/sample_handling/__init__.py +0 -0
- mx_bluesky/hyperion/external_interaction/callbacks/sample_handling/sample_handling_callback.py +50 -0
- mx_bluesky/hyperion/external_interaction/config_server.py +15 -1
- mx_bluesky/hyperion/parameters/components.py +3 -2
- mx_bluesky/hyperion/parameters/constants.py +1 -0
- mx_bluesky/hyperion/parameters/gridscan.py +56 -89
- mx_bluesky/hyperion/parameters/load_centre_collect.py +51 -6
- mx_bluesky/hyperion/parameters/robot_load.py +40 -0
- mx_bluesky/hyperion/parameters/rotation.py +28 -3
- mx_bluesky/hyperion/utils/context.py +1 -1
- mx_bluesky/hyperion/utils/validation.py +5 -3
- {mx_bluesky-1.4.1a0.dist-info → mx_bluesky-1.4.3.dist-info}/METADATA +6 -6
- mx_bluesky-1.4.3.dist-info/RECORD +155 -0
- {mx_bluesky-1.4.1a0.dist-info → mx_bluesky-1.4.3.dist-info}/WHEEL +1 -1
- mx_bluesky/common/parameters/robot_load.py +0 -16
- mx_bluesky/hyperion/external_interaction/exceptions.py +0 -13
- mx_bluesky/hyperion/log.py +0 -15
- mx_bluesky-1.4.1a0.dist-info/RECORD +0 -150
- /mx_bluesky/{hyperion/external_interaction/callbacks/xray_centre → common/external_interaction}/__init__.py +0 -0
- /mx_bluesky/{hyperion/external_interaction/ispyb → common/external_interaction/callbacks/common}/__init__.py +0 -0
- /mx_bluesky/{hyperion → common}/external_interaction/callbacks/common/abstract_event.py +0 -0
- /mx_bluesky/{hyperion/external_interaction/callbacks → common/external_interaction/callbacks/common}/log_uid_tag_callback.py +0 -0
- /mx_bluesky/{hyperion/external_interaction/callbacks → common/external_interaction/callbacks/common}/plan_reactive_callback.py +0 -0
- /mx_bluesky/{hyperion/external_interaction/nexus → common/external_interaction/callbacks/xray_centre}/__init__.py +0 -0
- /mx_bluesky/{hyperion → common}/utils/utils.py +0 -0
- {mx_bluesky-1.4.1a0.dist-info → mx_bluesky-1.4.3.dist-info}/LICENSE +0 -0
- {mx_bluesky-1.4.1a0.dist-info → mx_bluesky-1.4.3.dist-info}/entry_points.txt +0 -0
- {mx_bluesky-1.4.1a0.dist-info → mx_bluesky-1.4.3.dist-info}/top_level.txt +0 -0
|
@@ -7,27 +7,22 @@ from dodal.devices.fast_grid_scan import (
|
|
|
7
7
|
PandAGridScanParams,
|
|
8
8
|
ZebraGridScanParams,
|
|
9
9
|
)
|
|
10
|
-
from pydantic import Field
|
|
11
|
-
|
|
12
|
-
from
|
|
13
|
-
|
|
14
|
-
from mx_bluesky.common.parameters.components import (
|
|
15
|
-
SplitScan,
|
|
16
|
-
WithOptionalEnergyChange,
|
|
17
|
-
WithPandaGridScan,
|
|
18
|
-
)
|
|
10
|
+
from pydantic import Field
|
|
11
|
+
|
|
12
|
+
from mx_bluesky.common.parameters.constants import GridscanParamConstants
|
|
19
13
|
from mx_bluesky.common.parameters.gridscan import (
|
|
20
14
|
GridCommon,
|
|
21
|
-
|
|
15
|
+
SpecifiedThreeDGridScan,
|
|
22
16
|
)
|
|
23
|
-
from mx_bluesky.hyperion.parameters.components import
|
|
17
|
+
from mx_bluesky.hyperion.parameters.components import WithHyperionUDCFeatures
|
|
24
18
|
from mx_bluesky.hyperion.parameters.constants import CONST, I03Constants
|
|
25
19
|
|
|
26
20
|
|
|
27
|
-
class
|
|
28
|
-
|
|
29
|
-
# https://github.com/DiamondLightSource/hyperion/issues/1395"""
|
|
21
|
+
class GridCommonWithHyperionDetectorParams(GridCommon, WithHyperionUDCFeatures):
|
|
22
|
+
"""Used by models which require detector parameters but have no specifications of the grid"""
|
|
30
23
|
|
|
24
|
+
# These detector params only exist so that we can properly select enable_dev_shm. Remove in
|
|
25
|
+
# https://github.com/DiamondLightSource/hyperion/issues/1395"""
|
|
31
26
|
@property
|
|
32
27
|
def detector_params(self):
|
|
33
28
|
self.det_dist_to_beam_converter_path = (
|
|
@@ -37,9 +32,9 @@ class HyperionGridCommon(GridCommon, WithHyperionFeatures):
|
|
|
37
32
|
optional_args = {}
|
|
38
33
|
if self.run_number:
|
|
39
34
|
optional_args["run_number"] = self.run_number
|
|
40
|
-
assert (
|
|
41
|
-
|
|
42
|
-
)
|
|
35
|
+
assert self.detector_distance_mm is not None, (
|
|
36
|
+
"Detector distance must be filled before generating DetectorParams"
|
|
37
|
+
)
|
|
43
38
|
return DetectorParams(
|
|
44
39
|
detector_size_constants=I03Constants.DETECTOR,
|
|
45
40
|
expected_energy_ev=self.demand_energy_ev,
|
|
@@ -59,28 +54,42 @@ class HyperionGridCommon(GridCommon, WithHyperionFeatures):
|
|
|
59
54
|
)
|
|
60
55
|
|
|
61
56
|
|
|
62
|
-
class
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
):
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
57
|
+
class HyperionSpecifiedThreeDGridScan(SpecifiedThreeDGridScan, WithHyperionUDCFeatures):
|
|
58
|
+
"""Hyperion's 3D grid scan deviates from the common class due to: optionally using a PandA, optionally using dev_shm for GPU analysis, and using a config server for features"""
|
|
59
|
+
|
|
60
|
+
# These detector params only exist so that we can properly select enable_dev_shm. Remove in
|
|
61
|
+
# https://github.com/DiamondLightSource/hyperion/issues/1395"""
|
|
62
|
+
@property
|
|
63
|
+
def detector_params(self):
|
|
64
|
+
self.det_dist_to_beam_converter_path = (
|
|
65
|
+
self.det_dist_to_beam_converter_path
|
|
66
|
+
or CONST.PARAM.DETECTOR.BEAM_XY_LUT_PATH
|
|
67
|
+
)
|
|
68
|
+
optional_args = {}
|
|
69
|
+
if self.run_number:
|
|
70
|
+
optional_args["run_number"] = self.run_number
|
|
71
|
+
assert self.detector_distance_mm is not None, (
|
|
72
|
+
"Detector distance must be filled before generating DetectorParams"
|
|
73
|
+
)
|
|
74
|
+
return DetectorParams(
|
|
75
|
+
detector_size_constants=I03Constants.DETECTOR,
|
|
76
|
+
expected_energy_ev=self.demand_energy_ev,
|
|
77
|
+
exposure_time=self.exposure_time_s,
|
|
78
|
+
directory=self.storage_directory,
|
|
79
|
+
prefix=self.file_name,
|
|
80
|
+
detector_distance=self.detector_distance_mm,
|
|
81
|
+
omega_start=self.omega_start_deg or 0,
|
|
82
|
+
omega_increment=0,
|
|
83
|
+
num_images_per_trigger=1,
|
|
84
|
+
num_triggers=self.num_images,
|
|
85
|
+
use_roi_mode=self.use_roi_mode,
|
|
86
|
+
det_dist_to_beam_converter_path=self.det_dist_to_beam_converter_path,
|
|
87
|
+
trigger_mode=self.trigger_mode,
|
|
88
|
+
enable_dev_shm=self.features.compare_cpu_and_gpu_zocalo,
|
|
89
|
+
**optional_args,
|
|
90
|
+
)
|
|
83
91
|
|
|
92
|
+
# Relative to common grid scan, stub offsets are defined by config server
|
|
84
93
|
@property
|
|
85
94
|
def FGS_params(self) -> ZebraGridScanParams:
|
|
86
95
|
return ZebraGridScanParams(
|
|
@@ -124,59 +133,17 @@ class HyperionThreeDGridScan(
|
|
|
124
133
|
transmission_fraction=self.transmission_frac,
|
|
125
134
|
)
|
|
126
135
|
|
|
127
|
-
def do_set_stub_offsets(self, value: bool):
|
|
128
|
-
self._set_stub_offsets = value
|
|
129
|
-
|
|
130
|
-
@property
|
|
131
|
-
def grid_1_spec(self):
|
|
132
|
-
x_end = self.x_start_um + self.x_step_size_um * (self.x_steps - 1)
|
|
133
|
-
y1_end = self.y_start_um + self.y_step_size_um * (self.y_steps - 1)
|
|
134
|
-
grid_1_x = Line("sam_x", self.x_start_um, x_end, self.x_steps)
|
|
135
|
-
grid_1_y = Line("sam_y", self.y_start_um, y1_end, self.y_steps)
|
|
136
|
-
grid_1_z = Static("sam_z", self.z_start_um)
|
|
137
|
-
return grid_1_y.zip(grid_1_z) * ~grid_1_x
|
|
138
|
-
|
|
139
|
-
@property
|
|
140
|
-
def grid_2_spec(self):
|
|
141
|
-
x_end = self.x_start_um + self.x_step_size_um * (self.x_steps - 1)
|
|
142
|
-
z2_end = self.z2_start_um + self.z_step_size_um * (self.z_steps - 1)
|
|
143
|
-
grid_2_x = Line("sam_x", self.x_start_um, x_end, self.x_steps)
|
|
144
|
-
grid_2_z = Line("sam_z", self.z2_start_um, z2_end, self.z_steps)
|
|
145
|
-
grid_2_y = Static("sam_y", self.y2_start_um)
|
|
146
|
-
return grid_2_z.zip(grid_2_y) * ~grid_2_x
|
|
147
|
-
|
|
148
|
-
@property
|
|
149
|
-
def scan_indices(self):
|
|
150
|
-
"""The first index of each gridscan, useful for writing nexus files/VDS"""
|
|
151
|
-
return [
|
|
152
|
-
0,
|
|
153
|
-
len(ScanPath(self.grid_1_spec.calculate()).consume().midpoints["sam_x"]),
|
|
154
|
-
]
|
|
155
|
-
|
|
156
|
-
@property
|
|
157
|
-
def scan_spec(self):
|
|
158
|
-
"""A fully specified ScanSpec object representing both grids, with x, y, z and
|
|
159
|
-
omega positions."""
|
|
160
|
-
return self.grid_1_spec.concat(self.grid_2_spec)
|
|
161
136
|
|
|
162
|
-
|
|
163
|
-
def scan_points(self):
|
|
164
|
-
"""A list of all the points in the scan_spec."""
|
|
165
|
-
return ScanPath(self.scan_spec.calculate()).consume().midpoints
|
|
166
|
-
|
|
167
|
-
@property
|
|
168
|
-
def scan_points_first_grid(self):
|
|
169
|
-
"""A list of all the points in the first grid scan."""
|
|
170
|
-
return ScanPath(self.grid_1_spec.calculate()).consume().midpoints
|
|
137
|
+
class OddYStepsException(Exception): ...
|
|
171
138
|
|
|
172
|
-
@property
|
|
173
|
-
def scan_points_second_grid(self):
|
|
174
|
-
"""A list of all the points in the second grid scan."""
|
|
175
|
-
return ScanPath(self.grid_2_spec.calculate()).consume().midpoints
|
|
176
139
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
140
|
+
class PinTipCentreThenXrayCentre(
|
|
141
|
+
GridCommonWithHyperionDetectorParams, WithHyperionUDCFeatures
|
|
142
|
+
):
|
|
143
|
+
tip_offset_um: float = 0
|
|
180
144
|
|
|
181
145
|
|
|
182
|
-
class
|
|
146
|
+
class GridScanWithEdgeDetect(
|
|
147
|
+
GridCommonWithHyperionDetectorParams, WithHyperionUDCFeatures
|
|
148
|
+
):
|
|
149
|
+
box_size_um: float = Field(default=GridscanParamConstants.BOX_WIDTH_UM)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import TypeVar
|
|
1
|
+
from typing import Self, TypeVar
|
|
2
2
|
|
|
3
3
|
from pydantic import BaseModel, model_validator
|
|
4
4
|
|
|
@@ -8,7 +8,8 @@ from mx_bluesky.common.parameters.components import (
|
|
|
8
8
|
WithSample,
|
|
9
9
|
WithVisit,
|
|
10
10
|
)
|
|
11
|
-
from mx_bluesky.
|
|
11
|
+
from mx_bluesky.hyperion.parameters.components import WithHyperionUDCFeatures
|
|
12
|
+
from mx_bluesky.hyperion.parameters.robot_load import (
|
|
12
13
|
RobotLoadThenCentre,
|
|
13
14
|
)
|
|
14
15
|
from mx_bluesky.hyperion.parameters.rotation import MultiRotationScan
|
|
@@ -23,7 +24,11 @@ def construct_from_values(parent_context: dict, child_dict: dict, t: type[T]) ->
|
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
class LoadCentreCollect(
|
|
26
|
-
MxBlueskyParameters,
|
|
27
|
+
MxBlueskyParameters,
|
|
28
|
+
WithVisit,
|
|
29
|
+
WithSample,
|
|
30
|
+
WithCentreSelection,
|
|
31
|
+
WithHyperionUDCFeatures,
|
|
27
32
|
):
|
|
28
33
|
"""Experiment parameters to perform the combined robot load,
|
|
29
34
|
pin-tip centre and rotation scan operations."""
|
|
@@ -39,10 +44,31 @@ class LoadCentreCollect(
|
|
|
39
44
|
| RobotLoadThenCentre.model_fields.keys()
|
|
40
45
|
| MultiRotationScan.model_fields.keys()
|
|
41
46
|
)
|
|
47
|
+
|
|
42
48
|
disallowed_keys = values.keys() - allowed_keys
|
|
43
|
-
assert (
|
|
44
|
-
|
|
45
|
-
)
|
|
49
|
+
assert disallowed_keys == set(), (
|
|
50
|
+
f"Unexpected fields found in LoadCentreCollect {disallowed_keys}"
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
keys_from_outer_load_centre_collect = (
|
|
54
|
+
MxBlueskyParameters.model_fields.keys()
|
|
55
|
+
| WithSample.model_fields.keys()
|
|
56
|
+
| WithVisit.model_fields.keys()
|
|
57
|
+
)
|
|
58
|
+
duplicated_robot_load_then_centre_keys = (
|
|
59
|
+
keys_from_outer_load_centre_collect
|
|
60
|
+
& values["robot_load_then_centre"].keys()
|
|
61
|
+
)
|
|
62
|
+
assert not (duplicated_robot_load_then_centre_keys), (
|
|
63
|
+
f"Unexpected keys in robot_load_then_centre: {', '.join(duplicated_robot_load_then_centre_keys)}"
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
duplicated_multi_rotation_scan_keys = (
|
|
67
|
+
keys_from_outer_load_centre_collect & values["multi_rotation_scan"].keys()
|
|
68
|
+
)
|
|
69
|
+
assert not (duplicated_multi_rotation_scan_keys), (
|
|
70
|
+
f"Unexpected keys in multi_rotation_scan: {', '.join(duplicated_multi_rotation_scan_keys)}"
|
|
71
|
+
)
|
|
46
72
|
|
|
47
73
|
new_robot_load_then_centre_params = construct_from_values(
|
|
48
74
|
values, values["robot_load_then_centre"], RobotLoadThenCentre
|
|
@@ -53,3 +79,22 @@ class LoadCentreCollect(
|
|
|
53
79
|
values["multi_rotation_scan"] = new_multi_rotation_scan_params
|
|
54
80
|
values["robot_load_then_centre"] = new_robot_load_then_centre_params
|
|
55
81
|
return values
|
|
82
|
+
|
|
83
|
+
@model_validator(mode="after")
|
|
84
|
+
def _check_rotation_start_xyz_is_not_specified(self) -> Self:
|
|
85
|
+
for scan in self.multi_rotation_scan.single_rotation_scans:
|
|
86
|
+
assert (
|
|
87
|
+
not scan.x_start_um and not scan.y_start_um and not scan.z_start_um
|
|
88
|
+
), (
|
|
89
|
+
"Specifying start xyz for sweeps is not supported in combination with centring."
|
|
90
|
+
)
|
|
91
|
+
return self
|
|
92
|
+
|
|
93
|
+
@model_validator(mode="after")
|
|
94
|
+
def _check_different_gridscan_and_rotation_energy_not_specified(self) -> Self:
|
|
95
|
+
assert (
|
|
96
|
+
self.multi_rotation_scan.demand_energy_ev is None
|
|
97
|
+
or self.multi_rotation_scan.demand_energy_ev
|
|
98
|
+
== self.robot_load_then_centre.demand_energy_ev
|
|
99
|
+
), "Setting a different energy for gridscan and rotation is not supported."
|
|
100
|
+
return self
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
from pydantic import Field
|
|
2
|
+
|
|
3
|
+
from mx_bluesky.common.parameters.components import (
|
|
4
|
+
MxBlueskyParameters,
|
|
5
|
+
WithOptionalEnergyChange,
|
|
6
|
+
WithSample,
|
|
7
|
+
WithSnapshot,
|
|
8
|
+
WithVisit,
|
|
9
|
+
)
|
|
10
|
+
from mx_bluesky.common.parameters.constants import (
|
|
11
|
+
HardwareConstants,
|
|
12
|
+
)
|
|
13
|
+
from mx_bluesky.hyperion.parameters.components import WithHyperionUDCFeatures
|
|
14
|
+
from mx_bluesky.hyperion.parameters.gridscan import (
|
|
15
|
+
GridCommonWithHyperionDetectorParams,
|
|
16
|
+
PinTipCentreThenXrayCentre,
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class RobotLoadAndEnergyChange(
|
|
21
|
+
MxBlueskyParameters, WithSample, WithSnapshot, WithOptionalEnergyChange, WithVisit
|
|
22
|
+
):
|
|
23
|
+
thawing_time: float = Field(default=HardwareConstants.THAWING_TIME)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class RobotLoadThenCentre(
|
|
27
|
+
GridCommonWithHyperionDetectorParams, WithHyperionUDCFeatures
|
|
28
|
+
):
|
|
29
|
+
thawing_time: float = Field(default=HardwareConstants.THAWING_TIME)
|
|
30
|
+
|
|
31
|
+
@property
|
|
32
|
+
def robot_load_params(self) -> RobotLoadAndEnergyChange:
|
|
33
|
+
my_params = self.model_dump()
|
|
34
|
+
return RobotLoadAndEnergyChange(**my_params)
|
|
35
|
+
|
|
36
|
+
@property
|
|
37
|
+
def pin_centre_then_xray_centre_params(self) -> PinTipCentreThenXrayCentre:
|
|
38
|
+
my_params = self.model_dump()
|
|
39
|
+
del my_params["thawing_time"]
|
|
40
|
+
return PinTipCentreThenXrayCentre(**my_params)
|
|
@@ -3,12 +3,12 @@ from __future__ import annotations
|
|
|
3
3
|
import os
|
|
4
4
|
from collections.abc import Iterator
|
|
5
5
|
from itertools import accumulate
|
|
6
|
-
from typing import Annotated, Any
|
|
6
|
+
from typing import Annotated, Any, Self
|
|
7
7
|
|
|
8
8
|
from annotated_types import Len
|
|
9
9
|
from dodal.devices.aperturescatterguard import ApertureValue
|
|
10
10
|
from dodal.devices.detector import DetectorParams
|
|
11
|
-
from dodal.devices.zebra import (
|
|
11
|
+
from dodal.devices.zebra.zebra import (
|
|
12
12
|
RotationDirection,
|
|
13
13
|
)
|
|
14
14
|
from dodal.log import LOGGER
|
|
@@ -26,6 +26,7 @@ from mx_bluesky.common.parameters.components import (
|
|
|
26
26
|
SplitScan,
|
|
27
27
|
WithScan,
|
|
28
28
|
)
|
|
29
|
+
from mx_bluesky.hyperion.parameters.components import WithHyperionUDCFeatures
|
|
29
30
|
from mx_bluesky.hyperion.parameters.constants import (
|
|
30
31
|
CONST,
|
|
31
32
|
I03Constants,
|
|
@@ -33,6 +34,18 @@ from mx_bluesky.hyperion.parameters.constants import (
|
|
|
33
34
|
|
|
34
35
|
|
|
35
36
|
class RotationScanPerSweep(OptionalGonioAngleStarts, OptionalXyzStarts):
|
|
37
|
+
"""
|
|
38
|
+
Describes a rotation scan about the specified axis.
|
|
39
|
+
|
|
40
|
+
Attributes:
|
|
41
|
+
rotation_axis: The rotation axis, by default this is the omega axis
|
|
42
|
+
omega_start_deg: The initial angle of the rotation in degrees (default 0)
|
|
43
|
+
scan_width_deg: The sweep of the rotation in degrees, this must be positive (default 360)
|
|
44
|
+
rotation_direction: Indicates the direction of rotation, if RotationDirection.POSITIVE
|
|
45
|
+
the final angle is obtained by adding scan_width_deg, otherwise by subtraction (default NEGATIVE)
|
|
46
|
+
nexus_vds_start_img: The frame number of the first frame captured during the rotation
|
|
47
|
+
"""
|
|
48
|
+
|
|
36
49
|
omega_start_deg: float = Field(default=0) # type: ignore
|
|
37
50
|
rotation_axis: RotationAxis = Field(default=RotationAxis.OMEGA)
|
|
38
51
|
scan_width_deg: float = Field(default=360, gt=0)
|
|
@@ -40,7 +53,7 @@ class RotationScanPerSweep(OptionalGonioAngleStarts, OptionalXyzStarts):
|
|
|
40
53
|
nexus_vds_start_img: int = Field(default=0, ge=0)
|
|
41
54
|
|
|
42
55
|
|
|
43
|
-
class RotationExperiment(DiffractionExperimentWithSample):
|
|
56
|
+
class RotationExperiment(DiffractionExperimentWithSample, WithHyperionUDCFeatures):
|
|
44
57
|
shutter_opening_time_s: float = Field(default=CONST.I03.SHUTTER_TIME_S)
|
|
45
58
|
rotation_increment_deg: float = Field(default=0.1, gt=0)
|
|
46
59
|
ispyb_experiment_type: IspybExperimentType = Field(
|
|
@@ -98,6 +111,7 @@ class RotationScan(WithScan, RotationScanPerSweep, RotationExperiment):
|
|
|
98
111
|
|
|
99
112
|
@property
|
|
100
113
|
def scan_points(self) -> AxesPoints:
|
|
114
|
+
"""The scan points are defined in application space"""
|
|
101
115
|
scan_spec = Line(
|
|
102
116
|
axis="omega",
|
|
103
117
|
start=self.omega_start_deg,
|
|
@@ -141,6 +155,17 @@ class MultiRotationScan(RotationExperiment, SplitScan):
|
|
|
141
155
|
start_img += scan.scan_width_deg / values.rotation_increment_deg
|
|
142
156
|
return values
|
|
143
157
|
|
|
158
|
+
@model_validator(mode="after")
|
|
159
|
+
def _check_valid_for_single_arm_multiple_sweep(self) -> Self:
|
|
160
|
+
if len(self.rotation_scans) > 0:
|
|
161
|
+
scan_width = self.rotation_scans[0].scan_width_deg
|
|
162
|
+
for scan in self.rotation_scans[1:]:
|
|
163
|
+
assert scan.scan_width_deg == scan_width, (
|
|
164
|
+
"Sweeps with different numbers of frames are not supported."
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
return self
|
|
168
|
+
|
|
144
169
|
@property
|
|
145
170
|
def single_rotation_scans(self) -> Iterator[RotationScan]:
|
|
146
171
|
for scan in self.rotation_scans:
|
|
@@ -6,7 +6,7 @@ from blueapi.core.bluesky_types import Device
|
|
|
6
6
|
from dodal.utils import get_beamline_based_on_environment_variable
|
|
7
7
|
|
|
8
8
|
import mx_bluesky.hyperion.experiment_plans as hyperion_plans
|
|
9
|
-
from mx_bluesky.
|
|
9
|
+
from mx_bluesky.common.utils.log import LOGGER
|
|
10
10
|
|
|
11
11
|
T = TypeVar("T", bound=Device)
|
|
12
12
|
|
|
@@ -9,7 +9,7 @@ import bluesky.preprocessors as bpp
|
|
|
9
9
|
from bluesky.run_engine import RunEngine
|
|
10
10
|
from dodal.beamlines import i03
|
|
11
11
|
from dodal.devices.oav.oav_parameters import OAVConfig
|
|
12
|
-
from ophyd_async.
|
|
12
|
+
from ophyd_async.testing import set_mock_value
|
|
13
13
|
|
|
14
14
|
from mx_bluesky.hyperion.device_setup_plans.read_hardware_for_setup import (
|
|
15
15
|
read_hardware_during_collection,
|
|
@@ -62,7 +62,7 @@ def fake_rotation_scan(
|
|
|
62
62
|
@bpp.run_decorator( # attach experiment metadata to the start document
|
|
63
63
|
md={
|
|
64
64
|
"subplan_name": CONST.PLAN.ROTATION_OUTER,
|
|
65
|
-
"
|
|
65
|
+
"mx_bluesky_parameters": parameters.model_dump_json(),
|
|
66
66
|
"activate_callbacks": "RotationNexusFileCallback",
|
|
67
67
|
}
|
|
68
68
|
)
|
|
@@ -79,6 +79,7 @@ def fake_rotation_scan(
|
|
|
79
79
|
|
|
80
80
|
|
|
81
81
|
def fake_create_rotation_devices():
|
|
82
|
+
beamstop = i03.beamstop(fake_with_ophyd_sim=True)
|
|
82
83
|
eiger = i03.eiger(fake_with_ophyd_sim=True)
|
|
83
84
|
smargon = i03.smargon(fake_with_ophyd_sim=True)
|
|
84
85
|
zebra = i03.zebra(fake_with_ophyd_sim=True)
|
|
@@ -106,6 +107,7 @@ def fake_create_rotation_devices():
|
|
|
106
107
|
return RotationScanComposite(
|
|
107
108
|
attenuator=attenuator,
|
|
108
109
|
backlight=backlight,
|
|
110
|
+
beamstop=beamstop,
|
|
109
111
|
dcm=dcm,
|
|
110
112
|
detector_motion=detector_motion,
|
|
111
113
|
eiger=eiger,
|
|
@@ -135,7 +137,7 @@ def sim_rotation_scan_to_create_nexus(
|
|
|
135
137
|
fake_create_rotation_devices.eiger.bit_depth.sim_put(32) # type: ignore
|
|
136
138
|
|
|
137
139
|
with patch(
|
|
138
|
-
"mx_bluesky.
|
|
140
|
+
"mx_bluesky.common.external_interaction.nexus.write_nexus.get_start_and_predicted_end_time",
|
|
139
141
|
return_value=("test_time", "test_time"),
|
|
140
142
|
):
|
|
141
143
|
RE(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: mx-bluesky
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.3
|
|
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
|
|
@@ -226,7 +226,7 @@ Requires-Dist: opencv-python
|
|
|
226
226
|
Requires-Dist: opentelemetry-distro
|
|
227
227
|
Requires-Dist: opentelemetry-exporter-otlp
|
|
228
228
|
Requires-Dist: pydantic
|
|
229
|
-
Requires-Dist: pydantic-extra-types
|
|
229
|
+
Requires-Dist: pydantic-extra-types>=2.10.1
|
|
230
230
|
Requires-Dist: pyepics
|
|
231
231
|
Requires-Dist: pyzmq
|
|
232
232
|
Requires-Dist: requests
|
|
@@ -238,8 +238,8 @@ Requires-Dist: blueapi>=0.5.0
|
|
|
238
238
|
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
|
-
Requires-Dist: bluesky>=1.13
|
|
242
|
-
Requires-Dist: dls-dodal==1.
|
|
241
|
+
Requires-Dist: bluesky>=1.13
|
|
242
|
+
Requires-Dist: dls-dodal==1.38.0
|
|
243
243
|
Provides-Extra: dev
|
|
244
244
|
Requires-Dist: black; extra == "dev"
|
|
245
245
|
Requires-Dist: build; extra == "dev"
|
|
@@ -250,6 +250,7 @@ Requires-Dist: ipython; extra == "dev"
|
|
|
250
250
|
Requires-Dist: mypy; extra == "dev"
|
|
251
251
|
Requires-Dist: myst-parser; extra == "dev"
|
|
252
252
|
Requires-Dist: pipdeptree; extra == "dev"
|
|
253
|
+
Requires-Dist: plantweb; extra == "dev"
|
|
253
254
|
Requires-Dist: pre-commit; extra == "dev"
|
|
254
255
|
Requires-Dist: pydata-sphinx-theme>=0.12; extra == "dev"
|
|
255
256
|
Requires-Dist: pyright; extra == "dev"
|
|
@@ -260,7 +261,6 @@ Requires-Dist: pytest; extra == "dev"
|
|
|
260
261
|
Requires-Dist: ruff; extra == "dev"
|
|
261
262
|
Requires-Dist: sphinx-autobuild; extra == "dev"
|
|
262
263
|
Requires-Dist: sphinx-copybutton; extra == "dev"
|
|
263
|
-
Requires-Dist: sphinxcontrib-plantuml; extra == "dev"
|
|
264
264
|
Requires-Dist: sphinx-design; extra == "dev"
|
|
265
265
|
Requires-Dist: tox-direct; extra == "dev"
|
|
266
266
|
Requires-Dist: tox; extra == "dev"
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
mx_bluesky/__init__.py,sha256=Ksms_WJF8LTkbm38gEpm1jBpGqcQ8NGvmb2ZJlOE1j8,198
|
|
2
|
+
mx_bluesky/__main__.py,sha256=RVqPnxDisFMIn_aoEi0drlThNHgKTJULnSrotouIKI0,480
|
|
3
|
+
mx_bluesky/_version.py,sha256=cUUlK35wR7qLNaS4SMOrkRP_HG0nSHq0YEIezhPHr3c,411
|
|
4
|
+
mx_bluesky/jupyter_example.ipynb,sha256=wpwvPrBvwtRMS5AIFk8F54cIlUoD0o4ji8tKK5cZHA4,1672
|
|
5
|
+
mx_bluesky/beamlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
+
mx_bluesky/beamlines/i04/__init__.py,sha256=jZjAMN5_oOEjQoR3iTrnMFW3ElxlHhQ7pEQZIv21Y4I,129
|
|
7
|
+
mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py,sha256=10PKvDRKaaTtlOCfRG8T00XwpIFR9m8jk96QES13LpQ,5894
|
|
8
|
+
mx_bluesky/beamlines/i04/thawing_plan.py,sha256=YykXHXINBDnQ0wJ577v4XrXwcqlRRgoUSbaNuOKd1bc,5464
|
|
9
|
+
mx_bluesky/beamlines/i04/callbacks/murko_callback.py,sha256=ZIwkY6gdcmIE-aMBvehN8DVcjGRtb9wwzpgHJNMZ39Q,2125
|
|
10
|
+
mx_bluesky/beamlines/i24/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
+
mx_bluesky/beamlines/i24/serial/__init__.py,sha256=gSP8Vu9PMDeIgzge48XS3bOdmvb_a9k8RQP98BNcdZg,1080
|
|
12
|
+
mx_bluesky/beamlines/i24/serial/blueapi_config.yaml,sha256=gwOfjzZMbcvpVH71CCyHaxr8hgPYCJIWWWfg1zErtmM,245
|
|
13
|
+
mx_bluesky/beamlines/i24/serial/dcid.py,sha256=iT2mXcS7bG1rQ1l_VlENNh47vsB0CwxRar8I_BHD4AA,14486
|
|
14
|
+
mx_bluesky/beamlines/i24/serial/log.py,sha256=oK7HHjIeuiWdy1vNZL6p-mU8Y3kzeCAgsifCxhAYqOQ,4799
|
|
15
|
+
mx_bluesky/beamlines/i24/serial/run_extruder.sh,sha256=FXYsqdTpVgxB1-QrY4Tg5pl5Ex7PgUoXnuAcr9iDZTE,1078
|
|
16
|
+
mx_bluesky/beamlines/i24/serial/run_fixed_target.sh,sha256=ZzxcVFoitBRvcqsJaBxjtepgkG-ZCGBW6X9xuV_Y478,1229
|
|
17
|
+
mx_bluesky/beamlines/i24/serial/run_serial.py,sha256=Zrudosavh2HnnBXd2CLtOPs3lyQFxaN8YyO_sradRGs,1511
|
|
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=wb9tQwiWL5BH_XgLH-S9TS5_M2WYMasZzyOiiwjG5z8,3950
|
|
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=R4Y6axJjULq9ejdRCymNABiAty-uTaZRES5cs8c0-XI,18833
|
|
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=JaS-PvAHEOqHRuH3LbdpOk2T-TlO8Enq_uwzokQXzZU,31349
|
|
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=puO1vg0x-TPgv8FbEFg73ohJqbwDpcG50_2cLUTa2FA,1210
|
|
29
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py,sha256=NgeorAKdXxYDFEkcy4jAq2CFNdqDT--TWSul4bsGkw4,26154
|
|
30
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py,sha256=DbdkQkZFkhGDzi_Xcu1YB2LqHzsQyf-RubphIDbQe4k,33196
|
|
31
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py,sha256=Vokr_Gl_lpqcUwG18C2h8TYMmyTx1HmUSDd9zgR9-7M,3275
|
|
32
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py,sha256=qciUnif6yd5KwJ8_XvRgafHJOFnzJIMg5Bwfjp0VOzw,6418
|
|
33
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl,sha256=H9BVU1S3oy8tAVHtKvJvp7YTHA-4X-jtOtiu3jJ7of4,10348
|
|
34
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl,sha256=WBji5SaRQ5e0KFRgrPuv6IgaFxkal1jh7MZW8SqQN88,2016
|
|
35
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl,sha256=-O_kRA5-m741Mja8OXQlGJWrRu9uBUkTvJ_uqUBjuFY,56616
|
|
36
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl,sha256=cpKpXfU668mGjIz35jUMTF8KAi0RI7WlVO2AR-EnJ8U,60868
|
|
37
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl,sha256=LI6Z5J1ugny0hX3NrfKx0CC3QdfnohokxYwcyPW-6XU,38124
|
|
38
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl,sha256=2KUy2iEcX9AC07zSH3Sp97b5qauGIm8_HjvoQ4pkyCU,1417
|
|
39
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl,sha256=o2PDoIFzeErIUijDbGdfWdrh3wd5GFAqEsDD2at2a4k,1601
|
|
40
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl,sha256=8TWQTIBnX3OLa1kjsibsCnG5wCVotPYIOHwFam7rJe4,14679
|
|
41
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl,sha256=IgLLF7gcNoG8Z4t9FTA7_4ggUccNm6-ekK5bb0V4ekY,15711
|
|
42
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl,sha256=CrCo1nSIzT3OcSy4OXq1vu4lz5OvI4U8-yl-ruQ57m4,22665
|
|
43
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short1-laser.png,sha256=wDNuKCa_8hUPy4W01vdIrfdZtCyQKT8qVS5AS6kOTmo,9740
|
|
44
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short2-laser.png,sha256=MrdiCFX7j-ODkfSdzc4NQ_8hj2Gs8i9gQqWyNXvdM5s,10189
|
|
45
|
+
mx_bluesky/beamlines/i24/serial/parameters/__init__.py,sha256=fdXGnTxNRyWV1cqVv8lQmwhUpUWDoz_VIRlo6KGwvS4,615
|
|
46
|
+
mx_bluesky/beamlines/i24/serial/parameters/constants.py,sha256=oFneLWl70pmA9Q9mrsFga_F0EtkFgoQRDPKg-Udhog8,1815
|
|
47
|
+
mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py,sha256=n6nRgycKMp5GuxwNoU30CP9enW7vTtTKHKIcIOH9ABY,4879
|
|
48
|
+
mx_bluesky/beamlines/i24/serial/parameters/utils.py,sha256=VcCEBjC8WSrf85Q20A6dwnsy4IxvjcB4JSlbYKz_CVM,2673
|
|
49
|
+
mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json,sha256=xT3y7SSWjVTAJ58dzwNnEgBdn10A6T8umR18n5xt508,142
|
|
50
|
+
mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt,sha256=oIPpcQpqCrKz5dPZ-qQ5gQ2Sdqtj6nsnf66pN8PGU50,199
|
|
51
|
+
mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar,sha256=SN4deU199dMcA1Bcx1BF6CBMvoSszxJWZC6vt7_5fHc,284
|
|
52
|
+
mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar,sha256=pZbFOEiN_S5yiTEtqdNHmTMtnQY-W2ImXVBYCovPCx0,1842
|
|
53
|
+
mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py,sha256=UhBdMcPdJMzwV0d8DKOBzvYNd6TDSwcP9GJVqfGa7Jc,261
|
|
54
|
+
mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py,sha256=H2gPmsLheYReFlGPFa5zzWbnyqdWbCmgKiAwcpVoYfk,1516
|
|
55
|
+
mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py,sha256=aYgIKeBck2wliQyLq-uukuPiyN7WTkNutLAM6ys3WuM,15623
|
|
56
|
+
mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py,sha256=WbD5ghgTG0F3-MR0XYm4nkiKYswVP5a2COYx_k_cngE,1806
|
|
57
|
+
mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py,sha256=25kO1JXPl3OVSUf1G4RdcM6ZXbfduskEaDIbZN2xIE8,20595
|
|
58
|
+
mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py,sha256=riBXkgAg3lV6dqoCng_3IF8ZfhwvOHf0zqktJC0rfn0,3241
|
|
59
|
+
mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py,sha256=2e0pWs_ZrGDzp-tnfSE9XdurFH1K9rvh_1-bNY3U0yA,18078
|
|
60
|
+
mx_bluesky/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
|
+
mx_bluesky/common/device_setup_plans/read_hardware_for_setup.py,sha256=P018shGBEdO0QWBufwITOk3p-sPUCy4P6UIkf6aUuho,583
|
|
62
|
+
mx_bluesky/common/external_interaction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
|
+
mx_bluesky/common/external_interaction/config_server.py,sha256=EmvLfOkvoJlnKa0sffAKNICkY26YsQQqY9sYHKmOGzw,2441
|
|
64
|
+
mx_bluesky/common/external_interaction/test_config_server.py,sha256=4wdYsOpXJfc3yNBZvdcjZGSllOHzKBTB8oYFjjSOufU,960
|
|
65
|
+
mx_bluesky/common/external_interaction/callbacks/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
66
|
+
mx_bluesky/common/external_interaction/callbacks/common/abstract_event.py,sha256=iBj4WNK5ikieZzTePBZ9AEu6ehlnpew1nDK3ONJqibI,2093
|
|
67
|
+
mx_bluesky/common/external_interaction/callbacks/common/aperture_change_callback.py,sha256=vrURLPOri400hQcNPyHomXBBapZ_FTRa_axvZpxmMCQ,841
|
|
68
|
+
mx_bluesky/common/external_interaction/callbacks/common/grid_detection_callback.py,sha256=JmF5FssUqNPgsnxqrgxB9Pmw5Dd7W6GCPb9Mur8DHCo,4017
|
|
69
|
+
mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py,sha256=Hfjw-HVRmelVkWOKiuC28E3Wa9O-iX-9v4Jm4J5_DH4,9832
|
|
70
|
+
mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py,sha256=n4HUDvJyBmX4pmc0JAFI_pSxYbOL6QFKv2NxH3WF_Ac,2576
|
|
71
|
+
mx_bluesky/common/external_interaction/callbacks/common/log_uid_tag_callback.py,sha256=pfZxQfS9SnXep3F2YAPptDX5bjjWvbXtgy5fINfsoTU,626
|
|
72
|
+
mx_bluesky/common/external_interaction/callbacks/common/logging_callback.py,sha256=NHb8Gp86TAk6PRTV3inWrlW-Lj96LmnZda7ZGewlrFA,712
|
|
73
|
+
mx_bluesky/common/external_interaction/callbacks/common/plan_reactive_callback.py,sha256=7UtkXZluAag_Mx_JnESd7ODPSN3WrcNCgN8mquIpxjE,4086
|
|
74
|
+
mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py,sha256=fF17sDt58h3ZbgxQr5P4jzLM1149iEDw8XsF2yiOd6Q,4085
|
|
75
|
+
mx_bluesky/common/external_interaction/callbacks/xray_centre/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
|
+
mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py,sha256=sHtc45hKAmxjZRlm4jKwqqoo1AiwgueO74p99Qv7vRU,11835
|
|
77
|
+
mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py,sha256=dQicTEZ0qvUTkcRnegc4eHBTdQ0EaxdewJCvaZKlftw,1818
|
|
78
|
+
mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py,sha256=g9ovYSnb6-bB4RqG1KKuzpAArK-d80DPYTKZ6rDzQOQ,4687
|
|
79
|
+
mx_bluesky/common/external_interaction/ispyb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
80
|
+
mx_bluesky/common/external_interaction/ispyb/data_model.py,sha256=WURy8W0L4VAULzz39lTW6kYpFDLDiGU2aYO28dq-4II,2706
|
|
81
|
+
mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py,sha256=FWc9MnBdPCvMZ6sd40ByZoR_yC98IC1SvOGvvoJfZnY,5933
|
|
82
|
+
mx_bluesky/common/external_interaction/ispyb/ispyb_store.py,sha256=V809aPFftVKzwk3AbFKolmjFo2CqsLwOMqqj1X_lCgc,10394
|
|
83
|
+
mx_bluesky/common/external_interaction/ispyb/ispyb_utils.py,sha256=Kv0JQVaT8z9Qzt6L1NJEx0U7ZYD6NeyBGF1_wGcI1Dc,728
|
|
84
|
+
mx_bluesky/common/external_interaction/nexus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
85
|
+
mx_bluesky/common/external_interaction/nexus/nexus_utils.py,sha256=CCKQeDBEmXZvCwBy1-o5hQ6CDdwsnuAwlIK_uq0I26Y,5587
|
|
86
|
+
mx_bluesky/common/external_interaction/nexus/write_nexus.py,sha256=tIz9PFFSiaUs1olbMtLGHddTLj132rEuFSWBK9rOM6Y,4087
|
|
87
|
+
mx_bluesky/common/parameters/components.py,sha256=xbk5IPQfuhd5CW9XcwdUvhogkaTGHwj9YLphlXMBSKY,7337
|
|
88
|
+
mx_bluesky/common/parameters/constants.py,sha256=lO8N8XSwE9-lr4r-Q-N7dGd11pZDAQRZHlotqPi8T70,4045
|
|
89
|
+
mx_bluesky/common/parameters/gridscan.py,sha256=FQgrC8INTZ_XI6M-8q77lOig6Y7O0-sLCX2EyLSpOLQ,5462
|
|
90
|
+
mx_bluesky/common/plans/__init__.py,sha256=FMA-4VN1TJCPcyURKF0qPIQ8uo8YBbtHPRdJokVF4MA,129
|
|
91
|
+
mx_bluesky/common/plans/do_fgs.py,sha256=mCQ6cPwU5PbFtvZr1lDJafjXKQkG2eKEo0pydqp3P0M,5095
|
|
92
|
+
mx_bluesky/common/utils/exceptions.py,sha256=xz82au833TDI1wMu738l81kBFlXBTVB4-360N-05e84,2063
|
|
93
|
+
mx_bluesky/common/utils/log.py,sha256=ZgFZu6zSutGD5A0FDp_n9M0rJ6gU1FuZCmD-r5suchY,3913
|
|
94
|
+
mx_bluesky/common/utils/tracing.py,sha256=stnBZIvPuKiAm2wVc8lFr3ns7V5C52rUigULi9V-IFs,1171
|
|
95
|
+
mx_bluesky/common/utils/utils.py,sha256=q2uCaK1E8zLVk1BFmj7qlTnQf3JRKjCjyadIVnL1-4M,1180
|
|
96
|
+
mx_bluesky/hyperion/__init__.py,sha256=f4E8wInL1Ll4eeFtAiyKmipOBTPlUtKmVK-m_LOQG4M,35
|
|
97
|
+
mx_bluesky/hyperion/__main__.py,sha256=-bzpCpTYXCIY8ZLNsXtNd9zLpQEF-Q8WMUvyNOHQP0k,13780
|
|
98
|
+
mx_bluesky/hyperion/device_setup_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
99
|
+
mx_bluesky/hyperion/device_setup_plans/check_beamstop.py,sha256=PG2AXIB_z7U0glz9MTHkapaokMgrHyYSoKYSIGaRgLE,844
|
|
100
|
+
mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py,sha256=68L4Fd8nvvH_VeQJfOYK_3WLrlKRt09TRsaA9T2uqU0,4703
|
|
101
|
+
mx_bluesky/hyperion/device_setup_plans/manipulate_sample.py,sha256=fuNRH8slknuZ0iNVv2htiuDozc9LzvxUrWuwYQTtLt8,3293
|
|
102
|
+
mx_bluesky/hyperion/device_setup_plans/position_detector.py,sha256=S49ml0KNZ6wXPQqOxNJ2whKTCyRTcKdBXBhyeEyFDQQ,635
|
|
103
|
+
mx_bluesky/hyperion/device_setup_plans/read_hardware_for_setup.py,sha256=kcnUmbQAyNZvixXtQDW40m3pORJgvSo0q1OHM-uO-iM,2225
|
|
104
|
+
mx_bluesky/hyperion/device_setup_plans/setup_oav.py,sha256=pIXLM3FKpf7wYMEiEAOaGTm504XAt5N7nuuu9kKraBk,2914
|
|
105
|
+
mx_bluesky/hyperion/device_setup_plans/setup_panda.py,sha256=bfFQG4PNE9hhjYgUykB-Ps5K1VzDQAK0YwRYC6BpkT8,8292
|
|
106
|
+
mx_bluesky/hyperion/device_setup_plans/setup_zebra.py,sha256=-aHDVgyX1oHOV_nwC3AetIvZ2VnpZcCJI4V5n3Xzj70,10317
|
|
107
|
+
mx_bluesky/hyperion/device_setup_plans/smargon.py,sha256=Tsl-wsExNopwCAEUtUgZyDUos4uhOwJ9SJ2WJRawflg,1209
|
|
108
|
+
mx_bluesky/hyperion/device_setup_plans/utils.py,sha256=CAsJXGmL_Gq6HsvPJ8mdQ7r2lAHf2SF72-LEqHr4-JM,2146
|
|
109
|
+
mx_bluesky/hyperion/device_setup_plans/xbpm_feedback.py,sha256=JgOqnPnG-zXrek1w_M_oEQPc1IET3nHeeeVDZhPXIAk,4058
|
|
110
|
+
mx_bluesky/hyperion/experiment_plans/__init__.py,sha256=3ldTMxgz4yKHJH9iF3nw7uueyX2zQ5Z84V0dsCzW5us,1081
|
|
111
|
+
mx_bluesky/hyperion/experiment_plans/change_aperture_then_move_plan.py,sha256=U-KOA8o5DLeViIVsFkYhUvDmzxUBMXFqXWzzcdljdd4,3690
|
|
112
|
+
mx_bluesky/hyperion/experiment_plans/experiment_registry.py,sha256=Y8MKAxsJ_hax_5Q4UzkN0SAPuXaRgMlSCPu8OZxgjNE,3090
|
|
113
|
+
mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py,sha256=ngz3HzwA8_eZK_ovy2xplem_iwV1ifFQbpjFi2eyTuk,19120
|
|
114
|
+
mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py,sha256=jlrSEtCkeYLQ1Sf32Gby0fdJyETyU1l4uhMOMMfA148,8218
|
|
115
|
+
mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py,sha256=Yn3lOcy6pLO-GSoBMU5QzqiMzyBTG7LIDPF8DppiKUM,4117
|
|
116
|
+
mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py,sha256=IP8usGFtY7XCdxZ2RZ63EkYWYjZPpYykjhmF1u27L9g,7652
|
|
117
|
+
mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py,sha256=TfhZjnc_j6sqM7eeAkVNc8KG0O2L-CDjO0xoZWGeCA4,3126
|
|
118
|
+
mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py,sha256=l-bZdKLCd3dyPJP5RUHSm82lGosPX9kI1vJ2FDVPU8o,16197
|
|
119
|
+
mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py,sha256=u6Cc5DU4XYJxmYNdvMw9cWIMWf3ayCt4GUNBnIJfC68,5050
|
|
120
|
+
mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py,sha256=UsZ07G8ac4SXyv9LfH7L9BSnRuO7E1tl_M15meDR5d4,6174
|
|
121
|
+
mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py,sha256=kHymdtXkxm4b6KNEBTG7pNThTg70OQYG8AkCyymmCNs,8768
|
|
122
|
+
mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py,sha256=NoaNddQZ_XV6hOdAFLRNqrmppKxLTjhDXZHx3Lajcmo,7787
|
|
123
|
+
mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py,sha256=JA-6dmB7uhRi7OwgP0GspXiNZK2oo_HmHv4MKoaDLIg,16891
|
|
124
|
+
mx_bluesky/hyperion/experiment_plans/set_energy_plan.py,sha256=m46cVAkGHPQg7gXoTKJB3AGe4nAF-RL24yHLCWmz9S0,1858
|
|
125
|
+
mx_bluesky/hyperion/experiment_plans/common/xrc_result.py,sha256=dZRv4chwnLvg9Z96hFHwcPO-h0L3OgoganYLQptGHoI,1806
|
|
126
|
+
mx_bluesky/hyperion/external_interaction/__init__.py,sha256=95DwXDmKsx36RgAL-AtLZl2LQoLPKbzeYdlkkP_4Coc,559
|
|
127
|
+
mx_bluesky/hyperion/external_interaction/config_server.py,sha256=LWKWxJIEo9QliggwAU8LWVzPQTHXx5bc0KI07Ve6eGE,1311
|
|
128
|
+
mx_bluesky/hyperion/external_interaction/callbacks/__init__.py,sha256=1XHaxDljMveu_DYIlk7n963gHffyC6r4C_RhF6HA-N8,283
|
|
129
|
+
mx_bluesky/hyperion/external_interaction/callbacks/__main__.py,sha256=E3sECBq67EMwc3Q_BE8QSKB8wBp812M7GLTwE7NDsgU,5368
|
|
130
|
+
mx_bluesky/hyperion/external_interaction/callbacks/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
131
|
+
mx_bluesky/hyperion/external_interaction/callbacks/common/callback_util.py,sha256=OZ19hLtgc20qJFqG9opWLctMFFWWZcciHu5smS3xgXQ,2639
|
|
132
|
+
mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py,sha256=7xSvCd95tXjvmsbFLecI1hEwJj_rm8yGuJJ1Pmg-RKU,4142
|
|
133
|
+
mx_bluesky/hyperion/external_interaction/callbacks/rotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
134
|
+
mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py,sha256=XtVjUdipYNqgooovgjvQeSKLlodzOgs7_kjb3wNBh9s,7465
|
|
135
|
+
mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py,sha256=yz2Z_P6qH2DGlSXCi36E3Xwv7mVVcvYzqQc0NqwW4DI,716
|
|
136
|
+
mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py,sha256=w86HvDMznS1wBH3mLYJMe2TgX8SghTYR4G6dajho3Pk,4724
|
|
137
|
+
mx_bluesky/hyperion/external_interaction/callbacks/sample_handling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
138
|
+
mx_bluesky/hyperion/external_interaction/callbacks/sample_handling/sample_handling_callback.py,sha256=IyWawfc0arWXYIzq5CuRwagqlJ36yMA1riM5dw0r9Ig,2117
|
|
139
|
+
mx_bluesky/hyperion/parameters/__init__.py,sha256=kf2wfcILBUBpT0tJ8-W39BywQUkn67yxl9IVsfrr1LE,115
|
|
140
|
+
mx_bluesky/hyperion/parameters/cli.py,sha256=FGzvEB76YnQvBydUMPUNHJuqxvEe7Zc627w7gA2KODY,2125
|
|
141
|
+
mx_bluesky/hyperion/parameters/components.py,sha256=uXxdW6nIE1VZnh4ZXe5O-LOwsx4MbENEWfLGm2ACvsI,313
|
|
142
|
+
mx_bluesky/hyperion/parameters/constants.py,sha256=RVrA1m39HdW5Sm1SR5Sm41YeSPG7GWcfhEomzcBnDhk,1832
|
|
143
|
+
mx_bluesky/hyperion/parameters/gridscan.py,sha256=BTDFKOy0n_lHLTBsFGlgLqCzPvZdt9F85cJDg5IRkKg,6092
|
|
144
|
+
mx_bluesky/hyperion/parameters/load_centre_collect.py,sha256=khLBCSeafuw0dNrvDTvKv4GrlBo1LXJZ87NTI1A92jw,3693
|
|
145
|
+
mx_bluesky/hyperion/parameters/robot_load.py,sha256=DSOwIosO629WoXbVFokEjmgqKZz3xzv0feRQHC_ZgpI,1233
|
|
146
|
+
mx_bluesky/hyperion/parameters/rotation.py,sha256=270m55MCYBFEK2LM5DjVqhnMJC1JupMMX-O4UulBSMc,7518
|
|
147
|
+
mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml,sha256=xrhgok-9X2VXdyLEWiYOUEeRCBqhYM6IJFAefnNdgzw,26521
|
|
148
|
+
mx_bluesky/hyperion/utils/context.py,sha256=vy8D9Ygzdpu6k4teespzc_GL7MLb3AtK5vZkAZkT9UE,2714
|
|
149
|
+
mx_bluesky/hyperion/utils/validation.py,sha256=kBxqr-Ue_iv4zGpU3rfNdG0UACXgbQdHAVZssryEqDI,6567
|
|
150
|
+
mx_bluesky-1.4.3.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
151
|
+
mx_bluesky-1.4.3.dist-info/METADATA,sha256=koPaf0l5CIOp-WwXKPrCZKAjT9twvrmq4bPGtFFHfUU,17262
|
|
152
|
+
mx_bluesky-1.4.3.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
153
|
+
mx_bluesky-1.4.3.dist-info/entry_points.txt,sha256=Bt3iHCqzZtHYnnSKoh_qM2k3K4LbK1Uxr0gF8B34F98,528
|
|
154
|
+
mx_bluesky-1.4.3.dist-info/top_level.txt,sha256=S4rrzXIUef58ulf_04wn01XGZ3xeJjXs4LPEJ_xoF-I,11
|
|
155
|
+
mx_bluesky-1.4.3.dist-info/RECORD,,
|