mx-bluesky 1.4.1__py3-none-any.whl → 1.4.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.
- mx_bluesky/_version.py +2 -2
- mx_bluesky/beamlines/i24/serial/__init__.py +0 -6
- mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +18 -21
- mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +2 -46
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +22 -95
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +50 -63
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +1 -19
- mx_bluesky/beamlines/i24/serial/parameters/__init__.py +5 -1
- mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py +34 -2
- mx_bluesky/beamlines/i24/serial/parameters/utils.py +19 -0
- mx_bluesky/beamlines/i24/serial/write_nexus.py +2 -5
- mx_bluesky/common/parameters/components.py +3 -3
- mx_bluesky/hyperion/device_setup_plans/manipulate_sample.py +6 -6
- mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +14 -2
- mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +7 -1
- mx_bluesky/hyperion/utils/validation.py +1 -1
- {mx_bluesky-1.4.1.dist-info → mx_bluesky-1.4.2.dist-info}/METADATA +2 -2
- {mx_bluesky-1.4.1.dist-info → mx_bluesky-1.4.2.dist-info}/RECORD +22 -22
- {mx_bluesky-1.4.1.dist-info → mx_bluesky-1.4.2.dist-info}/LICENSE +0 -0
- {mx_bluesky-1.4.1.dist-info → mx_bluesky-1.4.2.dist-info}/WHEEL +0 -0
- {mx_bluesky-1.4.1.dist-info → mx_bluesky-1.4.2.dist-info}/entry_points.txt +0 -0
- {mx_bluesky-1.4.1.dist-info → mx_bluesky-1.4.2.dist-info}/top_level.txt +0 -0
mx_bluesky/_version.py
CHANGED
|
@@ -18,9 +18,6 @@ from .fixed_target.i24ssx_Chip_Manager_py3v1 import (
|
|
|
18
18
|
moveto,
|
|
19
19
|
moveto_preset,
|
|
20
20
|
pumpprobe_calc,
|
|
21
|
-
save_screen_map,
|
|
22
|
-
upload_parameters,
|
|
23
|
-
write_parameter_file,
|
|
24
21
|
)
|
|
25
22
|
from .log import clean_up_log_config_at_end, setup_collection_logs
|
|
26
23
|
from .setup_beamline.setup_detector import setup_detector_stage
|
|
@@ -44,9 +41,6 @@ __all__ = [
|
|
|
44
41
|
"load_lite_map",
|
|
45
42
|
"load_stock_map",
|
|
46
43
|
"pumpprobe_calc",
|
|
47
|
-
"save_screen_map",
|
|
48
|
-
"upload_parameters",
|
|
49
|
-
"write_parameter_file",
|
|
50
44
|
"setup_collection_logs",
|
|
51
45
|
"clean_up_log_config_at_end",
|
|
52
46
|
]
|
|
@@ -4,9 +4,7 @@ This version in python3 new Feb2021 by RLO
|
|
|
4
4
|
- March 21 added logging and Eiger functionality
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
-
import json
|
|
8
7
|
import re
|
|
9
|
-
import shutil
|
|
10
8
|
import sys
|
|
11
9
|
import time
|
|
12
10
|
from datetime import datetime
|
|
@@ -40,10 +38,6 @@ from mx_bluesky.beamlines.i24.serial.log import (
|
|
|
40
38
|
log_on_entry,
|
|
41
39
|
)
|
|
42
40
|
from mx_bluesky.beamlines.i24.serial.parameters import ExtruderParameters
|
|
43
|
-
from mx_bluesky.beamlines.i24.serial.parameters.constants import (
|
|
44
|
-
PARAM_FILE_NAME,
|
|
45
|
-
PARAM_FILE_PATH,
|
|
46
|
-
)
|
|
47
41
|
from mx_bluesky.beamlines.i24.serial.setup_beamline import Pilatus, caget, caput, pv
|
|
48
42
|
from mx_bluesky.beamlines.i24.serial.setup_beamline import setup_beamline as sup
|
|
49
43
|
from mx_bluesky.beamlines.i24.serial.setup_beamline.setup_detector import (
|
|
@@ -141,12 +135,20 @@ def enter_hutch(
|
|
|
141
135
|
|
|
142
136
|
|
|
143
137
|
@log_on_entry
|
|
144
|
-
def
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
138
|
+
def read_parameters(detector_stage: DetectorMotion, attenuator: ReadOnlyAttenuator):
|
|
139
|
+
""" Read the parameters from user input and create the parameter model for an \
|
|
140
|
+
extruder collection.
|
|
141
|
+
|
|
142
|
+
Args:
|
|
143
|
+
detector_stage (DetectorMotion): The detector stage device.
|
|
144
|
+
attenuator (ReadOnlyAttenuator): A read-only attenuator device to get the \
|
|
145
|
+
transmission value.
|
|
146
|
+
|
|
147
|
+
Returns:
|
|
148
|
+
ExtruderParameters: Parameter model for extruder collections
|
|
149
|
+
|
|
150
|
+
"""
|
|
151
|
+
SSX_LOGGER.info("Creating parameter model from input.")
|
|
150
152
|
|
|
151
153
|
det_type = yield from get_detector_type(detector_stage)
|
|
152
154
|
SSX_LOGGER.warning(f"DETECTOR TYPE: {det_type}")
|
|
@@ -182,12 +184,11 @@ def write_parameter_file(
|
|
|
182
184
|
"laser_dwell_s": pump_exp,
|
|
183
185
|
"laser_delay_s": pump_delay,
|
|
184
186
|
}
|
|
185
|
-
with open(param_file, "w") as f:
|
|
186
|
-
json.dump(params_dict, f, indent=4)
|
|
187
187
|
|
|
188
188
|
SSX_LOGGER.info("Parameters \n")
|
|
189
189
|
SSX_LOGGER.info(pformat(params_dict))
|
|
190
190
|
yield from bps.null()
|
|
191
|
+
return ExtruderParameters(**params_dict)
|
|
191
192
|
|
|
192
193
|
|
|
193
194
|
@log_on_entry
|
|
@@ -467,11 +468,6 @@ def collection_complete_plan(
|
|
|
467
468
|
dcid.collection_complete(end_time, aborted=False)
|
|
468
469
|
SSX_LOGGER.info(f"End Time = {end_time.ctime()}")
|
|
469
470
|
|
|
470
|
-
# Copy parameter file
|
|
471
|
-
shutil.copy2(
|
|
472
|
-
PARAM_FILE_PATH / PARAM_FILE_NAME,
|
|
473
|
-
collection_directory / PARAM_FILE_NAME,
|
|
474
|
-
)
|
|
475
471
|
yield from bps.null()
|
|
476
472
|
|
|
477
473
|
|
|
@@ -489,8 +485,9 @@ def run_extruder_plan(
|
|
|
489
485
|
start_time = datetime.now()
|
|
490
486
|
SSX_LOGGER.info(f"Collection start time: {start_time.ctime()}")
|
|
491
487
|
|
|
492
|
-
yield from
|
|
493
|
-
|
|
488
|
+
parameters: ExtruderParameters = yield from read_parameters(
|
|
489
|
+
detector_stage, attenuator
|
|
490
|
+
)
|
|
494
491
|
|
|
495
492
|
beam_center_device = sup.get_beam_center_device(parameters.detector_name)
|
|
496
493
|
|
|
@@ -3,8 +3,8 @@ beginScreenProperties
|
|
|
3
3
|
major 4
|
|
4
4
|
minor 0
|
|
5
5
|
release 1
|
|
6
|
-
x
|
|
7
|
-
y
|
|
6
|
+
x 308
|
|
7
|
+
y 339
|
|
8
8
|
w 650
|
|
9
9
|
h 400
|
|
10
10
|
font "arial-medium-r-18.0"
|
|
@@ -179,50 +179,6 @@ font "arial-medium-r-18.0"
|
|
|
179
179
|
colorPv "ME14E-MO-IOC-01:GP67"
|
|
180
180
|
endObjectProperties
|
|
181
181
|
|
|
182
|
-
# (Shell Command)
|
|
183
|
-
object shellCmdClass
|
|
184
|
-
beginObjectProperties
|
|
185
|
-
major 4
|
|
186
|
-
minor 3
|
|
187
|
-
release 0
|
|
188
|
-
x 40
|
|
189
|
-
y 290
|
|
190
|
-
w 194
|
|
191
|
-
h 40
|
|
192
|
-
fgColor index 0
|
|
193
|
-
bgColor index 23
|
|
194
|
-
topShadowColor index 1
|
|
195
|
-
botShadowColor index 11
|
|
196
|
-
font "arial-medium-r-18.0"
|
|
197
|
-
buttonLabel "Save Screen Map"
|
|
198
|
-
numCmds 1
|
|
199
|
-
command {
|
|
200
|
-
0 "blueapi -c CONFIG_LOCATION controller run save_screen_map"
|
|
201
|
-
}
|
|
202
|
-
endObjectProperties
|
|
203
|
-
|
|
204
|
-
# (Shell Command)
|
|
205
|
-
object shellCmdClass
|
|
206
|
-
beginObjectProperties
|
|
207
|
-
major 4
|
|
208
|
-
minor 3
|
|
209
|
-
release 0
|
|
210
|
-
x 12
|
|
211
|
-
y 337
|
|
212
|
-
w 244
|
|
213
|
-
h 53
|
|
214
|
-
fgColor index 13
|
|
215
|
-
bgColor index 49
|
|
216
|
-
topShadowColor index 1
|
|
217
|
-
botShadowColor index 11
|
|
218
|
-
font "arial-medium-r-18.0"
|
|
219
|
-
buttonLabel "Upload Parameters"
|
|
220
|
-
numCmds 1
|
|
221
|
-
command {
|
|
222
|
-
0 "blueapi -c CONFIG_LOCATION controller run upload_parameters '\{\"pmac\":\"pmac\"\}'"
|
|
223
|
-
}
|
|
224
|
-
endObjectProperties
|
|
225
|
-
|
|
226
182
|
# (Message Button)
|
|
227
183
|
object activeMessageButtonClass
|
|
228
184
|
beginObjectProperties
|
|
@@ -2,14 +2,12 @@
|
|
|
2
2
|
Fixed target data collection
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
import shutil
|
|
6
5
|
from datetime import datetime
|
|
7
6
|
from pathlib import Path
|
|
8
7
|
from time import sleep
|
|
9
8
|
|
|
10
9
|
import bluesky.plan_stubs as bps
|
|
11
10
|
import bluesky.preprocessors as bpp
|
|
12
|
-
import numpy as np
|
|
13
11
|
from bluesky.utils import MsgGenerator
|
|
14
12
|
from dodal.common import inject
|
|
15
13
|
from dodal.devices.attenuator import ReadOnlyAttenuator
|
|
@@ -35,18 +33,11 @@ from mx_bluesky.beamlines.i24.serial.fixed_target.ft_utils import (
|
|
|
35
33
|
PumpProbeSetting,
|
|
36
34
|
)
|
|
37
35
|
from mx_bluesky.beamlines.i24.serial.fixed_target.i24ssx_Chip_Manager_py3v1 import (
|
|
38
|
-
|
|
36
|
+
read_parameters,
|
|
37
|
+
upload_chip_map_to_geobrick,
|
|
39
38
|
)
|
|
40
39
|
from mx_bluesky.beamlines.i24.serial.log import SSX_LOGGER, log_on_entry
|
|
41
|
-
from mx_bluesky.beamlines.i24.serial.parameters import
|
|
42
|
-
ChipDescription,
|
|
43
|
-
FixedTargetParameters,
|
|
44
|
-
)
|
|
45
|
-
from mx_bluesky.beamlines.i24.serial.parameters.constants import (
|
|
46
|
-
LITEMAP_PATH,
|
|
47
|
-
PARAM_FILE_NAME,
|
|
48
|
-
PARAM_FILE_PATH_FT,
|
|
49
|
-
)
|
|
40
|
+
from mx_bluesky.beamlines.i24.serial.parameters import FixedTargetParameters
|
|
50
41
|
from mx_bluesky.beamlines.i24.serial.setup_beamline import caget, cagetstring, caput, pv
|
|
51
42
|
from mx_bluesky.beamlines.i24.serial.setup_beamline import setup_beamline as sup
|
|
52
43
|
from mx_bluesky.beamlines.i24.serial.setup_beamline.setup_zebra_plans import (
|
|
@@ -107,19 +98,6 @@ def calculate_collection_timeout(parameters: FixedTargetParameters) -> float:
|
|
|
107
98
|
return timeout
|
|
108
99
|
|
|
109
100
|
|
|
110
|
-
def copy_files_to_data_location(
|
|
111
|
-
dest_dir: Path | str,
|
|
112
|
-
param_path: Path = PARAM_FILE_PATH_FT,
|
|
113
|
-
map_file: Path = LITEMAP_PATH,
|
|
114
|
-
map_type: MappingType = MappingType.Lite,
|
|
115
|
-
):
|
|
116
|
-
if not isinstance(dest_dir, Path):
|
|
117
|
-
dest_dir = Path(dest_dir)
|
|
118
|
-
shutil.copy2(param_path / "parameters.txt", dest_dir / "parameters.txt")
|
|
119
|
-
if map_type == MappingType.Lite:
|
|
120
|
-
shutil.copy2(map_file / "currentchip.map", dest_dir / "currentchip.map")
|
|
121
|
-
|
|
122
|
-
|
|
123
101
|
def write_userlog(
|
|
124
102
|
parameters: FixedTargetParameters,
|
|
125
103
|
filename: str,
|
|
@@ -308,50 +286,18 @@ def get_prog_num(
|
|
|
308
286
|
|
|
309
287
|
|
|
310
288
|
@log_on_entry
|
|
311
|
-
def
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
) -> int:
|
|
316
|
-
# Calculates how many images will be collected based on map type and N repeats
|
|
317
|
-
SSX_LOGGER.info("Calculate total number of images expected in data collection.")
|
|
318
|
-
|
|
319
|
-
if map_type == MappingType.NoMap:
|
|
320
|
-
if chip_params.chip_type == ChipType.Custom:
|
|
321
|
-
total_numb_imgs = chip_params.x_num_steps * chip_params.y_num_steps
|
|
322
|
-
SSX_LOGGER.info(
|
|
323
|
-
f"Map type: None \tCustom chip \tNumber of images {total_numb_imgs}"
|
|
324
|
-
)
|
|
325
|
-
else:
|
|
326
|
-
chip_format = chip_params.chip_format[:4]
|
|
327
|
-
total_numb_imgs = int(np.prod(chip_format))
|
|
328
|
-
SSX_LOGGER.info(
|
|
329
|
-
f"""Map type: None \tOxford chip {chip_params.chip_type} \t \
|
|
330
|
-
Number of images {total_numb_imgs}"""
|
|
331
|
-
)
|
|
332
|
-
|
|
333
|
-
elif map_type == MappingType.Lite:
|
|
334
|
-
SSX_LOGGER.info(f"Using Mapping Lite on chip type {chip_params.chip_type}")
|
|
335
|
-
chip_format = chip_params.chip_format[2:4]
|
|
336
|
-
block_count = 0
|
|
337
|
-
with open(LITEMAP_PATH / "currentchip.map") as f:
|
|
338
|
-
for line in f.readlines():
|
|
339
|
-
entry = line.split()
|
|
340
|
-
if entry[2] == "1":
|
|
341
|
-
block_count += 1
|
|
342
|
-
|
|
343
|
-
SSX_LOGGER.info(f"Block count={block_count}")
|
|
344
|
-
SSX_LOGGER.info(f"Chip format={chip_format}")
|
|
345
|
-
|
|
346
|
-
SSX_LOGGER.info(f"Number of exposures={n_exposures}")
|
|
347
|
-
|
|
348
|
-
total_numb_imgs = int(np.prod(chip_format) * block_count * n_exposures)
|
|
349
|
-
SSX_LOGGER.info(f"Calculated number of images: {total_numb_imgs}")
|
|
289
|
+
def set_datasize(
|
|
290
|
+
parameters: FixedTargetParameters,
|
|
291
|
+
):
|
|
292
|
+
SSX_LOGGER.info("Setting PV to calculated total number of images")
|
|
350
293
|
|
|
351
|
-
SSX_LOGGER.
|
|
352
|
-
|
|
294
|
+
SSX_LOGGER.debug(f"Map type: {parameters.map_type}")
|
|
295
|
+
SSX_LOGGER.debug(f"Chip type: {parameters.chip.chip_type}")
|
|
296
|
+
if parameters.map_type == MappingType.Lite:
|
|
297
|
+
SSX_LOGGER.debug(f"Num exposures: {parameters.num_exposures}")
|
|
298
|
+
SSX_LOGGER.debug(f"Block count: {len(parameters.chip_map)}")
|
|
353
299
|
|
|
354
|
-
|
|
300
|
+
caput(pv.me14e_gp10, parameters.total_num_images)
|
|
355
301
|
|
|
356
302
|
|
|
357
303
|
@log_on_entry
|
|
@@ -622,9 +568,7 @@ def main_fixed_target_plan(
|
|
|
622
568
|
parameters.checker_pattern,
|
|
623
569
|
)
|
|
624
570
|
|
|
625
|
-
parameters
|
|
626
|
-
parameters.num_exposures, parameters.chip, parameters.map_type
|
|
627
|
-
)
|
|
571
|
+
set_datasize(parameters)
|
|
628
572
|
|
|
629
573
|
start_time = yield from start_i24(
|
|
630
574
|
zebra,
|
|
@@ -695,8 +639,7 @@ def collection_complete_plan(
|
|
|
695
639
|
SSX_LOGGER.debug(f"Collection end time {end_time}")
|
|
696
640
|
dcid.collection_complete(end_time, aborted=False)
|
|
697
641
|
|
|
698
|
-
#
|
|
699
|
-
copy_files_to_data_location(collection_directory, map_type=map_type)
|
|
642
|
+
# NOTE no files to copy anymore but shoud write userlog here
|
|
700
643
|
yield from bps.null()
|
|
701
644
|
|
|
702
645
|
|
|
@@ -749,29 +692,13 @@ def run_fixed_target_plan(
|
|
|
749
692
|
mirrors: FocusMirrorsMode = inject("focus_mirrors"),
|
|
750
693
|
attenuator: ReadOnlyAttenuator = inject("attenuator"),
|
|
751
694
|
) -> MsgGenerator:
|
|
752
|
-
#
|
|
753
|
-
yield from
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
Parameters for I24 serial collection: \n
|
|
760
|
-
Chip name is {parameters.filename}
|
|
761
|
-
visit = {parameters.visit}
|
|
762
|
-
sub_dir = {parameters.directory}
|
|
763
|
-
n_exposures = {parameters.num_exposures}
|
|
764
|
-
chip_type = {str(parameters.chip.chip_type)}
|
|
765
|
-
map_type = {str(parameters.map_type)}
|
|
766
|
-
dcdetdist = {parameters.detector_distance_mm}
|
|
767
|
-
exptime = {parameters.exposure_time_s}
|
|
768
|
-
det_type = {parameters.detector_name}
|
|
769
|
-
pump_repeat = {str(parameters.pump_repeat)}
|
|
770
|
-
pumpexptime = {parameters.laser_dwell_s}
|
|
771
|
-
pumpdelay = {parameters.laser_delay_s}
|
|
772
|
-
prepumpexptime = {parameters.pre_pump_exposure_s}
|
|
773
|
-
"""
|
|
774
|
-
SSX_LOGGER.info(log_msg)
|
|
695
|
+
# Read the parameters
|
|
696
|
+
parameters: FixedTargetParameters = yield from read_parameters(
|
|
697
|
+
detector_stage, attenuator
|
|
698
|
+
)
|
|
699
|
+
|
|
700
|
+
if parameters.chip_map:
|
|
701
|
+
upload_chip_map_to_geobrick(pmac, parameters.chip_map)
|
|
775
702
|
|
|
776
703
|
beam_center_device = sup.get_beam_center_device(parameters.detector_name)
|
|
777
704
|
|
|
@@ -21,17 +21,24 @@ from dodal.devices.i24.dual_backlight import BacklightPositions, DualBacklight
|
|
|
21
21
|
from dodal.devices.i24.i24_detector_motion import DetectorMotion
|
|
22
22
|
from dodal.devices.i24.pmac import PMAC, EncReset, LaserSettings
|
|
23
23
|
|
|
24
|
-
from mx_bluesky.beamlines.i24.serial.fixed_target.ft_utils import
|
|
24
|
+
from mx_bluesky.beamlines.i24.serial.fixed_target.ft_utils import (
|
|
25
|
+
ChipType,
|
|
26
|
+
Fiducials,
|
|
27
|
+
MappingType,
|
|
28
|
+
)
|
|
25
29
|
from mx_bluesky.beamlines.i24.serial.log import (
|
|
26
30
|
SSX_LOGGER,
|
|
27
31
|
_read_visit_directory_from_file,
|
|
28
32
|
log_on_entry,
|
|
29
33
|
)
|
|
30
|
-
from mx_bluesky.beamlines.i24.serial.parameters import
|
|
34
|
+
from mx_bluesky.beamlines.i24.serial.parameters import (
|
|
35
|
+
FixedTargetParameters,
|
|
36
|
+
get_chip_format,
|
|
37
|
+
get_chip_map,
|
|
38
|
+
)
|
|
31
39
|
from mx_bluesky.beamlines.i24.serial.parameters.constants import (
|
|
32
40
|
CS_FILES_PATH,
|
|
33
41
|
LITEMAP_PATH,
|
|
34
|
-
PARAM_FILE_NAME,
|
|
35
42
|
PARAM_FILE_PATH_FT,
|
|
36
43
|
PVAR_FILE_PATH,
|
|
37
44
|
)
|
|
@@ -47,6 +54,8 @@ CHIP_MOVES = {
|
|
|
47
54
|
ChipType.Custom: 25.40,
|
|
48
55
|
ChipType.Minichip: 25.40,
|
|
49
56
|
}
|
|
57
|
+
OXFORD_CHIP_WIDTH = 8
|
|
58
|
+
PVAR_TEMPLATE = f"P3%0{2}d1"
|
|
50
59
|
CHIPTYPE_PV = pv.me14e_gp1
|
|
51
60
|
MAPTYPE_PV = pv.me14e_gp2
|
|
52
61
|
NUM_EXPOSURES_PV = pv.me14e_gp3
|
|
@@ -107,22 +116,35 @@ def initialise_stages(
|
|
|
107
116
|
|
|
108
117
|
|
|
109
118
|
@log_on_entry
|
|
110
|
-
def
|
|
119
|
+
def read_parameters(
|
|
111
120
|
detector_stage: DetectorMotion,
|
|
112
121
|
attenuator: ReadOnlyAttenuator,
|
|
113
122
|
) -> MsgGenerator:
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
param_path.mkdir(parents=True, exist_ok=True)
|
|
123
|
+
""" Read the parameters from user input and create the parameter model for a fixed \
|
|
124
|
+
target collection.
|
|
117
125
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
126
|
+
Args:
|
|
127
|
+
detector_stage (DetectorMotion): The detector stage device.
|
|
128
|
+
attenuator (ReadOnlyAttenuator): A read-only attenuator device to get the \
|
|
129
|
+
transmission value.
|
|
130
|
+
|
|
131
|
+
Returns:
|
|
132
|
+
FixedTargetParameters: Parameter model for fixed target collections
|
|
133
|
+
|
|
134
|
+
"""
|
|
135
|
+
SSX_LOGGER.info("Creating parameter model from input.")
|
|
121
136
|
|
|
122
137
|
filename = caget(pv.me14e_chip_name)
|
|
123
138
|
det_type = yield from get_detector_type(detector_stage)
|
|
124
139
|
chip_params = get_chip_format(ChipType(int(caget(CHIPTYPE_PV))))
|
|
125
140
|
map_type = int(caget(MAPTYPE_PV))
|
|
141
|
+
if map_type == MappingType.Lite and chip_params.chip_type in [
|
|
142
|
+
ChipType.Oxford,
|
|
143
|
+
ChipType.OxfordInner,
|
|
144
|
+
]:
|
|
145
|
+
chip_map = get_chip_map()
|
|
146
|
+
else:
|
|
147
|
+
chip_map = []
|
|
126
148
|
pump_repeat = int(caget(PUMP_REPEAT_PV))
|
|
127
149
|
|
|
128
150
|
# If file name ends in a digit this causes processing/pilatus pain.
|
|
@@ -153,6 +175,7 @@ def write_parameter_file(
|
|
|
153
175
|
"map_type": map_type,
|
|
154
176
|
"pump_repeat": pump_repeat,
|
|
155
177
|
"checker_pattern": bool(caget(pv.me14e_gp111)),
|
|
178
|
+
"chip_map": chip_map,
|
|
156
179
|
"laser_dwell_s": float(caget(pv.me14e_gp103)) if pump_repeat != 0 else 0.0,
|
|
157
180
|
"laser_delay_s": float(caget(pv.me14e_gp110)) if pump_repeat != 0 else 0.0,
|
|
158
181
|
"pre_pump_exposure_s": float(caget(pv.me14e_gp109))
|
|
@@ -160,13 +183,11 @@ def write_parameter_file(
|
|
|
160
183
|
else None,
|
|
161
184
|
}
|
|
162
185
|
|
|
163
|
-
|
|
164
|
-
json.dump(params_dict, f, indent=4)
|
|
165
|
-
|
|
166
|
-
SSX_LOGGER.info("Information written to file \n")
|
|
186
|
+
SSX_LOGGER.info("Parameters for I24 serial collection: \n")
|
|
167
187
|
SSX_LOGGER.info(pformat(params_dict))
|
|
168
188
|
|
|
169
189
|
yield from bps.null()
|
|
190
|
+
return FixedTargetParameters(**params_dict)
|
|
170
191
|
|
|
171
192
|
|
|
172
193
|
def scrape_pvar_file(fid: str, pvar_dir: Path = PVAR_FILE_PATH):
|
|
@@ -221,59 +242,25 @@ def define_current_chip(
|
|
|
221
242
|
|
|
222
243
|
|
|
223
244
|
@log_on_entry
|
|
224
|
-
def
|
|
225
|
-
|
|
226
|
-
litemap_path.mkdir(parents=True, exist_ok=True)
|
|
227
|
-
|
|
228
|
-
SSX_LOGGER.info(f"Saving {litemap_path.as_posix()} currentchip.map")
|
|
229
|
-
with open(litemap_path / "currentchip.map", "w") as f:
|
|
230
|
-
SSX_LOGGER.debug("Printing only blocks with block_val == 1")
|
|
231
|
-
for x in range(1, 82):
|
|
232
|
-
block_str = f"ME14E-MO-IOC-01:GP{x + 10:d}"
|
|
233
|
-
block_val = int(caget(block_str))
|
|
234
|
-
if block_val == 1:
|
|
235
|
-
SSX_LOGGER.info(f"{block_str} {block_val:d}")
|
|
236
|
-
line = f"{x:02d}status P3{x:02d}1 \t{block_val}\n"
|
|
237
|
-
f.write(line)
|
|
238
|
-
yield from bps.null()
|
|
245
|
+
def upload_chip_map_to_geobrick(pmac: PMAC, chip_map: list[int]) -> MsgGenerator:
|
|
246
|
+
"""Upload the map parameters for an Oxford-type chip (width=8) to the geobrick.
|
|
239
247
|
|
|
248
|
+
Args:
|
|
249
|
+
pmac (PMAC): The PMAC device.
|
|
250
|
+
chip_map (list[int]): A list of selected blocks to be collected.
|
|
240
251
|
|
|
241
|
-
|
|
242
|
-
def upload_parameters(pmac: PMAC = inject("pmac")) -> MsgGenerator:
|
|
252
|
+
"""
|
|
243
253
|
SSX_LOGGER.info("Uploading Parameters for Oxford Chip to the GeoBrick")
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
SSX_LOGGER.info(f"width {width}")
|
|
254
|
-
x = 1
|
|
255
|
-
for line in f.readlines()[: width**2]:
|
|
256
|
-
cols = line.split()
|
|
257
|
-
pvar = cols[1]
|
|
258
|
-
value = cols[2]
|
|
259
|
-
s = pvar + "=" + value
|
|
260
|
-
if value != "1":
|
|
261
|
-
s2 = pvar + " "
|
|
262
|
-
sys.stdout.write(s2)
|
|
263
|
-
else:
|
|
264
|
-
sys.stdout.write(s + " ")
|
|
265
|
-
sys.stdout.flush()
|
|
266
|
-
if x == width:
|
|
267
|
-
print()
|
|
268
|
-
x = 1
|
|
269
|
-
else:
|
|
270
|
-
x += 1
|
|
271
|
-
yield from bps.abs_set(pmac.pmac_string, s, wait=True)
|
|
272
|
-
sleep(0.02)
|
|
273
|
-
|
|
274
|
-
SSX_LOGGER.warning("Automatic Setting Mapping Type to Lite has been disabled")
|
|
254
|
+
SSX_LOGGER.info(f"Chipid {ChipType.Oxford}, width {OXFORD_CHIP_WIDTH}")
|
|
255
|
+
for block in range(1, 65):
|
|
256
|
+
value = 1 if block in chip_map else 0
|
|
257
|
+
pvar = PVAR_TEMPLATE % block
|
|
258
|
+
pvar_str = f"{pvar}={value}"
|
|
259
|
+
SSX_LOGGER.debug(f"Set {pvar_str} for block {block}")
|
|
260
|
+
yield from bps.abs_set(pmac.pmac_string, pvar_str, wait=True)
|
|
261
|
+
# Wait for PMAC to be done processing PVAR string
|
|
262
|
+
sleep(0.02)
|
|
275
263
|
SSX_LOGGER.debug("Upload parameters done.")
|
|
276
|
-
yield from bps.null()
|
|
277
264
|
|
|
278
265
|
|
|
279
266
|
@log_on_entry
|
|
@@ -3,28 +3,10 @@ Startup utilities for chip
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
import string
|
|
6
|
-
from pathlib import Path
|
|
7
6
|
|
|
8
7
|
from mx_bluesky.beamlines.i24.serial.fixed_target.ft_utils import ChipType
|
|
9
8
|
from mx_bluesky.beamlines.i24.serial.log import SSX_LOGGER, log_on_entry
|
|
10
|
-
from mx_bluesky.beamlines.i24.serial.parameters import
|
|
11
|
-
FixedTargetParameters,
|
|
12
|
-
get_chip_format,
|
|
13
|
-
)
|
|
14
|
-
from mx_bluesky.beamlines.i24.serial.parameters.constants import (
|
|
15
|
-
PARAM_FILE_NAME,
|
|
16
|
-
PARAM_FILE_PATH_FT,
|
|
17
|
-
)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def read_parameter_file(
|
|
21
|
-
param_path: Path | str = PARAM_FILE_PATH_FT,
|
|
22
|
-
) -> FixedTargetParameters:
|
|
23
|
-
if not isinstance(param_path, Path):
|
|
24
|
-
param_path = Path(param_path)
|
|
25
|
-
params_file = param_path / PARAM_FILE_NAME
|
|
26
|
-
params = FixedTargetParameters.from_file(params_file)
|
|
27
|
-
return params
|
|
9
|
+
from mx_bluesky.beamlines.i24.serial.parameters import get_chip_format
|
|
28
10
|
|
|
29
11
|
|
|
30
12
|
@log_on_entry
|
|
@@ -6,7 +6,10 @@ from mx_bluesky.beamlines.i24.serial.parameters.experiment_parameters import (
|
|
|
6
6
|
FixedTargetParameters,
|
|
7
7
|
SerialAndLaserExperiment,
|
|
8
8
|
)
|
|
9
|
-
from mx_bluesky.beamlines.i24.serial.parameters.utils import
|
|
9
|
+
from mx_bluesky.beamlines.i24.serial.parameters.utils import (
|
|
10
|
+
get_chip_format,
|
|
11
|
+
get_chip_map,
|
|
12
|
+
)
|
|
10
13
|
|
|
11
14
|
__all__ = [
|
|
12
15
|
"SSXType",
|
|
@@ -16,4 +19,5 @@ __all__ = [
|
|
|
16
19
|
"FixedTargetParameters",
|
|
17
20
|
"SerialAndLaserExperiment",
|
|
18
21
|
"get_chip_format",
|
|
22
|
+
"get_chip_map",
|
|
19
23
|
]
|
|
@@ -3,7 +3,8 @@ from abc import abstractmethod
|
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
from typing import Literal
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
import numpy as np
|
|
7
|
+
from pydantic import BaseModel, ConfigDict, computed_field, field_validator
|
|
7
8
|
|
|
8
9
|
from mx_bluesky.beamlines.i24.serial.fixed_target.ft_utils import (
|
|
9
10
|
ChipType,
|
|
@@ -56,6 +57,11 @@ class SerialAndLaserExperiment(SerialExperiment, LaserExperiment):
|
|
|
56
57
|
def nexgen_experiment_type(self) -> str:
|
|
57
58
|
pass
|
|
58
59
|
|
|
60
|
+
@property
|
|
61
|
+
@abstractmethod
|
|
62
|
+
def ispyb_experiment_type(self) -> SSXType:
|
|
63
|
+
pass
|
|
64
|
+
|
|
59
65
|
|
|
60
66
|
class ExtruderParameters(SerialAndLaserExperiment):
|
|
61
67
|
"""Extruder parameter model."""
|
|
@@ -103,6 +109,10 @@ class ChipDescription(BaseModel):
|
|
|
103
109
|
else:
|
|
104
110
|
return ((self.y_num_steps - 1) * self.y_step_size) + self.b2b_vert
|
|
105
111
|
|
|
112
|
+
@property
|
|
113
|
+
def tot_num_blocks(self) -> int:
|
|
114
|
+
return self.x_blocks * self.y_blocks
|
|
115
|
+
|
|
106
116
|
|
|
107
117
|
class FixedTargetParameters(SerialAndLaserExperiment):
|
|
108
118
|
"""Fixed target parameter model."""
|
|
@@ -112,7 +122,7 @@ class FixedTargetParameters(SerialAndLaserExperiment):
|
|
|
112
122
|
map_type: MappingType
|
|
113
123
|
pump_repeat: PumpProbeSetting
|
|
114
124
|
checker_pattern: bool = False
|
|
115
|
-
|
|
125
|
+
chip_map: list[int]
|
|
116
126
|
|
|
117
127
|
@property
|
|
118
128
|
def nexgen_experiment_type(self) -> str:
|
|
@@ -122,6 +132,28 @@ class FixedTargetParameters(SerialAndLaserExperiment):
|
|
|
122
132
|
def ispyb_experiment_type(self) -> SSXType:
|
|
123
133
|
return SSXType.FIXED
|
|
124
134
|
|
|
135
|
+
@computed_field # type: ignore # Mypy doesn't like it
|
|
136
|
+
@property
|
|
137
|
+
def total_num_images(self) -> int:
|
|
138
|
+
match self.map_type:
|
|
139
|
+
case MappingType.NoMap:
|
|
140
|
+
if self.chip.chip_type is ChipType.Custom:
|
|
141
|
+
num_images = (
|
|
142
|
+
self.chip.x_num_steps
|
|
143
|
+
* self.chip.y_num_steps
|
|
144
|
+
* self.num_exposures
|
|
145
|
+
)
|
|
146
|
+
else:
|
|
147
|
+
chip_format = self.chip.chip_format[:4]
|
|
148
|
+
num_images = int(np.prod(chip_format) * self.num_exposures)
|
|
149
|
+
case MappingType.Lite:
|
|
150
|
+
chip_format = self.chip.chip_format[2:4]
|
|
151
|
+
block_count = len(self.chip_map) # type: ignore
|
|
152
|
+
num_images = int(
|
|
153
|
+
np.prod(chip_format) * block_count * self.num_exposures
|
|
154
|
+
)
|
|
155
|
+
return num_images
|
|
156
|
+
|
|
125
157
|
|
|
126
158
|
class BeamSettings(BaseModel):
|
|
127
159
|
model_config = ConfigDict(frozen=True)
|
|
@@ -6,6 +6,12 @@ from mx_bluesky.beamlines.i24.serial.parameters.experiment_parameters import (
|
|
|
6
6
|
)
|
|
7
7
|
from mx_bluesky.beamlines.i24.serial.setup_beamline import caget, pv
|
|
8
8
|
|
|
9
|
+
OXFORD_BLOCKS_PVS = [f"ME14E-MO-IOC-01:GP{i}" for i in range(11, 75)]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class EmptyMapError(Exception):
|
|
13
|
+
pass
|
|
14
|
+
|
|
9
15
|
|
|
10
16
|
def get_chip_format(chip_type: ChipType) -> ChipDescription:
|
|
11
17
|
"""Default parameter values."""
|
|
@@ -40,3 +46,16 @@ def get_chip_format(chip_type: ChipType) -> ChipDescription:
|
|
|
40
46
|
defaults["b2b_horz"] = defaults["b2b_vert"] = 0.0
|
|
41
47
|
chip_params: dict[str, Any] = {"chip_type": chip_type, **defaults}
|
|
42
48
|
return ChipDescription(**chip_params)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def get_chip_map() -> list[int]:
|
|
52
|
+
"""Return a list of blocks (the 'chip map') to be collected on an Oxford type chip \
|
|
53
|
+
when using lite mapping."""
|
|
54
|
+
chipmap = []
|
|
55
|
+
for n, block_pv in enumerate(OXFORD_BLOCKS_PVS):
|
|
56
|
+
block_val = int(caget(block_pv))
|
|
57
|
+
if block_val == 1:
|
|
58
|
+
chipmap.append(n + 1)
|
|
59
|
+
if len(chipmap) == 0:
|
|
60
|
+
raise EmptyMapError("No blocks selected for Lite map.")
|
|
61
|
+
return chipmap
|
|
@@ -45,11 +45,8 @@ def call_nexgen(
|
|
|
45
45
|
parameters.map_type == MappingType.NoMap
|
|
46
46
|
or parameters.chip.chip_type == ChipType.Custom
|
|
47
47
|
):
|
|
48
|
-
#
|
|
49
|
-
|
|
50
|
-
current_chip_map = (
|
|
51
|
-
"/dls_sw/i24/scripts/fastchips/litemaps/currentchip.map"
|
|
52
|
-
)
|
|
48
|
+
# For nexgen >= 0.9.10
|
|
49
|
+
current_chip_map = parameters.chip_map
|
|
53
50
|
pump_status = bool(parameters.pump_repeat)
|
|
54
51
|
total_numb_imgs = parameters.total_num_images
|
|
55
52
|
case ExtruderParameters():
|
|
@@ -103,12 +103,12 @@ class MxBlueskyParameters(BaseModel):
|
|
|
103
103
|
|
|
104
104
|
@field_validator("parameter_model_version")
|
|
105
105
|
@classmethod
|
|
106
|
-
def _validate_version(cls, version:
|
|
106
|
+
def _validate_version(cls, version: SemanticVersion):
|
|
107
107
|
assert (
|
|
108
|
-
version >=
|
|
108
|
+
version >= SemanticVersion(major=PARAMETER_VERSION.major)
|
|
109
109
|
), f"Parameter version too old! This version of hyperion uses {PARAMETER_VERSION}"
|
|
110
110
|
assert (
|
|
111
|
-
version <=
|
|
111
|
+
version <= SemanticVersion(major=PARAMETER_VERSION.major + 1)
|
|
112
112
|
), f"Parameter version too new! This version of hyperion uses {PARAMETER_VERSION}"
|
|
113
113
|
return version
|
|
114
114
|
|
|
@@ -78,11 +78,11 @@ def move_x_y_z(
|
|
|
78
78
|
axes are optional."""
|
|
79
79
|
|
|
80
80
|
LOGGER.info(f"Moving smargon to x, y, z: {(x_mm, y_mm, z_mm)}")
|
|
81
|
-
if x_mm:
|
|
81
|
+
if x_mm is not None:
|
|
82
82
|
yield from bps.abs_set(smargon.x, x_mm, group=group)
|
|
83
|
-
if y_mm:
|
|
83
|
+
if y_mm is not None:
|
|
84
84
|
yield from bps.abs_set(smargon.y, y_mm, group=group)
|
|
85
|
-
if z_mm:
|
|
85
|
+
if z_mm is not None:
|
|
86
86
|
yield from bps.abs_set(smargon.z, z_mm, group=group)
|
|
87
87
|
if wait:
|
|
88
88
|
yield from bps.wait(group)
|
|
@@ -100,11 +100,11 @@ def move_phi_chi_omega(
|
|
|
100
100
|
axes are optional."""
|
|
101
101
|
|
|
102
102
|
LOGGER.info(f"Moving smargon to phi, chi, omega: {(phi, chi, omega)}")
|
|
103
|
-
if phi:
|
|
103
|
+
if phi is not None:
|
|
104
104
|
yield from bps.abs_set(smargon.phi, phi, group=group)
|
|
105
|
-
if chi:
|
|
105
|
+
if chi is not None:
|
|
106
106
|
yield from bps.abs_set(smargon.chi, chi, group=group)
|
|
107
|
-
if omega:
|
|
107
|
+
if omega is not None:
|
|
108
108
|
yield from bps.abs_set(smargon.omega, omega, group=group)
|
|
109
109
|
if wait:
|
|
110
110
|
yield from bps.wait(group)
|
|
@@ -79,6 +79,8 @@ from mx_bluesky.hyperion.parameters.constants import CONST
|
|
|
79
79
|
from mx_bluesky.hyperion.parameters.gridscan import HyperionThreeDGridScan
|
|
80
80
|
from mx_bluesky.hyperion.utils.context import device_composite_from_context
|
|
81
81
|
|
|
82
|
+
ZOCALO_MIN_TOTAL_COUNT_THRESHOLD = 3
|
|
83
|
+
|
|
82
84
|
|
|
83
85
|
class SmargonSpeedException(Exception):
|
|
84
86
|
pass
|
|
@@ -247,10 +249,20 @@ def run_gridscan_and_fetch_results(
|
|
|
247
249
|
LOGGER.info("Zocalo triggered and read, interpreting results.")
|
|
248
250
|
xrc_results = yield from get_full_processing_results(fgs_composite.zocalo)
|
|
249
251
|
LOGGER.info(f"Got xray centres, top 5: {xrc_results[:5]}")
|
|
250
|
-
|
|
252
|
+
filtered_results = [
|
|
253
|
+
result
|
|
254
|
+
for result in xrc_results
|
|
255
|
+
if result["total_count"] >= ZOCALO_MIN_TOTAL_COUNT_THRESHOLD
|
|
256
|
+
]
|
|
257
|
+
discarded_count = len(xrc_results) - len(filtered_results)
|
|
258
|
+
if discarded_count > 0:
|
|
259
|
+
LOGGER.info(
|
|
260
|
+
f"Removed {discarded_count} results because below threshold"
|
|
261
|
+
)
|
|
262
|
+
if filtered_results:
|
|
251
263
|
flyscan_results = [
|
|
252
264
|
_xrc_result_in_boxes_to_result_in_mm(xr, parameters)
|
|
253
|
-
for xr in
|
|
265
|
+
for xr in filtered_results
|
|
254
266
|
]
|
|
255
267
|
else:
|
|
256
268
|
LOGGER.warning("No X-ray centre received")
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
from math import isclose
|
|
3
4
|
from typing import cast
|
|
4
5
|
|
|
5
6
|
import bluesky.preprocessors as bpp
|
|
6
7
|
import pydantic
|
|
7
8
|
from blueapi.core import BlueskyContext
|
|
9
|
+
from bluesky import plan_stubs as bps
|
|
8
10
|
from bluesky.utils import MsgGenerator
|
|
9
11
|
from dodal.devices.aperturescatterguard import ApertureScatterguard
|
|
10
12
|
from dodal.devices.attenuator import Attenuator
|
|
@@ -174,7 +176,11 @@ def robot_load_then_xray_centre(
|
|
|
174
176
|
yield from pin_already_loaded(composite.robot, sample_location)
|
|
175
177
|
)
|
|
176
178
|
|
|
177
|
-
|
|
179
|
+
current_chi = yield from bps.rd(composite.smargon.chi)
|
|
180
|
+
LOGGER.info(f"Read back current smargon chi of {current_chi} degrees.")
|
|
181
|
+
doing_chi_change = parameters.chi_start_deg is not None and not isclose(
|
|
182
|
+
current_chi, parameters.chi_start_deg, abs_tol=0.001
|
|
183
|
+
)
|
|
178
184
|
|
|
179
185
|
if doing_sample_load:
|
|
180
186
|
LOGGER.info("Pin not loaded, loading and centring")
|
|
@@ -9,7 +9,7 @@ import bluesky.preprocessors as bpp
|
|
|
9
9
|
from bluesky.run_engine import RunEngine
|
|
10
10
|
from dodal.beamlines import i03
|
|
11
11
|
from dodal.devices.oav.oav_parameters import OAVConfig
|
|
12
|
-
from ophyd_async.
|
|
12
|
+
from ophyd_async.testing import set_mock_value
|
|
13
13
|
|
|
14
14
|
from mx_bluesky.hyperion.device_setup_plans.read_hardware_for_setup import (
|
|
15
15
|
read_hardware_during_collection,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mx-bluesky
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.2
|
|
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
|
|
@@ -239,7 +239,7 @@ Requires-Dist: daq-config-server>=0.1.1
|
|
|
239
239
|
Requires-Dist: ophyd==1.9.0
|
|
240
240
|
Requires-Dist: ophyd-async>=0.8a5
|
|
241
241
|
Requires-Dist: bluesky>=1.13.0a4
|
|
242
|
-
Requires-Dist: dls-dodal==1.36.
|
|
242
|
+
Requires-Dist: dls-dodal==1.36.3
|
|
243
243
|
Provides-Extra: dev
|
|
244
244
|
Requires-Dist: black; extra == "dev"
|
|
245
245
|
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=
|
|
3
|
+
mx_bluesky/_version.py,sha256=tX44urJsC0QN5SJ51xsM0HeojA_8Xx7NXFEGAkYlNE4,411
|
|
4
4
|
mx_bluesky/jupyter_example.ipynb,sha256=wpwvPrBvwtRMS5AIFk8F54cIlUoD0o4ji8tKK5cZHA4,1672
|
|
5
5
|
mx_bluesky/beamlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
mx_bluesky/beamlines/i04/__init__.py,sha256=jZjAMN5_oOEjQoR3iTrnMFW3ElxlHhQ7pEQZIv21Y4I,129
|
|
@@ -8,7 +8,7 @@ mx_bluesky/beamlines/i04/redis_to_murko_forwarder.py,sha256=10PKvDRKaaTtlOCfRG8T
|
|
|
8
8
|
mx_bluesky/beamlines/i04/thawing_plan.py,sha256=YykXHXINBDnQ0wJ577v4XrXwcqlRRgoUSbaNuOKd1bc,5464
|
|
9
9
|
mx_bluesky/beamlines/i04/callbacks/murko_callback.py,sha256=ZIwkY6gdcmIE-aMBvehN8DVcjGRtb9wwzpgHJNMZ39Q,2125
|
|
10
10
|
mx_bluesky/beamlines/i24/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
-
mx_bluesky/beamlines/i24/serial/__init__.py,sha256=
|
|
11
|
+
mx_bluesky/beamlines/i24/serial/__init__.py,sha256=gSP8Vu9PMDeIgzge48XS3bOdmvb_a9k8RQP98BNcdZg,1080
|
|
12
12
|
mx_bluesky/beamlines/i24/serial/blueapi_config.yaml,sha256=gwOfjzZMbcvpVH71CCyHaxr8hgPYCJIWWWfg1zErtmM,245
|
|
13
13
|
mx_bluesky/beamlines/i24/serial/dcid.py,sha256=iaReE06DJZSkxtdPqeHgRxN-JG7rW55ihKZzH9RWFHA,14525
|
|
14
14
|
mx_bluesky/beamlines/i24/serial/log.py,sha256=oK7HHjIeuiWdy1vNZL6p-mU8Y3kzeCAgsifCxhAYqOQ,4799
|
|
@@ -18,23 +18,23 @@ mx_bluesky/beamlines/i24/serial/run_serial.py,sha256=Zrudosavh2HnnBXd2CLtOPs3lyQ
|
|
|
18
18
|
mx_bluesky/beamlines/i24/serial/run_ssx.sh,sha256=0Ir5iQQ-xSN_5teHtxzht6G-mJ08mE1gxBS32vkh1eM,714
|
|
19
19
|
mx_bluesky/beamlines/i24/serial/set_visit_directory.sh,sha256=WuN5PUBxTofzuESk1-3gWtTcbPjOx-26JaQSVCsZhZs,1660
|
|
20
20
|
mx_bluesky/beamlines/i24/serial/start_blueapi.sh,sha256=4iBzQljTLXQiVIF4UO7drc9qUkP7KSRC6Mjh8hcGxpI,608
|
|
21
|
-
mx_bluesky/beamlines/i24/serial/write_nexus.py,sha256=
|
|
21
|
+
mx_bluesky/beamlines/i24/serial/write_nexus.py,sha256=wb9tQwiWL5BH_XgLH-S9TS5_M2WYMasZzyOiiwjG5z8,3950
|
|
22
22
|
mx_bluesky/beamlines/i24/serial/extruder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
|
-
mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py,sha256=
|
|
23
|
+
mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py,sha256=ovtS6oKdy--TKwUsK1ogSrFEtUQHNGoUox4bIYlFu1g,18352
|
|
24
24
|
mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl,sha256=9L1CgEdxZD4N3QvM5HLlAlJTcxpzd4ahB2nVJ9jHujw,2013
|
|
25
25
|
mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl,sha256=JaS-PvAHEOqHRuH3LbdpOk2T-TlO8Enq_uwzokQXzZU,31349
|
|
26
26
|
mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl,sha256=K79vmGAcf9qVEQLXTgr0g4bZDWaJ7nFoK4e0Ex7qAwM,14690
|
|
27
27
|
mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
28
|
mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py,sha256=puO1vg0x-TPgv8FbEFg73ohJqbwDpcG50_2cLUTa2FA,1210
|
|
29
|
-
mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py,sha256=
|
|
30
|
-
mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py,sha256=
|
|
31
|
-
mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py,sha256=
|
|
29
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py,sha256=N-AhNW3NGXJNAGLeNxalnU6_N2XBuz7copUsWByOrL8,25783
|
|
30
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py,sha256=WjTY49wgpuIGypM1-rQCp4KooUFO9A3NszdZMnMnQNQ,33185
|
|
31
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py,sha256=Vokr_Gl_lpqcUwG18C2h8TYMmyTx1HmUSDd9zgR9-7M,3275
|
|
32
32
|
mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py,sha256=qciUnif6yd5KwJ8_XvRgafHJOFnzJIMg5Bwfjp0VOzw,6418
|
|
33
33
|
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl,sha256=H9BVU1S3oy8tAVHtKvJvp7YTHA-4X-jtOtiu3jJ7of4,10348
|
|
34
34
|
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl,sha256=WBji5SaRQ5e0KFRgrPuv6IgaFxkal1jh7MZW8SqQN88,2016
|
|
35
35
|
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl,sha256=-O_kRA5-m741Mja8OXQlGJWrRu9uBUkTvJ_uqUBjuFY,56616
|
|
36
36
|
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl,sha256=cpKpXfU668mGjIz35jUMTF8KAi0RI7WlVO2AR-EnJ8U,60868
|
|
37
|
-
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl,sha256=
|
|
37
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl,sha256=LI6Z5J1ugny0hX3NrfKx0CC3QdfnohokxYwcyPW-6XU,38124
|
|
38
38
|
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl,sha256=2KUy2iEcX9AC07zSH3Sp97b5qauGIm8_HjvoQ4pkyCU,1417
|
|
39
39
|
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl,sha256=o2PDoIFzeErIUijDbGdfWdrh3wd5GFAqEsDD2at2a4k,1601
|
|
40
40
|
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl,sha256=8TWQTIBnX3OLa1kjsibsCnG5wCVotPYIOHwFam7rJe4,14679
|
|
@@ -42,10 +42,10 @@ mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl,sha256=IgL
|
|
|
42
42
|
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl,sha256=CrCo1nSIzT3OcSy4OXq1vu4lz5OvI4U8-yl-ruQ57m4,22665
|
|
43
43
|
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short1-laser.png,sha256=wDNuKCa_8hUPy4W01vdIrfdZtCyQKT8qVS5AS6kOTmo,9740
|
|
44
44
|
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short2-laser.png,sha256=MrdiCFX7j-ODkfSdzc4NQ_8hj2Gs8i9gQqWyNXvdM5s,10189
|
|
45
|
-
mx_bluesky/beamlines/i24/serial/parameters/__init__.py,sha256=
|
|
45
|
+
mx_bluesky/beamlines/i24/serial/parameters/__init__.py,sha256=NrTN0M-3PWZesh7GqcEr-UM-a2C8wLkhgtbVwJM48z4,581
|
|
46
46
|
mx_bluesky/beamlines/i24/serial/parameters/constants.py,sha256=HhAtuc6-Bd3RRwxxbMyijP6rKgWiRB-605mLPZAca7U,1552
|
|
47
|
-
mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py,sha256=
|
|
48
|
-
mx_bluesky/beamlines/i24/serial/parameters/utils.py,sha256=
|
|
47
|
+
mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py,sha256=769v9zdv_02pWlEPK2iZUkBYSk1KZYJlXenI4D5gXmA,4513
|
|
48
|
+
mx_bluesky/beamlines/i24/serial/parameters/utils.py,sha256=VcCEBjC8WSrf85Q20A6dwnsy4IxvjcB4JSlbYKz_CVM,2673
|
|
49
49
|
mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json,sha256=xT3y7SSWjVTAJ58dzwNnEgBdn10A6T8umR18n5xt508,142
|
|
50
50
|
mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt,sha256=oIPpcQpqCrKz5dPZ-qQ5gQ2Sdqtj6nsnf66pN8PGU50,199
|
|
51
51
|
mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar,sha256=SN4deU199dMcA1Bcx1BF6CBMvoSszxJWZC6vt7_5fHc,284
|
|
@@ -60,7 +60,7 @@ mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py,sha256=_nTQv
|
|
|
60
60
|
mx_bluesky/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
61
|
mx_bluesky/common/device_setup_plans/read_hardware_for_setup.py,sha256=P018shGBEdO0QWBufwITOk3p-sPUCy4P6UIkf6aUuho,583
|
|
62
62
|
mx_bluesky/common/external_interaction/config_server.py,sha256=7CwHr03idK5vAB_9acDgGPe6_1bX3bIelecnmsjC7V0,1937
|
|
63
|
-
mx_bluesky/common/parameters/components.py,sha256=
|
|
63
|
+
mx_bluesky/common/parameters/components.py,sha256=00ZLzXvDri1q8pAXjMSmCOqLiLlLdrHio7agnvj_DgQ,7240
|
|
64
64
|
mx_bluesky/common/parameters/constants.py,sha256=SmkLsh2yq-x9rHiWkBKCCrzqCtD8n8Z6u0OXz8svwuo,4023
|
|
65
65
|
mx_bluesky/common/parameters/gridscan.py,sha256=AWGf_Wwx09i7I6DZty5nfzd8U-eUI2PUjlCb5BhM_WI,3232
|
|
66
66
|
mx_bluesky/common/parameters/robot_load.py,sha256=HWkMxCyD6R3qWuBU1jk-Zel2XGotvgAusMpTsVxYUe0,453
|
|
@@ -74,7 +74,7 @@ mx_bluesky/hyperion/exceptions.py,sha256=p6v49xg2O5hud0QiCf0rwWD4OvVb8lJaT5UpLj3
|
|
|
74
74
|
mx_bluesky/hyperion/log.py,sha256=DkTW9lH-v_F4Tda5D3OhiSYQe-6Nhma2tqHbnr1mPno,416
|
|
75
75
|
mx_bluesky/hyperion/device_setup_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
76
|
mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py,sha256=oKv72jSX67OpahzCIPAXpX_a3lUplOh7LFexvYBd-uc,4565
|
|
77
|
-
mx_bluesky/hyperion/device_setup_plans/manipulate_sample.py,sha256=
|
|
77
|
+
mx_bluesky/hyperion/device_setup_plans/manipulate_sample.py,sha256=K4LRVxZ6O2A84iwLElX-gLK-v83wlvy8JCECT2978Jg,3289
|
|
78
78
|
mx_bluesky/hyperion/device_setup_plans/position_detector.py,sha256=g2gJZFqOF2klH92uKQAMoyXRSD7ehloe9wToIVfV-CM,631
|
|
79
79
|
mx_bluesky/hyperion/device_setup_plans/read_hardware_for_setup.py,sha256=-bf3lRpvIQVsmT3-jRjb5jqaHDD3F3LSENmJVItixhA,2186
|
|
80
80
|
mx_bluesky/hyperion/device_setup_plans/setup_oav.py,sha256=pIXLM3FKpf7wYMEiEAOaGTm504XAt5N7nuuu9kKraBk,2914
|
|
@@ -86,7 +86,7 @@ mx_bluesky/hyperion/device_setup_plans/xbpm_feedback.py,sha256=3WfVaNjB6f6XGLiPl
|
|
|
86
86
|
mx_bluesky/hyperion/experiment_plans/__init__.py,sha256=3ldTMxgz4yKHJH9iF3nw7uueyX2zQ5Z84V0dsCzW5us,1081
|
|
87
87
|
mx_bluesky/hyperion/experiment_plans/change_aperture_then_move_plan.py,sha256=4if5QruC2Q-rd8iInV9oiq0BjzjQW8IzBhXRcjxcAfg,3258
|
|
88
88
|
mx_bluesky/hyperion/experiment_plans/experiment_registry.py,sha256=uZaxI-Tib0caZpydXooWULyMzx1vGiyWk0_rcvprevs,3059
|
|
89
|
-
mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py,sha256=
|
|
89
|
+
mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py,sha256=iU1LRFgfpdvzghcer0lh7wmTZRk14lSwFubXzmTE-lw,19115
|
|
90
90
|
mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py,sha256=3yBIoWGlzw3R3MYL7OzpakuzCuDQ-XkIxay1asK9Nsc,8155
|
|
91
91
|
mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py,sha256=Vnxj7V8Poql-CHA5pJmpaqBRwzUL05za0ZAtZ4ut9Dw,4404
|
|
92
92
|
mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py,sha256=UYFEPzW4QzpiyspMa9GnSjmrQ4qLSb0HllyPJ78ApvI,7642
|
|
@@ -95,7 +95,7 @@ mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py,sha256=ORE60Oy
|
|
|
95
95
|
mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py,sha256=LR365Xmc8bO-6Sz2ApQIbfaAGvMQLnMQxByXAP9s-kA,5014
|
|
96
96
|
mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py,sha256=16psmBqV4Mz6QOHhiZqUBSvSIufyLu0Pda8UOX-5Djw,6166
|
|
97
97
|
mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py,sha256=NA0-S23jyLP2lQ3T1DPttKNtdTIlpuTcDSFNxhwZn1k,8524
|
|
98
|
-
mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py,sha256=
|
|
98
|
+
mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py,sha256=Sb_VJHpxkI3Kp1u6jWtBjcuzr_QQ-44hFlz1-GNMKqQ,7713
|
|
99
99
|
mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py,sha256=hJaUCQts0JZK6scLb4TNGwBsUGQUlnMrOZ-RTWwC-74,16260
|
|
100
100
|
mx_bluesky/hyperion/experiment_plans/set_energy_plan.py,sha256=LgOTk7D2RKImejRMW4yG2KQNnr86tTh4RYaCrDFXXL8,1823
|
|
101
101
|
mx_bluesky/hyperion/experiment_plans/common/xrc_result.py,sha256=VwNbY9bzXoFUo-VYiQNscmF7l_6TFv1iRCYshHdla7w,1435
|
|
@@ -144,10 +144,10 @@ mx_bluesky/hyperion/parameters/rotation.py,sha256=eO5TAbH3jx0pj1AYMOA4jVf9z_qMui
|
|
|
144
144
|
mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml,sha256=xrhgok-9X2VXdyLEWiYOUEeRCBqhYM6IJFAefnNdgzw,26521
|
|
145
145
|
mx_bluesky/hyperion/utils/context.py,sha256=TYG3e4lu88ssngoNbsR5pfEXI0DveDemLWaBuThtvbI,2710
|
|
146
146
|
mx_bluesky/hyperion/utils/utils.py,sha256=q2uCaK1E8zLVk1BFmj7qlTnQf3JRKjCjyadIVnL1-4M,1180
|
|
147
|
-
mx_bluesky/hyperion/utils/validation.py,sha256=
|
|
148
|
-
mx_bluesky-1.4.
|
|
149
|
-
mx_bluesky-1.4.
|
|
150
|
-
mx_bluesky-1.4.
|
|
151
|
-
mx_bluesky-1.4.
|
|
152
|
-
mx_bluesky-1.4.
|
|
153
|
-
mx_bluesky-1.4.
|
|
147
|
+
mx_bluesky/hyperion/utils/validation.py,sha256=jHaJJcP50vOGkccMCwDaRa7lmInI6Qkebj-fig5pUio,6486
|
|
148
|
+
mx_bluesky-1.4.2.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
149
|
+
mx_bluesky-1.4.2.dist-info/METADATA,sha256=8vYpt8eeKbpKaR-BvPWZr20ZW-YkGCJtDSw02XQXxrI,17272
|
|
150
|
+
mx_bluesky-1.4.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
|
151
|
+
mx_bluesky-1.4.2.dist-info/entry_points.txt,sha256=Bt3iHCqzZtHYnnSKoh_qM2k3K4LbK1Uxr0gF8B34F98,528
|
|
152
|
+
mx_bluesky-1.4.2.dist-info/top_level.txt,sha256=S4rrzXIUef58ulf_04wn01XGZ3xeJjXs4LPEJ_xoF-I,11
|
|
153
|
+
mx_bluesky-1.4.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|