dls-dodal 1.36.3__py3-none-any.whl → 1.37.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.36.3.dist-info → dls_dodal-1.37.0.dist-info}/METADATA +3 -3
- {dls_dodal-1.36.3.dist-info → dls_dodal-1.37.0.dist-info}/RECORD +43 -29
- {dls_dodal-1.36.3.dist-info → dls_dodal-1.37.0.dist-info}/WHEEL +1 -1
- dodal/_version.py +2 -2
- dodal/beamlines/i02_1.py +37 -0
- dodal/beamlines/i03.py +20 -3
- dodal/beamlines/i04.py +3 -3
- dodal/beamlines/i10.py +105 -0
- dodal/beamlines/i22.py +15 -0
- dodal/beamlines/i24.py +1 -1
- dodal/beamlines/p99.py +6 -2
- dodal/common/crystal_metadata.py +3 -3
- dodal/common/udc_directory_provider.py +3 -1
- dodal/devices/aperturescatterguard.py +3 -0
- dodal/devices/{attenuator.py → attenuator/attenuator.py} +29 -1
- dodal/devices/attenuator/filter.py +11 -0
- dodal/devices/attenuator/filter_selections.py +72 -0
- dodal/devices/bimorph_mirror.py +151 -0
- dodal/devices/current_amplifiers/__init__.py +34 -0
- dodal/devices/current_amplifiers/current_amplifier.py +103 -0
- dodal/devices/current_amplifiers/current_amplifier_detector.py +109 -0
- dodal/devices/current_amplifiers/femto.py +143 -0
- dodal/devices/current_amplifiers/sr570.py +214 -0
- dodal/devices/current_amplifiers/struck_scaler_counter.py +79 -0
- dodal/devices/detector/det_dim_constants.py +15 -0
- dodal/devices/eiger_odin.py +3 -3
- dodal/devices/fast_grid_scan.py +8 -3
- dodal/devices/i03/beamstop.py +85 -0
- dodal/devices/i04/transfocator.py +67 -53
- dodal/devices/i10/rasor/rasor_current_amp.py +72 -0
- dodal/devices/i10/rasor/rasor_motors.py +62 -0
- dodal/devices/i10/rasor/rasor_scaler_cards.py +12 -0
- dodal/devices/p99/sample_stage.py +2 -28
- dodal/devices/robot.py +2 -2
- dodal/devices/undulator_dcm.py +9 -11
- dodal/devices/zebra.py +6 -1
- dodal/devices/zocalo/zocalo_interaction.py +2 -1
- dodal/devices/zocalo/zocalo_results.py +22 -2
- dodal/log.py +2 -2
- dodal/plans/wrapped.py +3 -3
- {dls_dodal-1.36.3.dist-info → dls_dodal-1.37.0.dist-info}/LICENSE +0 -0
- {dls_dodal-1.36.3.dist-info → dls_dodal-1.37.0.dist-info}/entry_points.txt +0 -0
- {dls_dodal-1.36.3.dist-info → dls_dodal-1.37.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: dls-dodal
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.37.0
|
|
4
4
|
Summary: Ophyd devices and other utils that could be used across DLS beamlines
|
|
5
5
|
Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
|
|
6
6
|
License: Apache License
|
|
@@ -228,7 +228,7 @@ Requires-Dist: pydantic>=2.0
|
|
|
228
228
|
Requires-Dist: opencv-python-headless
|
|
229
229
|
Requires-Dist: aioca
|
|
230
230
|
Requires-Dist: p4p
|
|
231
|
-
Requires-Dist: numpy
|
|
231
|
+
Requires-Dist: numpy
|
|
232
232
|
Requires-Dist: aiofiles
|
|
233
233
|
Requires-Dist: aiohttp
|
|
234
234
|
Requires-Dist: redis
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
dodal/__init__.py,sha256=Ksms_WJF8LTkbm38gEpm1jBpGqcQ8NGvmb2ZJlOE1j8,198
|
|
2
2
|
dodal/__main__.py,sha256=kP2S2RPitnOWpNGokjZ1Yq-1umOtp5sNOZk2B3tBPLM,111
|
|
3
|
-
dodal/_version.py,sha256=
|
|
3
|
+
dodal/_version.py,sha256=G8h3RZ-rmov-shRSPQyyHBDC9-SRuF1mCqQtZVgfOsc,413
|
|
4
4
|
dodal/cli.py,sha256=NieWNUgLUxyck1rHoFAPJjX1xXLzHNdQ-s4wvxYFfps,3757
|
|
5
|
-
dodal/log.py,sha256=
|
|
5
|
+
dodal/log.py,sha256=ry8WMq1S4WMIAPqtqGeKuegMRN7Jy3qdVTJlkpKXkL8,9503
|
|
6
6
|
dodal/utils.py,sha256=h2sNmTlsaznfxusV1Xj_mXtNjzsWjWAgmps6I0YNA3U,18097
|
|
7
7
|
dodal/beamline_specific_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
8
|
dodal/beamline_specific_utils/i03.py,sha256=P6Ls4FoVtcacH0RJM3v6ZwwGx27oMppcBdW0la-ohTY,377
|
|
@@ -10,25 +10,26 @@ dodal/beamlines/README.md,sha256=K9MkL_GomxlsoTB7Mz-_dJA5NNSbmCfMiutchGg3C8o,404
|
|
|
10
10
|
dodal/beamlines/__init__.py,sha256=FsS1hMz9nqwTP12UtCJsfVn712mFElcBq2kKKpscp9k,3074
|
|
11
11
|
dodal/beamlines/adsim.py,sha256=DUAFS1ueoZ6DK2cmZkiEm3NElnaro1mUvyodv14pSmU,1839
|
|
12
12
|
dodal/beamlines/b01_1.py,sha256=0gLjg0O9ttMjHzszSyJ_GT3fnoAB6u4aJ4MdAfjJbHA,1788
|
|
13
|
-
dodal/beamlines/
|
|
14
|
-
dodal/beamlines/
|
|
15
|
-
dodal/beamlines/
|
|
13
|
+
dodal/beamlines/i02_1.py,sha256=d2IyqFMgeaSEyZYm7GMSjTKr7_02SakyC_oARx-XwnY,1204
|
|
14
|
+
dodal/beamlines/i03.py,sha256=YMbZFpTWEYO3o0qrIbMqQEO8rDTaXqClIdrvdi45oS4,18651
|
|
15
|
+
dodal/beamlines/i04.py,sha256=pZvMEm4sHNQjGPEJowGNJn0NRzh6K2clGcj24BBpgVM,14614
|
|
16
|
+
dodal/beamlines/i10.py,sha256=lkn_xg0pt-vFuWkUGyl62A0xT-Rzs71JztJ1EeQkMi0,11487
|
|
16
17
|
dodal/beamlines/i13_1.py,sha256=csXHrdwUh4sXTmb4X6ZiiSS_XxRkNShsVoBMxYI6rG0,1833
|
|
17
18
|
dodal/beamlines/i20_1.py,sha256=MaPgONHqpoZuBtkiKEzYtViJnKBM2_ekeP4OdbmuXHE,1158
|
|
18
|
-
dodal/beamlines/i22.py,sha256=
|
|
19
|
+
dodal/beamlines/i22.py,sha256=ED6TtjwZzGn0Hot1WSgUhdOQ4amLDjkse5hBqEBD6Zg,7619
|
|
19
20
|
dodal/beamlines/i23.py,sha256=2j5qLoqE_hg9ETHqNkOVu7LLkVB8qalgXeORnVYKN_I,1075
|
|
20
|
-
dodal/beamlines/i24.py,sha256=
|
|
21
|
+
dodal/beamlines/i24.py,sha256=IXujBTX_O0zEL0sBVk0DDerHBZN84dYP0aMEEtbH9RA,8550
|
|
21
22
|
dodal/beamlines/p38.py,sha256=JJbclLYoRdIxcpzpW4oTj77YJ001CdEAM0bKRk7seYI,8735
|
|
22
23
|
dodal/beamlines/p45.py,sha256=N4SDTIFok3uMqb37higZHMr3xRjxItsT4ib_KacKKAE,2935
|
|
23
|
-
dodal/beamlines/p99.py,sha256=
|
|
24
|
+
dodal/beamlines/p99.py,sha256=k24QhYpoOHBd0188Fu3wvmpT6dsu8okiIVqVVckdBkw,1063
|
|
24
25
|
dodal/beamlines/training_rig.py,sha256=qAsUV4X1hxQFIjuQG92UMwYtE0nu1_hL4cP1zSiCe3Y,1698
|
|
25
26
|
dodal/common/__init__.py,sha256=ZC4ICKUDB0BDxRaVy8nmqclVmDBne-dPtk6UJsoFq6I,258
|
|
26
27
|
dodal/common/coordination.py,sha256=OxIjDiO1-9A9KESRPFtzwkvvQlavbgA5RHemlbubBPg,1168
|
|
27
|
-
dodal/common/crystal_metadata.py,sha256=
|
|
28
|
+
dodal/common/crystal_metadata.py,sha256=XGr-X81G9SZvPx5b4nBCH4FOnywyX_zYVy6zwDxIMVM,1926
|
|
28
29
|
dodal/common/maths.py,sha256=K9x7iL3xXLtWYTV-xlFHDNSTIL9a2UP3Ws7wr6Dm2rQ,1803
|
|
29
30
|
dodal/common/signal_utils.py,sha256=-p4h7xtGPp13t6HTjgFGcs5nN22kVArlkfCPVjpLuRU,1728
|
|
30
31
|
dodal/common/types.py,sha256=fkL7UOwDbe3v2_VJ5f1W5RxR98Wx-Ra-LxUZWkNDtls,486
|
|
31
|
-
dodal/common/udc_directory_provider.py,sha256=
|
|
32
|
+
dodal/common/udc_directory_provider.py,sha256=v5OBaCUwjtQZAsRQUw6LlVL58UvwwDO1l2MKlilXjdk,2403
|
|
32
33
|
dodal/common/visit.py,sha256=2UbbCmgOjZWSCxFzE9RYiTJhA_IoVOegma-Jv-PJqps,5787
|
|
33
34
|
dodal/common/beamlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
34
35
|
dodal/common/beamlines/beamline_parameters.py,sha256=oIPHooqu5vTAwfqZutsKbzwdi9nvFF8568Mz7jrK5rI,3618
|
|
@@ -38,16 +39,16 @@ dodal/devices/CTAB.py,sha256=5_261Ox6NG2cJIzzwnjWz289BG0nZoE0wKOaI5V5jqM,1998
|
|
|
38
39
|
dodal/devices/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
40
|
dodal/devices/adsim.py,sha256=vCexraF4zLssHdjfPod-XuQGJE_sWoCttFdx__HDS8w,488
|
|
40
41
|
dodal/devices/aperture.py,sha256=yyw2ei3gM_lmZWDQ6VTbydB58RCDTen_nqBZyoTP2IM,583
|
|
41
|
-
dodal/devices/aperturescatterguard.py,sha256=
|
|
42
|
+
dodal/devices/aperturescatterguard.py,sha256=T0ddbX_SH4Aru5XxhrrhEDQAG4Mzq_sZBMofNIIz8tc,9055
|
|
42
43
|
dodal/devices/apple2_undulator.py,sha256=ls_qGM_nGsZdo4I_Zs_stFjUc1oZE6zB1puWrV8-2Wg,22470
|
|
43
|
-
dodal/devices/attenuator.py,sha256=SEDnnNeUpwBArJbPcwHyr5BwkHO1Jvgsrw1bpFz5u-o,2894
|
|
44
44
|
dodal/devices/backlight.py,sha256=nQIr3J-I-OXnOUoWmr3ruy3nhq_q2US1KXC4NrGG_2U,1634
|
|
45
|
+
dodal/devices/bimorph_mirror.py,sha256=kG9waIdTkKglUrvY_wD9w533oKPqa7fct1-wa_GCFW0,4797
|
|
45
46
|
dodal/devices/cryostream.py,sha256=K-ldpredpeDTzNt4qtQMg99nKJNjBYoXBbK0WJGexzw,656
|
|
46
47
|
dodal/devices/dcm.py,sha256=JbyxLnrS68nnnv39l9XEWgJgXUBqxX6aFo19MZnL36E,2574
|
|
47
48
|
dodal/devices/diamond_filter.py,sha256=A--RHd7WuH-IBhvCyENcRCTP4K-mm_Kqpa0pojpHZow,1098
|
|
48
49
|
dodal/devices/eiger.py,sha256=VGGgkSz8AzSOP3rpehs2GwPHnOGz0OKsRP6U_FYbBA4,15337
|
|
49
|
-
dodal/devices/eiger_odin.py,sha256=
|
|
50
|
-
dodal/devices/fast_grid_scan.py,sha256=
|
|
50
|
+
dodal/devices/eiger_odin.py,sha256=ytUH_18YuM1nJDhplS6OTdtADloYvHpO6ppENjVd4jU,7411
|
|
51
|
+
dodal/devices/fast_grid_scan.py,sha256=SNwbLuSJ6YnZ-Qx6t6veLZtStcrPNslRGrw8nouFx9g,11259
|
|
51
52
|
dodal/devices/fluorescence_detector_motion.py,sha256=-1qCSvW0PdT0m6BcoLxrtc0OJ5UDIBsEe11EOLr-gFw,501
|
|
52
53
|
dodal/devices/flux.py,sha256=RtPStHw7Mad0igVKntKWVZfuZn2clokVJqH14HLix6M,198
|
|
53
54
|
dodal/devices/focusing_mirror.py,sha256=vdUPkwyCAZBSR3LQ-EojDOoxVy1ZmOaD_nevETbj7BA,6592
|
|
@@ -60,7 +61,7 @@ dodal/devices/p45.py,sha256=jzBW2fGRhIbGzSRs5Fgupxro6aqE611n1RTcrTTG-yY,1047
|
|
|
60
61
|
dodal/devices/pgm.py,sha256=am-AST9iTqma1PkGOKLozqAokZWbJUbM3TNcqXzB-6A,1132
|
|
61
62
|
dodal/devices/pressure_jump_cell.py,sha256=ONvSHpnS-kA8hjOgyIks-J2n02pP6LhLm2SY1zC-i_8,9437
|
|
62
63
|
dodal/devices/qbpm.py,sha256=FfrWWAHHtYv3fGRT1qljyPpAwoHJYfbooT9CfKg-oXI,465
|
|
63
|
-
dodal/devices/robot.py,sha256=
|
|
64
|
+
dodal/devices/robot.py,sha256=Pw6k8rFGr2-hkM2TVkQw2Y_dYIdXdXN7QtqjSglkp3g,5289
|
|
64
65
|
dodal/devices/s4_slit_gaps.py,sha256=j3kgF9WfGFaU9xdUuiAh-QqI5u_vhiAftaDVINt91SM,243
|
|
65
66
|
dodal/devices/scatterguard.py,sha256=jx03in9QgaThWxD4t1S8_Llent2kWrn_hThJ9KkUWTk,330
|
|
66
67
|
dodal/devices/scintillator.py,sha256=PlD6cnJ39PTB_e7QrRspPliLYE4kL_K7ziJURzuxgdA,365
|
|
@@ -72,26 +73,39 @@ dodal/devices/tetramm.py,sha256=17uUbwcK7G7RTZ0Q37PgQ8HOot6iMJ_dPGFO8ZblEZM,8455
|
|
|
72
73
|
dodal/devices/thawer.py,sha256=4t4yF4VDIrT_tQ8RwjmXe_hDMwVjR8A-4rDkPx19b28,1672
|
|
73
74
|
dodal/devices/turbo_slit.py,sha256=B6SPXqviMnG-U4PnUF1BdTO0LBKmTuwAUKRbxMiNJXo,1125
|
|
74
75
|
dodal/devices/undulator.py,sha256=rQjDhrvgf4uXUEO17CiLopNDEagWOgkmpa02BarozDE,5295
|
|
75
|
-
dodal/devices/undulator_dcm.py,sha256=
|
|
76
|
+
dodal/devices/undulator_dcm.py,sha256=zulVn1wvu4-WEpf0BgLiDet58IsaKV7KW6qruAdRR_s,2391
|
|
76
77
|
dodal/devices/watsonmarlow323_pump.py,sha256=rwU94YE6esgGLYdh-pe8nBo_3tvgp6brrrbPDrqp5_M,1406
|
|
77
78
|
dodal/devices/webcam.py,sha256=mef075ynDbzZ4pNAjfxR_9tdTTqF_rM7hAOVEEOV-Do,2408
|
|
78
79
|
dodal/devices/xbpm_feedback.py,sha256=j8MHhhE0feoe6R54zPKqS5EbQ0bEDR-nOpLHzHhnHHQ,1156
|
|
79
|
-
dodal/devices/zebra.py,sha256=
|
|
80
|
+
dodal/devices/zebra.py,sha256=sPMAKaZOrBHQy5V9ue4-TKE9r29OG8nTZCzQQC7OMFQ,9637
|
|
80
81
|
dodal/devices/zebra_controlled_shutter.py,sha256=5-SH5HoXp_6P-xAtfDFJKQq6mBDwreubuCULSz78fgw,1852
|
|
81
82
|
dodal/devices/areadetector/plugins/CAM.py,sha256=sZzJm5Ez3eWfXZi_EB67wluhZmMQm1UyOc2bJFfzd1U,964
|
|
82
83
|
dodal/devices/areadetector/plugins/MJPG.py,sha256=QTsxCoWbofNpLMGPoOR2hWoM33KyntuLepbF0YmX0KE,3031
|
|
84
|
+
dodal/devices/attenuator/attenuator.py,sha256=eHJpM-E4XQfzy1mxGRk754y3n9q6i3youkCqQg_6SUM,3986
|
|
85
|
+
dodal/devices/attenuator/filter.py,sha256=ZoPsTWXjllyMtKBdSIFLB7Cbc88rGof5k3ymL13VczE,422
|
|
86
|
+
dodal/devices/attenuator/filter_selections.py,sha256=lcmTprCXgSggp2L6uQ6YU0xLMljXvbspAug-WWKCXks,1410
|
|
87
|
+
dodal/devices/current_amplifiers/__init__.py,sha256=-MhT-t-GJ83rrvTDBCoWub_NKYkRtu4sEj8-y5XZBP0,782
|
|
88
|
+
dodal/devices/current_amplifiers/current_amplifier.py,sha256=WwMD8WN479-4nfWoN30R2fWzONlM3haQ2uLMmN2JWRQ,2776
|
|
89
|
+
dodal/devices/current_amplifiers/current_amplifier_detector.py,sha256=IPAMsJpBiI_JP9szTnrN0ejX1Meq5c-29JTeKe96x1U,3961
|
|
90
|
+
dodal/devices/current_amplifiers/femto.py,sha256=gKr5884emKoF-8qyjX_LA5cDjaesLJIdF_AG5wfv9Bo,4572
|
|
91
|
+
dodal/devices/current_amplifiers/sr570.py,sha256=-BT0mLf2phZTpFqjc_CCWd2X0Z-Ucey4KwNwLQs3eZU,7660
|
|
92
|
+
dodal/devices/current_amplifiers/struck_scaler_counter.py,sha256=lMKClJsxsWFX-dtdDN99N6IUHMKcoGlna54wUTYVVmE,2591
|
|
83
93
|
dodal/devices/detector/__init__.py,sha256=-RdACL3tzc3lLArWOoGNje48UUlv2fElOmGOz9yOuO0,317
|
|
84
|
-
dodal/devices/detector/det_dim_constants.py,sha256=
|
|
94
|
+
dodal/devices/detector/det_dim_constants.py,sha256=arBWvzMwybatdSiCMAiwB4Bq1dX-wkLi54xPPfTfQhY,2772
|
|
85
95
|
dodal/devices/detector/det_dist_to_beam_converter.py,sha256=7keoqZYfvgayePVx97lHYpcFRTJnQOfAk_PYP4EZTZQ,1951
|
|
86
96
|
dodal/devices/detector/det_resolution.py,sha256=aQkKp24LpRGiwzPAQM3wLVa4ANw32HdrKc2kftHfKQA,3253
|
|
87
97
|
dodal/devices/detector/detector.py,sha256=syzkl52kGaMINXCXEviFuYPbgNatm5tioVPDmjgro8s,4768
|
|
88
98
|
dodal/devices/detector/detector_motion.py,sha256=UGDQriDWRluDZOZh1mDX9w_fPjMD-_BGe11kA36Kezs,1616
|
|
89
99
|
dodal/devices/i03/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
90
|
-
dodal/devices/
|
|
100
|
+
dodal/devices/i03/beamstop.py,sha256=D1-QeGNpNlUE1qtFz-XxgzQGZbvM5bdb09f69yDB7U0,2802
|
|
101
|
+
dodal/devices/i04/transfocator.py,sha256=YrQYSHu9MNI6t4SUg5a-95h7Eh4iateSQm-Rk50chqI,3841
|
|
91
102
|
dodal/devices/i10/i10_apple2.py,sha256=pEZes8wVCPHiOOcuVhEtqPvtnyphMxqbdp39mDp6xXQ,13165
|
|
92
103
|
dodal/devices/i10/i10_setting_data.py,sha256=69XWgE-YNTiW7C3t67MNcTL5JDDhOo7h-X7DCTpFE5g,164
|
|
93
104
|
dodal/devices/i10/mirrors.py,sha256=E0M5keGI3LGaDHyXQkCCyj6xmixNY1xTSkIaaYwtnP8,794
|
|
94
105
|
dodal/devices/i10/slits.py,sha256=4X50bGiJhTIHxhsOrv-8DATBkQPwQgEaFMNa2OsPrFY,1201
|
|
106
|
+
dodal/devices/i10/rasor/rasor_current_amp.py,sha256=hImaPI3veKiS5YVfYwv-qrQ1AYNBjFVxG_MwTQqtkcc,2368
|
|
107
|
+
dodal/devices/i10/rasor/rasor_motors.py,sha256=0w31rKDuzRL-9tGbLDj0JZljaDjfXvKHQyzMs6fc3sw,1653
|
|
108
|
+
dodal/devices/i10/rasor/rasor_scaler_cards.py,sha256=wchXaIAWKLg_K14Zez4ZUmYLLk5pqL_QXegYLQO_6AY,463
|
|
95
109
|
dodal/devices/i20_1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
96
110
|
dodal/devices/i22/dcm.py,sha256=SQDh-Sj1OvplHZ9yTWblJwv8PJrUqxseDPupZOWmcLo,4701
|
|
97
111
|
dodal/devices/i22/fswitch.py,sha256=LSMoo9aDkH0SLcojbUh2NxTWIpUXHZxauTqThc3XtSk,3073
|
|
@@ -121,7 +135,7 @@ dodal/devices/oav/snapshots/grid_overlay.py,sha256=CdvCdTKMCiwMwxm2lV28KpcIUSXls
|
|
|
121
135
|
dodal/devices/oav/snapshots/snapshot_with_beam_centre.py,sha256=J77RfE3AGTLNdWc6hvsRn2DUdupzuk_FTDGvdP0jqbU,1962
|
|
122
136
|
dodal/devices/oav/snapshots/snapshot_with_grid.py,sha256=EBoCtr1NmOKye2yQHqbTBxSg-DsEKFeyBtMFmOeGPRs,2269
|
|
123
137
|
dodal/devices/p99/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
124
|
-
dodal/devices/p99/sample_stage.py,sha256=
|
|
138
|
+
dodal/devices/p99/sample_stage.py,sha256=DvHU556Gp0wFiufZiwY3o2W4xmsCL5uSwNnhd8HPAnc,528
|
|
125
139
|
dodal/devices/training_rig/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
126
140
|
dodal/devices/training_rig/sample_stage.py,sha256=jktTp837ij8wor5LidE3AajCk95L7DebJotMlO7QwTE,355
|
|
127
141
|
dodal/devices/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -135,8 +149,8 @@ dodal/devices/xspress3/xspress3.py,sha256=75RdPuHpES4Xi-Lcywz0XUhaN2G3vZSoc-dzgc
|
|
|
135
149
|
dodal/devices/xspress3/xspress3_channel.py,sha256=w8tAx2lz5kJ_LeJ_eb_4o--Dtt8MRijsYNgDG6oEIVg,1626
|
|
136
150
|
dodal/devices/zocalo/__init__.py,sha256=dRAZ9o7B9TACqyE7aanT3yzvqWtt019YgV5ZJY7Ylso,517
|
|
137
151
|
dodal/devices/zocalo/zocalo_constants.py,sha256=vu7Xjz7UNEpBUWEEBxDvP4bVFkZIN6NLGfQDpWbCjH8,98
|
|
138
|
-
dodal/devices/zocalo/zocalo_interaction.py,sha256=
|
|
139
|
-
dodal/devices/zocalo/zocalo_results.py,sha256=
|
|
152
|
+
dodal/devices/zocalo/zocalo_interaction.py,sha256=GFukU9xqagQtVSDg5BrL23jxl1w8wjs4b4NLLqdFfpk,3584
|
|
153
|
+
dodal/devices/zocalo/zocalo_results.py,sha256=MCHrhfiD6MGUak3MGLghoKOBskDncVufKx1pT5NJbHQ,16438
|
|
140
154
|
dodal/parameters/experiment_parameter_base.py,sha256=O7JamfuJ5cYHkPf9tsHJPqn-OMHTAGouigvM1cDFehE,313
|
|
141
155
|
dodal/plan_stubs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
142
156
|
dodal/plan_stubs/check_topup.py,sha256=3gyLHfHNQBCgEWuAg4QE-ONx7y2Do1vVv5HP8ss0Z1I,5371
|
|
@@ -145,10 +159,10 @@ dodal/plan_stubs/motor_utils.py,sha256=4c93U_WgjfmX12uNiztVW2oKxGVWa_SKQdJYCUNms
|
|
|
145
159
|
dodal/plan_stubs/wrapped.py,sha256=nriHKX4BF010CmrhdoUhY3-txClW5W8TPLz64kE_AXU,4533
|
|
146
160
|
dodal/plans/__init__.py,sha256=nH1jNxw3DzDMg9O8Uda0kqKIalRVEWBrq07OLY6Ey38,93
|
|
147
161
|
dodal/plans/scanspec.py,sha256=Q0AcvTKRT401iGMRDSqK-D523UX5_ofiVMZ_rNXKOx8,2074
|
|
148
|
-
dodal/plans/wrapped.py,sha256=
|
|
149
|
-
dls_dodal-1.
|
|
150
|
-
dls_dodal-1.
|
|
151
|
-
dls_dodal-1.
|
|
152
|
-
dls_dodal-1.
|
|
153
|
-
dls_dodal-1.
|
|
154
|
-
dls_dodal-1.
|
|
162
|
+
dodal/plans/wrapped.py,sha256=BPMw__RcWvk9v5XnhMsi9_k4KsDEbmXogzD2n1ecbUg,2098
|
|
163
|
+
dls_dodal-1.37.0.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
164
|
+
dls_dodal-1.37.0.dist-info/METADATA,sha256=HmPwH3laIqDE6a89MPQeRI_EeC-Oun96q4gGK8vV-AE,16651
|
|
165
|
+
dls_dodal-1.37.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
166
|
+
dls_dodal-1.37.0.dist-info/entry_points.txt,sha256=bycw_EKUzup_rxfCetOwcauXV4kLln_OPpPT8jEnr-I,94
|
|
167
|
+
dls_dodal-1.37.0.dist-info/top_level.txt,sha256=xIozdmZk_wmMV4wugpq9-6eZs0vgADNUKz3j2UAwlhc,6
|
|
168
|
+
dls_dodal-1.37.0.dist-info/RECORD,,
|
dodal/_version.py
CHANGED
dodal/beamlines/i02_1.py
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"""Beamline i02-1 is also known as VMXm, or I02J"""
|
|
2
|
+
|
|
3
|
+
from dodal.common.beamlines.beamline_utils import (
|
|
4
|
+
device_factory,
|
|
5
|
+
)
|
|
6
|
+
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
7
|
+
from dodal.devices.attenuator.attenuator import EnumFilterAttenuator
|
|
8
|
+
from dodal.devices.attenuator.filter_selections import (
|
|
9
|
+
I02_1FilterFourSelections,
|
|
10
|
+
I02_1FilterOneSelections,
|
|
11
|
+
I02_1FilterThreeSelections,
|
|
12
|
+
I02_1FilterTwoSelections,
|
|
13
|
+
)
|
|
14
|
+
from dodal.log import set_beamline as set_log_beamline
|
|
15
|
+
from dodal.utils import BeamlinePrefix, get_beamline_name
|
|
16
|
+
|
|
17
|
+
BL = get_beamline_name("i02-1")
|
|
18
|
+
PREFIX = BeamlinePrefix(BL, suffix="J")
|
|
19
|
+
set_log_beamline(BL)
|
|
20
|
+
set_utils_beamline(BL)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@device_factory()
|
|
24
|
+
def attenuator() -> EnumFilterAttenuator:
|
|
25
|
+
"""Get the i02-1 attenuator device, instantiate it if it hasn't already been.
|
|
26
|
+
If this is called when already instantiated in i02-1, it will return the existing object.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
return EnumFilterAttenuator(
|
|
30
|
+
f"{PREFIX.beamline_prefix}-OP-ATTN-01:",
|
|
31
|
+
(
|
|
32
|
+
I02_1FilterOneSelections,
|
|
33
|
+
I02_1FilterTwoSelections,
|
|
34
|
+
I02_1FilterThreeSelections,
|
|
35
|
+
I02_1FilterFourSelections,
|
|
36
|
+
),
|
|
37
|
+
)
|
dodal/beamlines/i03.py
CHANGED
|
@@ -13,7 +13,7 @@ from dodal.devices.aperturescatterguard import (
|
|
|
13
13
|
ApertureScatterguard,
|
|
14
14
|
load_positions_from_beamline_parameters,
|
|
15
15
|
)
|
|
16
|
-
from dodal.devices.attenuator import
|
|
16
|
+
from dodal.devices.attenuator.attenuator import BinaryFilterAttenuator
|
|
17
17
|
from dodal.devices.backlight import Backlight
|
|
18
18
|
from dodal.devices.cryostream import CryoStream
|
|
19
19
|
from dodal.devices.dcm import DCM
|
|
@@ -24,6 +24,7 @@ from dodal.devices.eiger import EigerDetector
|
|
|
24
24
|
from dodal.devices.fast_grid_scan import PandAFastGridScan, ZebraFastGridScan
|
|
25
25
|
from dodal.devices.flux import Flux
|
|
26
26
|
from dodal.devices.focusing_mirror import FocusingMirrorWithStripes, MirrorVoltages
|
|
27
|
+
from dodal.devices.i03.beamstop import Beamstop
|
|
27
28
|
from dodal.devices.motors import XYZPositioner
|
|
28
29
|
from dodal.devices.oav.oav_detector import OAV
|
|
29
30
|
from dodal.devices.oav.oav_parameters import OAVConfig
|
|
@@ -80,12 +81,12 @@ def aperture_scatterguard(
|
|
|
80
81
|
|
|
81
82
|
def attenuator(
|
|
82
83
|
wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
|
|
83
|
-
) ->
|
|
84
|
+
) -> BinaryFilterAttenuator:
|
|
84
85
|
"""Get the i03 attenuator device, instantiate it if it hasn't already been.
|
|
85
86
|
If this is called when already instantiated in i03, it will return the existing object.
|
|
86
87
|
"""
|
|
87
88
|
return device_instantiation(
|
|
88
|
-
|
|
89
|
+
BinaryFilterAttenuator,
|
|
89
90
|
"attenuator",
|
|
90
91
|
"-EA-ATTN-01:",
|
|
91
92
|
wait_for_connection,
|
|
@@ -93,6 +94,22 @@ def attenuator(
|
|
|
93
94
|
)
|
|
94
95
|
|
|
95
96
|
|
|
97
|
+
def beamstop(
|
|
98
|
+
wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
|
|
99
|
+
) -> Beamstop:
|
|
100
|
+
"""Get the i03 beamstop device, instantiate it if it hasn't already been.
|
|
101
|
+
If this is called when already instantiated in i03, it will return the existing object.
|
|
102
|
+
"""
|
|
103
|
+
return device_instantiation(
|
|
104
|
+
Beamstop,
|
|
105
|
+
"beamstop",
|
|
106
|
+
"-MO-BS-01:",
|
|
107
|
+
wait_for_connection,
|
|
108
|
+
fake_with_ophyd_sim,
|
|
109
|
+
beamline_parameters=get_beamline_parameters(),
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
|
|
96
113
|
def dcm(wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False) -> DCM:
|
|
97
114
|
"""Get the i03 DCM device, instantiate it if it hasn't already been.
|
|
98
115
|
If this is called when already instantiated in i03, it will return the existing object.
|
dodal/beamlines/i04.py
CHANGED
|
@@ -6,7 +6,7 @@ from dodal.devices.aperturescatterguard import (
|
|
|
6
6
|
ApertureScatterguard,
|
|
7
7
|
load_positions_from_beamline_parameters,
|
|
8
8
|
)
|
|
9
|
-
from dodal.devices.attenuator import
|
|
9
|
+
from dodal.devices.attenuator.attenuator import BinaryFilterAttenuator
|
|
10
10
|
from dodal.devices.backlight import Backlight
|
|
11
11
|
from dodal.devices.dcm import DCM
|
|
12
12
|
from dodal.devices.detector import DetectorParams
|
|
@@ -138,12 +138,12 @@ def sample_shutter(
|
|
|
138
138
|
|
|
139
139
|
def attenuator(
|
|
140
140
|
wait_for_connection: bool = True, fake_with_ophyd_sim: bool = False
|
|
141
|
-
) ->
|
|
141
|
+
) -> BinaryFilterAttenuator:
|
|
142
142
|
"""Get the i04 attenuator device, instantiate it if it hasn't already been.
|
|
143
143
|
If this is called when already instantiated in i04, it will return the existing object.
|
|
144
144
|
"""
|
|
145
145
|
return device_instantiation(
|
|
146
|
-
|
|
146
|
+
BinaryFilterAttenuator,
|
|
147
147
|
"attenuator",
|
|
148
148
|
"-EA-ATTN-01:",
|
|
149
149
|
wait_for_connection,
|
dodal/beamlines/i10.py
CHANGED
|
@@ -7,6 +7,7 @@ from dodal.devices.apple2_undulator import (
|
|
|
7
7
|
UndulatorJawPhase,
|
|
8
8
|
UndulatorPhaseAxes,
|
|
9
9
|
)
|
|
10
|
+
from dodal.devices.current_amplifiers import CurrentAmpDet
|
|
10
11
|
from dodal.devices.i10.i10_apple2 import (
|
|
11
12
|
I10Apple2,
|
|
12
13
|
I10Apple2PGM,
|
|
@@ -15,7 +16,16 @@ from dodal.devices.i10.i10_apple2 import (
|
|
|
15
16
|
)
|
|
16
17
|
from dodal.devices.i10.i10_setting_data import I10Grating
|
|
17
18
|
from dodal.devices.i10.mirrors import PiezoMirror
|
|
19
|
+
from dodal.devices.i10.rasor.rasor_current_amp import RasorFemto, RasorSR570
|
|
20
|
+
from dodal.devices.i10.rasor.rasor_motors import (
|
|
21
|
+
DetSlits,
|
|
22
|
+
Diffractometer,
|
|
23
|
+
PaStage,
|
|
24
|
+
PinHole,
|
|
25
|
+
)
|
|
26
|
+
from dodal.devices.i10.rasor.rasor_scaler_cards import RasorScalerCard1
|
|
18
27
|
from dodal.devices.i10.slits import I10PrimarySlits, I10Slits
|
|
28
|
+
from dodal.devices.motors import XYZPositioner
|
|
19
29
|
from dodal.devices.pgm import PGM
|
|
20
30
|
from dodal.devices.slits import MinimalSlits
|
|
21
31
|
from dodal.log import set_beamline as set_log_beamline
|
|
@@ -322,3 +332,98 @@ def slit_6() -> I10Slits:
|
|
|
322
332
|
return I10Slits(
|
|
323
333
|
prefix=f"{PREFIX.beamline_prefix}-AL-SLITS-06:",
|
|
324
334
|
)
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
"Rasor devices"
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
@device_factory()
|
|
341
|
+
def pin_hole() -> PinHole:
|
|
342
|
+
return PinHole(prefix="ME01D-EA-PINH-01:")
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
@device_factory()
|
|
346
|
+
def det_slits() -> DetSlits:
|
|
347
|
+
return DetSlits(prefix="ME01D-MO-APTR-0")
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
@device_factory()
|
|
351
|
+
def diffractometer() -> Diffractometer:
|
|
352
|
+
return Diffractometer(prefix="ME01D-MO-DIFF-01:")
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
@device_factory()
|
|
356
|
+
def pa_stage() -> PaStage:
|
|
357
|
+
return PaStage(prefix="ME01D-MO-POLAN-01:")
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
@device_factory()
|
|
361
|
+
def simple_stage() -> XYZPositioner:
|
|
362
|
+
return XYZPositioner(prefix="ME01D-MO-CRYO-01:")
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
@device_factory()
|
|
366
|
+
def rasor_femto() -> RasorFemto:
|
|
367
|
+
return RasorFemto(
|
|
368
|
+
prefix="ME01D-EA-IAMP",
|
|
369
|
+
)
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
@device_factory()
|
|
373
|
+
def rasor_det_scalers() -> RasorScalerCard1:
|
|
374
|
+
return RasorScalerCard1(prefix="ME01D-EA-SCLR-01:SCALER1")
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
@device_factory()
|
|
378
|
+
def rasor_sr570() -> RasorSR570:
|
|
379
|
+
return RasorSR570(
|
|
380
|
+
prefix="ME01D-EA-IAMP",
|
|
381
|
+
)
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
@device_factory()
|
|
385
|
+
def rasor_sr570_pa_scaler_det() -> CurrentAmpDet:
|
|
386
|
+
return CurrentAmpDet(
|
|
387
|
+
current_amp=rasor_sr570().ca1,
|
|
388
|
+
counter=rasor_det_scalers().det,
|
|
389
|
+
)
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
@device_factory()
|
|
393
|
+
def rasor_femto_pa_scaler_det() -> CurrentAmpDet:
|
|
394
|
+
return CurrentAmpDet(
|
|
395
|
+
current_amp=rasor_femto().ca1,
|
|
396
|
+
counter=rasor_det_scalers().det,
|
|
397
|
+
)
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
@device_factory()
|
|
401
|
+
def rasor_sr570_fluo_scaler_det() -> CurrentAmpDet:
|
|
402
|
+
return CurrentAmpDet(
|
|
403
|
+
current_amp=rasor_sr570().ca2,
|
|
404
|
+
counter=rasor_det_scalers().fluo,
|
|
405
|
+
)
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
@device_factory()
|
|
409
|
+
def rasor_femto_fluo_scaler_det() -> CurrentAmpDet:
|
|
410
|
+
return CurrentAmpDet(
|
|
411
|
+
current_amp=rasor_femto().ca2,
|
|
412
|
+
counter=rasor_det_scalers().fluo,
|
|
413
|
+
)
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
@device_factory()
|
|
417
|
+
def rasor_sr570_drain_scaler_det() -> CurrentAmpDet:
|
|
418
|
+
return CurrentAmpDet(
|
|
419
|
+
current_amp=rasor_sr570().ca3,
|
|
420
|
+
counter=rasor_det_scalers().drain,
|
|
421
|
+
)
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
@device_factory()
|
|
425
|
+
def rasor_femto_drain_scaler_det() -> CurrentAmpDet:
|
|
426
|
+
return CurrentAmpDet(
|
|
427
|
+
current_amp=rasor_femto().ca3,
|
|
428
|
+
counter=rasor_det_scalers().drain,
|
|
429
|
+
)
|
dodal/beamlines/i22.py
CHANGED
|
@@ -16,6 +16,7 @@ from dodal.common.crystal_metadata import (
|
|
|
16
16
|
make_crystal_metadata_from_material,
|
|
17
17
|
)
|
|
18
18
|
from dodal.common.visit import RemoteDirectoryServiceClient, StaticVisitPathProvider
|
|
19
|
+
from dodal.devices.bimorph_mirror import BimorphMirror
|
|
19
20
|
from dodal.devices.focusing_mirror import FocusingMirror
|
|
20
21
|
from dodal.devices.i22.dcm import DoubleCrystalMonochromator
|
|
21
22
|
from dodal.devices.i22.fswitch import FSwitch
|
|
@@ -125,6 +126,20 @@ def hfm() -> FocusingMirror:
|
|
|
125
126
|
)
|
|
126
127
|
|
|
127
128
|
|
|
129
|
+
@device_factory()
|
|
130
|
+
def bimorph_hfm() -> BimorphMirror:
|
|
131
|
+
return BimorphMirror(
|
|
132
|
+
prefix=f"{PREFIX.beamline_prefix}-OP-KBM-01:G0:", number_of_channels=12
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
@device_factory()
|
|
137
|
+
def bimorph_vfm() -> BimorphMirror:
|
|
138
|
+
return BimorphMirror(
|
|
139
|
+
prefix=f"{PREFIX.beamline_prefix}-OP-KBM-01:G1:", number_of_channels=16
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
|
|
128
143
|
@device_factory()
|
|
129
144
|
def dcm() -> DoubleCrystalMonochromator:
|
|
130
145
|
return DoubleCrystalMonochromator(
|
dodal/beamlines/i24.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from dodal.common.beamlines.beamline_utils import BL, device_instantiation
|
|
2
2
|
from dodal.common.beamlines.beamline_utils import set_beamline as set_utils_beamline
|
|
3
|
-
from dodal.devices.attenuator import ReadOnlyAttenuator
|
|
3
|
+
from dodal.devices.attenuator.attenuator import ReadOnlyAttenuator
|
|
4
4
|
from dodal.devices.detector import DetectorParams
|
|
5
5
|
from dodal.devices.eiger import EigerDetector
|
|
6
6
|
from dodal.devices.hutch_shutter import HutchShutter
|
dodal/beamlines/p99.py
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
from dodal.common.beamlines.beamline_utils import device_factory, set_beamline
|
|
2
|
+
from dodal.devices.attenuator.filter import FilterMotor
|
|
3
|
+
from dodal.devices.attenuator.filter_selections import P99FilterSelections
|
|
2
4
|
from dodal.devices.motors import XYZPositioner
|
|
3
|
-
from dodal.devices.p99.sample_stage import
|
|
5
|
+
from dodal.devices.p99.sample_stage import SampleAngleStage
|
|
4
6
|
from dodal.log import set_beamline as set_log_beamline
|
|
5
7
|
from dodal.utils import BeamlinePrefix, get_beamline_name
|
|
6
8
|
|
|
@@ -17,7 +19,9 @@ def angle_stage() -> SampleAngleStage:
|
|
|
17
19
|
|
|
18
20
|
@device_factory()
|
|
19
21
|
def filter() -> FilterMotor:
|
|
20
|
-
return FilterMotor(
|
|
22
|
+
return FilterMotor(
|
|
23
|
+
f"{PREFIX.beamline_prefix}-MO-STAGE-02:MP:SELECT", P99FilterSelections
|
|
24
|
+
)
|
|
21
25
|
|
|
22
26
|
|
|
23
27
|
@device_factory()
|
dodal/common/crystal_metadata.py
CHANGED
|
@@ -55,7 +55,7 @@ def make_crystal_metadata_from_material(
|
|
|
55
55
|
d_spacing = d_spacing_param or CrystalMetadata.calculate_default_d_spacing(
|
|
56
56
|
material.value.lattice_parameter, reflection_plane
|
|
57
57
|
)
|
|
58
|
-
assert all(
|
|
59
|
-
|
|
60
|
-
)
|
|
58
|
+
assert all(isinstance(i, int) and i > 0 for i in reflection_plane), (
|
|
59
|
+
"Reflection plane indices must be positive integers"
|
|
60
|
+
)
|
|
61
61
|
return CrystalMetadata(usage, material.value.name, reflection_plane, d_spacing)
|
|
@@ -46,7 +46,9 @@ class PandASubpathProvider(UpdatingPathProvider):
|
|
|
46
46
|
self._filename_provider.suffix = suffix
|
|
47
47
|
|
|
48
48
|
def __call__(self, device_name: str | None = None) -> PathInfo:
|
|
49
|
-
assert self._output_directory,
|
|
49
|
+
assert self._output_directory, (
|
|
50
|
+
"Directory unknown for PandA to write into, update() needs to be called at least once"
|
|
51
|
+
)
|
|
50
52
|
return PathInfo(
|
|
51
53
|
directory_path=self._output_directory,
|
|
52
54
|
filename=self._filename_provider(device_name),
|
|
@@ -7,10 +7,12 @@ from ophyd_async.core import (
|
|
|
7
7
|
DeviceVector,
|
|
8
8
|
SignalR,
|
|
9
9
|
StandardReadable,
|
|
10
|
+
SubsetEnum,
|
|
10
11
|
wait_for_value,
|
|
11
12
|
)
|
|
12
13
|
from ophyd_async.epics.core import epics_signal_r, epics_signal_rw, epics_signal_x
|
|
13
14
|
|
|
15
|
+
from dodal.devices.attenuator.filter import FilterMotor
|
|
14
16
|
from dodal.log import LOGGER
|
|
15
17
|
|
|
16
18
|
|
|
@@ -27,8 +29,9 @@ class ReadOnlyAttenuator(StandardReadable):
|
|
|
27
29
|
super().__init__(name)
|
|
28
30
|
|
|
29
31
|
|
|
30
|
-
class
|
|
32
|
+
class BinaryFilterAttenuator(ReadOnlyAttenuator, Movable):
|
|
31
33
|
"""The attenuator will insert filters into the beam to reduce its transmission.
|
|
34
|
+
In this attenuator, each filter can be in one of two states: IN or OUT
|
|
32
35
|
|
|
33
36
|
This device should be set with:
|
|
34
37
|
yield from bps.set(attenuator, desired_transmission)
|
|
@@ -83,3 +86,28 @@ class Attenuator(ReadOnlyAttenuator, Movable):
|
|
|
83
86
|
for i in range(16)
|
|
84
87
|
]
|
|
85
88
|
)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
class EnumFilterAttenuator(ReadOnlyAttenuator):
|
|
92
|
+
"""The attenuator will insert filters into the beam to reduce its transmission.
|
|
93
|
+
|
|
94
|
+
This device is currently working, but feature incomplete. See https://github.com/DiamondLightSource/dodal/issues/972
|
|
95
|
+
|
|
96
|
+
In this attenuator, the state of a filter corresponds to the selected material,
|
|
97
|
+
e.g Ag50, in contrast to being either 'IN' or 'OUT'; see BinaryFilterAttenuator.
|
|
98
|
+
"""
|
|
99
|
+
|
|
100
|
+
def __init__(
|
|
101
|
+
self,
|
|
102
|
+
prefix: str,
|
|
103
|
+
filter_selection: tuple[type[SubsetEnum], ...],
|
|
104
|
+
name: str = "",
|
|
105
|
+
):
|
|
106
|
+
with self.add_children_as_readables():
|
|
107
|
+
self.filters: DeviceVector[FilterMotor] = DeviceVector(
|
|
108
|
+
{
|
|
109
|
+
index: FilterMotor(f"{prefix}MP{index + 1}:", filter, name)
|
|
110
|
+
for index, filter in enumerate(filter_selection)
|
|
111
|
+
}
|
|
112
|
+
)
|
|
113
|
+
super().__init__(prefix, name=name)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from ophyd_async.core import StandardReadable, SubsetEnum
|
|
2
|
+
from ophyd_async.epics.core import epics_signal_rw
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class FilterMotor(StandardReadable):
|
|
6
|
+
def __init__(
|
|
7
|
+
self, prefix: str, filter_selections: type[SubsetEnum], name: str = ""
|
|
8
|
+
):
|
|
9
|
+
with self.add_children_as_readables():
|
|
10
|
+
self.user_setpoint = epics_signal_rw(filter_selections, f"{prefix}SELECT")
|
|
11
|
+
super().__init__(name=name)
|