dls-dodal 1.36.0__py3-none-any.whl → 1.36.1a0__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 (37) hide show
  1. {dls_dodal-1.36.0.dist-info → dls_dodal-1.36.1a0.dist-info}/METADATA +33 -33
  2. {dls_dodal-1.36.0.dist-info → dls_dodal-1.36.1a0.dist-info}/RECORD +37 -33
  3. {dls_dodal-1.36.0.dist-info → dls_dodal-1.36.1a0.dist-info}/WHEEL +1 -1
  4. dodal/_version.py +2 -2
  5. dodal/beamlines/b01_1.py +16 -31
  6. dodal/beamlines/i22.py +124 -265
  7. dodal/beamlines/i24.py +56 -7
  8. dodal/beamlines/p38.py +16 -1
  9. dodal/beamlines/p99.py +22 -53
  10. dodal/beamlines/training_rig.py +16 -26
  11. dodal/cli.py +54 -8
  12. dodal/common/beamlines/beamline_utils.py +32 -2
  13. dodal/common/beamlines/device_helpers.py +2 -0
  14. dodal/devices/aperture.py +7 -0
  15. dodal/devices/aperturescatterguard.py +195 -79
  16. dodal/devices/dcm.py +5 -4
  17. dodal/devices/fast_grid_scan.py +21 -46
  18. dodal/devices/focusing_mirror.py +8 -3
  19. dodal/devices/i24/beam_center.py +12 -0
  20. dodal/devices/i24/focus_mirrors.py +60 -0
  21. dodal/devices/i24/pilatus_metadata.py +44 -0
  22. dodal/devices/linkam3.py +1 -1
  23. dodal/devices/motors.py +14 -10
  24. dodal/devices/oav/oav_detector.py +2 -2
  25. dodal/devices/oav/pin_image_recognition/__init__.py +4 -5
  26. dodal/devices/oav/utils.py +1 -0
  27. dodal/devices/p99/sample_stage.py +12 -16
  28. dodal/devices/pressure_jump_cell.py +299 -0
  29. dodal/devices/robot.py +1 -1
  30. dodal/devices/tetramm.py +1 -1
  31. dodal/devices/undulator.py +4 -1
  32. dodal/devices/undulator_dcm.py +3 -19
  33. dodal/devices/zocalo/zocalo_results.py +7 -7
  34. dodal/utils.py +151 -2
  35. {dls_dodal-1.36.0.dist-info → dls_dodal-1.36.1a0.dist-info}/LICENSE +0 -0
  36. {dls_dodal-1.36.0.dist-info → dls_dodal-1.36.1a0.dist-info}/entry_points.txt +0 -0
  37. {dls_dodal-1.36.0.dist-info → dls_dodal-1.36.1a0.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,16 @@
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
6
3
  from dodal.devices.detector import DetectorParams
7
4
  from dodal.devices.eiger import EigerDetector
8
5
  from dodal.devices.hutch_shutter import HutchShutter
9
6
  from dodal.devices.i24.aperture import Aperture
7
+ from dodal.devices.i24.beam_center import DetectorBeamCenter
10
8
  from dodal.devices.i24.beamstop import Beamstop
11
9
  from dodal.devices.i24.dcm import DCM
12
10
  from dodal.devices.i24.dual_backlight import DualBacklight
11
+ from dodal.devices.i24.focus_mirrors import FocusMirrorsMode
13
12
  from dodal.devices.i24.i24_detector_motion import DetectorMotion
13
+ from dodal.devices.i24.pilatus_metadata import PilatusMetadata
14
14
  from dodal.devices.i24.pmac import PMAC
15
15
  from dodal.devices.i24.vgonio import VerticalGoniometer
16
16
  from dodal.devices.oav.oav_detector import OAV
@@ -70,7 +70,6 @@ def backlight(
70
70
  )
71
71
 
72
72
 
73
- @skip_device(lambda: BL == "s24")
74
73
  def detector_motion(
75
74
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
76
75
  ) -> DetectorMotion:
@@ -151,7 +150,6 @@ def oav(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) ->
151
150
  )
152
151
 
153
152
 
154
- @skip_device(lambda: BL == "s24")
155
153
  def vgonio(
156
154
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
157
155
  ) -> VerticalGoniometer:
@@ -180,7 +178,6 @@ def zebra(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) -
180
178
  )
181
179
 
182
180
 
183
- @skip_device(lambda: BL == "s24")
184
181
  def shutter(
185
182
  wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
186
183
  ) -> HutchShutter:
@@ -194,3 +191,55 @@ def shutter(
194
191
  wait_for_connection,
195
192
  fake_with_ophyd_sim,
196
193
  )
194
+
195
+
196
+ def focus_mirrors(
197
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
198
+ ) -> FocusMirrorsMode:
199
+ """Get the i24 focus mirror devise to find the beam size."""
200
+ return device_instantiation(
201
+ FocusMirrorsMode,
202
+ "focus_mirrors",
203
+ "-OP-MFM-01:",
204
+ wait_for_connection,
205
+ fake_with_ophyd_sim,
206
+ )
207
+
208
+
209
+ def eiger_beam_center(
210
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
211
+ ) -> DetectorBeamCenter:
212
+ """A device for setting/reading the beamcenter from the eiger on i24."""
213
+ return device_instantiation(
214
+ DetectorBeamCenter,
215
+ "eiger_bc",
216
+ "-EA-EIGER-01:CAM:",
217
+ wait_for_connection,
218
+ fake_with_ophyd_sim,
219
+ )
220
+
221
+
222
+ def pilatus_beam_center(
223
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
224
+ ) -> DetectorBeamCenter:
225
+ """A device for setting/reading the beamcenter from the pilatus on i24."""
226
+ return device_instantiation(
227
+ DetectorBeamCenter,
228
+ "pilatus_bc",
229
+ "-EA-PILAT-01:cam1:",
230
+ wait_for_connection,
231
+ fake_with_ophyd_sim,
232
+ )
233
+
234
+
235
+ def pilatus_metadata(
236
+ wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
237
+ ) -> PilatusMetadata:
238
+ """A small pilatus driver device for figuring out the filename template."""
239
+ return device_instantiation(
240
+ PilatusMetadata,
241
+ "pilatus_meta",
242
+ "-EA-PILAT-01:",
243
+ wait_for_connection,
244
+ fake_with_ophyd_sim,
245
+ )
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
+ )