mx-bluesky 1.4.9__py3-none-any.whl → 1.5.1__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 (57) hide show
  1. mx_bluesky/_version.py +2 -2
  2. mx_bluesky/beamlines/i24/serial/__init__.py +4 -2
  3. mx_bluesky/beamlines/i24/serial/blueapi_config.yaml +4 -0
  4. mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +8 -8
  5. mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +36 -4
  6. mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +6 -5
  7. mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py +2 -2
  8. mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py +5 -5
  9. mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py +79 -10
  10. mx_bluesky/common/device_setup_plans/manipulate_sample.py +4 -1
  11. mx_bluesky/common/device_setup_plans/robot_load_unload.py +123 -0
  12. mx_bluesky/common/device_setup_plans/utils.py +49 -0
  13. mx_bluesky/common/{plans → experiment_plans}/common_flyscan_xray_centre_plan.py +12 -19
  14. mx_bluesky/{hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py → common/experiment_plans/common_grid_detect_then_xray_centre_plan.py} +108 -136
  15. mx_bluesky/common/{plans → experiment_plans}/inner_plans/do_fgs.py +1 -1
  16. mx_bluesky/common/experiment_plans/oav_grid_detection_plan.py +5 -13
  17. mx_bluesky/{hyperion → common}/experiment_plans/oav_snapshot_plan.py +5 -2
  18. mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py +26 -24
  19. mx_bluesky/common/external_interaction/ispyb/ispyb_store.py +0 -1
  20. mx_bluesky/common/external_interaction/nexus/write_nexus.py +2 -2
  21. mx_bluesky/common/parameters/components.py +8 -3
  22. mx_bluesky/common/parameters/constants.py +4 -3
  23. mx_bluesky/common/parameters/device_composites.py +65 -0
  24. mx_bluesky/common/utils/__init__.py +0 -0
  25. mx_bluesky/common/xrc_result.py +25 -2
  26. mx_bluesky/hyperion/device_setup_plans/utils.py +0 -48
  27. mx_bluesky/hyperion/experiment_plans/__init__.py +3 -3
  28. mx_bluesky/hyperion/experiment_plans/experiment_registry.py +3 -3
  29. mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py +46 -41
  30. mx_bluesky/hyperion/experiment_plans/hyperion_grid_detect_then_xray_centre_plan.py +60 -0
  31. mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +26 -8
  32. mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +26 -15
  33. mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +21 -75
  34. mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +10 -8
  35. mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +20 -15
  36. mx_bluesky/hyperion/external_interaction/agamemnon.py +4 -4
  37. mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +1 -1
  38. mx_bluesky/hyperion/external_interaction/callbacks/{robot_load → robot_actions}/ispyb_callback.py +28 -19
  39. mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +1 -1
  40. mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py +3 -0
  41. mx_bluesky/hyperion/external_interaction/config_server.py +0 -11
  42. mx_bluesky/hyperion/parameters/constants.py +1 -6
  43. mx_bluesky/hyperion/parameters/device_composites.py +5 -27
  44. mx_bluesky/hyperion/parameters/gridscan.py +2 -6
  45. mx_bluesky/hyperion/parameters/load_centre_collect.py +15 -0
  46. mx_bluesky/hyperion/parameters/rotation.py +7 -3
  47. {mx_bluesky-1.4.9.dist-info → mx_bluesky-1.5.1.dist-info}/METADATA +5 -4
  48. {mx_bluesky-1.4.9.dist-info → mx_bluesky-1.5.1.dist-info}/RECORD +56 -52
  49. mx_bluesky/hyperion/utils/validation.py +0 -196
  50. /mx_bluesky/common/{plans → experiment_plans}/__init__.py +0 -0
  51. /mx_bluesky/common/{plans → experiment_plans}/inner_plans/__init__ .py +0 -0
  52. /mx_bluesky/common/{plans → experiment_plans}/read_hardware.py +0 -0
  53. /mx_bluesky/common/{plans → experiment_plans}/write_sample_status.py +0 -0
  54. {mx_bluesky-1.4.9.dist-info → mx_bluesky-1.5.1.dist-info}/WHEEL +0 -0
  55. {mx_bluesky-1.4.9.dist-info → mx_bluesky-1.5.1.dist-info}/entry_points.txt +0 -0
  56. {mx_bluesky-1.4.9.dist-info → mx_bluesky-1.5.1.dist-info}/licenses/LICENSE +0 -0
  57. {mx_bluesky-1.4.9.dist-info → mx_bluesky-1.5.1.dist-info}/top_level.txt +0 -0
@@ -18,12 +18,14 @@ from scanspec.core import Path as ScanPath
18
18
  from scanspec.specs import Line
19
19
 
20
20
  from mx_bluesky.common.parameters.components import (
21
+ DiffractionExperiment,
21
22
  DiffractionExperimentWithSample,
22
23
  IspybExperimentType,
23
24
  OptionalGonioAngleStarts,
24
25
  OptionalXyzStarts,
25
26
  RotationAxis,
26
27
  SplitScan,
28
+ WithSample,
27
29
  WithScan,
28
30
  )
29
31
  from mx_bluesky.hyperion.parameters.components import WithHyperionUDCFeatures
@@ -33,7 +35,7 @@ from mx_bluesky.hyperion.parameters.constants import (
33
35
  )
34
36
 
35
37
 
36
- class RotationScanPerSweep(OptionalGonioAngleStarts, OptionalXyzStarts):
38
+ class RotationScanPerSweep(OptionalGonioAngleStarts, OptionalXyzStarts, WithSample):
37
39
  """
38
40
  Describes a rotation scan about the specified axis.
39
41
 
@@ -54,7 +56,7 @@ class RotationScanPerSweep(OptionalGonioAngleStarts, OptionalXyzStarts):
54
56
  nexus_vds_start_img: int = Field(default=0, ge=0)
55
57
 
56
58
 
57
- class RotationExperiment(DiffractionExperimentWithSample, WithHyperionUDCFeatures):
59
+ class RotationExperiment(DiffractionExperiment, WithHyperionUDCFeatures):
58
60
  shutter_opening_time_s: float = Field(default=CONST.I03.SHUTTER_TIME_S)
59
61
  rotation_increment_deg: float = Field(default=0.1, gt=0)
60
62
  ispyb_experiment_type: IspybExperimentType = Field(
@@ -105,7 +107,9 @@ class RotationExperiment(DiffractionExperimentWithSample, WithHyperionUDCFeature
105
107
  return aperture_position
106
108
 
107
109
 
108
- class SingleRotationScan(WithScan, RotationScanPerSweep, RotationExperiment):
110
+ class SingleRotationScan(
111
+ WithScan, RotationScanPerSweep, RotationExperiment, DiffractionExperimentWithSample
112
+ ):
109
113
  @property
110
114
  def detector_params(self):
111
115
  return self._detector_params(self.omega_start_deg)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mx-bluesky
3
- Version: 1.4.9
3
+ Version: 1.5.1
4
4
  Summary: Bluesky tools for MX Beamlines at DLS
5
5
  Author-email: Dominic Oram <dominic.oram@diamond.ac.uk>
6
6
  License: Apache License
@@ -221,7 +221,7 @@ Requires-Dist: ispyb
221
221
  Requires-Dist: jupyterlab
222
222
  Requires-Dist: matplotlib
223
223
  Requires-Dist: nexgen>=0.11.0
224
- Requires-Dist: numpy
224
+ Requires-Dist: numpy==2.2.6
225
225
  Requires-Dist: opencv-python
226
226
  Requires-Dist: opentelemetry-distro
227
227
  Requires-Dist: opentelemetry-exporter-otlp
@@ -233,13 +233,14 @@ Requires-Dist: requests
233
233
  Requires-Dist: scanspec
234
234
  Requires-Dist: scipy
235
235
  Requires-Dist: semver
236
+ Requires-Dist: deepdiff
236
237
  Requires-Dist: matplotlib
237
- Requires-Dist: blueapi>=0.5.0
238
+ Requires-Dist: blueapi>=0.11.1
238
239
  Requires-Dist: daq-config-server==0.1.1
239
240
  Requires-Dist: ophyd>=1.10.5
240
241
  Requires-Dist: ophyd-async>=0.10.0a2
241
242
  Requires-Dist: bluesky>=1.13.1
242
- Requires-Dist: dls-dodal==1.48.0
243
+ Requires-Dist: dls-dodal==1.51.0
243
244
  Provides-Extra: dev
244
245
  Requires-Dist: black; extra == "dev"
245
246
  Requires-Dist: build; extra == "dev"
@@ -1,6 +1,6 @@
1
1
  mx_bluesky/__init__.py,sha256=Ksms_WJF8LTkbm38gEpm1jBpGqcQ8NGvmb2ZJlOE1j8,198
2
2
  mx_bluesky/__main__.py,sha256=RVqPnxDisFMIn_aoEi0drlThNHgKTJULnSrotouIKI0,480
3
- mx_bluesky/_version.py,sha256=_khE0BvLLOXKCyxlHn8gjMAbG__XlngpoNyCPRZBxOQ,511
3
+ mx_bluesky/_version.py,sha256=FasBapRYrTzegTWgTLGzFg84_c9eAAt8ZkOEeQxlLC4,511
4
4
  mx_bluesky/definitions.py,sha256=ULpEYAUzdQiEbBoTgYTMxfUf3DDDjhYtvDxofs7Qxqw,168
5
5
  mx_bluesky/jupyter_example.ipynb,sha256=wpwvPrBvwtRMS5AIFk8F54cIlUoD0o4ji8tKK5cZHA4,1672
6
6
  mx_bluesky/beamlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -15,8 +15,8 @@ mx_bluesky/beamlines/i04/callbacks/murko_callback.py,sha256=ZIwkY6gdcmIE-aMBvehN
15
15
  mx_bluesky/beamlines/i23/__init__.py,sha256=7nwQiKBZAXLnvPhCqaI2VC1k4TOzQalOUvwF6SQ3Yd4,95
16
16
  mx_bluesky/beamlines/i23/serial.py,sha256=XVbHM8NevnJMFAJD9jkxG-VnPaWX6t_k-wlipRw0pmY,2055
17
17
  mx_bluesky/beamlines/i24/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- mx_bluesky/beamlines/i24/serial/__init__.py,sha256=TInCdnrsp4FYLkwTZ8bzNpUrFuLrWzg9ugqwkplvPZg,1473
19
- mx_bluesky/beamlines/i24/serial/blueapi_config.yaml,sha256=xT-czuatOKpt_a8onssDsVNx2ey-uZMoTJ4s7HPuDEU,261
18
+ mx_bluesky/beamlines/i24/serial/__init__.py,sha256=r8v9V48TMrNxOcwBZ6lzeCCuPulq5rg8m-mwH_KkOnI,1533
19
+ mx_bluesky/beamlines/i24/serial/blueapi_config.yaml,sha256=kQIOqltl-rW-iKgtWlcABQ5E_QdBW_CHt1cnfcBchpg,323
20
20
  mx_bluesky/beamlines/i24/serial/dcid.py,sha256=ab48UFmZT6Zuv9RNoqOLkmAgmaIr0G6UDjqr_bE0vF8,14564
21
21
  mx_bluesky/beamlines/i24/serial/log.py,sha256=76-bKjjxLZEITTcALpvuwCy3KU5pTq0blnVFD9wT5cY,4798
22
22
  mx_bluesky/beamlines/i24/serial/run_extruder.sh,sha256=FXYsqdTpVgxB1-QrY4Tg5pl5Ex7PgUoXnuAcr9iDZTE,1078
@@ -27,14 +27,14 @@ mx_bluesky/beamlines/i24/serial/set_visit_directory.sh,sha256=heQWMqUHNERQurt2tR
27
27
  mx_bluesky/beamlines/i24/serial/start_blueapi.sh,sha256=4iBzQljTLXQiVIF4UO7drc9qUkP7KSRC6Mjh8hcGxpI,608
28
28
  mx_bluesky/beamlines/i24/serial/write_nexus.py,sha256=3qSjvH2_0WYPuX8nUaOdsec7kIUSW0xBhCFec2tv3WM,4018
29
29
  mx_bluesky/beamlines/i24/serial/extruder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py,sha256=upg_8uQ-DMzQckjoDSt0VjoxxayfX09WvphCTVGBNM8,19462
30
+ mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py,sha256=OddLUvKvKe_Sabl0uTKiAk7yB5qtnhWftZJlvepqRkk,19389
31
31
  mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl,sha256=Uqw7u7Lqn6SRZxOoo4E7XwEueTI0eXylXpgBL66DXrI,1974
32
32
  mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl,sha256=lRFa3LEIqc6Yar2XjCT3T1KKG9cHBW0AK96nsfss0bE,30896
33
33
  mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl,sha256=K79vmGAcf9qVEQLXTgr0g4bZDWaJ7nFoK4e0Ex7qAwM,14690
34
34
  mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
35
  mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py,sha256=puO1vg0x-TPgv8FbEFg73ohJqbwDpcG50_2cLUTa2FA,1210
36
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py,sha256=lMGbqiJPcn-V8l3t9_BZi3BBJi3aNNxyrQYFNvapIgs,24878
37
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py,sha256=cuv37pLsyNgf7sAnGiHMt0Ql3bJM6RUZR2esGUZNfR4,33091
36
+ mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py,sha256=d5eG8xllmCf0wJO-tsN2vzALaahMr7igm6ap94hGqrY,25515
37
+ mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py,sha256=fjX_UKOfdA38u-3hhe6t7Y9c6r-HijyWqOi3kLUY3M8,33098
38
38
  mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py,sha256=Vokr_Gl_lpqcUwG18C2h8TYMmyTx1HmUSDd9zgR9-7M,3275
39
39
  mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py,sha256=QLg4wryENBeFfOYFaIgE9R12r2KvUuKIP9ZY8iyYibY,6582
40
40
  mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl,sha256=H9BVU1S3oy8tAVHtKvJvp7YTHA-4X-jtOtiu3jJ7of4,10348
@@ -61,20 +61,30 @@ mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py,sha256=UhBdMcPdJMzwV0
61
61
  mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py,sha256=H2gPmsLheYReFlGPFa5zzWbnyqdWbCmgKiAwcpVoYfk,1516
62
62
  mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py,sha256=9Up7ob1UMUG438SKjW7Ffn6OFiurC7Qpl0v19nwDjQQ,15601
63
63
  mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py,sha256=DVimjuvZYJoCaIswuO6YYVDtbLgZp33KQFmnlb9ngDY,1804
64
- mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py,sha256=1JU9eEygAX1bYA-pMlLC4dPMnd2KdaMRVtEpEWX-JM8,20982
65
- mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py,sha256=niJJjPkk1fSDr__Upf-9DbBkoPrFn8Gz_eTPgO0WpE8,3221
64
+ mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py,sha256=6OiZep8qrDdE_QdKqdk_BBx2FK-Dd5OUwSQ1DxL4J9U,20951
65
+ mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py,sha256=zooWiRnzzBiZLE3WvHQNH3oARUSaXqEV57Cs3WU5mfI,3169
66
66
  mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py,sha256=oRNZLA2uxiRM5eheAuRMM5eT0Oxe1YHqg59BHys3sXY,17970
67
67
  mx_bluesky/beamlines/i24/serial/web_gui_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
- mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py,sha256=BtZaTZJGSv_Je2UleDJTsy8HLiuc_C5YP4c46K3UOgo,6609
68
+ mx_bluesky/beamlines/i24/serial/web_gui_plans/general_plans.py,sha256=BN8dSYcMgUwSqaNK4sj_BkIisb-dMHtGMUE5zmRxNm4,8881
69
69
  mx_bluesky/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
- mx_bluesky/common/xrc_result.py,sha256=J1uB9Bujz_Sq_MwvYdWOZL3c6kX09TSaZW3eetRXBpw,2351
71
- mx_bluesky/common/device_setup_plans/manipulate_sample.py,sha256=6iE47tjD8M-MJiRv6HMfMH5XLTFKNUzrQhB2PQIxrLw,2998
70
+ mx_bluesky/common/xrc_result.py,sha256=tUJ6qkDTTB6H1F71IvVAKtmHCRyHSU_tj9GRzVmnE7w,3219
71
+ mx_bluesky/common/device_setup_plans/manipulate_sample.py,sha256=-5y2AahAU_ZhDQCFQA8Nr-Z3o7mp54pxabqoj4pqhXc,3115
72
72
  mx_bluesky/common/device_setup_plans/position_detector.py,sha256=S49ml0KNZ6wXPQqOxNJ2whKTCyRTcKdBXBhyeEyFDQQ,635
73
+ mx_bluesky/common/device_setup_plans/robot_load_unload.py,sha256=UO2fCMk3Yfy1z4SjUd-zwWsc9lYL4LMLKi0jtCUgPso,4419
73
74
  mx_bluesky/common/device_setup_plans/setup_oav.py,sha256=7WLElZZU5mWq9g2WP86p3P81uiSPuj2V4kIkqXlap3o,2692
74
75
  mx_bluesky/common/device_setup_plans/setup_panda.py,sha256=OF-ZygZyAyQEUdrAWiIxWZ6QhAsVx4Mm9ngRYB1mzKI,433
76
+ mx_bluesky/common/device_setup_plans/utils.py,sha256=S_Us1KfLkyaRzWxmqnoVxHj2Suq-Vs0n5fMRygHgrTw,1859
75
77
  mx_bluesky/common/device_setup_plans/xbpm_feedback.py,sha256=WsUMdeOZBgbj-bFp7x66aHp2oWffQmjyp61-qmtQAmI,2153
78
+ mx_bluesky/common/experiment_plans/__init__.py,sha256=FMA-4VN1TJCPcyURKF0qPIQ8uo8YBbtHPRdJokVF4MA,129
76
79
  mx_bluesky/common/experiment_plans/change_aperture_then_move_plan.py,sha256=IY5pq8ni_LKD4LTZG0bbKrC3fEXAnxiunIkp6Oray_c,2897
77
- mx_bluesky/common/experiment_plans/oav_grid_detection_plan.py,sha256=BhwCm-uFQJjgtElfj1Q5DZpKFqRae5iU9Vm7ReX1M4c,6982
80
+ mx_bluesky/common/experiment_plans/common_flyscan_xray_centre_plan.py,sha256=Zus9VDwse1iDJu_920UutWyddEtviJXt2ORYvQKIhqg,12304
81
+ mx_bluesky/common/experiment_plans/common_grid_detect_then_xray_centre_plan.py,sha256=N9LXiKJWCOOJ_AyKJu6jMIKocvOidjTA5JOOG5xWPmw,6921
82
+ mx_bluesky/common/experiment_plans/oav_grid_detection_plan.py,sha256=Djfqfny7Bs-PlpxJUXLDZv-n3uWnk_99YQjAvlvqm8k,6733
83
+ mx_bluesky/common/experiment_plans/oav_snapshot_plan.py,sha256=Zvz8j9ZgK6hIYRTkSjYBr1ARLyMRixOsou_wSuR97U4,3647
84
+ mx_bluesky/common/experiment_plans/read_hardware.py,sha256=Og7Uz8lAB1_Z6puN6ws_2kwOqCvgQMqfmyZPFZMRneY,2351
85
+ mx_bluesky/common/experiment_plans/write_sample_status.py,sha256=pmS4Lsndp90CCIKzD_wssvbzt1qu7rEzfXgxvDwDrQ8,1313
86
+ mx_bluesky/common/experiment_plans/inner_plans/__init__ .py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
+ mx_bluesky/common/experiment_plans/inner_plans/do_fgs.py,sha256=wn2Bi1icVngLQsgHzl6QBGOR5Uw6pZlZSozDlmUv6JM,4786
78
88
  mx_bluesky/common/external_interaction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
89
  mx_bluesky/common/external_interaction/config_server.py,sha256=EmvLfOkvoJlnKa0sffAKNICkY26YsQQqY9sYHKmOGzw,2441
80
90
  mx_bluesky/common/external_interaction/callbacks/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -94,25 +104,21 @@ mx_bluesky/common/external_interaction/callbacks/xray_centre/ispyb_mapping.py,sh
94
104
  mx_bluesky/common/external_interaction/callbacks/xray_centre/nexus_callback.py,sha256=64ZA2ACcq8mI9tKG1MMTf46PYdb_B-sul8xQGM56_WA,4709
95
105
  mx_bluesky/common/external_interaction/ispyb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
106
  mx_bluesky/common/external_interaction/ispyb/data_model.py,sha256=HJZPT_j5EMK7-j-0tdaugiS3kDp44_jzvVoP-xcFCsA,2738
97
- mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py,sha256=Y3nZV5NZ-XnYThettFMhZin4dQb5jAZfT2mGmtLlv74,6076
98
- mx_bluesky/common/external_interaction/ispyb/ispyb_store.py,sha256=YMHENdmzzErRc4AxbpgMIGXmULrd6DmiqKfq8rP8fBc,11183
107
+ mx_bluesky/common/external_interaction/ispyb/exp_eye_store.py,sha256=7j7ybxW1CB4WiuaTf4N2ZeeVbNNy7v5aN1KbbcW74wo,6080
108
+ mx_bluesky/common/external_interaction/ispyb/ispyb_store.py,sha256=Q23dZOGN9VfpwN69K4A41merojNhp4VFTEDAe8G9xws,11132
99
109
  mx_bluesky/common/external_interaction/ispyb/ispyb_utils.py,sha256=5-8wHmY1KvMuRpXUxN5YBCQP3M-Jk-sTcfDm-CC84Mw,732
100
110
  mx_bluesky/common/external_interaction/nexus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
111
  mx_bluesky/common/external_interaction/nexus/nexus_utils.py,sha256=n97KHJJd_C59SOVJHcJ3RbNkvxkoUrF6fIJx3jXBuI0,5580
102
- mx_bluesky/common/external_interaction/nexus/write_nexus.py,sha256=tIz9PFFSiaUs1olbMtLGHddTLj132rEuFSWBK9rOM6Y,4087
103
- mx_bluesky/common/parameters/components.py,sha256=z4UD4GZF5dhn-8mMUCfX1nKfXgpricqdAVY6azNfRWM,8284
104
- mx_bluesky/common/parameters/constants.py,sha256=yB-yV2RH8wBueEp6dAl87_JwssKgU8vxjwNbENjbjZA,4426
112
+ mx_bluesky/common/external_interaction/nexus/write_nexus.py,sha256=s8xT05_Fn_s64KbPOnR5cm-AooklMKRj2cXxLstl7e0,4067
113
+ mx_bluesky/common/parameters/components.py,sha256=LKkFiGWEzU3dPHGG_M9gzNu4XUA-0nc7Q3ceRiWJFTk,8536
114
+ mx_bluesky/common/parameters/constants.py,sha256=Aj5vRZWy2xaKQNLku1posPsgo5tLW_wqRMBJht4fBio,4467
115
+ mx_bluesky/common/parameters/device_composites.py,sha256=aUBH8RozQb-TqNLWXFpjxETSZckPsugcDVwuJTiu8hg,2238
105
116
  mx_bluesky/common/parameters/gridscan.py,sha256=XHlXi6zSJoag11hrS4_k44v_NZSIdCS-QBveben2nPw,7034
106
- mx_bluesky/common/plans/__init__.py,sha256=FMA-4VN1TJCPcyURKF0qPIQ8uo8YBbtHPRdJokVF4MA,129
107
- mx_bluesky/common/plans/common_flyscan_xray_centre_plan.py,sha256=83qzhnuLOPZi6EVGMUHtjPNIg92PexHkY2JanesrWGU,12404
108
- mx_bluesky/common/plans/read_hardware.py,sha256=Og7Uz8lAB1_Z6puN6ws_2kwOqCvgQMqfmyZPFZMRneY,2351
109
- mx_bluesky/common/plans/write_sample_status.py,sha256=pmS4Lsndp90CCIKzD_wssvbzt1qu7rEzfXgxvDwDrQ8,1313
110
- mx_bluesky/common/plans/inner_plans/__init__ .py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
- mx_bluesky/common/plans/inner_plans/do_fgs.py,sha256=6aFWvQAuDgBfySzKgt567U_aoDYhAxfUhEDpn3wMjSQ,4775
112
117
  mx_bluesky/common/preprocessors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
118
  mx_bluesky/common/preprocessors/preprocessors.py,sha256=BNpSM7S9gxhVbG39rjH14k89sOmKiII0cqApH3pF_H0,4476
114
119
  mx_bluesky/common/protocols/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
120
  mx_bluesky/common/protocols/protocols.py,sha256=I-Yd1AFDarfTe14fMgv0VONEJ-9K-5IwDAItNWZPZ90,298
121
+ mx_bluesky/common/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
122
  mx_bluesky/common/utils/context.py,sha256=Fe_YSNv3ZEIZvpdWs-9UqiG6-xEEdCpK6oMYYdCSYT8,2198
117
123
  mx_bluesky/common/utils/exceptions.py,sha256=aB_26oowu7gvoaWWKpiBEllrvtGG-Hd6HLsE86mQgKI,2153
118
124
  mx_bluesky/common/utils/log.py,sha256=CepibF7U5GnN-ICl4bmhbEwqRzWsSFyfNtBDJejK0eo,4325
@@ -126,47 +132,45 @@ mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py,sha256=
126
132
  mx_bluesky/hyperion/device_setup_plans/setup_panda.py,sha256=96eFp4acQLOthe1PA-S14uv635uGVP71DpP7qy_uo40,8509
127
133
  mx_bluesky/hyperion/device_setup_plans/setup_zebra.py,sha256=_PnV4PyrcoN7_CBi-HLWWNMKMKarpFUTcNcXsEx3sZo,9076
128
134
  mx_bluesky/hyperion/device_setup_plans/smargon.py,sha256=9znQLGF8Uqif1SZ_H4GyqcnhR3xCI1FIniCaGLRY3zM,758
129
- mx_bluesky/hyperion/device_setup_plans/utils.py,sha256=z5ybrrbkcpoTXpEqufDdNqRi1zgcSyMZzVYdPm6xdmE,2246
130
- mx_bluesky/hyperion/experiment_plans/__init__.py,sha256=JhJ9c2V1f1gwAVkuVBuvgBu7LKdgbrp9MBkh7JUefAY,760
131
- mx_bluesky/hyperion/experiment_plans/experiment_registry.py,sha256=b9ROMppIQPxsR7IBMcBOHTVKB_Vrv5QSG7xqCc7_41g,1674
132
- mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py,sha256=o5l4pWCzGH-Z3PBy7Y9N_xMbfS_ZxRsw5t-OLt6ynCI,7994
133
- mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py,sha256=5AK0-mY6e8-x6w_Uj41FnS4pvdbLniTdmznAUZPGbpg,6550
134
- mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py,sha256=kdp1dWh4g-w9Bob3L7VoiTDAVNkxwrvKvSGcEMzZCBc,6177
135
- mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py,sha256=YU_lwG6rlPtrS0KfUxmJb9fgH8jCfpZQzpaBxFudadk,3595
135
+ mx_bluesky/hyperion/device_setup_plans/utils.py,sha256=96JlzyikMhWN7LzdiMx8URZInXoGR3OjoxYmCIp9tts,425
136
+ mx_bluesky/hyperion/experiment_plans/__init__.py,sha256=dJjwLk0EQP-1hKhbs8aRxTF_LxUXgB7kcgDlaP-tMnk,787
137
+ mx_bluesky/hyperion/experiment_plans/experiment_registry.py,sha256=bGp2c3nKutqHMnDxuqjp6yCF-JKykSzX-IUfxk3oVlM,1701
138
+ mx_bluesky/hyperion/experiment_plans/hyperion_flyscan_xray_centre_plan.py,sha256=MzoJ0ts8eeHWi6lt95toZRVsEJ0I21zJ9Z6iYwr2Lps,6643
139
+ mx_bluesky/hyperion/experiment_plans/hyperion_grid_detect_then_xray_centre_plan.py,sha256=e4w4226ONSGQF2dnXzxOfcJ9i57CZIJrqQ1YCLlaBNo,2153
140
+ mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py,sha256=G_r8NIHkvRpC8jGYPYZAtG6uVPTwzlH1P2Akd2ykP4o,6877
136
141
  mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py,sha256=5ZAH17F5T1YyVgA2ML0NEf4ufrD1G0jPRU0_5pINdTg,16195
137
- mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py,sha256=DCD2oUx6n6VL6JaBQU779opOPxHr-UY0dQrSIW2hWus,5002
142
+ mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py,sha256=oErbq4ffTZVNR_LeiSJP8_q4cwdZWB-bdbrO3ZwKg20,5397
138
143
  mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py,sha256=FP_tAhq7Txljbxvvr3eEMoapDtXj8siPyWd9qcYevBg,6247
139
- mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py,sha256=imANEAVswFFaMqTISRXSe0BwcUkQ1sIT8O-WnKsxhqM,8082
140
- mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py,sha256=I1kdngl_FwJN5GiWA9LYgp13VZ_EjWHsBCy2GmdeP2w,6841
141
- mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py,sha256=az_LYhT7cKTM0z_Y8cdu2zMQKJ9m0ege-uARwmyjEqc,15855
144
+ mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py,sha256=AFQtQ-goN7cbMXiYaxd3-PSDKG2llnMr0dKkYdbCIB4,5942
145
+ mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py,sha256=II-4v2AOyC7QbCqLZFSq1fT1OjWSg8P5MmSQFzQI0D0,6892
146
+ mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py,sha256=EzxvClv7Gc3izpBVOQaBskFqdpIl66vIUyjqNtaM3H4,15913
142
147
  mx_bluesky/hyperion/experiment_plans/set_energy_plan.py,sha256=8FAqN-aJgRwZSiCX-hNdeGmaijt0l8owdShVBwNchfE,2643
143
148
  mx_bluesky/hyperion/external_interaction/__init__.py,sha256=95DwXDmKsx36RgAL-AtLZl2LQoLPKbzeYdlkkP_4Coc,559
144
- mx_bluesky/hyperion/external_interaction/agamemnon.py,sha256=Bh6vIg3edjjKmWKZj_IDFYDmGN5pC_FeCCgSFJQiUKc,9984
145
- mx_bluesky/hyperion/external_interaction/config_server.py,sha256=_nHoHcEXhKSFTszTu57Y5FSCP5Xogmyy8FVwYRraAy4,2146
149
+ mx_bluesky/hyperion/external_interaction/agamemnon.py,sha256=y80qaZ43fwUdDBDkRYs7yJH1I8zXVla_7GTnRkXBOnQ,9959
150
+ mx_bluesky/hyperion/external_interaction/config_server.py,sha256=mVBSrqFCnyW92QN1Jeiljm1QbyYH1IJE5QZwARuHu08,1592
146
151
  mx_bluesky/hyperion/external_interaction/callbacks/__init__.py,sha256=1XHaxDljMveu_DYIlk7n963gHffyC6r4C_RhF6HA-N8,283
147
- mx_bluesky/hyperion/external_interaction/callbacks/__main__.py,sha256=1Uu4oT-qnJb2LHQinHrLvN0zBTuz0EZ8HEmqfFrAJE4,6155
148
- mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py,sha256=Yg9i9YNeQLll9KEtic5omAqZohrlQ4DXdhp0fjGNz5U,11581
149
- mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py,sha256=7xSvCd95tXjvmsbFLecI1hEwJj_rm8yGuJJ1Pmg-RKU,4142
152
+ mx_bluesky/hyperion/external_interaction/callbacks/__main__.py,sha256=QS4XSLH2KEFWINzs1BweIbDO_gxSfp8tEMa6Y83mSRY,6158
153
+ mx_bluesky/hyperion/external_interaction/callbacks/snapshot_callback.py,sha256=ee1ZIJGp8RQakMDYRfflXjSwi-UgxqdZNkZ1azBIDGQ,11705
154
+ mx_bluesky/hyperion/external_interaction/callbacks/robot_actions/ispyb_callback.py,sha256=Ta8w0W_3LI0PGpwxKlQsS7X0B_hsfJoZdzR2K3J0KHo,4467
150
155
  mx_bluesky/hyperion/external_interaction/callbacks/rotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
- mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py,sha256=KJ1lXurzvvy7eS0W3KDXfnsWzbftsjBUxR0SS0rC0Mg,7460
156
+ mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py,sha256=-0fz1Fw2zm8JXvZWkHTNRPirO2q3Ha0rb3Ug7eJ-xI4,7456
152
157
  mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py,sha256=bba5ZHoOMqvSCUXJIxbx55HGhaoC_Jqhyxxb-ttqt5g,801
153
158
  mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py,sha256=QxLjRqoKSmEC9TbTK6mufbWXRcmzLfe9xZclEhUbxIw,4736
154
159
  mx_bluesky/hyperion/parameters/__init__.py,sha256=kf2wfcILBUBpT0tJ8-W39BywQUkn67yxl9IVsfrr1LE,115
155
160
  mx_bluesky/hyperion/parameters/cli.py,sha256=zciAE1-7Ahx0B8-RNNk25hB40xBMrmrR7cK1GbEDgaM,1177
156
161
  mx_bluesky/hyperion/parameters/components.py,sha256=uXxdW6nIE1VZnh4ZXe5O-LOwsx4MbENEWfLGm2ACvsI,313
157
- mx_bluesky/hyperion/parameters/constants.py,sha256=EbMhqD9VJTTMABqDgZAYcZdJ1M6IGvJerTZI-5lONYU,1891
158
- mx_bluesky/hyperion/parameters/device_composites.py,sha256=zFN-Pog5jUewBygIFyTvxBXC6jo_Of_C3Qo5UGV5u0I,2802
159
- mx_bluesky/hyperion/parameters/gridscan.py,sha256=LcKfL8LUrQlEeehxawL_GebUxVyKYCJuJysMp5W0t_s,3799
160
- mx_bluesky/hyperion/parameters/load_centre_collect.py,sha256=1KsL9pk1iJAmCJIn6R560tkrh4hU2pp7dFKVbVb-zYU,3673
162
+ mx_bluesky/hyperion/parameters/constants.py,sha256=-_dCUu5uqw1iHqZ2FE_HkLeaWYHGPB-poNNiqpnfEms,1665
163
+ mx_bluesky/hyperion/parameters/device_composites.py,sha256=wXr0VH66Qm5xT0WBBy4hmXjONrAxieP3aAFdt0rM6kY,2139
164
+ mx_bluesky/hyperion/parameters/gridscan.py,sha256=snER6auUYTdj31Qa_sjp7zPIpXMo_lwLq7Ugn-YlG6k,3663
165
+ mx_bluesky/hyperion/parameters/load_centre_collect.py,sha256=bT4jXBPKeOTfi3U2lECJ-bbKLkmlCz_MMydqdbCE4xI,4361
161
166
  mx_bluesky/hyperion/parameters/robot_load.py,sha256=DSOwIosO629WoXbVFokEjmgqKZz3xzv0feRQHC_ZgpI,1233
162
- mx_bluesky/hyperion/parameters/rotation.py,sha256=wziJtpx9bgBbNsqwVs8fVZlAOflOEoiRzSvgtmB_1b8,7462
167
+ mx_bluesky/hyperion/parameters/rotation.py,sha256=Ws3iic17Btmleatc5PStL_N8iO41kVe2UtZ1I8F2Uz8,7546
163
168
  mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml,sha256=mhLBJTSjHCkM9F6mjtqbhNmmrV8qSctbCUfhb0q7pYo,28085
164
169
  mx_bluesky/hyperion/utils/__init__.py,sha256=f4E8wInL1Ll4eeFtAiyKmipOBTPlUtKmVK-m_LOQG4M,35
165
170
  mx_bluesky/hyperion/utils/context.py,sha256=TXvARIUZNLcz-KY_-xPkQvK-tMe1sV_cjFDh6IqPgfo,568
166
- mx_bluesky/hyperion/utils/validation.py,sha256=5rCvANMbgk1OC0X4bTZWoO-nRhBaM0S6sMvoSYdeR1c,6650
167
- mx_bluesky-1.4.9.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
168
- mx_bluesky-1.4.9.dist-info/METADATA,sha256=RDKjEGQVuHICiWqUDHwvuQc1sfIcasJxeVMGJmWAjhY,17360
169
- mx_bluesky-1.4.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
170
- mx_bluesky-1.4.9.dist-info/entry_points.txt,sha256=-hM2jXf6TAwgqnUHaEVx02j7sdB0L_WaeHW_tIRuj6o,600
171
- mx_bluesky-1.4.9.dist-info/top_level.txt,sha256=S4rrzXIUef58ulf_04wn01XGZ3xeJjXs4LPEJ_xoF-I,11
172
- mx_bluesky-1.4.9.dist-info/RECORD,,
171
+ mx_bluesky-1.5.1.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
172
+ mx_bluesky-1.5.1.dist-info/METADATA,sha256=vM2XcXEYwdurLg9LtfQzf8VBzHRnmrHKKSw1rfH96UE,17392
173
+ mx_bluesky-1.5.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
174
+ mx_bluesky-1.5.1.dist-info/entry_points.txt,sha256=-hM2jXf6TAwgqnUHaEVx02j7sdB0L_WaeHW_tIRuj6o,600
175
+ mx_bluesky-1.5.1.dist-info/top_level.txt,sha256=S4rrzXIUef58ulf_04wn01XGZ3xeJjXs4LPEJ_xoF-I,11
176
+ mx_bluesky-1.5.1.dist-info/RECORD,,
@@ -1,196 +0,0 @@
1
- import gzip
2
- import json
3
- import os
4
- import shutil
5
- from pathlib import Path
6
-
7
- import bluesky.preprocessors as bpp
8
- from bluesky.run_engine import RunEngine
9
- from dodal.beamlines import i03
10
- from dodal.devices.oav.oav_detector import OAVConfigBeamCentre
11
- from ophyd_async.testing import set_mock_value
12
-
13
- from mx_bluesky.common.plans.read_hardware import (
14
- standard_read_hardware_during_collection,
15
- )
16
- from mx_bluesky.hyperion.experiment_plans.rotation_scan_plan import (
17
- RotationScanComposite,
18
- )
19
- from mx_bluesky.hyperion.external_interaction.callbacks.rotation.nexus_callback import (
20
- RotationNexusFileCallback,
21
- )
22
- from mx_bluesky.hyperion.parameters.constants import CONST
23
- from mx_bluesky.hyperion.parameters.rotation import RotationScan
24
-
25
- DISPLAY_CONFIGURATION = "tests/test_data/test_display.configuration"
26
- ZOOM_LEVELS_XML = "tests/test_data/test_jCameraManZoomLevels.xml"
27
- TEST_DATA_DIRECTORY = Path("tests/test_data/nexus_files/rotation")
28
- TEST_METAFILE = "ins_8_5_meta.h5.gz"
29
- FAKE_DATAFILE = "../fake_data.h5"
30
- FILENAME_STUB = "test_rotation_nexus"
31
-
32
-
33
- def test_params(filename_stub, dir):
34
- def get_params(filename):
35
- with open(filename) as f:
36
- return json.loads(f.read())
37
-
38
- params = RotationScan(
39
- **get_params(
40
- "tests/test_data/parameter_json_files/good_test_one_multi_rotation_scan_parameters.json"
41
- )
42
- )
43
- for scan_params in params.rotation_scans:
44
- scan_params.x_start_um = 0
45
- scan_params.y_start_um = 0
46
- scan_params.z_start_um = 0
47
- scan_params.scan_width_deg = 360
48
- params.file_name = filename_stub
49
- params.demand_energy_ev = 12700
50
- params.storage_directory = str(dir)
51
- params.exposure_time_s = 0.004
52
- return params
53
-
54
-
55
- def fake_rotation_scan(
56
- parameters: RotationScan,
57
- subscription: RotationNexusFileCallback,
58
- rotation_devices: RotationScanComposite,
59
- ):
60
- single_scan_parameters = next(parameters.single_rotation_scans)
61
-
62
- @bpp.subs_decorator(subscription)
63
- @bpp.set_run_key_decorator("rotation_scan_with_cleanup_and_subs")
64
- @bpp.run_decorator( # attach experiment metadata to the start document
65
- md={
66
- "subplan_name": CONST.PLAN.ROTATION_OUTER,
67
- "mx_bluesky_parameters": single_scan_parameters.model_dump_json(),
68
- "activate_callbacks": "RotationNexusFileCallback",
69
- }
70
- )
71
- def plan():
72
- yield from standard_read_hardware_during_collection(
73
- rotation_devices.aperture_scatterguard,
74
- rotation_devices.attenuator,
75
- rotation_devices.flux,
76
- rotation_devices.dcm,
77
- rotation_devices.eiger,
78
- )
79
-
80
- return plan()
81
-
82
-
83
- def fake_create_rotation_devices():
84
- beamstop = i03.beamstop(connect_immediately=True, mock=True)
85
- eiger = i03.eiger(connect_immediately=True, mock=True)
86
- smargon = i03.smargon(connect_immediately=True, mock=True)
87
- zebra = i03.zebra(connect_immediately=True, mock=True)
88
- detector_motion = i03.detector_motion(connect_immediately=True, mock=True)
89
- backlight = i03.backlight(mock=True)
90
- attenuator = i03.attenuator(connect_immediately=True, mock=True)
91
- flux = i03.flux(connect_immediately=True, mock=True)
92
- undulator = i03.undulator(connect_immediately=True, mock=True)
93
- aperture_scatterguard = i03.aperture_scatterguard(
94
- connect_immediately=True, mock=True
95
- )
96
- synchrotron = i03.synchrotron(connect_immediately=True, mock=True)
97
- s4_slit_gaps = i03.s4_slit_gaps(connect_immediately=True, mock=True)
98
- dcm = i03.dcm(connect_immediately=True, mock=True)
99
- robot = i03.robot(connect_immediately=True, mock=True)
100
- oav = i03.oav(
101
- connect_immediately=True,
102
- mock=True,
103
- params=OAVConfigBeamCentre(ZOOM_LEVELS_XML, DISPLAY_CONFIGURATION),
104
- )
105
- xbpm_feedback = i03.xbpm_feedback(connect_immediately=True, mock=True)
106
-
107
- set_mock_value(smargon.omega.max_velocity, 131)
108
- set_mock_value(dcm.energy_in_kev.user_readback, 12700)
109
-
110
- return RotationScanComposite(
111
- attenuator=attenuator,
112
- backlight=backlight,
113
- beamstop=beamstop,
114
- dcm=dcm,
115
- detector_motion=detector_motion,
116
- eiger=eiger,
117
- flux=flux,
118
- smargon=smargon,
119
- undulator=undulator,
120
- aperture_scatterguard=aperture_scatterguard,
121
- synchrotron=synchrotron,
122
- s4_slit_gaps=s4_slit_gaps,
123
- zebra=zebra,
124
- robot=robot,
125
- oav=oav,
126
- sample_shutter=i03.sample_shutter(connect_immediately=True, mock=True),
127
- xbpm_feedback=xbpm_feedback,
128
- )
129
-
130
-
131
- def sim_rotation_scan_to_create_nexus(
132
- test_params: RotationScan,
133
- fake_create_rotation_devices: RotationScanComposite,
134
- filename_stub,
135
- RE,
136
- ):
137
- run_number = test_params.detector_params.run_number
138
- nexus_filename = f"{filename_stub}_{run_number}.nxs"
139
-
140
- fake_create_rotation_devices.eiger.bit_depth.sim_put(32) # type: ignore
141
-
142
- RE(
143
- fake_rotation_scan(
144
- test_params, RotationNexusFileCallback(), fake_create_rotation_devices
145
- )
146
- )
147
-
148
- nexus_path = Path(test_params.storage_directory) / nexus_filename
149
- assert os.path.isfile(nexus_path)
150
- return filename_stub, run_number
151
-
152
-
153
- def extract_metafile(input_filename, output_filename):
154
- with gzip.open(input_filename) as metafile_fo:
155
- with open(output_filename, "wb") as output_fo:
156
- output_fo.write(metafile_fo.read())
157
-
158
-
159
- def _generate_fake_nexus(filename, dir=os.getcwd()):
160
- RE = RunEngine({})
161
- params = test_params(filename, dir)
162
- run_number = params.detector_params.run_number
163
- filename_stub, run_number = sim_rotation_scan_to_create_nexus(
164
- params, fake_create_rotation_devices(), filename, RE
165
- )
166
- return filename_stub, run_number
167
-
168
-
169
- def generate_test_nexus():
170
- filename_stub, run_number = _generate_fake_nexus(FILENAME_STUB)
171
- # ugly hack because we get double free error on exit
172
- with open("OUTPUT_FILENAME", "x") as f:
173
- f.write(f"{filename_stub}_{run_number}.nxs")
174
-
175
- extract_metafile(
176
- str(TEST_DATA_DIRECTORY / TEST_METAFILE),
177
- f"{FILENAME_STUB}_{run_number}_meta.h5",
178
- )
179
-
180
- new_hyp_data = [f"{FILENAME_STUB}_{run_number}_00000{n}.h5" for n in [1, 2, 3, 4]]
181
- [shutil.copy(TEST_DATA_DIRECTORY / FAKE_DATAFILE, d) for d in new_hyp_data]
182
-
183
- exit(0)
184
-
185
-
186
- def copy_test_meta_data_files():
187
- extract_metafile(
188
- str(TEST_DATA_DIRECTORY / TEST_METAFILE),
189
- f"{TEST_DATA_DIRECTORY}/ins_8_5_meta.h5",
190
- )
191
- new_data = [f"{TEST_DATA_DIRECTORY}/ins_8_5_00000{n}.h5" for n in [1, 2, 3, 4]]
192
- [shutil.copy(TEST_DATA_DIRECTORY / FAKE_DATAFILE, d) for d in new_data]
193
-
194
-
195
- if __name__ == "__main__":
196
- generate_test_nexus()