mx-bluesky 1.5.8__py3-none-any.whl → 1.5.10__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/experiment_plans/i04_grid_detect_then_xray_centre_plan.py +35 -12
- mx_bluesky/beamlines/i24/jungfrau_commissioning/experiment_plans/__init__.py +0 -0
- mx_bluesky/beamlines/i24/jungfrau_commissioning/experiment_plans/do_darks.py +78 -0
- mx_bluesky/beamlines/i24/jungfrau_commissioning/plan_stubs/__init__.py +1 -0
- mx_bluesky/beamlines/i24/jungfrau_commissioning/{do_external_acquisition.py → plan_stubs/do_external_acquisition.py} +7 -6
- mx_bluesky/beamlines/i24/jungfrau_commissioning/{do_internal_acquisition.py → plan_stubs/do_internal_acquisition.py} +4 -3
- mx_bluesky/beamlines/i24/jungfrau_commissioning/{plan_utils.py → plan_stubs/plan_utils.py} +21 -28
- mx_bluesky/common/device_setup_plans/__init__.py +0 -0
- mx_bluesky/common/device_setup_plans/manipulate_sample.py +2 -2
- mx_bluesky/common/device_setup_plans/robot_load_unload.py +10 -6
- mx_bluesky/common/device_setup_plans/setup_oav.py +1 -1
- mx_bluesky/common/device_setup_plans/setup_zebra_and_shutter.py +245 -0
- mx_bluesky/common/device_setup_plans/xbpm_feedback.py +4 -4
- mx_bluesky/common/experiment_plans/common_flyscan_xray_centre_plan.py +10 -22
- mx_bluesky/common/experiment_plans/inner_plans/__init__.py +0 -0
- mx_bluesky/common/experiment_plans/inner_plans/do_fgs.py +5 -3
- mx_bluesky/common/experiment_plans/inner_plans/read_hardware.py +3 -3
- mx_bluesky/common/experiment_plans/oav_grid_detection_plan.py +2 -2
- mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py +4 -3
- mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py +34 -25
- mx_bluesky/common/parameters/device_composites.py +2 -2
- mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +2 -100
- mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py +13 -12
- mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +52 -38
- mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +2 -2
- mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +5 -3
- mx_bluesky/hyperion/external_interaction/callbacks/alert_on_container_change.py +14 -5
- mx_bluesky/hyperion/external_interaction/callbacks/robot_actions/__init__.py +0 -0
- mx_bluesky/hyperion/parameters/device_composites.py +2 -2
- mx_bluesky/hyperion/parameters/rotation.py +4 -6
- mx_bluesky/hyperion/utils/context.py +6 -1
- {mx_bluesky-1.5.8.dist-info → mx_bluesky-1.5.10.dist-info}/METADATA +4 -4
- {mx_bluesky-1.5.8.dist-info → mx_bluesky-1.5.10.dist-info}/RECORD +39 -33
- mx_bluesky/phase1_zebra/device_setup_plans/setup_zebra.py +0 -112
- /mx_bluesky/{common/experiment_plans/inner_plans/__init__ .py → beamlines/i04/callbacks/__init__.py} +0 -0
- {mx_bluesky-1.5.8.dist-info → mx_bluesky-1.5.10.dist-info}/WHEEL +0 -0
- {mx_bluesky-1.5.8.dist-info → mx_bluesky-1.5.10.dist-info}/entry_points.txt +0 -0
- {mx_bluesky-1.5.8.dist-info → mx_bluesky-1.5.10.dist-info}/licenses/LICENSE +0 -0
- {mx_bluesky-1.5.8.dist-info → mx_bluesky-1.5.10.dist-info}/top_level.txt +0 -0
|
@@ -10,6 +10,10 @@ from dodal.devices.fast_grid_scan import (
|
|
|
10
10
|
set_fast_grid_scan_params,
|
|
11
11
|
)
|
|
12
12
|
|
|
13
|
+
from mx_bluesky.common.device_setup_plans.setup_zebra_and_shutter import (
|
|
14
|
+
setup_zebra_for_gridscan,
|
|
15
|
+
tidy_up_zebra_after_gridscan,
|
|
16
|
+
)
|
|
13
17
|
from mx_bluesky.common.experiment_plans.common_flyscan_xray_centre_plan import (
|
|
14
18
|
construct_beamline_specific_FGS_features,
|
|
15
19
|
)
|
|
@@ -29,10 +33,6 @@ from mx_bluesky.hyperion.parameters.device_composites import (
|
|
|
29
33
|
HyperionFlyScanXRayCentreComposite,
|
|
30
34
|
)
|
|
31
35
|
from mx_bluesky.hyperion.parameters.gridscan import HyperionSpecifiedThreeDGridScan
|
|
32
|
-
from mx_bluesky.phase1_zebra.device_setup_plans.setup_zebra import (
|
|
33
|
-
setup_zebra_for_gridscan,
|
|
34
|
-
tidy_up_zebra_after_gridscan,
|
|
35
|
-
)
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
class SmargonSpeedException(Exception):
|
|
@@ -78,7 +78,9 @@ def construct_hyperion_specific_features(
|
|
|
78
78
|
fgs_motors = xrc_composite.panda_fast_grid_scan
|
|
79
79
|
|
|
80
80
|
else:
|
|
81
|
-
setup_trigger_plan =
|
|
81
|
+
setup_trigger_plan = partial(
|
|
82
|
+
setup_zebra_for_gridscan,
|
|
83
|
+
)
|
|
82
84
|
tidy_plan = partial(
|
|
83
85
|
tidy_up_zebra_after_gridscan,
|
|
84
86
|
xrc_composite.zebra,
|
|
@@ -110,8 +112,8 @@ def _panda_tidy(xrc_composite: HyperionFlyScanXRayCentreComposite):
|
|
|
110
112
|
yield from tidy_up_zebra_after_gridscan(
|
|
111
113
|
xrc_composite.zebra, xrc_composite.sample_shutter, group=group, wait=False
|
|
112
114
|
)
|
|
115
|
+
yield from bps.unstage(xrc_composite.panda, group=group)
|
|
113
116
|
yield from bps.wait(group, timeout=10)
|
|
114
|
-
yield from bps.unstage(xrc_composite.panda)
|
|
115
117
|
|
|
116
118
|
|
|
117
119
|
def _panda_triggering_setup(
|
|
@@ -124,10 +126,9 @@ def _panda_triggering_setup(
|
|
|
124
126
|
xrc_composite.panda_fast_grid_scan.run_up_distance_mm
|
|
125
127
|
)
|
|
126
128
|
|
|
127
|
-
#
|
|
128
|
-
DEADTIME_S = 1e-6 # according to https://www.dectris.com/en/detectors/x-ray-detectors/eiger2/eiger2-for-synchrotrons/eiger2-x/
|
|
129
|
+
DETECTOR_DEADTIME_S = 1e-4 # This value was empirically found to be safer than the documented deadtime in the Eiger manual
|
|
129
130
|
|
|
130
|
-
time_between_x_steps_ms = (
|
|
131
|
+
time_between_x_steps_ms = (DETECTOR_DEADTIME_S + parameters.exposure_time_s) * 1e3
|
|
131
132
|
|
|
132
133
|
smargon_speed_limit_mm_per_s = yield from bps.rd(
|
|
133
134
|
xrc_composite.smargon.x.max_velocity
|
|
@@ -146,13 +147,13 @@ def _panda_triggering_setup(
|
|
|
146
147
|
)
|
|
147
148
|
else:
|
|
148
149
|
LOGGER.info(
|
|
149
|
-
f"Panda grid scan: Smargon speed set to {
|
|
150
|
+
f"Panda grid scan: Smargon speed set to {sample_velocity_mm_per_s} mm/s"
|
|
150
151
|
f" and using a run-up distance of {run_up_distance_mm}"
|
|
151
152
|
)
|
|
152
153
|
|
|
153
154
|
yield from bps.mv(
|
|
154
|
-
xrc_composite.panda_fast_grid_scan.time_between_x_steps_ms,
|
|
155
|
-
time_between_x_steps_ms,
|
|
155
|
+
xrc_composite.panda_fast_grid_scan.time_between_x_steps_ms,
|
|
156
|
+
time_between_x_steps_ms,
|
|
156
157
|
)
|
|
157
158
|
|
|
158
159
|
directory_provider_root = Path(parameters.storage_directory)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from collections.abc import Generator
|
|
3
|
+
from collections.abc import Generator, Sequence
|
|
4
4
|
|
|
5
5
|
import bluesky.plan_stubs as bps
|
|
6
6
|
import numpy as np
|
|
@@ -99,41 +99,12 @@ def load_centre_collect_full(
|
|
|
99
99
|
else:
|
|
100
100
|
raise
|
|
101
101
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
if flyscan_event_handler.xray_centre_results:
|
|
106
|
-
selection_func = flyscan_result.resolve_selection_fn(
|
|
107
|
-
parameters.selection_params
|
|
108
|
-
)
|
|
109
|
-
hits = selection_func(flyscan_event_handler.xray_centre_results)
|
|
110
|
-
hits_to_collect = []
|
|
111
|
-
for hit in hits:
|
|
112
|
-
if hit.sample_id is None:
|
|
113
|
-
LOGGER.warning(
|
|
114
|
-
f"Diffracting centre {hit} not collected because no sample id was assigned."
|
|
115
|
-
)
|
|
116
|
-
else:
|
|
117
|
-
hits_to_collect.append(hit)
|
|
118
|
-
|
|
119
|
-
locations_to_collect_um = [
|
|
120
|
-
hit.centre_of_mass_mm * 1000 for hit in hits_to_collect
|
|
121
|
-
]
|
|
122
|
-
samples_to_collect = [hit.sample_id for hit in hits_to_collect]
|
|
123
|
-
LOGGER.info(
|
|
124
|
-
f"Selected hits {hits_to_collect} using {selection_func}, args={parameters.selection_params}"
|
|
102
|
+
sample_ids_and_locations = yield from (
|
|
103
|
+
_samples_and_locations_to_collect(
|
|
104
|
+
flyscan_event_handler.xray_centre_results, parameters, composite
|
|
125
105
|
)
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
# means that we do not need to recentre and can collect where we are
|
|
129
|
-
initial_x_mm = yield from bps.rd(composite.smargon.x.user_readback)
|
|
130
|
-
initial_y_mm = yield from bps.rd(composite.smargon.y.user_readback)
|
|
131
|
-
initial_z_mm = yield from bps.rd(composite.smargon.z.user_readback)
|
|
132
|
-
|
|
133
|
-
locations_to_collect_um = [
|
|
134
|
-
np.array([initial_x_mm, initial_y_mm, initial_z_mm]) * 1000
|
|
135
|
-
]
|
|
136
|
-
samples_to_collect = [parameters.sample_id]
|
|
106
|
+
)
|
|
107
|
+
sample_ids_and_locations.sort(key=_x_coordinate)
|
|
137
108
|
|
|
138
109
|
multi_rotation = parameters.multi_rotation_scan
|
|
139
110
|
rotation_template = multi_rotation.rotation_scans.copy()
|
|
@@ -144,9 +115,7 @@ def load_centre_collect_full(
|
|
|
144
115
|
|
|
145
116
|
generator = rotation_scan_generator(is_alternating)
|
|
146
117
|
next(generator)
|
|
147
|
-
for
|
|
148
|
-
locations_to_collect_um, samples_to_collect, strict=True
|
|
149
|
-
):
|
|
118
|
+
for sample_id, location in sample_ids_and_locations:
|
|
150
119
|
for rot in rotation_template:
|
|
151
120
|
combination = generator.send((rot, location, sample_id))
|
|
152
121
|
multi_rotation.rotation_scans.append(combination)
|
|
@@ -161,6 +130,51 @@ def load_centre_collect_full(
|
|
|
161
130
|
yield from plan_with_callback_subs()
|
|
162
131
|
|
|
163
132
|
|
|
133
|
+
def _samples_and_locations_to_collect(
|
|
134
|
+
xrc_results: Sequence[flyscan_result.XRayCentreResult] | None,
|
|
135
|
+
parameters: LoadCentreCollect,
|
|
136
|
+
composite: LoadCentreCollectComposite,
|
|
137
|
+
) -> MsgGenerator[list[tuple[int, np.ndarray]]]:
|
|
138
|
+
if xrc_results:
|
|
139
|
+
selection_func = flyscan_result.resolve_selection_fn(
|
|
140
|
+
parameters.selection_params
|
|
141
|
+
)
|
|
142
|
+
hits = selection_func(xrc_results)
|
|
143
|
+
hits_to_collect = []
|
|
144
|
+
for hit in hits:
|
|
145
|
+
if hit.sample_id is None:
|
|
146
|
+
LOGGER.warning(
|
|
147
|
+
f"Diffracting centre {hit} not collected because no sample id was assigned."
|
|
148
|
+
)
|
|
149
|
+
else:
|
|
150
|
+
hits_to_collect.append(hit)
|
|
151
|
+
|
|
152
|
+
samples_and_locations = [
|
|
153
|
+
(hit.sample_id, hit.centre_of_mass_mm * 1000) for hit in hits_to_collect
|
|
154
|
+
]
|
|
155
|
+
LOGGER.info(
|
|
156
|
+
f"Selected hits {hits_to_collect} using {selection_func}, args={parameters.selection_params}"
|
|
157
|
+
)
|
|
158
|
+
return samples_and_locations
|
|
159
|
+
else:
|
|
160
|
+
# If the xray centring hasn't found a result but has not thrown an error it
|
|
161
|
+
# means that we do not need to recentre and can collect where we are
|
|
162
|
+
initial_x_mm = yield from bps.rd(composite.smargon.x.user_readback)
|
|
163
|
+
initial_y_mm = yield from bps.rd(composite.smargon.y.user_readback)
|
|
164
|
+
initial_z_mm = yield from bps.rd(composite.smargon.z.user_readback)
|
|
165
|
+
|
|
166
|
+
return [
|
|
167
|
+
(
|
|
168
|
+
parameters.sample_id,
|
|
169
|
+
np.array([initial_x_mm, initial_y_mm, initial_z_mm]) * 1000,
|
|
170
|
+
)
|
|
171
|
+
]
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
def _x_coordinate(sample_and_location: tuple[int, np.ndarray]) -> float:
|
|
175
|
+
return sample_and_location[1][0] # type: ignore
|
|
176
|
+
|
|
177
|
+
|
|
164
178
|
def rotation_scan_generator(
|
|
165
179
|
is_alternating: bool,
|
|
166
180
|
) -> Generator[
|
|
@@ -9,7 +9,7 @@ from dodal.devices.oav.oav_detector import OAV
|
|
|
9
9
|
from dodal.devices.oav.oav_parameters import OAV_CONFIG_JSON, OAVParameters
|
|
10
10
|
from dodal.devices.oav.pin_image_recognition import PinTipDetection, Tip
|
|
11
11
|
from dodal.devices.oav.utils import (
|
|
12
|
-
|
|
12
|
+
PinNotFoundError,
|
|
13
13
|
Pixel,
|
|
14
14
|
get_move_required_so_that_beam_is_at_pixel,
|
|
15
15
|
wait_for_tip_to_be_found,
|
|
@@ -161,6 +161,6 @@ def pin_tip_centre_plan(
|
|
|
161
161
|
# See #673 for improvements
|
|
162
162
|
yield from bps.sleep(0.3)
|
|
163
163
|
tip = yield from catch_exception_and_warn(
|
|
164
|
-
|
|
164
|
+
PinNotFoundError, wait_for_tip_to_be_found, pin_tip_detect
|
|
165
165
|
)
|
|
166
166
|
yield from offset_and_move(tip)
|
|
@@ -34,6 +34,10 @@ from mx_bluesky.common.device_setup_plans.manipulate_sample import (
|
|
|
34
34
|
cleanup_sample_environment,
|
|
35
35
|
setup_sample_environment,
|
|
36
36
|
)
|
|
37
|
+
from mx_bluesky.common.device_setup_plans.setup_zebra_and_shutter import (
|
|
38
|
+
setup_zebra_for_rotation,
|
|
39
|
+
tidy_up_zebra_after_rotation_scan,
|
|
40
|
+
)
|
|
37
41
|
from mx_bluesky.common.device_setup_plans.utils import (
|
|
38
42
|
start_preparing_data_collection_then_do_plan,
|
|
39
43
|
)
|
|
@@ -55,8 +59,6 @@ from mx_bluesky.common.utils.context import device_composite_from_context
|
|
|
55
59
|
from mx_bluesky.common.utils.log import LOGGER
|
|
56
60
|
from mx_bluesky.hyperion.device_setup_plans.setup_zebra import (
|
|
57
61
|
arm_zebra,
|
|
58
|
-
setup_zebra_for_rotation,
|
|
59
|
-
tidy_up_zebra_after_rotation_scan,
|
|
60
62
|
)
|
|
61
63
|
from mx_bluesky.hyperion.parameters.constants import CONST, I03Constants
|
|
62
64
|
from mx_bluesky.hyperion.parameters.rotation import (
|
|
@@ -426,7 +428,7 @@ def rotation_scan_internal(
|
|
|
426
428
|
|
|
427
429
|
yield from rotation_scan_core(single_scan)
|
|
428
430
|
|
|
429
|
-
yield from bps.unstage(eiger)
|
|
431
|
+
yield from bps.unstage(eiger, wait=True)
|
|
430
432
|
|
|
431
433
|
LOGGER.info("setting up and staging eiger...")
|
|
432
434
|
yield from start_preparing_data_collection_then_do_plan(
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from dodal.utils import get_beamline_name
|
|
2
|
-
from event_model import Event, EventDescriptor, RunStart
|
|
2
|
+
from event_model import Event, EventDescriptor, RunStart, RunStop
|
|
3
3
|
|
|
4
4
|
from mx_bluesky.common.external_interaction.alerting import (
|
|
5
5
|
Metadata,
|
|
@@ -48,7 +48,16 @@ class AlertOnContainerChange(PlanReactiveCallback):
|
|
|
48
48
|
return doc
|
|
49
49
|
|
|
50
50
|
def activity_gated_start(self, doc: RunStart):
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
if not self._sample_id:
|
|
52
|
+
ISPYB_ZOCALO_CALLBACK_LOGGER.info("Capturing container info for alerts")
|
|
53
|
+
metadata = doc.get("metadata", {})
|
|
54
|
+
self._new_container = metadata.get("container")
|
|
55
|
+
self._sample_id = metadata.get("sample_id")
|
|
56
|
+
self._visit = metadata.get("visit")
|
|
57
|
+
|
|
58
|
+
def activity_gated_stop(self, doc: RunStop):
|
|
59
|
+
if not self.active:
|
|
60
|
+
ISPYB_ZOCALO_CALLBACK_LOGGER.info("Resetting state")
|
|
61
|
+
self._new_container = None
|
|
62
|
+
self._sample_id = None
|
|
63
|
+
self._visit = None
|
|
File without changes
|
|
@@ -6,7 +6,7 @@ from dodal.devices.aperturescatterguard import (
|
|
|
6
6
|
)
|
|
7
7
|
from dodal.devices.attenuator.attenuator import BinaryFilterAttenuator
|
|
8
8
|
from dodal.devices.backlight import Backlight
|
|
9
|
-
from dodal.devices.common_dcm import
|
|
9
|
+
from dodal.devices.common_dcm import DoubleCrystalMonochromatorWithDSpacing
|
|
10
10
|
from dodal.devices.eiger import EigerDetector
|
|
11
11
|
from dodal.devices.fast_grid_scan import (
|
|
12
12
|
PandAFastGridScan,
|
|
@@ -37,7 +37,7 @@ class HyperionFlyScanXRayCentreComposite(FlyScanEssentialDevices):
|
|
|
37
37
|
|
|
38
38
|
aperture_scatterguard: ApertureScatterguard
|
|
39
39
|
attenuator: BinaryFilterAttenuator
|
|
40
|
-
dcm:
|
|
40
|
+
dcm: DoubleCrystalMonochromatorWithDSpacing
|
|
41
41
|
eiger: EigerDetector
|
|
42
42
|
flux: Flux
|
|
43
43
|
s4_slit_gaps: S4SlitGaps
|
|
@@ -150,14 +150,12 @@ class RotationScan(RotationExperiment, SplitScan):
|
|
|
150
150
|
return rotation_scan
|
|
151
151
|
|
|
152
152
|
@model_validator(mode="after")
|
|
153
|
-
|
|
154
|
-
def correct_start_vds(cls, values: Any) -> Any:
|
|
155
|
-
assert isinstance(values, RotationScan)
|
|
153
|
+
def correct_start_vds(self) -> Any:
|
|
156
154
|
start_img = 0.0
|
|
157
|
-
for scan in
|
|
155
|
+
for scan in self.rotation_scans:
|
|
158
156
|
scan.nexus_vds_start_img = int(start_img)
|
|
159
|
-
start_img += scan.scan_width_deg /
|
|
160
|
-
return
|
|
157
|
+
start_img += scan.scan_width_deg / self.rotation_increment_deg
|
|
158
|
+
return self
|
|
161
159
|
|
|
162
160
|
@model_validator(mode="after")
|
|
163
161
|
def _check_valid_for_single_arm_multiple_sweep(self) -> Self:
|
|
@@ -27,7 +27,12 @@ def clear_all_device_caches(context: BlueskyContext):
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
def setup_devices(context: BlueskyContext, dev_mode: bool):
|
|
30
|
-
context.with_dodal_module(
|
|
30
|
+
_, exceptions = context.with_dodal_module(
|
|
31
31
|
get_beamline_based_on_environment_variable(),
|
|
32
32
|
mock=dev_mode,
|
|
33
33
|
)
|
|
34
|
+
if exceptions:
|
|
35
|
+
raise ExceptionGroup(
|
|
36
|
+
f"Unable to connect to beamline devices {list(exceptions.keys())}",
|
|
37
|
+
list(exceptions.values()),
|
|
38
|
+
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mx-bluesky
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.10
|
|
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
|
|
@@ -237,11 +237,11 @@ Requires-Dist: deepdiff
|
|
|
237
237
|
Requires-Dist: matplotlib
|
|
238
238
|
Requires-Dist: cachetools
|
|
239
239
|
Requires-Dist: daq-config-server>=v1.0.0-rc.2
|
|
240
|
-
Requires-Dist: blueapi>=
|
|
240
|
+
Requires-Dist: blueapi>=1.5.0
|
|
241
241
|
Requires-Dist: ophyd>=1.10.5
|
|
242
242
|
Requires-Dist: ophyd-async>=0.10.0a2
|
|
243
|
-
Requires-Dist: bluesky>=1.
|
|
244
|
-
Requires-Dist: dls-dodal==1.
|
|
243
|
+
Requires-Dist: bluesky>=1.14.6
|
|
244
|
+
Requires-Dist: dls-dodal==1.63.0
|
|
245
245
|
Provides-Extra: dev
|
|
246
246
|
Requires-Dist: black; extra == "dev"
|
|
247
247
|
Requires-Dist: build; extra == "dev"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
mx_bluesky/__init__.py,sha256=Ksms_WJF8LTkbm38gEpm1jBpGqcQ8NGvmb2ZJlOE1j8,198
|
|
2
2
|
mx_bluesky/__main__.py,sha256=RVqPnxDisFMIn_aoEi0drlThNHgKTJULnSrotouIKI0,480
|
|
3
|
-
mx_bluesky/_version.py,sha256=
|
|
3
|
+
mx_bluesky/_version.py,sha256=GHx1c9DDnT0tx1ian8L-pn_ij2Y5L7Dx0xAenE6ixKE,706
|
|
4
4
|
mx_bluesky/definitions.py,sha256=ULpEYAUzdQiEbBoTgYTMxfUf3DDDjhYtvDxofs7Qxqw,168
|
|
5
5
|
mx_bluesky/jupyter_example.ipynb,sha256=wpwvPrBvwtRMS5AIFk8F54cIlUoD0o4ji8tKK5cZHA4,1672
|
|
6
6
|
mx_bluesky/beamlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -13,15 +13,19 @@ mx_bluesky/beamlines/i02_1/parameters/gridscan.py,sha256=P-WBnYSKcFQxMyeziIlWPht
|
|
|
13
13
|
mx_bluesky/beamlines/i04/__init__.py,sha256=DM5-pkoPb2jill-VmKdhEylsV1jryA92gygCIFSv3Fo,383
|
|
14
14
|
mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py,sha256=LViC4Dql47EXIDnI2hkt9CMtIyF1_e8h0s4GyIAllmA,6656
|
|
15
15
|
mx_bluesky/beamlines/i04/thawing_plan.py,sha256=eSqX3VKHKw_KDGxjpszDifRpdb_RkwQxMKAZlOgl_7c,9759
|
|
16
|
+
mx_bluesky/beamlines/i04/callbacks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
17
|
mx_bluesky/beamlines/i04/callbacks/murko_callback.py,sha256=C2KoIxwMIWxD46utmq1-69SIc8MspocXJ1sccO1lwAY,4458
|
|
17
18
|
mx_bluesky/beamlines/i04/experiment_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
-
mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py,sha256=
|
|
19
|
+
mx_bluesky/beamlines/i04/experiment_plans/i04_grid_detect_then_xray_centre_plan.py,sha256=Z77NSnds9mFVRnea5z_aySgs7vJxKRvzbpNNit2AeZM,10206
|
|
19
20
|
mx_bluesky/beamlines/i23/__init__.py,sha256=7nwQiKBZAXLnvPhCqaI2VC1k4TOzQalOUvwF6SQ3Yd4,95
|
|
20
21
|
mx_bluesky/beamlines/i23/serial.py,sha256=XVbHM8NevnJMFAJD9jkxG-VnPaWX6t_k-wlipRw0pmY,2055
|
|
21
22
|
mx_bluesky/beamlines/i24/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
-
mx_bluesky/beamlines/i24/jungfrau_commissioning/
|
|
23
|
-
mx_bluesky/beamlines/i24/jungfrau_commissioning/
|
|
24
|
-
mx_bluesky/beamlines/i24/jungfrau_commissioning/
|
|
23
|
+
mx_bluesky/beamlines/i24/jungfrau_commissioning/experiment_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
+
mx_bluesky/beamlines/i24/jungfrau_commissioning/experiment_plans/do_darks.py,sha256=la0jGZDHt48nsRAe8Gq6uL5LoQ1WszF4LmSo1tp03S8,2974
|
|
25
|
+
mx_bluesky/beamlines/i24/jungfrau_commissioning/plan_stubs/__init__.py,sha256=yxc_V5DfWKXtOmuX-U9YEdkn05ZriD9My65lpEYTuRo,115
|
|
26
|
+
mx_bluesky/beamlines/i24/jungfrau_commissioning/plan_stubs/do_external_acquisition.py,sha256=DmtGT_zS_bOKjOKCLypWh13sZUF-zp6PPZzky6MkPcc,1675
|
|
27
|
+
mx_bluesky/beamlines/i24/jungfrau_commissioning/plan_stubs/do_internal_acquisition.py,sha256=_wmQExT0A-3k_6B8ghtfpspz9vZ2f6QLwcUZlW8jzE8,1846
|
|
28
|
+
mx_bluesky/beamlines/i24/jungfrau_commissioning/plan_stubs/plan_utils.py,sha256=q3KN2oN9k4IptL0vpjaH3l0NZobekPSsNUIJi736l9w,2514
|
|
25
29
|
mx_bluesky/beamlines/i24/serial/__init__.py,sha256=r8v9V48TMrNxOcwBZ6lzeCCuPulq5rg8m-mwH_KkOnI,1533
|
|
26
30
|
mx_bluesky/beamlines/i24/serial/blueapi_config.yaml,sha256=P0saF1bqt4ANU-2mtS_ZHO4NYr_ierUJN-gf6cspic8,350
|
|
27
31
|
mx_bluesky/beamlines/i24/serial/dcid.py,sha256=7NkpMFF3obTVt0aHBbw5J7DqhOEg-zz5otNjdgDMlFg,13819
|
|
@@ -75,22 +79,24 @@ mx_bluesky/beamlines/i24/serial/web_gui_plans/__init__.py,sha256=47DEQpj8HBSa-_T
|
|
|
75
79
|
mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py,sha256=4Cn7B-ZaNdcBkpsBg3BNLaNW5YZ-YkTSiJ4iJV-k4Y8,8471
|
|
76
80
|
mx_bluesky/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
77
81
|
mx_bluesky/common/xrc_result.py,sha256=tUJ6qkDTTB6H1F71IvVAKtmHCRyHSU_tj9GRzVmnE7w,3219
|
|
78
|
-
mx_bluesky/common/device_setup_plans/
|
|
82
|
+
mx_bluesky/common/device_setup_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
|
+
mx_bluesky/common/device_setup_plans/manipulate_sample.py,sha256=bKVWiXQnibXEjKjCNvy9PX4kUSh1CsBQCkqO5tUgrOU,3130
|
|
79
84
|
mx_bluesky/common/device_setup_plans/position_detector.py,sha256=S49ml0KNZ6wXPQqOxNJ2whKTCyRTcKdBXBhyeEyFDQQ,635
|
|
80
|
-
mx_bluesky/common/device_setup_plans/robot_load_unload.py,sha256=
|
|
81
|
-
mx_bluesky/common/device_setup_plans/setup_oav.py,sha256=
|
|
85
|
+
mx_bluesky/common/device_setup_plans/robot_load_unload.py,sha256=vbkH9pGu3ZHYrzsMJlEB38eLTP-eSNEbnB6svC_KP2Q,4503
|
|
86
|
+
mx_bluesky/common/device_setup_plans/setup_oav.py,sha256=10lo4c7k-OHI2i5F3OsC318ZXG3N8BtjKMFFSflVFR0,2692
|
|
82
87
|
mx_bluesky/common/device_setup_plans/setup_panda.py,sha256=OF-ZygZyAyQEUdrAWiIxWZ6QhAsVx4Mm9ngRYB1mzKI,433
|
|
88
|
+
mx_bluesky/common/device_setup_plans/setup_zebra_and_shutter.py,sha256=y83Szce7QxXdpLeGXpgyhceOr1HCE6fs6zmZr77IYAE,10066
|
|
83
89
|
mx_bluesky/common/device_setup_plans/utils.py,sha256=S_Us1KfLkyaRzWxmqnoVxHj2Suq-Vs0n5fMRygHgrTw,1859
|
|
84
|
-
mx_bluesky/common/device_setup_plans/xbpm_feedback.py,sha256=
|
|
90
|
+
mx_bluesky/common/device_setup_plans/xbpm_feedback.py,sha256=EY1CwACPfts4otAjF15uLrMDyRGwmHz2khh8WicK6cY,1873
|
|
85
91
|
mx_bluesky/common/experiment_plans/__init__.py,sha256=FMA-4VN1TJCPcyURKF0qPIQ8uo8YBbtHPRdJokVF4MA,129
|
|
86
92
|
mx_bluesky/common/experiment_plans/change_aperture_then_move_plan.py,sha256=407E9rp0yGWWIU1fJrgqK_hC19mVwRK-Und7fMlGNDc,3062
|
|
87
|
-
mx_bluesky/common/experiment_plans/common_flyscan_xray_centre_plan.py,sha256=
|
|
93
|
+
mx_bluesky/common/experiment_plans/common_flyscan_xray_centre_plan.py,sha256=2Ieb7156ujAGVuybPUMjJEm_7-Z77NYeIGyjDagi0Nw,13546
|
|
88
94
|
mx_bluesky/common/experiment_plans/common_grid_detect_then_xray_centre_plan.py,sha256=jspOKPc3uxvG-a5-LXs7Yfwy8HTvGXBj4snke9j5gYE,7033
|
|
89
|
-
mx_bluesky/common/experiment_plans/oav_grid_detection_plan.py,sha256=
|
|
95
|
+
mx_bluesky/common/experiment_plans/oav_grid_detection_plan.py,sha256=SOX6eyPNm7hLJaRJ8esd4DOE2nBjT_2gbmAz1Ozc57g,7154
|
|
90
96
|
mx_bluesky/common/experiment_plans/oav_snapshot_plan.py,sha256=8TRAvHG2W9bn1xb06bYZTWkfhT2q1EtfyxyiMMKmWcw,3623
|
|
91
|
-
mx_bluesky/common/experiment_plans/inner_plans/__init__
|
|
92
|
-
mx_bluesky/common/experiment_plans/inner_plans/do_fgs.py,sha256=
|
|
93
|
-
mx_bluesky/common/experiment_plans/inner_plans/read_hardware.py,sha256=
|
|
97
|
+
mx_bluesky/common/experiment_plans/inner_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
98
|
+
mx_bluesky/common/experiment_plans/inner_plans/do_fgs.py,sha256=dTO9YuvbSzYaMUTs51x0Vuv9-jZ333jIcP51PS10JRw,4876
|
|
99
|
+
mx_bluesky/common/experiment_plans/inner_plans/read_hardware.py,sha256=jwGgzBPyUN4_FKNe5J8vmuLsvSGmEwk73LGBUu-Jy00,2408
|
|
94
100
|
mx_bluesky/common/experiment_plans/inner_plans/udc_default_state.py,sha256=TnO5hv1I_UWlB1Vz7dCQ-nGj4LLsu9nQgetaK6hc_YM,2704
|
|
95
101
|
mx_bluesky/common/experiment_plans/inner_plans/write_sample_status.py,sha256=pmS4Lsndp90CCIKzD_wssvbzt1qu7rEzfXgxvDwDrQ8,1313
|
|
96
102
|
mx_bluesky/common/external_interaction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -102,7 +108,7 @@ mx_bluesky/common/external_interaction/callbacks/common/__init__.py,sha256=47DEQ
|
|
|
102
108
|
mx_bluesky/common/external_interaction/callbacks/common/abstract_event.py,sha256=iBj4WNK5ikieZzTePBZ9AEu6ehlnpew1nDK3ONJqibI,2093
|
|
103
109
|
mx_bluesky/common/external_interaction/callbacks/common/grid_detection_callback.py,sha256=hfFJjICMer26TowK5Nq-AEjDe1TAHIgJAvTFhs-o-Zg,4901
|
|
104
110
|
mx_bluesky/common/external_interaction/callbacks/common/ispyb_callback_base.py,sha256=--eZl4flvtrKZQz5ZhLO87Z1kDboQevIkujrXCADZEI,9869
|
|
105
|
-
mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py,sha256=
|
|
111
|
+
mx_bluesky/common/external_interaction/callbacks/common/ispyb_mapping.py,sha256=pzDlNEGhXACc5MyO_FAT2PlCYz6r_bnz_S08hXEGjdk,2707
|
|
106
112
|
mx_bluesky/common/external_interaction/callbacks/common/log_uid_tag_callback.py,sha256=pfZxQfS9SnXep3F2YAPptDX5bjjWvbXtgy5fINfsoTU,626
|
|
107
113
|
mx_bluesky/common/external_interaction/callbacks/common/logging_callback.py,sha256=NHb8Gp86TAk6PRTV3inWrlW-Lj96LmnZda7ZGewlrFA,712
|
|
108
114
|
mx_bluesky/common/external_interaction/callbacks/common/plan_reactive_callback.py,sha256=567fx-ONKTZ7V5y5dk0YthxxDJt0s6dZtqrYA0AkfAk,4088
|
|
@@ -110,7 +116,7 @@ mx_bluesky/common/external_interaction/callbacks/common/zocalo_callback.py,sha25
|
|
|
110
116
|
mx_bluesky/common/external_interaction/callbacks/sample_handling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
111
117
|
mx_bluesky/common/external_interaction/callbacks/sample_handling/sample_handling_callback.py,sha256=BfUru03fRYmndjiWHpnqBIWPc5kRIy4PTmG94bz3gLw,3886
|
|
112
118
|
mx_bluesky/common/external_interaction/callbacks/xray_centre/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
113
|
-
mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py,sha256=
|
|
119
|
+
mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_callback.py,sha256=fwPPwOvy1yGC8D5KOlpZitBWtVNzfNjK2yz-ZTT6q9Q,15398
|
|
114
120
|
mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py,sha256=yElqODhPm2HZlpF7vNOX0SQNjwJ_m8kNMS-c_cp4KUU,1163
|
|
115
121
|
mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py,sha256=bxFMkTsMvZZJyp4zeGlZkThgZnQqT6dgflKRpqkT1Vc,4709
|
|
116
122
|
mx_bluesky/common/external_interaction/ispyb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -124,7 +130,7 @@ mx_bluesky/common/external_interaction/nexus/write_nexus.py,sha256=s8xT05_Fn_s64
|
|
|
124
130
|
mx_bluesky/common/parameters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
125
131
|
mx_bluesky/common/parameters/components.py,sha256=wyejnv6DxSOrGzcMVRHZVHnund3pj6cTxTMU5v7JW5Q,8576
|
|
126
132
|
mx_bluesky/common/parameters/constants.py,sha256=iNv55VTv4QPu96z58pbnMiAE1RGsFKsTs4wahrlGihw,5139
|
|
127
|
-
mx_bluesky/common/parameters/device_composites.py,sha256=
|
|
133
|
+
mx_bluesky/common/parameters/device_composites.py,sha256=H-SEn1BNme7ucBRRoo90Qr5YdVX0ooPAQPtrzxB6ZAg,2303
|
|
128
134
|
mx_bluesky/common/parameters/gridscan.py,sha256=Y4xZpMhzWN58gnAYKZyVbtN8uW4pBVC68KTGGmYpb2A,7632
|
|
129
135
|
mx_bluesky/common/preprocessors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
130
136
|
mx_bluesky/common/preprocessors/preprocessors.py,sha256=BNpSM7S9gxhVbG39rjH14k89sOmKiII0cqApH3pF_H0,4476
|
|
@@ -145,20 +151,20 @@ mx_bluesky/hyperion/runner.py,sha256=x683wuzL-XO1Ws4N2fpPO__TLhlep0br_-8ubml1qG0
|
|
|
145
151
|
mx_bluesky/hyperion/device_setup_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
146
152
|
mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py,sha256=ciNdz_r9XGvghehpejdziL-aMw60oUsIJdVR3yz3nOo,5010
|
|
147
153
|
mx_bluesky/hyperion/device_setup_plans/setup_panda.py,sha256=96eFp4acQLOthe1PA-S14uv635uGVP71DpP7qy_uo40,8509
|
|
148
|
-
mx_bluesky/hyperion/device_setup_plans/setup_zebra.py,sha256=
|
|
154
|
+
mx_bluesky/hyperion/device_setup_plans/setup_zebra.py,sha256=dOfBQMibyH3CjSh_m5RJKsxs2DtaM3jtwEs7lkqQppo,1525
|
|
149
155
|
mx_bluesky/hyperion/device_setup_plans/smargon.py,sha256=eb3TCXg33SW6TlfElh5KjYwCXhELDprj0B27CwYcd9c,967
|
|
150
156
|
mx_bluesky/hyperion/device_setup_plans/utils.py,sha256=96JlzyikMhWN7LzdiMx8URZInXoGR3OjoxYmCIp9tts,425
|
|
151
157
|
mx_bluesky/hyperion/experiment_plans/__init__.py,sha256=dJjwLk0EQP-1hKhbs8aRxTF_LxUXgB7kcgDlaP-tMnk,787
|
|
152
158
|
mx_bluesky/hyperion/experiment_plans/experiment_registry.py,sha256=bGp2c3nKutqHMnDxuqjp6yCF-JKykSzX-IUfxk3oVlM,1701
|
|
153
|
-
mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py,sha256=
|
|
159
|
+
mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py,sha256=CMy6NR0rrLeyS8SU0jN7xOthYcpxxy9n9XXi39s4is0,5910
|
|
154
160
|
mx_bluesky/hyperion/experiment_plans/hyperion_grid_detect_then_xray_centre_plan.py,sha256=e4w4226ONSGQF2dnXzxOfcJ9i57CZIJrqQ1YCLlaBNo,2153
|
|
155
|
-
mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py,sha256=
|
|
161
|
+
mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py,sha256=z-RS1MUf1A9aGkmJLcM9zF3G-c0wyI-MoVVXXGB0-lE,7957
|
|
156
162
|
mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py,sha256=5ZAH17F5T1YyVgA2ML0NEf4ufrD1G0jPRU0_5pINdTg,16195
|
|
157
163
|
mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py,sha256=oErbq4ffTZVNR_LeiSJP8_q4cwdZWB-bdbrO3ZwKg20,5397
|
|
158
|
-
mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py,sha256
|
|
164
|
+
mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py,sha256=-5iUaM6f4uaUrKQtcufcE_CLQf--zSJ6noGWHFK-6wI,6240
|
|
159
165
|
mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py,sha256=bqG4enP2bZQ6ND0c5XqwDySQTkQRBdK7gvWf61VEnWM,6051
|
|
160
166
|
mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py,sha256=samWAztWJU9sRo1FtIicWWQZ7TjUwg7Y9y9oqhkcb5o,6904
|
|
161
|
-
mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py,sha256=
|
|
167
|
+
mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py,sha256=LZv6QbBMNpC54mM8fYX7ZTzSxVP2quxpCNubfb8kuy4,15974
|
|
162
168
|
mx_bluesky/hyperion/experiment_plans/set_energy_plan.py,sha256=8FAqN-aJgRwZSiCX-hNdeGmaijt0l8owdShVBwNchfE,2643
|
|
163
169
|
mx_bluesky/hyperion/external_interaction/__init__.py,sha256=95DwXDmKsx36RgAL-AtLZl2LQoLPKbzeYdlkkP_4Coc,559
|
|
164
170
|
mx_bluesky/hyperion/external_interaction/agamemnon.py,sha256=B2Q7NR1VSRoCGg4hlCiZDrh2Fa0s4B4ZIws1H7oBfOk,12020
|
|
@@ -167,8 +173,9 @@ mx_bluesky/hyperion/external_interaction/alerting/__init__.py,sha256=47DEQpj8HBS
|
|
|
167
173
|
mx_bluesky/hyperion/external_interaction/alerting/constants.py,sha256=8wE_MDF8vOqomQ6SBiwZKb1W4NRO_hmrBLVfLVnKdSg,170
|
|
168
174
|
mx_bluesky/hyperion/external_interaction/callbacks/__init__.py,sha256=1XHaxDljMveu_DYIlk7n963gHffyC6r4C_RhF6HA-N8,283
|
|
169
175
|
mx_bluesky/hyperion/external_interaction/callbacks/__main__.py,sha256=6-CqBh3uIi-mu_eWSJQ0hBQhoQaC7m8mSi8cHmyrjK0,6827
|
|
170
|
-
mx_bluesky/hyperion/external_interaction/callbacks/alert_on_container_change.py,sha256=
|
|
176
|
+
mx_bluesky/hyperion/external_interaction/callbacks/alert_on_container_change.py,sha256=54RU20RuwKHYwB6DtAc0aWg6hz3TXFhwDzTmSC2XYVE,2689
|
|
171
177
|
mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py,sha256=ee1ZIJGp8RQakMDYRfflXjSwi-UgxqdZNkZ1azBIDGQ,11705
|
|
178
|
+
mx_bluesky/hyperion/external_interaction/callbacks/robot_actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
172
179
|
mx_bluesky/hyperion/external_interaction/callbacks/robot_actions/ispyb_callback.py,sha256=Ta8w0W_3LI0PGpwxKlQsS7X0B_hsfJoZdzR2K3J0KHo,4467
|
|
173
180
|
mx_bluesky/hyperion/external_interaction/callbacks/rotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
174
181
|
mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py,sha256=4XW5eTwlPKGLk3MS76QRu5U6DOYAQHBEUBKqaNDnVhs,8885
|
|
@@ -178,20 +185,19 @@ mx_bluesky/hyperion/parameters/__init__.py,sha256=kf2wfcILBUBpT0tJ8-W39BywQUkn67
|
|
|
178
185
|
mx_bluesky/hyperion/parameters/cli.py,sha256=I-NY3Kt3la5HNUB4qRA6NtuxbJSr78yx-sM_cRx_pY4,1514
|
|
179
186
|
mx_bluesky/hyperion/parameters/components.py,sha256=eIUEcFNqcEad21IThSDatoX-NRa9GdfBOwt6ZUwb88U,292
|
|
180
187
|
mx_bluesky/hyperion/parameters/constants.py,sha256=aCACWCp670o9U3AKfON-ntqkxIH-99gWNZvEN1G2rPc,2265
|
|
181
|
-
mx_bluesky/hyperion/parameters/device_composites.py,sha256=
|
|
188
|
+
mx_bluesky/hyperion/parameters/device_composites.py,sha256=B37k4J8qtBetL3s16Fu9jlBkJwjpdz02SQ9LW1TZmBE,2213
|
|
182
189
|
mx_bluesky/hyperion/parameters/gridscan.py,sha256=DMldH8UJwvcKTUh26Ntg-qgNAP4h6iCrxjFX_kkcvW0,3904
|
|
183
190
|
mx_bluesky/hyperion/parameters/load_centre_collect.py,sha256=8dlKwb7WmgDeohQ9QsdMWQMMM73EaC2cZ0wKg6vOP60,3727
|
|
184
191
|
mx_bluesky/hyperion/parameters/robot_load.py,sha256=Iktni3r6LFRnlM51hpdpv3QrD6QPhx2rAeyB8Gv6ML4,1124
|
|
185
|
-
mx_bluesky/hyperion/parameters/rotation.py,sha256=
|
|
192
|
+
mx_bluesky/hyperion/parameters/rotation.py,sha256=0QNov3jykC__iIHMxdTq3znBsKLyQGk-vzSVMf7rSyA,7360
|
|
186
193
|
mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml,sha256=mhLBJTSjHCkM9F6mjtqbhNmmrV8qSctbCUfhb0q7pYo,28085
|
|
187
194
|
mx_bluesky/hyperion/utils/__init__.py,sha256=f4E8wInL1Ll4eeFtAiyKmipOBTPlUtKmVK-m_LOQG4M,35
|
|
188
|
-
mx_bluesky/hyperion/utils/context.py,sha256=
|
|
195
|
+
mx_bluesky/hyperion/utils/context.py,sha256=VYAu1yxhDBrI98ul7UErotuquF64s1EDHtqPQLRpyvY,1227
|
|
189
196
|
mx_bluesky/phase1_zebra/__init__.py,sha256=Edhhn2L9MVXnjJhyD5_yKQVUDo7XW98rvuT7dlzIn58,132
|
|
190
197
|
mx_bluesky/phase1_zebra/device_setup_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
191
|
-
mx_bluesky/
|
|
192
|
-
mx_bluesky-1.5.
|
|
193
|
-
mx_bluesky-1.5.
|
|
194
|
-
mx_bluesky-1.5.
|
|
195
|
-
mx_bluesky-1.5.
|
|
196
|
-
mx_bluesky-1.5.
|
|
197
|
-
mx_bluesky-1.5.8.dist-info/RECORD,,
|
|
198
|
+
mx_bluesky-1.5.10.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
199
|
+
mx_bluesky-1.5.10.dist-info/METADATA,sha256=D4I5k3VrZ9WGcMFtohiAyJSUuuukebOs3yepLqhXQ14,17424
|
|
200
|
+
mx_bluesky-1.5.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
201
|
+
mx_bluesky-1.5.10.dist-info/entry_points.txt,sha256=HgVtwgWoMRn9-X6rxCcSY3Jz_paspJTIlc-t2NFzWpo,409
|
|
202
|
+
mx_bluesky-1.5.10.dist-info/top_level.txt,sha256=S4rrzXIUef58ulf_04wn01XGZ3xeJjXs4LPEJ_xoF-I,11
|
|
203
|
+
mx_bluesky-1.5.10.dist-info/RECORD,,
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
from typing import Protocol, runtime_checkable
|
|
2
|
-
|
|
3
|
-
import bluesky.plan_stubs as bps
|
|
4
|
-
from bluesky.utils import MsgGenerator
|
|
5
|
-
from dodal.devices.zebra.zebra import (
|
|
6
|
-
Zebra,
|
|
7
|
-
)
|
|
8
|
-
from dodal.devices.zebra.zebra_controlled_shutter import (
|
|
9
|
-
ZebraShutter,
|
|
10
|
-
ZebraShutterControl,
|
|
11
|
-
)
|
|
12
|
-
|
|
13
|
-
from mx_bluesky.common.parameters.constants import ZEBRA_STATUS_TIMEOUT
|
|
14
|
-
from mx_bluesky.common.utils.log import LOGGER
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
@runtime_checkable
|
|
18
|
-
class GridscanSetupDevices(Protocol):
|
|
19
|
-
zebra: Zebra
|
|
20
|
-
sample_shutter: ZebraShutter
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def setup_zebra_for_gridscan(
|
|
24
|
-
composite: GridscanSetupDevices, # XRC gridscan's generic trigger setup expects a composite rather than individual devices
|
|
25
|
-
group="setup_zebra_for_gridscan",
|
|
26
|
-
wait=True,
|
|
27
|
-
) -> MsgGenerator:
|
|
28
|
-
zebra = composite.zebra
|
|
29
|
-
# Set shutter to automatic and to trigger via motion controller GPIO signal (IN4_TTL)
|
|
30
|
-
yield from configure_zebra_and_shutter_for_auto_shutter(
|
|
31
|
-
zebra, composite.sample_shutter, zebra.mapping.sources.IN4_TTL, group=group
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
yield from bps.abs_set(
|
|
35
|
-
zebra.output.out_pvs[zebra.mapping.outputs.TTL_DETECTOR],
|
|
36
|
-
zebra.mapping.sources.IN3_TTL,
|
|
37
|
-
group=group,
|
|
38
|
-
)
|
|
39
|
-
yield from bps.abs_set(
|
|
40
|
-
zebra.output.out_pvs[zebra.mapping.outputs.TTL_XSPRESS3],
|
|
41
|
-
zebra.mapping.sources.DISCONNECT,
|
|
42
|
-
group=group,
|
|
43
|
-
)
|
|
44
|
-
yield from bps.abs_set(
|
|
45
|
-
zebra.output.pulse_1.input, zebra.mapping.sources.DISCONNECT, group=group
|
|
46
|
-
)
|
|
47
|
-
|
|
48
|
-
if wait:
|
|
49
|
-
yield from bps.wait(group, timeout=ZEBRA_STATUS_TIMEOUT)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
def set_shutter_auto_input(zebra: Zebra, input: int, group="set_shutter_trigger"):
|
|
53
|
-
"""Set the signal that controls the shutter. We use the second input to the
|
|
54
|
-
Zebra's AND2 gate for this input. ZebraShutter control mode must be in auto for this input to take control
|
|
55
|
-
|
|
56
|
-
For more details see the ZebraShutter device."""
|
|
57
|
-
auto_gate = zebra.mapping.AND_GATE_FOR_AUTO_SHUTTER
|
|
58
|
-
auto_shutter_control = zebra.logic_gates.and_gates[auto_gate]
|
|
59
|
-
yield from bps.abs_set(auto_shutter_control.sources[2], input, group)
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
def configure_zebra_and_shutter_for_auto_shutter(
|
|
63
|
-
zebra: Zebra, zebra_shutter: ZebraShutter, input: int, group="use_automatic_shutter"
|
|
64
|
-
):
|
|
65
|
-
"""Set the shutter to auto mode, and configure the zebra to trigger the shutter on
|
|
66
|
-
an input source. For the input, use one of the source constants in zebra.py
|
|
67
|
-
|
|
68
|
-
When the shutter is in auto/manual, logic in EPICS sets the Zebra's
|
|
69
|
-
SOFT_IN1 to low/high respectively. The Zebra's AND2 gate should be used to control the shutter while in auto mode.
|
|
70
|
-
To do this, we need (AND2 = SOFT_IN1 AND input), where input is the zebra signal we want to control the shutter when in auto mode.
|
|
71
|
-
"""
|
|
72
|
-
# See https://github.com/DiamondLightSource/dodal/issues/813 for better typing here.
|
|
73
|
-
|
|
74
|
-
# Set shutter to auto mode
|
|
75
|
-
yield from bps.abs_set(
|
|
76
|
-
zebra_shutter.control_mode, ZebraShutterControl.AUTO, group=group
|
|
77
|
-
)
|
|
78
|
-
|
|
79
|
-
auto_gate = zebra.mapping.AND_GATE_FOR_AUTO_SHUTTER
|
|
80
|
-
|
|
81
|
-
# Set first input of AND2 gate to SOFT_IN1, which is high when shutter is in auto mode
|
|
82
|
-
# Note the Zebra should ALWAYS be setup this way. See https://github.com/DiamondLightSource/mx-bluesky/issues/551
|
|
83
|
-
yield from bps.abs_set(
|
|
84
|
-
zebra.logic_gates.and_gates[auto_gate].sources[1],
|
|
85
|
-
zebra.mapping.sources.SOFT_IN1,
|
|
86
|
-
group=group,
|
|
87
|
-
)
|
|
88
|
-
|
|
89
|
-
# Set the second input of AND2 gate to the requested zebra input source
|
|
90
|
-
yield from set_shutter_auto_input(zebra, input, group=group)
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
def tidy_up_zebra_after_gridscan(
|
|
94
|
-
zebra: Zebra,
|
|
95
|
-
zebra_shutter: ZebraShutter,
|
|
96
|
-
group="tidy_up_zebra_after_gridscan",
|
|
97
|
-
wait=True,
|
|
98
|
-
) -> MsgGenerator:
|
|
99
|
-
LOGGER.info("Tidying up Zebra")
|
|
100
|
-
|
|
101
|
-
yield from bps.abs_set(
|
|
102
|
-
zebra.output.out_pvs[zebra.mapping.outputs.TTL_DETECTOR],
|
|
103
|
-
zebra.mapping.sources.PC_PULSE,
|
|
104
|
-
group=group,
|
|
105
|
-
)
|
|
106
|
-
yield from bps.abs_set(
|
|
107
|
-
zebra_shutter.control_mode, ZebraShutterControl.MANUAL, group=group
|
|
108
|
-
)
|
|
109
|
-
yield from set_shutter_auto_input(zebra, zebra.mapping.sources.PC_GATE, group=group)
|
|
110
|
-
|
|
111
|
-
if wait:
|
|
112
|
-
yield from bps.wait(group, timeout=ZEBRA_STATUS_TIMEOUT)
|
/mx_bluesky/{common/experiment_plans/inner_plans/__init__ .py → beamlines/i04/callbacks/__init__.py}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|