dls-dodal 1.34.1__py3-none-any.whl → 1.36.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.
- {dls_dodal-1.34.1.dist-info → dls_dodal-1.36.0.dist-info}/METADATA +4 -2
- dls_dodal-1.36.0.dist-info/RECORD +152 -0
- {dls_dodal-1.34.1.dist-info → dls_dodal-1.36.0.dist-info}/WHEEL +1 -1
- dodal/_version.py +2 -2
- dodal/beamlines/i22.py +24 -11
- dodal/beamlines/i24.py +4 -4
- dodal/beamlines/p38.py +23 -11
- dodal/common/beamlines/beamline_utils.py +1 -2
- dodal/common/crystal_metadata.py +61 -0
- dodal/common/signal_utils.py +10 -14
- dodal/devices/CTAB.py +1 -1
- dodal/devices/aperture.py +1 -1
- dodal/devices/aperturescatterguard.py +20 -8
- dodal/devices/apple2_undulator.py +30 -29
- dodal/devices/areadetector/plugins/CAM.py +3 -5
- dodal/devices/areadetector/plugins/MJPG.py +1 -1
- dodal/devices/attenuator.py +1 -1
- dodal/devices/backlight.py +4 -5
- dodal/devices/cryostream.py +3 -5
- dodal/devices/dcm.py +26 -2
- dodal/devices/detector/detector_motion.py +3 -5
- dodal/devices/diamond_filter.py +3 -4
- dodal/devices/eiger.py +88 -49
- dodal/devices/fast_grid_scan.py +1 -1
- dodal/devices/fluorescence_detector_motion.py +5 -7
- dodal/devices/focusing_mirror.py +12 -11
- dodal/devices/hutch_shutter.py +4 -5
- dodal/devices/i10/i10_apple2.py +20 -19
- dodal/devices/i10/i10_setting_data.py +2 -2
- dodal/devices/i22/dcm.py +43 -75
- dodal/devices/i22/fswitch.py +5 -5
- dodal/devices/i24/aperture.py +3 -5
- dodal/devices/i24/beamstop.py +3 -5
- dodal/devices/i24/dcm.py +1 -1
- dodal/devices/i24/dual_backlight.py +4 -6
- dodal/devices/i24/pmac.py +35 -46
- dodal/devices/i24/vgonio.py +16 -0
- dodal/devices/ipin.py +5 -3
- dodal/devices/linkam3.py +7 -7
- dodal/devices/oav/oav_detector.py +3 -3
- dodal/devices/oav/oav_to_redis_forwarder.py +8 -7
- dodal/devices/oav/pin_image_recognition/__init__.py +9 -7
- dodal/devices/oav/snapshots/grid_overlay.py +16 -16
- dodal/devices/oav/snapshots/snapshot_with_beam_centre.py +5 -5
- dodal/devices/oav/snapshots/snapshot_with_grid.py +6 -6
- dodal/devices/oav/utils.py +2 -2
- dodal/devices/p99/sample_stage.py +3 -5
- dodal/devices/pgm.py +5 -6
- dodal/devices/qbpm.py +1 -1
- dodal/devices/robot.py +3 -3
- dodal/devices/smargon.py +1 -1
- dodal/devices/synchrotron.py +9 -4
- dodal/devices/tetramm.py +7 -7
- dodal/devices/thawer.py +13 -7
- dodal/devices/undulator.py +5 -5
- dodal/devices/util/epics_util.py +1 -1
- dodal/devices/watsonmarlow323_pump.py +45 -0
- dodal/devices/webcam.py +9 -2
- dodal/devices/xbpm_feedback.py +3 -5
- dodal/devices/xspress3/xspress3.py +8 -9
- dodal/devices/xspress3/xspress3_channel.py +3 -5
- dodal/devices/zebra.py +7 -6
- dodal/devices/zebra_controlled_shutter.py +5 -6
- dodal/devices/zocalo/__init__.py +2 -2
- dodal/devices/zocalo/zocalo_constants.py +3 -0
- dodal/devices/zocalo/zocalo_interaction.py +2 -1
- dodal/devices/zocalo/zocalo_results.py +92 -79
- dodal/plan_stubs/__init__.py +0 -0
- dodal/{plans/data_session_metadata.py → plan_stubs/data_session.py} +2 -2
- dodal/{plans/motor_util_plans.py → plan_stubs/motor_utils.py} +2 -2
- dodal/plan_stubs/wrapped.py +150 -0
- dodal/plans/__init__.py +4 -0
- dodal/plans/scanspec.py +66 -0
- dodal/plans/wrapped.py +57 -0
- dodal/utils.py +4 -0
- dls_dodal-1.34.1.dist-info/RECORD +0 -144
- dodal/devices/i24/i24_vgonio.py +0 -17
- {dls_dodal-1.34.1.dist-info → dls_dodal-1.36.0.dist-info}/LICENSE +0 -0
- {dls_dodal-1.34.1.dist-info → dls_dodal-1.36.0.dist-info}/entry_points.txt +0 -0
- {dls_dodal-1.34.1.dist-info → dls_dodal-1.36.0.dist-info}/top_level.txt +0 -0
- /dodal/{plans → plan_stubs}/check_topup.py +0 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import itertools
|
|
2
|
+
from collections.abc import Mapping
|
|
3
|
+
from typing import Annotated, Any
|
|
4
|
+
|
|
5
|
+
import bluesky.plan_stubs as bps
|
|
6
|
+
from bluesky.protocols import Movable
|
|
7
|
+
from bluesky.utils import MsgGenerator
|
|
8
|
+
|
|
9
|
+
"""
|
|
10
|
+
Wrappers for Bluesky built-in plan stubs with type hinting
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
Group = Annotated[str, "String identifier used by 'wait' or stubs that await"]
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# After bluesky 1.14, bounds for stubs that move can be narrowed
|
|
17
|
+
# https://github.com/bluesky/bluesky/issues/1821
|
|
18
|
+
def set_absolute(
|
|
19
|
+
movable: Movable, value: Any, group: Group | None = None, wait: bool = False
|
|
20
|
+
) -> MsgGenerator:
|
|
21
|
+
"""
|
|
22
|
+
Set a device, wrapper for `bp.abs_set`.
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
movable (Movable): The device to set
|
|
26
|
+
value (T): The new value
|
|
27
|
+
group (Group | None, optional): The message group to associate with the
|
|
28
|
+
setting, for sequencing. Defaults to None.
|
|
29
|
+
wait (bool, optional): The group should wait until all setting is complete
|
|
30
|
+
(e.g. a motor has finished moving). Defaults to False.
|
|
31
|
+
|
|
32
|
+
Returns:
|
|
33
|
+
MsgGenerator: Plan
|
|
34
|
+
|
|
35
|
+
Yields:
|
|
36
|
+
Iterator[MsgGenerator]: Bluesky messages
|
|
37
|
+
"""
|
|
38
|
+
return (yield from bps.abs_set(movable, value, group=group, wait=wait))
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def set_relative(
|
|
42
|
+
movable: Movable, value: Any, group: Group | None = None, wait: bool = False
|
|
43
|
+
) -> MsgGenerator:
|
|
44
|
+
"""
|
|
45
|
+
Change a device, wrapper for `bp.rel_set`.
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
movable (Movable): The device to set
|
|
49
|
+
value (T): The new value
|
|
50
|
+
group (Group | None, optional): The message group to associate with the
|
|
51
|
+
setting, for sequencing. Defaults to None.
|
|
52
|
+
wait (bool, optional): The group should wait until all setting is complete
|
|
53
|
+
(e.g. a motor has finished moving). Defaults to False.
|
|
54
|
+
|
|
55
|
+
Returns:
|
|
56
|
+
MsgGenerator: Plan
|
|
57
|
+
|
|
58
|
+
Yields:
|
|
59
|
+
Iterator[MsgGenerator]: Bluesky messages
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
return (yield from bps.rel_set(movable, value, group=group, wait=wait))
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def move(moves: Mapping[Movable, Any], group: Group | None = None) -> MsgGenerator:
|
|
66
|
+
"""
|
|
67
|
+
Move a device, wrapper for `bp.mv`.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
moves (Mapping[Movable, T]): Mapping of Movables to target positions
|
|
71
|
+
group (Group | None, optional): The message group to associate with the
|
|
72
|
+
setting, for sequencing. Defaults to None.
|
|
73
|
+
|
|
74
|
+
Returns:
|
|
75
|
+
MsgGenerator: Plan
|
|
76
|
+
|
|
77
|
+
Yields:
|
|
78
|
+
Iterator[MsgGenerator]: Bluesky messages
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
return (
|
|
82
|
+
# type ignore until https://github.com/bluesky/bluesky/issues/1809
|
|
83
|
+
yield from bps.mv(*itertools.chain.from_iterable(moves.items()), group=group) # type: ignore
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def move_relative(
|
|
88
|
+
moves: Mapping[Movable, Any], group: Group | None = None
|
|
89
|
+
) -> MsgGenerator:
|
|
90
|
+
"""
|
|
91
|
+
Move a device relative to its current position, wrapper for `bp.mvr`.
|
|
92
|
+
|
|
93
|
+
Args:
|
|
94
|
+
moves (Mapping[Movable, T]): Mapping of Movables to target deltas
|
|
95
|
+
group (Group | None, optional): The message group to associate with the
|
|
96
|
+
setting, for sequencing. Defaults to None.
|
|
97
|
+
|
|
98
|
+
Returns:
|
|
99
|
+
MsgGenerator: Plan
|
|
100
|
+
|
|
101
|
+
Yields:
|
|
102
|
+
Iterator[MsgGenerator]: Bluesky messages
|
|
103
|
+
"""
|
|
104
|
+
|
|
105
|
+
return (
|
|
106
|
+
# type ignore until https://github.com/bluesky/bluesky/issues/1809
|
|
107
|
+
yield from bps.mvr(*itertools.chain.from_iterable(moves.items()), group=group) # type: ignore
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def sleep(time: float) -> MsgGenerator:
|
|
112
|
+
"""
|
|
113
|
+
Suspend all action for a given time, wrapper for `bp.sleep`
|
|
114
|
+
|
|
115
|
+
Args:
|
|
116
|
+
time (float): Time to wait in seconds
|
|
117
|
+
|
|
118
|
+
Returns:
|
|
119
|
+
MsgGenerator: Plan
|
|
120
|
+
|
|
121
|
+
Yields:
|
|
122
|
+
Iterator[MsgGenerator]: Bluesky messages
|
|
123
|
+
"""
|
|
124
|
+
|
|
125
|
+
return (yield from bps.sleep(time))
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def wait(
|
|
129
|
+
group: Group | None = None,
|
|
130
|
+
timeout: float | None = None,
|
|
131
|
+
) -> MsgGenerator:
|
|
132
|
+
"""
|
|
133
|
+
Wait for a group status to complete, wrapper for `bp.wait`.
|
|
134
|
+
Does not expose move_on, as when used as a stub will not fail on Timeout.
|
|
135
|
+
|
|
136
|
+
Args:
|
|
137
|
+
group (Group | None, optional): The name of the group to wait for, defaults
|
|
138
|
+
to None, in which case waits for all
|
|
139
|
+
groups that have not yet been awaited.
|
|
140
|
+
timeout (float | None, default=None): a timeout in seconds
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
Returns:
|
|
144
|
+
MsgGenerator: Plan
|
|
145
|
+
|
|
146
|
+
Yields:
|
|
147
|
+
Iterator[MsgGenerator]: Bluesky messages
|
|
148
|
+
"""
|
|
149
|
+
|
|
150
|
+
return (yield from bps.wait(group, timeout=timeout))
|
dodal/plans/__init__.py
ADDED
dodal/plans/scanspec.py
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import operator
|
|
2
|
+
from functools import reduce
|
|
3
|
+
from typing import Annotated, Any
|
|
4
|
+
|
|
5
|
+
import bluesky.plans as bp
|
|
6
|
+
from bluesky.protocols import Movable, Readable
|
|
7
|
+
from cycler import Cycler, cycler
|
|
8
|
+
from pydantic import Field, validate_call
|
|
9
|
+
from scanspec.specs import Spec
|
|
10
|
+
|
|
11
|
+
from dodal.common import MsgGenerator
|
|
12
|
+
from dodal.plan_stubs.data_session import attach_data_session_metadata_decorator
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@attach_data_session_metadata_decorator()
|
|
16
|
+
@validate_call(config={"arbitrary_types_allowed": True})
|
|
17
|
+
def spec_scan(
|
|
18
|
+
detectors: Annotated[
|
|
19
|
+
set[Readable],
|
|
20
|
+
Field(
|
|
21
|
+
description="Set of readable devices, will take a reading at each point, \
|
|
22
|
+
in addition to any Movables in the Spec",
|
|
23
|
+
),
|
|
24
|
+
],
|
|
25
|
+
spec: Annotated[
|
|
26
|
+
Spec[Movable],
|
|
27
|
+
Field(description="ScanSpec modelling the path of the scan"),
|
|
28
|
+
],
|
|
29
|
+
metadata: dict[str, Any] | None = None,
|
|
30
|
+
) -> MsgGenerator:
|
|
31
|
+
"""Generic plan for reading `detectors` at every point of a ScanSpec `Spec`.
|
|
32
|
+
A `Spec` is an N-dimensional path.
|
|
33
|
+
"""
|
|
34
|
+
# TODO: https://github.com/bluesky/scanspec/issues/154
|
|
35
|
+
# support Static.duration: Spec[Literal["DURATION"]]
|
|
36
|
+
|
|
37
|
+
_md = {
|
|
38
|
+
"plan_args": {
|
|
39
|
+
"detectors": {det.name for det in detectors},
|
|
40
|
+
"spec": repr(spec),
|
|
41
|
+
},
|
|
42
|
+
"plan_name": "spec_scan",
|
|
43
|
+
"shape": spec.shape(),
|
|
44
|
+
**(metadata or {}),
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
yield from bp.scan_nd(tuple(detectors), _as_cycler(spec), md=_md)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def _as_cycler(spec: Spec[Movable]) -> Cycler:
|
|
51
|
+
"""
|
|
52
|
+
Convert a scanspec to a cycler for compatibility with legacy Bluesky plans such as
|
|
53
|
+
`bp.scan_nd`. Use the midpoints of the scanspec since cyclers are normally used
|
|
54
|
+
for software triggered scans.
|
|
55
|
+
|
|
56
|
+
Args:
|
|
57
|
+
spec: A scanspec
|
|
58
|
+
|
|
59
|
+
Returns:
|
|
60
|
+
Cycler: A new cycler
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
midpoints = spec.frames().midpoints
|
|
64
|
+
# Need to "add" the cyclers for all the axes together. The code below is
|
|
65
|
+
# effectively: cycler(motor1, [...]) + cycler(motor2, [...]) + ...
|
|
66
|
+
return reduce(operator.add, (cycler(*args) for args in midpoints.items()))
|
dodal/plans/wrapped.py
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
from collections.abc import Sequence
|
|
2
|
+
from typing import Annotated, Any
|
|
3
|
+
|
|
4
|
+
import bluesky.plans as bp
|
|
5
|
+
from bluesky.protocols import Readable
|
|
6
|
+
from pydantic import Field, NonNegativeFloat, validate_call
|
|
7
|
+
|
|
8
|
+
from dodal.common import MsgGenerator
|
|
9
|
+
from dodal.plan_stubs.data_session import attach_data_session_metadata_decorator
|
|
10
|
+
|
|
11
|
+
"""This module wraps plan(s) from bluesky.plans until required handling for them is
|
|
12
|
+
moved into bluesky or better handled in downstream services.
|
|
13
|
+
|
|
14
|
+
Required decorators are installed on plan import
|
|
15
|
+
https://github.com/DiamondLightSource/blueapi/issues/474
|
|
16
|
+
|
|
17
|
+
Non-serialisable fields are ignored when they are optional
|
|
18
|
+
https://github.com/DiamondLightSource/blueapi/issues/711
|
|
19
|
+
|
|
20
|
+
We may also need other adjustments for UI purposes, e.g.
|
|
21
|
+
Forcing uniqueness or orderedness of Readables
|
|
22
|
+
Limits and metadata (e.g. units)
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@attach_data_session_metadata_decorator()
|
|
27
|
+
@validate_call(config={"arbitrary_types_allowed": True})
|
|
28
|
+
def count(
|
|
29
|
+
detectors: Annotated[
|
|
30
|
+
set[Readable],
|
|
31
|
+
Field(
|
|
32
|
+
description="Set of readable devices, will take a reading at each point",
|
|
33
|
+
min_length=1,
|
|
34
|
+
),
|
|
35
|
+
],
|
|
36
|
+
num: Annotated[int, Field(description="Number of frames to collect", ge=1)] = 1,
|
|
37
|
+
delay: Annotated[
|
|
38
|
+
NonNegativeFloat | Sequence[NonNegativeFloat],
|
|
39
|
+
Field(
|
|
40
|
+
description="Delay between readings: if tuple, len(delay) == num - 1 and \
|
|
41
|
+
the delays are between each point, if value or None is the delay for every \
|
|
42
|
+
gap",
|
|
43
|
+
json_schema_extra={"units": "s"},
|
|
44
|
+
),
|
|
45
|
+
] = 0.0,
|
|
46
|
+
metadata: dict[str, Any] | None = None,
|
|
47
|
+
) -> MsgGenerator:
|
|
48
|
+
"""Reads from a number of devices.
|
|
49
|
+
Wraps bluesky.plans.count(det, num, delay, md=metadata) exposing only serializable
|
|
50
|
+
parameters and metadata."""
|
|
51
|
+
if isinstance(delay, Sequence):
|
|
52
|
+
assert (
|
|
53
|
+
len(delay) == num - 1
|
|
54
|
+
), f"Number of delays given must be {num - 1}: was given {len(delay)}"
|
|
55
|
+
metadata = metadata or {}
|
|
56
|
+
metadata["shape"] = (num,)
|
|
57
|
+
yield from bp.count(tuple(detectors), num, delay=delay, md=metadata)
|
dodal/utils.py
CHANGED
|
@@ -79,6 +79,10 @@ def get_beamline_name(default: str) -> str:
|
|
|
79
79
|
return environ.get("BEAMLINE") or default
|
|
80
80
|
|
|
81
81
|
|
|
82
|
+
def is_test_mode() -> bool:
|
|
83
|
+
return environ.get("DODAL_TEST_MODE") == "true"
|
|
84
|
+
|
|
85
|
+
|
|
82
86
|
def get_hostname() -> str:
|
|
83
87
|
return socket.gethostname().split(".")[0]
|
|
84
88
|
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
dodal/__init__.py,sha256=Ksms_WJF8LTkbm38gEpm1jBpGqcQ8NGvmb2ZJlOE1j8,198
|
|
2
|
-
dodal/__main__.py,sha256=kP2S2RPitnOWpNGokjZ1Yq-1umOtp5sNOZk2B3tBPLM,111
|
|
3
|
-
dodal/_version.py,sha256=i_NrncMW1U_TZOADuz4SSDOQ3OJYu6niE4QzoDFQrM0,413
|
|
4
|
-
dodal/adsim.py,sha256=OW2dcS7ciD4Yq9WFw4PN_c5Bwccrmu7R-zr-u6ZCbQM,497
|
|
5
|
-
dodal/cli.py,sha256=_crmaHchxphSW8eEJB58_XZIeK82aiUv9bV7tpz-LpA,2122
|
|
6
|
-
dodal/log.py,sha256=0to7CRsbzbgVfAAfKRAMhsaUuKqF2-7CGdQc-z8Uhno,9499
|
|
7
|
-
dodal/utils.py,sha256=1dJTm77jOxD2B3flC6Xbvl7_r5L4vbGkvBSBoOhUrGY,11966
|
|
8
|
-
dodal/beamline_specific_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
-
dodal/beamline_specific_utils/i03.py,sha256=P6Ls4FoVtcacH0RJM3v6ZwwGx27oMppcBdW0la-ohTY,377
|
|
10
|
-
dodal/beamlines/README.md,sha256=K9MkL_GomxlsoTB7Mz-_dJA5NNSbmCfMiutchGg3C8o,404
|
|
11
|
-
dodal/beamlines/__init__.py,sha256=WWXqkXkufRUNFSC_b0PoHSkyKo7Tn8wNmnQCr9klh2o,3054
|
|
12
|
-
dodal/beamlines/b01_1.py,sha256=nH1CzeGXc9kAZBxISsuQF33On9FuWkwFriGKfU8Qs5g,2176
|
|
13
|
-
dodal/beamlines/i03.py,sha256=WOMkGTcrrKqoBNeRObumMA8Nlo404uIr2ccfn8gK-zs,18063
|
|
14
|
-
dodal/beamlines/i04.py,sha256=z8LUbhyfUDU08oSp85hg7hFE8FJkAyLsqPUQScs5SUA,14567
|
|
15
|
-
dodal/beamlines/i10.py,sha256=0ZoFe1vuwNiP2AvNACxuN0OMXJ4DcQ3Oqa0L-w5Ch_M,7744
|
|
16
|
-
dodal/beamlines/i13_1.py,sha256=csXHrdwUh4sXTmb4X6ZiiSS_XxRkNShsVoBMxYI6rG0,1833
|
|
17
|
-
dodal/beamlines/i20_1.py,sha256=MaPgONHqpoZuBtkiKEzYtViJnKBM2_ekeP4OdbmuXHE,1158
|
|
18
|
-
dodal/beamlines/i22.py,sha256=FcsRk90qTCLqrS6csXZEb8Vu9P1es2ivm3WWig2PN7U,9889
|
|
19
|
-
dodal/beamlines/i23.py,sha256=2j5qLoqE_hg9ETHqNkOVu7LLkVB8qalgXeORnVYKN_I,1075
|
|
20
|
-
dodal/beamlines/i24.py,sha256=Eq8GZ6WVZuzGXdxBe2f5ZGsd0n2Vr8XEYFFMgpoSFzg,6422
|
|
21
|
-
dodal/beamlines/p38.py,sha256=36DAoKO9ziCIhRQmAwLBaWKYfTykgW1KEXlqifhHaEY,7914
|
|
22
|
-
dodal/beamlines/p45.py,sha256=N4SDTIFok3uMqb37higZHMr3xRjxItsT4ib_KacKKAE,2935
|
|
23
|
-
dodal/beamlines/p99.py,sha256=mHMYi1M_jgSB9SrOPadxvPuMrxG8LmJOYtU0Iw6fnIQ,1708
|
|
24
|
-
dodal/beamlines/training_rig.py,sha256=yagMEQruA1iTOeQCNpux-6xOtkBuB-hhGvAJwQ5c9bg,1846
|
|
25
|
-
dodal/common/__init__.py,sha256=ZC4ICKUDB0BDxRaVy8nmqclVmDBne-dPtk6UJsoFq6I,258
|
|
26
|
-
dodal/common/coordination.py,sha256=OxIjDiO1-9A9KESRPFtzwkvvQlavbgA5RHemlbubBPg,1168
|
|
27
|
-
dodal/common/maths.py,sha256=K9x7iL3xXLtWYTV-xlFHDNSTIL9a2UP3Ws7wr6Dm2rQ,1803
|
|
28
|
-
dodal/common/signal_utils.py,sha256=OsVJFntyTOHVEjhw27ZSp1e8SpKR2BhqdY1kzG6sago,1774
|
|
29
|
-
dodal/common/types.py,sha256=fkL7UOwDbe3v2_VJ5f1W5RxR98Wx-Ra-LxUZWkNDtls,486
|
|
30
|
-
dodal/common/udc_directory_provider.py,sha256=H-9f6uSVGuA8jyiErPi8ikCw1JDrhRAJv-qPpN-HwJk,2379
|
|
31
|
-
dodal/common/visit.py,sha256=2UbbCmgOjZWSCxFzE9RYiTJhA_IoVOegma-Jv-PJqps,5787
|
|
32
|
-
dodal/common/beamlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
|
-
dodal/common/beamlines/beamline_parameters.py,sha256=oIPHooqu5vTAwfqZutsKbzwdi9nvFF8568Mz7jrK5rI,3618
|
|
34
|
-
dodal/common/beamlines/beamline_utils.py,sha256=rL-XgqAbaZF2FJDFj8OHSbvzCxSwzCUGMfTUWT5qOXs,4422
|
|
35
|
-
dodal/common/beamlines/device_helpers.py,sha256=s79js7no9k8JMfG7NvdmFomSP5m5VDQ6th_Hsbx1znA,939
|
|
36
|
-
dodal/devices/CTAB.py,sha256=MoExneblYUHg9Va8vAVx_p_Vw_HnqbhkzxxrX7Ic_wo,2000
|
|
37
|
-
dodal/devices/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
|
-
dodal/devices/adsim.py,sha256=dMU0TKIuiODHYFHQOH4_5UvB8iJtaJEtjqaEDGjcU-w,311
|
|
39
|
-
dodal/devices/aperture.py,sha256=BLaroQ3n8yd7uZyacJ3KvDWZH8yhA_sJc8b49QMKg9o,585
|
|
40
|
-
dodal/devices/aperturescatterguard.py,sha256=KW4ERvfMpUadixJlzCVU6oRvLqLm6pFvsldruplAHc4,8404
|
|
41
|
-
dodal/devices/apple2_undulator.py,sha256=ydcr5TuoT7jEHHIkfJywUIiHYvYXsdzgU2OJ2kZtyus,22389
|
|
42
|
-
dodal/devices/attenuator.py,sha256=viK1iccNekX6ZvR_ZmSwj5JdM1j2B8pcTg8qWDdmzhQ,2584
|
|
43
|
-
dodal/devices/backlight.py,sha256=jerjGOWuBk7TPNA3NkFRlA4DmgfVoVGAZSQ0qAyANcw,1644
|
|
44
|
-
dodal/devices/cryostream.py,sha256=CpNA2HGhN_PXkL9eqH_yAPsDxyOLIiehlUxEoNmXJVg,668
|
|
45
|
-
dodal/devices/dcm.py,sha256=eZNMGjLM56Ll0siU14XomB77W_grLIdxIrMOQNmYFG8,1609
|
|
46
|
-
dodal/devices/diamond_filter.py,sha256=hLnfMrHg-EZ1YhN_4GTX1iQDk48zFJBBp03IVGy22cw,1109
|
|
47
|
-
dodal/devices/eiger.py,sha256=2ZT2oQiZFLprg3CjsHRkXfxt9kSf8z8uUKH1Z5n3Hzo,14107
|
|
48
|
-
dodal/devices/eiger_odin.py,sha256=oZl16K-Qb2yL6tK1fyDQvqbbhhvYMSVcf_e2CjlqMa4,7409
|
|
49
|
-
dodal/devices/fast_grid_scan.py,sha256=WQGeKR-82fbnY4zUD_MQBsQyJgyIiuRpJK5nn_mfR1E,11969
|
|
50
|
-
dodal/devices/fluorescence_detector_motion.py,sha256=5IcyaVHXa9TXLFlLB0tfpQ1_ThgIRJNaFNw_uj6ahCA,501
|
|
51
|
-
dodal/devices/flux.py,sha256=RtPStHw7Mad0igVKntKWVZfuZn2clokVJqH14HLix6M,198
|
|
52
|
-
dodal/devices/focusing_mirror.py,sha256=SHRYOYTX50BI5RBB3KJFTEMOg5E-BYR8khk3IyuWcak,6096
|
|
53
|
-
dodal/devices/hutch_shutter.py,sha256=_-hR3SJHM05YHV_fEtc0VYOLamYnpVGDE56AwJGJS48,3320
|
|
54
|
-
dodal/devices/ipin.py,sha256=qsf8E3xrJYNDwzsacNLCCp3gaqsadqmN1b-Fvou8y8k,420
|
|
55
|
-
dodal/devices/linkam3.py,sha256=3oYwPtaKSPvLKEat8m7tuhE4Wizz8mg8HMrEWPCYxn0,3820
|
|
56
|
-
dodal/devices/logging_ophyd_device.py,sha256=dUVE-XhWA56WUXez0mrc4sf322CXY3MVLreTycO5j_A,668
|
|
57
|
-
dodal/devices/motors.py,sha256=dYa9T6FDMTbr8GvTb-lXtk3v4QEqAWRuGmHIO20fazQ,1039
|
|
58
|
-
dodal/devices/p45.py,sha256=jzBW2fGRhIbGzSRs5Fgupxro6aqE611n1RTcrTTG-yY,1047
|
|
59
|
-
dodal/devices/pgm.py,sha256=X9JL7gDq_EUaDpPMSGeeg6S9tfU2ic7fdC2LwPRzpoU,1101
|
|
60
|
-
dodal/devices/qbpm.py,sha256=IxL8TisUiFvdeYYch9Dru6MDwrCzMylkFnBec839cY0,467
|
|
61
|
-
dodal/devices/robot.py,sha256=H60UOH5XSnHLoLSNgBuLZ8veeYNyy-fSvc8Hf06y6Q4,5339
|
|
62
|
-
dodal/devices/s4_slit_gaps.py,sha256=j3kgF9WfGFaU9xdUuiAh-QqI5u_vhiAftaDVINt91SM,243
|
|
63
|
-
dodal/devices/scatterguard.py,sha256=jx03in9QgaThWxD4t1S8_Llent2kWrn_hThJ9KkUWTk,330
|
|
64
|
-
dodal/devices/scintillator.py,sha256=PlD6cnJ39PTB_e7QrRspPliLYE4kL_K7ziJURzuxgdA,365
|
|
65
|
-
dodal/devices/slits.py,sha256=uOyVmbgeygiP6e5Z9t5zMPXLuVEWFfYg9GB3ZU76Tug,600
|
|
66
|
-
dodal/devices/smargon.py,sha256=ijvz7k5a-gbZJv3rfX8uVpDWiHCkZnXcFZqarQvfPGY,4710
|
|
67
|
-
dodal/devices/status.py,sha256=hVrJS1yooQo6PRumRACoIEh-SKBUKxvBlQl-MtLFUMQ,327
|
|
68
|
-
dodal/devices/synchrotron.py,sha256=QtTufJA_fCaBawHougSc7nxwu240oX46_y0P-4qIW8o,1960
|
|
69
|
-
dodal/devices/tetramm.py,sha256=a48aPSPoHYCTNtVhq0YH2UNjGtJuMStjQRw7LjL98ds,8445
|
|
70
|
-
dodal/devices/thawer.py,sha256=Gq-3f__KJUM6_Ds9OVxpZ5jC447HywJxQGXen6L33Lk,1616
|
|
71
|
-
dodal/devices/turbo_slit.py,sha256=B6SPXqviMnG-U4PnUF1BdTO0LBKmTuwAUKRbxMiNJXo,1125
|
|
72
|
-
dodal/devices/undulator.py,sha256=FIjzboayAvD0EFyp6qSlzfWA_WvEFd72SbLCE03OoxE,5183
|
|
73
|
-
dodal/devices/undulator_dcm.py,sha256=5hn3UZeu4CYXmfUVSdIxjrcIpStgeA1S744p0iIFp4I,2725
|
|
74
|
-
dodal/devices/webcam.py,sha256=EqdzUBov5wMCULzzkfnCfD-5TQMZFQLp-2nlDHezmPs,2332
|
|
75
|
-
dodal/devices/xbpm_feedback.py,sha256=-1wbnahJ_oSljQR0Sjiwn3mytVP-VwsAy0a_YPjPM0Y,1168
|
|
76
|
-
dodal/devices/zebra.py,sha256=0eK23zIGm-vLVvLMwR8xnjBtIBQFUqHcl0ndbfUKNBE,9455
|
|
77
|
-
dodal/devices/zebra_controlled_shutter.py,sha256=w2ISASJ_sb3dbQGi63Yuj3ymTkjX73aSl_ZTYs8TyaI,1860
|
|
78
|
-
dodal/devices/areadetector/__init__.py,sha256=8IwLxuZMW0MOJpJp_ZDdlaE20hrtsH_PXWGaKgMiYs4,240
|
|
79
|
-
dodal/devices/areadetector/adaravis.py,sha256=Cqw_Mzrp_zODFxQ2LZBJzHp_DsZ6_dAITkZz8gYz_0w,3797
|
|
80
|
-
dodal/devices/areadetector/adsim.py,sha256=cIc9PRbKnftBk7Ut8d8CU_TVrin8EwcKHObP2n9VxWM,1876
|
|
81
|
-
dodal/devices/areadetector/adutils.py,sha256=4axFR3wtn-K-sjMVJyfTcu-8g35odf2cY8mTKv1gS-o,3093
|
|
82
|
-
dodal/devices/areadetector/plugins/CAM.py,sha256=fQkZNnnq80q2sloo1XTZH0wUwiY6q-9bECmMhMFwhjQ,976
|
|
83
|
-
dodal/devices/areadetector/plugins/MJPG.py,sha256=H_v92l8GrGS2AfpxUH8UbZG5RzFSUB7J7YPp2Ci4Ih8,3033
|
|
84
|
-
dodal/devices/detector/__init__.py,sha256=-RdACL3tzc3lLArWOoGNje48UUlv2fElOmGOz9yOuO0,317
|
|
85
|
-
dodal/devices/detector/det_dim_constants.py,sha256=LNrVMd0DbFEcnyNFmXosCP-VYaZ71Ajuv6inwo4Mg3U,2299
|
|
86
|
-
dodal/devices/detector/det_dist_to_beam_converter.py,sha256=7keoqZYfvgayePVx97lHYpcFRTJnQOfAk_PYP4EZTZQ,1951
|
|
87
|
-
dodal/devices/detector/det_resolution.py,sha256=aQkKp24LpRGiwzPAQM3wLVa4ANw32HdrKc2kftHfKQA,3253
|
|
88
|
-
dodal/devices/detector/detector.py,sha256=syzkl52kGaMINXCXEviFuYPbgNatm5tioVPDmjgro8s,4768
|
|
89
|
-
dodal/devices/detector/detector_motion.py,sha256=LjHNi9FcDSZoriQYrFde8fEmwCGccFgSHPtcxivix4g,1628
|
|
90
|
-
dodal/devices/i03/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
91
|
-
dodal/devices/i04/transfocator.py,sha256=uieByXIj0JRbmvMB_om5NOAEbEJkzfkCD24bl2aEo1g,3154
|
|
92
|
-
dodal/devices/i10/i10_apple2.py,sha256=v2C7S5BhPPdZcVt4HGjBYYcFoqGz4kurvA6eCG624qk,13017
|
|
93
|
-
dodal/devices/i10/i10_setting_data.py,sha256=pvQ1S2j3WrbGvJLyUm78JIfYMIOtw4JvtyfdcoLsMjY,142
|
|
94
|
-
dodal/devices/i20_1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
95
|
-
dodal/devices/i22/dcm.py,sha256=3tf9fWkFvlxJipZCzjPo1H2beXwxbGxsDQ9YCOGbP_4,6213
|
|
96
|
-
dodal/devices/i22/fswitch.py,sha256=AlyZ_RdbXoMHrG2-sddNOUyLl3vkBdduXVnFL_rMgLo,3046
|
|
97
|
-
dodal/devices/i22/nxsas.py,sha256=a8oJXl5uhkh9zcb9rSZmVooU-SplzzO3EsAaHJZRfrQ,6086
|
|
98
|
-
dodal/devices/i24/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
99
|
-
dodal/devices/i24/aperture.py,sha256=bbT4ts5jfrjrOxG199RGDxIYmzVyv1k0ZlZcmS6kEzU,849
|
|
100
|
-
dodal/devices/i24/beamstop.py,sha256=GpqSaHlyZfcUfaCgvQRjhDgNdGsrOwV_NqG9JLfcusY,1233
|
|
101
|
-
dodal/devices/i24/dcm.py,sha256=nP2qymTy5TrOu078XOY7h1TEwVfcgli5lTyxmwsG4O8,1990
|
|
102
|
-
dodal/devices/i24/dual_backlight.py,sha256=7QnVj75GtfN2Ickkna4-JM1fTaioj37TnArBeiUbJPY,2034
|
|
103
|
-
dodal/devices/i24/i24_detector_motion.py,sha256=_HgdsZqFYY0tKqUgMzViHaPEUFXL3WlXXioGvDehRUw,364
|
|
104
|
-
dodal/devices/i24/i24_vgonio.py,sha256=Igqs7687z6lyhGVeJEDtDmPachYxU48MUH2BF0RpK9Q,461
|
|
105
|
-
dodal/devices/i24/pmac.py,sha256=qug40tz00vjvmQox3W6GrEcorriEeGkNyP5m4u5CVHo,7201
|
|
106
|
-
dodal/devices/oav/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
107
|
-
dodal/devices/oav/microns_for_zoom_levels.json,sha256=kJTkbu2v6_Ccc_cDy7FRTX-gRhXxfYskjVqwBCZIqCQ,1209
|
|
108
|
-
dodal/devices/oav/oav_calculations.py,sha256=tr3Z2pFT7v_enAiNuSZV0esPsiHfRGrj7t0-g_Ix5Do,2363
|
|
109
|
-
dodal/devices/oav/oav_detector.py,sha256=aStDk40tJ63aJoAtzm621HFqkZjkinJ9EgY5VvCSRTw,4812
|
|
110
|
-
dodal/devices/oav/oav_parameters.py,sha256=gGN73TQGUiRzlIO5YKiqCRkjpTKsV6LFGo7Eu4Vs82g,6074
|
|
111
|
-
dodal/devices/oav/oav_to_redis_forwarder.py,sha256=pjBm80ZmsRdF7KqG30dlj_Tzk7_r3m8QT5AvdSFOg2c,6238
|
|
112
|
-
dodal/devices/oav/utils.py,sha256=tzBEgATtn2yfhUhhhbSfYkew7BMbk7iTHVhlxfGLe94,3105
|
|
113
|
-
dodal/devices/oav/pin_image_recognition/__init__.py,sha256=l5IsWMDZDw3-jk0DkGpiw_BzqyfVYRonlfX6Je1ZPR0,6446
|
|
114
|
-
dodal/devices/oav/pin_image_recognition/manual_test.py,sha256=h1Rto6ZDCB3jWhjSy9N8ECxRN583iYDJr9LxrTJ8kfE,903
|
|
115
|
-
dodal/devices/oav/pin_image_recognition/utils.py,sha256=L9ypluYqeOFoS7gQuws-vTNc8LqaKl2ZIDNeQ2JaNpg,8592
|
|
116
|
-
dodal/devices/oav/snapshots/grid_overlay.py,sha256=E1KviiM6TeDzjbB16_ecrtIm4cC74nme2Lc7ZQIKCTI,3626
|
|
117
|
-
dodal/devices/oav/snapshots/snapshot_with_beam_centre.py,sha256=HzgwaOwBeXFRA0DyXaffvlDe6qw5kuxmFnn8_zn8KMQ,1905
|
|
118
|
-
dodal/devices/oav/snapshots/snapshot_with_grid.py,sha256=-fqfChbVQTK3S18TKewnhobkaDoV0ULhcRO_dWwcmSc,2243
|
|
119
|
-
dodal/devices/p99/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
120
|
-
dodal/devices/p99/sample_stage.py,sha256=kvwKCDUmXqcoXfIbAENtqm3Hi2cHP7dZIPQgQT6hsXw,1140
|
|
121
|
-
dodal/devices/training_rig/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
122
|
-
dodal/devices/training_rig/sample_stage.py,sha256=jktTp837ij8wor5LidE3AajCk95L7DebJotMlO7QwTE,355
|
|
123
|
-
dodal/devices/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
124
|
-
dodal/devices/util/adjuster_plans.py,sha256=XpJ1YJKoOCFzj2sonkZYJAdewi3jRaok_2gOmNsfeS0,956
|
|
125
|
-
dodal/devices/util/epics_util.py,sha256=R0_I9HEZ2l19BZaTpevPqT3p3kp5GZCfmNNmnXGfdsc,4689
|
|
126
|
-
dodal/devices/util/lookup_tables.py,sha256=Bk-wZk7JO5_j_8gbot-8reirVqxvFUg9_SIqEIOVZu0,2025
|
|
127
|
-
dodal/devices/util/motor_utils.py,sha256=pNY-aUk9LxaIWeDr5rpMS6udiB9j19wcCXkNDLp1uA0,257
|
|
128
|
-
dodal/devices/util/save_panda.py,sha256=PHFlkerBhkkU0-o5dNEdi2P95_jD9Lk8yYgaqn9R97o,2538
|
|
129
|
-
dodal/devices/util/test_utils.py,sha256=VrSFFGLNKOcCAsWFMZOxwhng3wGR5kV8NqqnKfj8Vuw,562
|
|
130
|
-
dodal/devices/xspress3/xspress3.py,sha256=JTx3ppAc8GwV9K-Gfqo81iGYH_L-ONyFWiPRs9XUs-w,4661
|
|
131
|
-
dodal/devices/xspress3/xspress3_channel.py,sha256=yJRwseLmtkW2Vv6GB8sLdOFuBn3e4c9Q8fgPacMgl5w,1638
|
|
132
|
-
dodal/devices/zocalo/__init__.py,sha256=oPhjFB39yf2NWkGD-MMcPFnnOVZ_RtdyBt2OLYn-Xa4,505
|
|
133
|
-
dodal/devices/zocalo/zocalo_interaction.py,sha256=y8YKMaVwfsRPBofHGGLYmYsd4QwMvm7JIPEo6wrN_Xo,3493
|
|
134
|
-
dodal/devices/zocalo/zocalo_results.py,sha256=WgNGgu4sXIlhL5-G444uxhKbWc9HOYIOTwd2NuV8-0o,14511
|
|
135
|
-
dodal/parameters/experiment_parameter_base.py,sha256=O7JamfuJ5cYHkPf9tsHJPqn-OMHTAGouigvM1cDFehE,313
|
|
136
|
-
dodal/plans/check_topup.py,sha256=3gyLHfHNQBCgEWuAg4QE-ONx7y2Do1vVv5HP8ss0Z1I,5371
|
|
137
|
-
dodal/plans/data_session_metadata.py,sha256=GjR4E2s3ZwYkvkBnW6TcL6OLdmyxrmkoSSI242sEPFA,1567
|
|
138
|
-
dodal/plans/motor_util_plans.py,sha256=1s02s_Yn7vusv8o64n5p4yiibmQ5ETv8t59CD27h8gw,4655
|
|
139
|
-
dls_dodal-1.34.1.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
140
|
-
dls_dodal-1.34.1.dist-info/METADATA,sha256=y8nPhARI53GhOTWacruJ4nJ0lTCHOMLBID0_XRjNDec,16579
|
|
141
|
-
dls_dodal-1.34.1.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
142
|
-
dls_dodal-1.34.1.dist-info/entry_points.txt,sha256=bycw_EKUzup_rxfCetOwcauXV4kLln_OPpPT8jEnr-I,94
|
|
143
|
-
dls_dodal-1.34.1.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
|
|
144
|
-
dls_dodal-1.34.1.dist-info/RECORD,,
|
dodal/devices/i24/i24_vgonio.py
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
from ophyd import Component as Cpt
|
|
2
|
-
from ophyd import EpicsMotor
|
|
3
|
-
from ophyd.epics_motor import MotorBundle
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class VGonio(MotorBundle):
|
|
7
|
-
x = Cpt(EpicsMotor, "PINX")
|
|
8
|
-
z = Cpt(EpicsMotor, "PINZ")
|
|
9
|
-
yh = Cpt(EpicsMotor, "PINYH")
|
|
10
|
-
omega = Cpt(EpicsMotor, "OMEGA")
|
|
11
|
-
kappa = Cpt(EpicsMotor, "KAPPA")
|
|
12
|
-
phi = Cpt(EpicsMotor, "PHI")
|
|
13
|
-
|
|
14
|
-
# Real motors
|
|
15
|
-
xs = Cpt(EpicsMotor, "PINXS")
|
|
16
|
-
ys = Cpt(EpicsMotor, "PINXS")
|
|
17
|
-
zs = Cpt(EpicsMotor, "PINZS")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|