dls-dodal 1.36.0__py3-none-any.whl → 1.36.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. {dls_dodal-1.36.0.dist-info → dls_dodal-1.36.2.dist-info}/METADATA +33 -33
  2. {dls_dodal-1.36.0.dist-info → dls_dodal-1.36.2.dist-info}/RECORD +39 -39
  3. {dls_dodal-1.36.0.dist-info → dls_dodal-1.36.2.dist-info}/WHEEL +1 -1
  4. dodal/_version.py +2 -2
  5. dodal/beamlines/__init__.py +1 -0
  6. dodal/beamlines/adsim.py +75 -0
  7. dodal/beamlines/b01_1.py +16 -31
  8. dodal/beamlines/i22.py +124 -265
  9. dodal/beamlines/i24.py +72 -7
  10. dodal/beamlines/p38.py +16 -1
  11. dodal/beamlines/p99.py +22 -53
  12. dodal/beamlines/training_rig.py +16 -26
  13. dodal/cli.py +54 -8
  14. dodal/common/beamlines/beamline_utils.py +32 -2
  15. dodal/common/beamlines/device_helpers.py +2 -0
  16. dodal/devices/adsim.py +10 -10
  17. dodal/devices/attenuator.py +15 -5
  18. dodal/devices/dcm.py +5 -4
  19. dodal/devices/fast_grid_scan.py +21 -46
  20. dodal/devices/focusing_mirror.py +20 -6
  21. dodal/devices/i24/beam_center.py +12 -0
  22. dodal/devices/i24/focus_mirrors.py +60 -0
  23. dodal/devices/i24/pilatus_metadata.py +44 -0
  24. dodal/devices/linkam3.py +1 -1
  25. dodal/devices/motors.py +14 -10
  26. dodal/devices/oav/oav_detector.py +2 -2
  27. dodal/devices/oav/pin_image_recognition/__init__.py +4 -7
  28. dodal/devices/oav/utils.py +1 -0
  29. dodal/devices/p99/sample_stage.py +12 -16
  30. dodal/devices/pressure_jump_cell.py +299 -0
  31. dodal/devices/robot.py +1 -1
  32. dodal/devices/tetramm.py +1 -1
  33. dodal/devices/undulator.py +4 -1
  34. dodal/devices/undulator_dcm.py +7 -19
  35. dodal/devices/zocalo/zocalo_results.py +7 -7
  36. dodal/utils.py +151 -2
  37. dodal/adsim.py +0 -17
  38. dodal/devices/areadetector/__init__.py +0 -10
  39. dodal/devices/areadetector/adaravis.py +0 -101
  40. dodal/devices/areadetector/adsim.py +0 -47
  41. dodal/devices/areadetector/adutils.py +0 -81
  42. {dls_dodal-1.36.0.dist-info → dls_dodal-1.36.2.dist-info}/LICENSE +0 -0
  43. {dls_dodal-1.36.0.dist-info → dls_dodal-1.36.2.dist-info}/entry_points.txt +0 -0
  44. {dls_dodal-1.36.0.dist-info → dls_dodal-1.36.2.dist-info}/top_level.txt +0 -0
dodal/beamlines/i22.py CHANGED
@@ -5,12 +5,12 @@ from ophyd_async.epics.adpilatus import PilatusDetector
5
5
  from ophyd_async.fastcs.panda import HDFPanda
6
6
 
7
7
  from dodal.common.beamlines.beamline_utils import (
8
- device_instantiation,
8
+ device_factory,
9
9
  get_path_provider,
10
10
  set_path_provider,
11
11
  )
12
12
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
13
- from dodal.common.beamlines.device_helpers import numbered_slits
13
+ from dodal.common.beamlines.device_helpers import HDF5_PREFIX
14
14
  from dodal.common.crystal_metadata import (
15
15
  MaterialsEnum,
16
16
  make_crystal_metadata_from_material,
@@ -27,9 +27,10 @@ from dodal.devices.tetramm import TetrammDetector
27
27
  from dodal.devices.undulator import Undulator
28
28
  from dodal.devices.watsonmarlow323_pump import WatsonMarlow323Pump
29
29
  from dodal.log import set_beamline as set_log_beamline
30
- from dodal.utils import BeamlinePrefix, get_beamline_name, skip_device
30
+ from dodal.utils import BeamlinePrefix, get_beamline_name
31
31
 
32
32
  BL = get_beamline_name("i22")
33
+ PREFIX = BeamlinePrefix(BL)
33
34
  set_log_beamline(BL)
34
35
  set_utils_beamline(BL)
35
36
 
@@ -47,237 +48,141 @@ set_path_provider(
47
48
  )
48
49
 
49
50
 
50
- def saxs(
51
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
52
- ) -> PilatusDetector:
53
- return device_instantiation(
54
- NXSasPilatus,
55
- "saxs",
56
- "-EA-PILAT-01:",
57
- wait_for_connection,
58
- fake_with_ophyd_sim,
59
- drv_suffix="CAM:",
60
- hdf_suffix="HDF5:",
61
- metadata_holder=NXSasMetadataHolder(
62
- x_pixel_size=(1.72e-1, "mm"),
63
- y_pixel_size=(1.72e-1, "mm"),
64
- description="Dectris Pilatus3 2M",
65
- type="Photon Counting Hybrid Pixel",
66
- sensor_material="silicon",
67
- sensor_thickness=(0.45, "mm"),
68
- distance=(4711.833684146172, "mm"),
69
- ),
51
+ @device_factory()
52
+ def saxs() -> PilatusDetector:
53
+ metadata_holder = NXSasMetadataHolder(
54
+ x_pixel_size=(1.72e-1, "mm"),
55
+ y_pixel_size=(1.72e-1, "mm"),
56
+ description="Dectris Pilatus3 2M",
57
+ type="Photon Counting Hybrid Pixel",
58
+ sensor_material="silicon",
59
+ sensor_thickness=(0.45, "mm"),
60
+ distance=(4711.833684146172, "mm"),
61
+ )
62
+ return NXSasPilatus(
63
+ prefix=f"{PREFIX.beamline_prefix}-EA-PILAT-01:",
70
64
  path_provider=get_path_provider(),
65
+ drv_suffix="CAM:",
66
+ hdf_suffix=HDF5_PREFIX,
67
+ metadata_holder=metadata_holder,
71
68
  )
72
69
 
73
70
 
74
- def synchrotron(
75
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
76
- ) -> Synchrotron:
77
- return device_instantiation(
78
- Synchrotron,
79
- "synchrotron",
80
- "",
81
- wait_for_connection,
82
- fake_with_ophyd_sim,
83
- )
71
+ @device_factory()
72
+ def synchrotron() -> Synchrotron:
73
+ return Synchrotron()
84
74
 
85
75
 
86
- def waxs(
87
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
88
- ) -> PilatusDetector:
89
- return device_instantiation(
90
- NXSasPilatus,
91
- "waxs",
92
- "-EA-PILAT-03:",
93
- wait_for_connection,
94
- fake_with_ophyd_sim,
95
- drv_suffix="CAM:",
96
- hdf_suffix="HDF5:",
97
- metadata_holder=NXSasMetadataHolder(
98
- x_pixel_size=(1.72e-1, "mm"),
99
- y_pixel_size=(1.72e-1, "mm"),
100
- description="Dectris Pilatus3 2M",
101
- type="Photon Counting Hybrid Pixel",
102
- sensor_material="silicon",
103
- sensor_thickness=(0.45, "mm"),
104
- distance=(175.4199417092314, "mm"),
105
- ),
76
+ @device_factory()
77
+ def waxs() -> PilatusDetector:
78
+ metadata_holder = NXSasMetadataHolder(
79
+ x_pixel_size=(1.72e-1, "mm"),
80
+ y_pixel_size=(1.72e-1, "mm"),
81
+ description="Dectris Pilatus3 2M",
82
+ type="Photon Counting Hybrid Pixel",
83
+ sensor_material="silicon",
84
+ sensor_thickness=(0.45, "mm"),
85
+ distance=(175.4199417092314, "mm"),
86
+ )
87
+ return NXSasPilatus(
88
+ prefix=f"{PREFIX.beamline_prefix}-EA-PILAT-03:",
106
89
  path_provider=get_path_provider(),
90
+ drv_suffix="CAM:",
91
+ hdf_suffix=HDF5_PREFIX,
92
+ metadata_holder=metadata_holder,
107
93
  )
108
94
 
109
95
 
110
- def i0(
111
- wait_for_connection: bool = True,
112
- fake_with_ophyd_sim: bool = False,
113
- ) -> TetrammDetector:
114
- return device_instantiation(
115
- TetrammDetector,
116
- "i0",
117
- "-EA-XBPM-02:",
118
- wait_for_connection,
119
- fake_with_ophyd_sim,
120
- type="Cividec Diamond XBPM",
96
+ @device_factory()
97
+ def i0() -> TetrammDetector:
98
+ return TetrammDetector(
99
+ prefix=f"{PREFIX.beamline_prefix}-EA-XBPM-02:",
121
100
  path_provider=get_path_provider(),
101
+ type="Cividec Diamond XBPM",
122
102
  )
123
103
 
124
104
 
125
- def it(
126
- wait_for_connection: bool = True,
127
- fake_with_ophyd_sim: bool = False,
128
- ) -> TetrammDetector:
129
- return device_instantiation(
130
- TetrammDetector,
131
- "it",
132
- "-EA-TTRM-02:",
133
- wait_for_connection,
134
- fake_with_ophyd_sim,
135
- type="PIN Diode",
105
+ @device_factory()
106
+ def it() -> TetrammDetector:
107
+ return TetrammDetector(
108
+ prefix=f"{PREFIX.beamline_prefix}-EA-TTRM-02:",
136
109
  path_provider=get_path_provider(),
110
+ type="PIN Diode",
137
111
  )
138
112
 
139
113
 
140
- def vfm(
141
- wait_for_connection: bool = True,
142
- fake_with_ophyd_sim: bool = False,
143
- ) -> FocusingMirror:
144
- return device_instantiation(
145
- FocusingMirror,
146
- "vfm",
147
- "-OP-KBM-01:VFM:",
148
- wait_for_connection,
149
- fake_with_ophyd_sim,
114
+ @device_factory()
115
+ def vfm() -> FocusingMirror:
116
+ return FocusingMirror(
117
+ prefix=f"{PREFIX.beamline_prefix}-OP-KBM-01:VFM:",
150
118
  )
151
119
 
152
120
 
153
- def hfm(
154
- wait_for_connection: bool = True,
155
- fake_with_ophyd_sim: bool = False,
156
- ) -> FocusingMirror:
157
- return device_instantiation(
158
- FocusingMirror,
159
- "hfm",
160
- "-OP-KBM-01:HFM:",
161
- wait_for_connection,
162
- fake_with_ophyd_sim,
121
+ @device_factory()
122
+ def hfm() -> FocusingMirror:
123
+ return FocusingMirror(
124
+ prefix=f"{PREFIX.beamline_prefix}-OP-KBM-01:HFM:",
163
125
  )
164
126
 
165
127
 
166
- def dcm(
167
- wait_for_connection: bool = True,
168
- fake_with_ophyd_sim: bool = False,
169
- ) -> DoubleCrystalMonochromator:
170
- return device_instantiation(
171
- DoubleCrystalMonochromator,
172
- "dcm",
173
- f"{BeamlinePrefix(BL).beamline_prefix}-MO-DCM-01:",
174
- wait_for_connection,
175
- fake_with_ophyd_sim,
176
- bl_prefix=False,
177
- temperature_prefix=f"{BeamlinePrefix(BL).beamline_prefix}-DI-DCM-01:",
128
+ @device_factory()
129
+ def dcm() -> DoubleCrystalMonochromator:
130
+ return DoubleCrystalMonochromator(
131
+ prefix=f"{PREFIX.beamline_prefix}-MO-DCM-01:",
132
+ temperature_prefix=f"{PREFIX.beamline_prefix}-DI-DCM-01:",
178
133
  crystal_1_metadata=make_crystal_metadata_from_material(
179
134
  MaterialsEnum.Si, (1, 1, 1)
180
135
  ),
181
136
  crystal_2_metadata=make_crystal_metadata_from_material(
182
- MaterialsEnum.Si,
183
- (1, 1, 1),
137
+ MaterialsEnum.Si, (1, 1, 1)
184
138
  ),
185
139
  )
186
140
 
187
141
 
188
- def undulator(
189
- wait_for_connection: bool = True,
190
- fake_with_ophyd_sim: bool = False,
191
- ) -> Undulator:
192
- return device_instantiation(
193
- Undulator,
194
- "undulator",
195
- f"{BeamlinePrefix(BL).insertion_prefix}-MO-SERVC-01:",
196
- wait_for_connection,
197
- fake_with_ophyd_sim,
198
- bl_prefix=False,
142
+ @device_factory()
143
+ def undulator() -> Undulator:
144
+ return Undulator(
145
+ prefix=f"{PREFIX.insertion_prefix}-MO-SERVC-01:",
146
+ id_gap_lookup_table_path="/dls_sw/i22/software/daq_configuration/lookup/BeamLine_Undulator_toGap.txt",
199
147
  poles=80,
200
148
  length=2.0,
201
- id_gap_lookup_table_path="/dls_sw/i22/software/daq_configuration/lookup/BeamLine_Undulator_toGap.txt",
202
149
  )
203
150
 
204
151
 
205
- def slits_1(
206
- wait_for_connection: bool = True,
207
- fake_with_ophyd_sim: bool = False,
208
- ) -> Slits:
209
- return numbered_slits(
210
- 1,
211
- wait_for_connection,
212
- fake_with_ophyd_sim,
213
- )
152
+ @device_factory()
153
+ def slits_1() -> Slits:
154
+ return Slits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-01:")
214
155
 
215
156
 
216
- def slits_2(
217
- wait_for_connection: bool = True,
218
- fake_with_ophyd_sim: bool = False,
219
- ) -> Slits:
220
- return numbered_slits(
221
- 2,
222
- wait_for_connection,
223
- fake_with_ophyd_sim,
224
- )
157
+ @device_factory()
158
+ def slits_2() -> Slits:
159
+ return Slits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-02:")
225
160
 
226
161
 
227
- def slits_3(
228
- wait_for_connection: bool = True,
229
- fake_with_ophyd_sim: bool = False,
230
- ) -> Slits:
231
- return numbered_slits(
232
- 3,
233
- wait_for_connection,
234
- fake_with_ophyd_sim,
235
- )
162
+ @device_factory()
163
+ def slits_3() -> Slits:
164
+ return Slits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-03:")
236
165
 
237
166
 
238
- def slits_4(
239
- wait_for_connection: bool = True,
240
- fake_with_ophyd_sim: bool = False,
241
- ) -> Slits:
242
- return numbered_slits(
243
- 4,
244
- wait_for_connection,
245
- fake_with_ophyd_sim,
246
- )
167
+ @device_factory()
168
+ def slits_4() -> Slits:
169
+ return Slits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-04:")
247
170
 
248
171
 
249
- def slits_5(
250
- wait_for_connection: bool = True,
251
- fake_with_ophyd_sim: bool = False,
252
- ) -> Slits:
253
- return numbered_slits(
254
- 5,
255
- wait_for_connection,
256
- fake_with_ophyd_sim,
257
- )
172
+ @device_factory()
173
+ def slits_5() -> Slits:
174
+ return Slits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-05:")
258
175
 
259
176
 
260
- def slits_6(
261
- wait_for_connection: bool = True,
262
- fake_with_ophyd_sim: bool = False,
263
- ) -> Slits:
264
- return numbered_slits(
265
- 6,
266
- wait_for_connection,
267
- fake_with_ophyd_sim,
268
- )
177
+ @device_factory()
178
+ def slits_6() -> Slits:
179
+ return Slits(prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-06:")
269
180
 
270
181
 
271
- def fswitch(
272
- wait_for_connection: bool = True,
273
- fake_with_ophyd_sim: bool = False,
274
- ) -> FSwitch:
275
- return device_instantiation(
276
- FSwitch,
277
- "fswitch",
278
- "-MO-FSWT-01:",
279
- wait_for_connection,
280
- fake_with_ophyd_sim,
182
+ @device_factory()
183
+ def fswitch() -> FSwitch:
184
+ return FSwitch(
185
+ prefix=f"{PREFIX.beamline_prefix}-MO-FSWT-01:",
281
186
  lens_geometry="paraboloid",
282
187
  cylindrical=True,
283
188
  lens_material="Beryllium",
@@ -286,107 +191,61 @@ def fswitch(
286
191
 
287
192
  # Must document what PandAs are physically connected to
288
193
  # See: https://github.com/bluesky/ophyd-async/issues/284
289
- def panda1(
290
- wait_for_connection: bool = True,
291
- fake_with_ophyd_sim: bool = False,
292
- ) -> HDFPanda:
293
- return device_instantiation(
294
- HDFPanda,
295
- "panda1",
296
- "-EA-PANDA-01:",
297
- wait_for_connection,
298
- fake_with_ophyd_sim,
194
+ @device_factory()
195
+ def panda1() -> HDFPanda:
196
+ return HDFPanda(
197
+ prefix=f"{PREFIX.beamline_prefix}-EA-PANDA-01:",
299
198
  path_provider=get_path_provider(),
300
199
  )
301
200
 
302
201
 
303
- @skip_device()
304
- def panda2(
305
- wait_for_connection: bool = True,
306
- fake_with_ophyd_sim: bool = False,
307
- ) -> HDFPanda:
308
- return device_instantiation(
309
- HDFPanda,
310
- "panda2",
311
- "-EA-PANDA-02:",
312
- wait_for_connection,
313
- fake_with_ophyd_sim,
202
+ @device_factory(skip=True)
203
+ def panda2() -> HDFPanda:
204
+ return HDFPanda(
205
+ prefix=f"{PREFIX.beamline_prefix}-EA-PANDA-02:",
314
206
  path_provider=get_path_provider(),
315
207
  )
316
208
 
317
209
 
318
- @skip_device()
319
- def panda3(
320
- wait_for_connection: bool = True,
321
- fake_with_ophyd_sim: bool = False,
322
- ) -> HDFPanda:
323
- return device_instantiation(
324
- HDFPanda,
325
- "panda3",
326
- "-EA-PANDA-03:",
327
- wait_for_connection,
328
- fake_with_ophyd_sim,
210
+ @device_factory(skip=True)
211
+ def panda3() -> HDFPanda:
212
+ return HDFPanda(
213
+ prefix=f"{PREFIX.beamline_prefix}-EA-PANDA-03:",
329
214
  path_provider=get_path_provider(),
330
215
  )
331
216
 
332
217
 
333
- @skip_device()
334
- def panda4(
335
- wait_for_connection: bool = True,
336
- fake_with_ophyd_sim: bool = False,
337
- ) -> HDFPanda:
338
- return device_instantiation(
339
- HDFPanda,
340
- "panda4",
341
- "-EA-PANDA-04:",
342
- wait_for_connection,
343
- fake_with_ophyd_sim,
218
+ @device_factory(skip=True)
219
+ def panda4() -> HDFPanda:
220
+ return HDFPanda(
221
+ prefix=f"{PREFIX.beamline_prefix}-EA-PANDA-04:",
344
222
  path_provider=get_path_provider(),
345
223
  )
346
224
 
347
225
 
348
- def oav(
349
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
350
- ) -> AravisDetector:
351
- return device_instantiation(
352
- NXSasOAV,
353
- "oav",
354
- "-DI-OAV-01:",
355
- wait_for_connection,
356
- fake_with_ophyd_sim,
226
+ @device_factory()
227
+ def oav() -> AravisDetector:
228
+ metadata_holder = NXSasMetadataHolder(
229
+ x_pixel_size=(3.45e-3, "mm"), # Double check this figure
230
+ y_pixel_size=(3.45e-3, "mm"),
231
+ description="AVT Mako G-507B",
232
+ distance=(-1.0, "m"),
233
+ )
234
+ return NXSasOAV(
235
+ prefix=f"{PREFIX.beamline_prefix}-DI-OAV-01:",
357
236
  drv_suffix="DET:",
358
- hdf_suffix="HDF5:",
359
- metadata_holder=NXSasMetadataHolder(
360
- x_pixel_size=(3.45e-3, "mm"), # Double check this figure
361
- y_pixel_size=(3.45e-3, "mm"),
362
- description="AVT Mako G-507B",
363
- distance=(-1.0, "m"),
364
- ),
237
+ hdf_suffix=HDF5_PREFIX,
365
238
  path_provider=get_path_provider(),
239
+ metadata_holder=metadata_holder,
366
240
  )
367
241
 
368
242
 
369
- @skip_device()
370
- def linkam(
371
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
372
- ) -> Linkam3:
373
- return device_instantiation(
374
- Linkam3,
375
- "linkam",
376
- "-EA-TEMPC-05",
377
- wait_for_connection,
378
- fake_with_ophyd_sim,
379
- )
243
+ @device_factory(skip=True)
244
+ def linkam() -> Linkam3:
245
+ return Linkam3(prefix=f"{PREFIX.beamline_prefix}-EA-TEMPC-05:")
380
246
 
381
247
 
382
- def ppump(
383
- wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
384
- ) -> WatsonMarlow323Pump:
248
+ @device_factory()
249
+ def ppump() -> WatsonMarlow323Pump:
385
250
  """Sample Environment Peristaltic Pump"""
386
- return device_instantiation(
387
- WatsonMarlow323Pump,
388
- "ppump",
389
- "-EA-PUMP-01:",
390
- wait_for_connection,
391
- fake_with_ophyd_sim,
392
- )
251
+ return WatsonMarlow323Pump(f"{PREFIX.beamline_prefix}-EA-PUMP-01:")
dodal/beamlines/i24.py CHANGED
@@ -1,16 +1,17 @@
1
- from dodal.common.beamlines.beamline_utils import (
2
- BL,
3
- device_instantiation,
4
- )
1
+ from dodal.common.beamlines.beamline_utils import BL, device_instantiation
5
2
  from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
3
+ from dodal.devices.attenuator import ReadOnlyAttenuator
6
4
  from dodal.devices.detector import DetectorParams
7
5
  from dodal.devices.eiger import EigerDetector
8
6
  from dodal.devices.hutch_shutter import HutchShutter
9
7
  from dodal.devices.i24.aperture import Aperture
8
+ from dodal.devices.i24.beam_center import DetectorBeamCenter
10
9
  from dodal.devices.i24.beamstop import Beamstop
11
10
  from dodal.devices.i24.dcm import DCM
12
11
  from dodal.devices.i24.dual_backlight import DualBacklight
12
+ from dodal.devices.i24.focus_mirrors import FocusMirrorsMode
13
13
  from dodal.devices.i24.i24_detector_motion import DetectorMotion
14
+ from dodal.devices.i24.pilatus_metadata import PilatusMetadata
14
15
  from dodal.devices.i24.pmac import PMAC
15
16
  from dodal.devices.i24.vgonio import VerticalGoniometer
16
17
  from dodal.devices.oav.oav_detector import OAV
@@ -29,6 +30,21 @@ set_log_beamline(BL)
29
30
  set_utils_beamline(BL)
30
31
 
31
32
 
33
+ def attenuator(
34
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
35
+ ) -> ReadOnlyAttenuator:
36
+ """Get a read-only attenuator device for i24, instantiate it if it hasn't already
37
+ been. If this is called when already instantiated in i24, it will return the
38
+ existing object."""
39
+ return device_instantiation(
40
+ ReadOnlyAttenuator,
41
+ "attenuator",
42
+ "-OP-ATTN-01:",
43
+ wait_for_connection,
44
+ fake_with_ophyd_sim,
45
+ )
46
+
47
+
32
48
  def aperture(
33
49
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
34
50
  ) -> Aperture:
@@ -70,7 +86,6 @@ def backlight(
70
86
  )
71
87
 
72
88
 
73
- @skip_device(lambda: BL == "s24")
74
89
  def detector_motion(
75
90
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
76
91
  ) -> DetectorMotion:
@@ -151,7 +166,6 @@ def oav(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) ->
151
166
  )
152
167
 
153
168
 
154
- @skip_device(lambda: BL == "s24")
155
169
  def vgonio(
156
170
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
157
171
  ) -> VerticalGoniometer:
@@ -180,7 +194,6 @@ def zebra(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) -
180
194
  )
181
195
 
182
196
 
183
- @skip_device(lambda: BL == "s24")
184
197
  def shutter(
185
198
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
186
199
  ) -> HutchShutter:
@@ -194,3 +207,55 @@ def shutter(
194
207
  wait_for_connection,
195
208
  fake_with_ophyd_sim,
196
209
  )
210
+
211
+
212
+ def focus_mirrors(
213
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
214
+ ) -> FocusMirrorsMode:
215
+ """Get the i24 focus mirror devise to find the beam size."""
216
+ return device_instantiation(
217
+ FocusMirrorsMode,
218
+ "focus_mirrors",
219
+ "-OP-MFM-01:",
220
+ wait_for_connection,
221
+ fake_with_ophyd_sim,
222
+ )
223
+
224
+
225
+ def eiger_beam_center(
226
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
227
+ ) -> DetectorBeamCenter:
228
+ """A device for setting/reading the beamcenter from the eiger on i24."""
229
+ return device_instantiation(
230
+ DetectorBeamCenter,
231
+ "eiger_bc",
232
+ "-EA-EIGER-01:CAM:",
233
+ wait_for_connection,
234
+ fake_with_ophyd_sim,
235
+ )
236
+
237
+
238
+ def pilatus_beam_center(
239
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
240
+ ) -> DetectorBeamCenter:
241
+ """A device for setting/reading the beamcenter from the pilatus on i24."""
242
+ return device_instantiation(
243
+ DetectorBeamCenter,
244
+ "pilatus_bc",
245
+ "-EA-PILAT-01:cam1:",
246
+ wait_for_connection,
247
+ fake_with_ophyd_sim,
248
+ )
249
+
250
+
251
+ def pilatus_metadata(
252
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
253
+ ) -> PilatusMetadata:
254
+ """A small pilatus driver device for figuring out the filename template."""
255
+ return device_instantiation(
256
+ PilatusMetadata,
257
+ "pilatus_meta",
258
+ "-EA-PILAT-01:",
259
+ wait_for_connection,
260
+ fake_with_ophyd_sim,
261
+ )
dodal/beamlines/p38.py CHANGED
@@ -19,6 +19,7 @@ from dodal.devices.focusing_mirror import FocusingMirror
19
19
  from dodal.devices.i22.dcm import DoubleCrystalMonochromator
20
20
  from dodal.devices.i22.fswitch import FSwitch
21
21
  from dodal.devices.linkam3 import Linkam3
22
+ from dodal.devices.pressure_jump_cell import PressureJumpCell
22
23
  from dodal.devices.slits import Slits
23
24
  from dodal.devices.tetramm import TetrammDetector
24
25
  from dodal.devices.undulator import Undulator
@@ -312,7 +313,7 @@ def linkam(
312
313
  return device_instantiation(
313
314
  Linkam3,
314
315
  "linkam",
315
- "-EA-LINKM-02:",
316
+ f"{BeamlinePrefix(BL).insertion_prefix}-EA-LINKM-02:",
316
317
  wait_for_connection,
317
318
  fake_with_ophyd_sim,
318
319
  )
@@ -329,3 +330,17 @@ def ppump(
329
330
  wait_for_connection,
330
331
  fake_with_ophyd_sim,
331
332
  )
333
+
334
+
335
+ def high_pressure_xray_cell(
336
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
337
+ ) -> PressureJumpCell:
338
+ return device_instantiation(
339
+ PressureJumpCell,
340
+ "high_pressure_xray_cell",
341
+ f"{BeamlinePrefix(BL).insertion_prefix}-EA",
342
+ wait_for_connection,
343
+ fake_with_ophyd_sim,
344
+ cell_prefix="-HPXC-01:",
345
+ adc_prefix="-ADC",
346
+ )