mx-bluesky 0.3.1__py3-none-any.whl → 1.2.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.
- mx_bluesky/_version.py +2 -2
- mx_bluesky/beamlines/i04/__init__.py +3 -0
- mx_bluesky/{i04 → beamlines/i04}/thawing_plan.py +5 -4
- mx_bluesky/{i24 → beamlines/i24}/serial/blueapi_config.yaml +1 -1
- mx_bluesky/{i24 → beamlines/i24}/serial/dcid.py +2 -2
- mx_bluesky/{i24 → beamlines/i24}/serial/extruder/EX-gui-edm/DetStage.edl +3 -3
- mx_bluesky/{i24 → beamlines/i24}/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +7 -7
- mx_bluesky/{i24 → beamlines/i24}/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +12 -9
- mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +3 -3
- mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/DetStage.edl +3 -3
- mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +245 -200
- mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +4 -4
- mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +8 -8
- mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py +0 -0
- mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +80 -70
- mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +20 -21
- mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/i24ssx_Chip_Mapping_py3v1.py +5 -5
- mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +7 -4
- mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/i24ssx_moveonclick.py +59 -39
- mx_bluesky/{i24 → beamlines/i24}/serial/log.py +1 -9
- mx_bluesky/beamlines/i24/serial/parameters/__init__.py +15 -0
- mx_bluesky/{i24 → beamlines/i24}/serial/parameters/constants.py +1 -1
- mx_bluesky/{i24 → beamlines/i24}/serial/parameters/experiment_parameters.py +4 -25
- mx_bluesky/{i24 → beamlines/i24}/serial/parameters/utils.py +5 -3
- mx_bluesky/{i24 → beamlines/i24}/serial/run_serial.py +1 -1
- mx_bluesky/{i24 → beamlines/i24}/serial/setup_beamline/pv_abstract.py +1 -1
- mx_bluesky/{i24 → beamlines/i24}/serial/setup_beamline/setup_beamline.py +2 -2
- mx_bluesky/{i24 → beamlines/i24}/serial/setup_beamline/setup_detector.py +5 -5
- mx_bluesky/{i24 → beamlines/i24}/serial/write_nexus.py +6 -3
- mx_bluesky/hyperion/__init__.py +1 -0
- mx_bluesky/hyperion/__main__.py +374 -0
- mx_bluesky/hyperion/device_setup_plans/__init__.py +0 -0
- mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py +134 -0
- mx_bluesky/hyperion/device_setup_plans/manipulate_sample.py +110 -0
- mx_bluesky/hyperion/device_setup_plans/position_detector.py +16 -0
- mx_bluesky/hyperion/device_setup_plans/read_hardware_for_setup.py +60 -0
- mx_bluesky/hyperion/device_setup_plans/setup_oav.py +87 -0
- mx_bluesky/hyperion/device_setup_plans/setup_panda.py +210 -0
- mx_bluesky/hyperion/device_setup_plans/setup_zebra.py +214 -0
- mx_bluesky/hyperion/device_setup_plans/smargon.py +25 -0
- mx_bluesky/hyperion/device_setup_plans/utils.py +55 -0
- mx_bluesky/hyperion/device_setup_plans/xbpm_feedback.py +93 -0
- mx_bluesky/hyperion/exceptions.py +47 -0
- mx_bluesky/hyperion/experiment_plans/__init__.py +30 -0
- mx_bluesky/hyperion/experiment_plans/experiment_registry.py +93 -0
- mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +537 -0
- mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py +209 -0
- mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py +46 -0
- mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py +173 -0
- mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py +81 -0
- mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py +463 -0
- mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py +119 -0
- mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py +164 -0
- mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py +237 -0
- mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py +162 -0
- mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +436 -0
- mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +60 -0
- mx_bluesky/hyperion/external_interaction/__init__.py +9 -0
- mx_bluesky/hyperion/external_interaction/callbacks/__init__.py +10 -0
- mx_bluesky/hyperion/external_interaction/callbacks/__main__.py +148 -0
- mx_bluesky/hyperion/external_interaction/callbacks/aperture_change_callback.py +22 -0
- mx_bluesky/hyperion/external_interaction/callbacks/common/__init__.py +0 -0
- mx_bluesky/hyperion/external_interaction/callbacks/common/callback_util.py +64 -0
- mx_bluesky/hyperion/external_interaction/callbacks/common/ispyb_mapping.py +62 -0
- mx_bluesky/hyperion/external_interaction/callbacks/grid_detection_callback.py +88 -0
- mx_bluesky/hyperion/external_interaction/callbacks/ispyb_callback_base.py +203 -0
- mx_bluesky/hyperion/external_interaction/callbacks/log_uid_tag_callback.py +20 -0
- mx_bluesky/hyperion/external_interaction/callbacks/logging_callback.py +29 -0
- mx_bluesky/hyperion/external_interaction/callbacks/plan_reactive_callback.py +101 -0
- mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py +86 -0
- mx_bluesky/hyperion/external_interaction/callbacks/rotation/__init__.py +0 -0
- mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py +174 -0
- mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py +17 -0
- mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py +102 -0
- mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/__init__.py +0 -0
- mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/ispyb_callback.py +269 -0
- mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/ispyb_mapping.py +53 -0
- mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/nexus_callback.py +95 -0
- mx_bluesky/hyperion/external_interaction/callbacks/zocalo_callback.py +92 -0
- mx_bluesky/hyperion/external_interaction/config_server.py +35 -0
- mx_bluesky/hyperion/external_interaction/exceptions.py +13 -0
- mx_bluesky/hyperion/external_interaction/ispyb/__init__.py +0 -0
- mx_bluesky/hyperion/external_interaction/ispyb/data_model.py +95 -0
- mx_bluesky/hyperion/external_interaction/ispyb/exp_eye_store.py +125 -0
- mx_bluesky/hyperion/external_interaction/ispyb/ispyb_store.py +276 -0
- mx_bluesky/hyperion/external_interaction/ispyb/ispyb_utils.py +27 -0
- mx_bluesky/hyperion/external_interaction/nexus/__init__.py +0 -0
- mx_bluesky/hyperion/external_interaction/nexus/nexus_utils.py +148 -0
- mx_bluesky/hyperion/external_interaction/nexus/write_nexus.py +114 -0
- mx_bluesky/hyperion/log.py +99 -0
- mx_bluesky/hyperion/parameters/__init__.py +2 -0
- mx_bluesky/hyperion/parameters/cli.py +68 -0
- mx_bluesky/{parameters → hyperion/parameters}/components.py +80 -26
- mx_bluesky/hyperion/parameters/constants.py +158 -0
- mx_bluesky/hyperion/parameters/gridscan.py +221 -0
- mx_bluesky/hyperion/parameters/load_centre_collect.py +50 -0
- mx_bluesky/hyperion/parameters/robot_load.py +16 -0
- mx_bluesky/hyperion/parameters/rotation.py +160 -0
- mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml +964 -0
- mx_bluesky/hyperion/tracing.py +28 -0
- mx_bluesky/hyperion/utils/context.py +84 -0
- mx_bluesky/hyperion/utils/utils.py +25 -0
- mx_bluesky/hyperion/utils/validation.py +196 -0
- mx_bluesky/jupyter_example.ipynb +3 -2
- {mx_bluesky-0.3.1.dist-info → mx_bluesky-1.2.0.dist-info}/METADATA +26 -11
- mx_bluesky-1.2.0.dist-info/RECORD +140 -0
- {mx_bluesky-0.3.1.dist-info → mx_bluesky-1.2.0.dist-info}/WHEEL +1 -1
- mx_bluesky-1.2.0.dist-info/entry_points.txt +8 -0
- mx_bluesky/i04/__init__.py +0 -3
- mx_bluesky/i24/serial/parameters/__init__.py +0 -15
- mx_bluesky/parameters/__init__.py +0 -31
- mx_bluesky-0.3.1.dist-info/RECORD +0 -67
- mx_bluesky-0.3.1.dist-info/entry_points.txt +0 -4
- /mx_bluesky/{i24 → beamlines}/__init__.py +0 -0
- /mx_bluesky/{i04 → beamlines/i04}/callbacks/murko_callback.py +0 -0
- /mx_bluesky/{i24/serial/extruder → beamlines/i24}/__init__.py +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/__init__.py +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -0
- /mx_bluesky/{i24/serial/fixed_target → beamlines/i24/serial/extruder}/__init__.py +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/short1-laser.png +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/short2-laser.png +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/fixed_target/ft_utils.py +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/parameters/fixed_target/cs/cs_maker.json +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/parameters/fixed_target/cs/motor_direction.txt +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/run_extruder.sh +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/run_fixed_target.sh +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/run_ssx.sh +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/set_visit_directory.sh +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/setup_beamline/__init__.py +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/setup_beamline/ca.py +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/setup_beamline/pv.py +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/setup_beamline/setup_zebra_plans.py +0 -0
- /mx_bluesky/{i24 → beamlines/i24}/serial/start_blueapi.sh +0 -0
- {mx_bluesky-0.3.1.dist-info → mx_bluesky-1.2.0.dist-info}/LICENSE +0 -0
- {mx_bluesky-0.3.1.dist-info → mx_bluesky-1.2.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from opentelemetry import metrics, trace
|
|
2
|
+
from opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter
|
|
3
|
+
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
|
|
4
|
+
from opentelemetry.sdk.metrics import MeterProvider
|
|
5
|
+
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
|
|
6
|
+
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
|
|
7
|
+
from opentelemetry.sdk.trace import TracerProvider
|
|
8
|
+
from opentelemetry.sdk.trace.export import BatchSpanProcessor
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def setup_tracing():
|
|
12
|
+
resource = Resource(attributes={SERVICE_NAME: "Hyperion"})
|
|
13
|
+
|
|
14
|
+
traceProvider = TracerProvider(resource=resource)
|
|
15
|
+
processor = BatchSpanProcessor(
|
|
16
|
+
OTLPSpanExporter(endpoint="http://0.0.0.0:4318/v1/traces")
|
|
17
|
+
)
|
|
18
|
+
traceProvider.add_span_processor(processor)
|
|
19
|
+
trace.set_tracer_provider(traceProvider)
|
|
20
|
+
|
|
21
|
+
reader = PeriodicExportingMetricReader(
|
|
22
|
+
OTLPMetricExporter(endpoint="http://0.0.0.0:4318/v1/metrics")
|
|
23
|
+
)
|
|
24
|
+
meterProvider = MeterProvider(resource=resource, metric_readers=[reader])
|
|
25
|
+
metrics.set_meter_provider(meterProvider)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
TRACER = trace.get_tracer(__name__)
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import dataclasses
|
|
2
|
+
from typing import Any, ClassVar, Protocol, TypeVar, get_type_hints
|
|
3
|
+
|
|
4
|
+
from blueapi.core import BlueskyContext
|
|
5
|
+
from blueapi.core.bluesky_types import Device
|
|
6
|
+
from dodal.utils import get_beamline_based_on_environment_variable
|
|
7
|
+
|
|
8
|
+
import mx_bluesky.hyperion.experiment_plans as hyperion_plans
|
|
9
|
+
from mx_bluesky.hyperion.log import LOGGER
|
|
10
|
+
|
|
11
|
+
T = TypeVar("T", bound=Device)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class _IsDataclass(Protocol):
|
|
15
|
+
"""Protocol followed by any dataclass"""
|
|
16
|
+
|
|
17
|
+
__dataclass_fields__: ClassVar[dict]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
DT = TypeVar("DT", bound=_IsDataclass)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def find_device_in_context(
|
|
24
|
+
context: BlueskyContext,
|
|
25
|
+
name: str,
|
|
26
|
+
# Typing in here is wrong (see https://github.com/microsoft/pyright/issues/7228#issuecomment-1934500232)
|
|
27
|
+
# but this whole thing will go away when we do https://github.com/DiamondLightSource/hyperion/issues/868
|
|
28
|
+
expected_type: type[T] = Device, # type: ignore
|
|
29
|
+
) -> T:
|
|
30
|
+
LOGGER.debug(f"Looking for device {name} of type {expected_type} in context")
|
|
31
|
+
|
|
32
|
+
device = context.find_device(name)
|
|
33
|
+
if device is None:
|
|
34
|
+
raise ValueError(
|
|
35
|
+
f"Cannot find device named '{name}' in bluesky context {context.devices}."
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
if not isinstance(device, expected_type):
|
|
39
|
+
raise ValueError(
|
|
40
|
+
f"Found device named '{name}' and expected it to be a '{expected_type}' but it was a '{device.__class__.__name__}'"
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
LOGGER.debug(f"Found matching device {device}")
|
|
44
|
+
return device
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def device_composite_from_context(context: BlueskyContext, dc: type[DT]) -> DT:
|
|
48
|
+
"""
|
|
49
|
+
Initializes all of the devices referenced in a given dataclass from a provided
|
|
50
|
+
context, checking that the types of devices returned by the context are compatible
|
|
51
|
+
with the type annotations of the dataclass.
|
|
52
|
+
|
|
53
|
+
Note that if the context was not created with `wait_for_connection=True` devices may
|
|
54
|
+
still be unconnected.
|
|
55
|
+
"""
|
|
56
|
+
LOGGER.debug(
|
|
57
|
+
f"Attempting to initialize devices referenced in dataclass {dc} from blueapi context"
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
devices: dict[str, Any] = {}
|
|
61
|
+
dc_type_hints: dict[str, Any] = get_type_hints(dc)
|
|
62
|
+
|
|
63
|
+
for field in dataclasses.fields(dc):
|
|
64
|
+
device = find_device_in_context(
|
|
65
|
+
context, field.name, expected_type=dc_type_hints.get(field.name, Device)
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
devices[field.name] = device
|
|
69
|
+
|
|
70
|
+
return dc(**devices)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def setup_context(wait_for_connection: bool = True) -> BlueskyContext:
|
|
74
|
+
context = BlueskyContext()
|
|
75
|
+
context.with_plan_module(hyperion_plans)
|
|
76
|
+
|
|
77
|
+
context.with_dodal_module(
|
|
78
|
+
get_beamline_based_on_environment_variable(),
|
|
79
|
+
wait_for_connection=wait_for_connection,
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
LOGGER.info(f"Plans found in context: {context.plan_functions.keys()}")
|
|
83
|
+
|
|
84
|
+
return context
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from scanspec.core import AxesPoints, Axis
|
|
2
|
+
from scipy.constants import physical_constants
|
|
3
|
+
|
|
4
|
+
hc_in_eV_and_Angstrom: float = (
|
|
5
|
+
physical_constants["speed of light in vacuum"][0]
|
|
6
|
+
* physical_constants["Planck constant in eV/Hz"][0]
|
|
7
|
+
* 1e10 # Angstroms per metre
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def interconvert_eV_Angstrom(wavelength_or_energy: float) -> float:
|
|
12
|
+
return hc_in_eV_and_Angstrom / wavelength_or_energy
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def convert_eV_to_angstrom(hv: float) -> float:
|
|
16
|
+
return interconvert_eV_Angstrom(hv)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def convert_angstrom_to_eV(wavelength: float) -> float:
|
|
20
|
+
return interconvert_eV_Angstrom(wavelength)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def number_of_frames_from_scan_spec(scan_points: AxesPoints[Axis]):
|
|
24
|
+
ax = list(scan_points.keys())[0]
|
|
25
|
+
return len(scan_points[ax])
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import gzip
|
|
2
|
+
import json
|
|
3
|
+
import os
|
|
4
|
+
import shutil
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from unittest.mock import patch
|
|
7
|
+
|
|
8
|
+
import bluesky.preprocessors as bpp
|
|
9
|
+
from bluesky.run_engine import RunEngine
|
|
10
|
+
from dodal.beamlines import i03
|
|
11
|
+
from dodal.devices.oav.oav_parameters import OAVConfigParams
|
|
12
|
+
from ophyd_async.core import set_mock_value
|
|
13
|
+
|
|
14
|
+
from mx_bluesky.hyperion.device_setup_plans.read_hardware_for_setup import (
|
|
15
|
+
read_hardware_during_collection,
|
|
16
|
+
)
|
|
17
|
+
from mx_bluesky.hyperion.experiment_plans.rotation_scan_plan import (
|
|
18
|
+
RotationScanComposite,
|
|
19
|
+
)
|
|
20
|
+
from mx_bluesky.hyperion.external_interaction.callbacks.rotation.nexus_callback import (
|
|
21
|
+
RotationNexusFileCallback,
|
|
22
|
+
)
|
|
23
|
+
from mx_bluesky.hyperion.parameters.constants import CONST
|
|
24
|
+
from mx_bluesky.hyperion.parameters.rotation import RotationScan
|
|
25
|
+
|
|
26
|
+
DISPLAY_CONFIGURATION = "tests/devices/unit_tests/test_display.configuration"
|
|
27
|
+
ZOOM_LEVELS_XML = "tests/devices/unit_tests/test_jCameraManZoomLevels.xml"
|
|
28
|
+
TEST_DATA_DIRECTORY = Path("tests/test_data/nexus_files/rotation")
|
|
29
|
+
TEST_METAFILE = "ins_8_5_meta.h5.gz"
|
|
30
|
+
FAKE_DATAFILE = "../fake_data.h5"
|
|
31
|
+
FILENAME_STUB = "test_rotation_nexus"
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def test_params(filename_stub, dir):
|
|
35
|
+
def get_params(filename):
|
|
36
|
+
with open(filename) as f:
|
|
37
|
+
return json.loads(f.read())
|
|
38
|
+
|
|
39
|
+
params = RotationScan(
|
|
40
|
+
**get_params(
|
|
41
|
+
"tests/test_data/parameter_json_files/good_test_rotation_scan_parameters.json"
|
|
42
|
+
)
|
|
43
|
+
)
|
|
44
|
+
params.file_name = filename_stub
|
|
45
|
+
params.scan_width_deg = 360
|
|
46
|
+
params.demand_energy_ev = 12700
|
|
47
|
+
params.storage_directory = str(dir)
|
|
48
|
+
params.x_start_um = 0
|
|
49
|
+
params.y_start_um = 0
|
|
50
|
+
params.z_start_um = 0
|
|
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
|
+
@bpp.subs_decorator(subscription)
|
|
61
|
+
@bpp.set_run_key_decorator("rotation_scan_with_cleanup_and_subs")
|
|
62
|
+
@bpp.run_decorator( # attach experiment metadata to the start document
|
|
63
|
+
md={
|
|
64
|
+
"subplan_name": CONST.PLAN.ROTATION_OUTER,
|
|
65
|
+
"hyperion_parameters": parameters.model_dump_json(),
|
|
66
|
+
"activate_callbacks": "RotationNexusFileCallback",
|
|
67
|
+
}
|
|
68
|
+
)
|
|
69
|
+
def plan():
|
|
70
|
+
yield from read_hardware_during_collection(
|
|
71
|
+
rotation_devices.aperture_scatterguard,
|
|
72
|
+
rotation_devices.attenuator,
|
|
73
|
+
rotation_devices.flux,
|
|
74
|
+
rotation_devices.dcm,
|
|
75
|
+
rotation_devices.eiger,
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
return plan()
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def fake_create_rotation_devices():
|
|
82
|
+
eiger = i03.eiger(fake_with_ophyd_sim=True)
|
|
83
|
+
smargon = i03.smargon(fake_with_ophyd_sim=True)
|
|
84
|
+
zebra = i03.zebra(fake_with_ophyd_sim=True)
|
|
85
|
+
detector_motion = i03.detector_motion(fake_with_ophyd_sim=True)
|
|
86
|
+
backlight = i03.backlight(fake_with_ophyd_sim=True)
|
|
87
|
+
attenuator = i03.attenuator(fake_with_ophyd_sim=True)
|
|
88
|
+
flux = i03.flux(fake_with_ophyd_sim=True)
|
|
89
|
+
undulator = i03.undulator(fake_with_ophyd_sim=True)
|
|
90
|
+
aperture_scatterguard = i03.aperture_scatterguard(fake_with_ophyd_sim=True)
|
|
91
|
+
synchrotron = i03.synchrotron(fake_with_ophyd_sim=True)
|
|
92
|
+
s4_slit_gaps = i03.s4_slit_gaps(fake_with_ophyd_sim=True)
|
|
93
|
+
dcm = i03.dcm(fake_with_ophyd_sim=True)
|
|
94
|
+
robot = i03.robot(fake_with_ophyd_sim=True)
|
|
95
|
+
oav = i03.oav(
|
|
96
|
+
fake_with_ophyd_sim=True,
|
|
97
|
+
params=OAVConfigParams(
|
|
98
|
+
zoom_params_file=ZOOM_LEVELS_XML, display_config=DISPLAY_CONFIGURATION
|
|
99
|
+
),
|
|
100
|
+
)
|
|
101
|
+
xbpm_feedback = i03.xbpm_feedback(fake_with_ophyd_sim=True)
|
|
102
|
+
|
|
103
|
+
set_mock_value(smargon.omega.max_velocity, 131)
|
|
104
|
+
set_mock_value(dcm.energy_in_kev.user_readback, 12700)
|
|
105
|
+
oav.zoom_controller.fvst.sim_put("1.0x") # type: ignore
|
|
106
|
+
|
|
107
|
+
return RotationScanComposite(
|
|
108
|
+
attenuator=attenuator,
|
|
109
|
+
backlight=backlight,
|
|
110
|
+
dcm=dcm,
|
|
111
|
+
detector_motion=detector_motion,
|
|
112
|
+
eiger=eiger,
|
|
113
|
+
flux=flux,
|
|
114
|
+
smargon=smargon,
|
|
115
|
+
undulator=undulator,
|
|
116
|
+
aperture_scatterguard=aperture_scatterguard,
|
|
117
|
+
synchrotron=synchrotron,
|
|
118
|
+
s4_slit_gaps=s4_slit_gaps,
|
|
119
|
+
zebra=zebra,
|
|
120
|
+
robot=robot,
|
|
121
|
+
oav=oav,
|
|
122
|
+
sample_shutter=i03.sample_shutter(fake_with_ophyd_sim=True),
|
|
123
|
+
xbpm_feedback=xbpm_feedback,
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def sim_rotation_scan_to_create_nexus(
|
|
128
|
+
test_params: RotationScan,
|
|
129
|
+
fake_create_rotation_devices: RotationScanComposite,
|
|
130
|
+
filename_stub,
|
|
131
|
+
RE,
|
|
132
|
+
):
|
|
133
|
+
run_number = test_params.detector_params.run_number
|
|
134
|
+
nexus_filename = f"{filename_stub}_{run_number}.nxs"
|
|
135
|
+
|
|
136
|
+
fake_create_rotation_devices.eiger.bit_depth.sim_put(32) # type: ignore
|
|
137
|
+
|
|
138
|
+
with patch(
|
|
139
|
+
"mx_bluesky.hyperion.external_interaction.nexus.write_nexus.get_start_and_predicted_end_time",
|
|
140
|
+
return_value=("test_time", "test_time"),
|
|
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()
|
mx_bluesky/jupyter_example.ipynb
CHANGED
|
@@ -41,9 +41,10 @@
|
|
|
41
41
|
"metadata": {},
|
|
42
42
|
"outputs": [],
|
|
43
43
|
"source": [
|
|
44
|
-
"from ophyd.sim import det, motor\n",
|
|
45
44
|
"from bluesky.plans import scan\n",
|
|
46
|
-
"
|
|
45
|
+
"from ophyd.sim import det, motor\n",
|
|
46
|
+
"\n",
|
|
47
|
+
"dets = [det] # just one in this case, but it could be more than one\n",
|
|
47
48
|
"\n",
|
|
48
49
|
"RE(scan(dets, motor, -1, 1, 10))"
|
|
49
50
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mx-bluesky
|
|
3
|
-
Version:
|
|
3
|
+
Version: 1.2.0
|
|
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
|
|
@@ -208,29 +208,42 @@ License: Apache License
|
|
|
208
208
|
Project-URL: GitHub, https://github.com/DiamondLightSource/mx-bluesky
|
|
209
209
|
Classifier: Development Status :: 3 - Alpha
|
|
210
210
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
211
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
212
211
|
Classifier: Programming Language :: Python :: 3.11
|
|
213
212
|
Classifier: Programming Language :: Python :: 3.12
|
|
214
|
-
Requires-Python: >=3.
|
|
213
|
+
Requires-Python: >=3.11
|
|
215
214
|
Description-Content-Type: text/x-rst
|
|
216
215
|
License-File: LICENSE
|
|
217
|
-
Requires-Dist:
|
|
218
|
-
Requires-Dist: ophyd
|
|
219
|
-
Requires-Dist: pyepics
|
|
216
|
+
Requires-Dist: annotated-types
|
|
220
217
|
Requires-Dist: caproto
|
|
218
|
+
Requires-Dist: fastapi[all]
|
|
219
|
+
Requires-Dist: flask-restful
|
|
220
|
+
Requires-Dist: ispyb
|
|
221
221
|
Requires-Dist: jupyterlab
|
|
222
222
|
Requires-Dist: matplotlib
|
|
223
|
-
Requires-Dist:
|
|
223
|
+
Requires-Dist: nexgen
|
|
224
|
+
Requires-Dist: numpy
|
|
224
225
|
Requires-Dist: opencv-python
|
|
226
|
+
Requires-Dist: opentelemetry-distro
|
|
227
|
+
Requires-Dist: opentelemetry-exporter-otlp
|
|
225
228
|
Requires-Dist: pydantic
|
|
229
|
+
Requires-Dist: pyepics
|
|
230
|
+
Requires-Dist: pyzmq
|
|
231
|
+
Requires-Dist: requests
|
|
232
|
+
Requires-Dist: scanspec
|
|
233
|
+
Requires-Dist: scipy
|
|
226
234
|
Requires-Dist: semver
|
|
227
|
-
Requires-Dist:
|
|
228
|
-
Requires-Dist:
|
|
229
|
-
Requires-Dist:
|
|
235
|
+
Requires-Dist: blueapi >=0.5.0
|
|
236
|
+
Requires-Dist: daq-config-server >=0.1.1
|
|
237
|
+
Requires-Dist: ophyd ==1.9.0
|
|
238
|
+
Requires-Dist: ophyd-async >=0.3a5
|
|
239
|
+
Requires-Dist: bluesky >=1.13.0a4
|
|
240
|
+
Requires-Dist: dls-dodal ==1.33.0
|
|
230
241
|
Provides-Extra: dev
|
|
231
242
|
Requires-Dist: black ; extra == 'dev'
|
|
232
|
-
Requires-Dist:
|
|
243
|
+
Requires-Dist: build ; extra == 'dev'
|
|
244
|
+
Requires-Dist: diff-cover ; extra == 'dev'
|
|
233
245
|
Requires-Dist: GitPython ; extra == 'dev'
|
|
246
|
+
Requires-Dist: ipython ; extra == 'dev'
|
|
234
247
|
Requires-Dist: mypy ; extra == 'dev'
|
|
235
248
|
Requires-Dist: myst-parser ; extra == 'dev'
|
|
236
249
|
Requires-Dist: pipdeptree ; extra == 'dev'
|
|
@@ -244,8 +257,10 @@ Requires-Dist: pytest ; extra == 'dev'
|
|
|
244
257
|
Requires-Dist: ruff ; extra == 'dev'
|
|
245
258
|
Requires-Dist: sphinx-autobuild ; extra == 'dev'
|
|
246
259
|
Requires-Dist: sphinx-copybutton ; extra == 'dev'
|
|
260
|
+
Requires-Dist: sphinxcontrib-plantuml ; extra == 'dev'
|
|
247
261
|
Requires-Dist: sphinx-design ; extra == 'dev'
|
|
248
262
|
Requires-Dist: tox-direct ; extra == 'dev'
|
|
263
|
+
Requires-Dist: tox ; extra == 'dev'
|
|
249
264
|
Requires-Dist: types-mock ; extra == 'dev'
|
|
250
265
|
Requires-Dist: types-requests ; extra == 'dev'
|
|
251
266
|
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
mx_bluesky/__init__.py,sha256=twUymKa_5teVCbYPgxRDu87WyQhJa8nMRb8HLTCFJZ8,115
|
|
2
|
+
mx_bluesky/__main__.py,sha256=bmFrxcsN8zGadkDLRnE3qV3-iXJcEWVPp5GNx2rsTJ0,383
|
|
3
|
+
mx_bluesky/_version.py,sha256=zMnMemknXglcJs59xkicNzeEJTVgYd1omSfLWj76yWw,411
|
|
4
|
+
mx_bluesky/example.py,sha256=_zBoGrKAI1ReOvBz51F9PDorKWQufrb0_ydmoqJ2UAA,478
|
|
5
|
+
mx_bluesky/jupyter_example.ipynb,sha256=wpwvPrBvwtRMS5AIFk8F54cIlUoD0o4ji8tKK5cZHA4,1672
|
|
6
|
+
mx_bluesky/beamlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
mx_bluesky/beamlines/i04/__init__.py,sha256=jZjAMN5_oOEjQoR3iTrnMFW3ElxlHhQ7pEQZIv21Y4I,129
|
|
8
|
+
mx_bluesky/beamlines/i04/thawing_plan.py,sha256=hOYC8Hd3o5ZzFBD2Qwo6AIud4ev_RsWpJjTx63zIwY4,3517
|
|
9
|
+
mx_bluesky/beamlines/i04/callbacks/murko_callback.py,sha256=tq7dWDoTonuJZCTfrq6dBs7eOgCql88lnMOwRQCCP_o,1701
|
|
10
|
+
mx_bluesky/beamlines/i24/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
+
mx_bluesky/beamlines/i24/serial/__init__.py,sha256=Jfc9eLVRgPIai_Sob8E4yn35-PTKYajZX7PmQUeDNwM,1096
|
|
12
|
+
mx_bluesky/beamlines/i24/serial/blueapi_config.yaml,sha256=gwOfjzZMbcvpVH71CCyHaxr8hgPYCJIWWWfg1zErtmM,245
|
|
13
|
+
mx_bluesky/beamlines/i24/serial/dcid.py,sha256=Yv9SkRf1any4WVG6zI3jUxjgzQdBOKdV3XkdKZl8hto,15172
|
|
14
|
+
mx_bluesky/beamlines/i24/serial/log.py,sha256=dsyu062WhFmHgr4rnjICT7P-6-IspjsySkH5jXt9svw,4331
|
|
15
|
+
mx_bluesky/beamlines/i24/serial/run_extruder.sh,sha256=Rujzmh3J6VZ7ZiupK5MVWJsCp0a4Z9Oh3eR64-v1F1Y,436
|
|
16
|
+
mx_bluesky/beamlines/i24/serial/run_fixed_target.sh,sha256=BMpmLWbBpWNOFC5lYhEUw06DJIoq8KeIOJQDZuT_qVo,585
|
|
17
|
+
mx_bluesky/beamlines/i24/serial/run_serial.py,sha256=0hIDSy60G4DQuokX9f4RgxWtGVCpRLJc5zU1Fj1m0-Q,940
|
|
18
|
+
mx_bluesky/beamlines/i24/serial/run_ssx.sh,sha256=0Ir5iQQ-xSN_5teHtxzht6G-mJ08mE1gxBS32vkh1eM,714
|
|
19
|
+
mx_bluesky/beamlines/i24/serial/set_visit_directory.sh,sha256=WuN5PUBxTofzuESk1-3gWtTcbPjOx-26JaQSVCsZhZs,1660
|
|
20
|
+
mx_bluesky/beamlines/i24/serial/start_blueapi.sh,sha256=4iBzQljTLXQiVIF4UO7drc9qUkP7KSRC6Mjh8hcGxpI,608
|
|
21
|
+
mx_bluesky/beamlines/i24/serial/write_nexus.py,sha256=qRLGfrerYnlLUdyDxAso5VPI1PlFUh9gSw0bRcp8GiQ,4050
|
|
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=ePfyCvr0-8xD0X8K_I1mhQFVb4t9HYYTFd4PxJaqHvo,17900
|
|
24
|
+
mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DetStage.edl,sha256=9L1CgEdxZD4N3QvM5HLlAlJTcxpzd4ahB2nVJ9jHujw,2013
|
|
25
|
+
mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl,sha256=k7b_91X5VQEmlHI2DrOmuNXTTMLcvlyJICo6F19h61I,31289
|
|
26
|
+
mx_bluesky/beamlines/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl,sha256=K79vmGAcf9qVEQLXTgr0g4bZDWaJ7nFoK4e0Ex7qAwM,14690
|
|
27
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/ft_utils.py,sha256=cLZBEN-PK_7V6T5mjaHv53xa3rvKBStD4g-GUqCjkOM,1223
|
|
29
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py,sha256=m1OU17bBw8hn4QBgSZ6lZu4qqShsP4abEfhK3SBN-l8,28600
|
|
30
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py,sha256=WgT-ffr98JjSHPLCZu_JgYkIsc3TvAk7KEQXDvOJ5_E,35311
|
|
31
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Mapping_py3v1.py,sha256=eTspHh6cB8cgT5eYyAC_27r4UJ9xgXk1x67KtnEQ81A,5252
|
|
32
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py,sha256=lTJ9h7vqJA9NjrE73To2IsSVVXrS1ghyeCVvOrhUQzM,10843
|
|
33
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_moveonclick.py,sha256=H9BfhEu3fhiI0P5lwKu9Zt83Lo6KpCXl38jQimu58TU,6298
|
|
34
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl,sha256=H9BVU1S3oy8tAVHtKvJvp7YTHA-4X-jtOtiu3jJ7of4,10348
|
|
35
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DetStage.edl,sha256=WBji5SaRQ5e0KFRgrPuv6IgaFxkal1jh7MZW8SqQN88,2016
|
|
36
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl,sha256=yT91wdAQ7sJsoniEc5yGKEiHSFQOGtf2oXjbMS3IavE,56602
|
|
37
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl,sha256=cpKpXfU668mGjIz35jUMTF8KAi0RI7WlVO2AR-EnJ8U,60868
|
|
38
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl,sha256=CPMPU-imtWeKERXydJn30svgx-s2u6SuuamsFRsstyM,38860
|
|
39
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl,sha256=2KUy2iEcX9AC07zSH3Sp97b5qauGIm8_HjvoQ4pkyCU,1417
|
|
40
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl,sha256=o2PDoIFzeErIUijDbGdfWdrh3wd5GFAqEsDD2at2a4k,1601
|
|
41
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl,sha256=8TWQTIBnX3OLa1kjsibsCnG5wCVotPYIOHwFam7rJe4,14679
|
|
42
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl,sha256=IgLLF7gcNoG8Z4t9FTA7_4ggUccNm6-ekK5bb0V4ekY,15711
|
|
43
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl,sha256=CrCo1nSIzT3OcSy4OXq1vu4lz5OvI4U8-yl-ruQ57m4,22665
|
|
44
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short1-laser.png,sha256=wDNuKCa_8hUPy4W01vdIrfdZtCyQKT8qVS5AS6kOTmo,9740
|
|
45
|
+
mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short2-laser.png,sha256=MrdiCFX7j-ODkfSdzc4NQ_8hj2Gs8i9gQqWyNXvdM5s,10189
|
|
46
|
+
mx_bluesky/beamlines/i24/serial/parameters/__init__.py,sha256=oyY7qXs1dDTzE2DNiPdZIzMoDWfghujygEWCQa7YozA,434
|
|
47
|
+
mx_bluesky/beamlines/i24/serial/parameters/constants.py,sha256=w20hRzHoUGeJJ3hECtALEheEz60rt-Ffi4boiYkhu50,1494
|
|
48
|
+
mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py,sha256=UO5t7Pmx-yyXiQSWKmb8mQPbrZ70RCLbHcPRqtdDMaU,2771
|
|
49
|
+
mx_bluesky/beamlines/i24/serial/parameters/utils.py,sha256=IR1ulMWW0PEoF-kddqXtFVm8MoA7oB_MbS0XO7a-k4w,2118
|
|
50
|
+
mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json,sha256=n8FxMtq3iFsbG3IIrFmgQWDdnG_BsFXZ_P40Z7wIuE4,142
|
|
51
|
+
mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/motor_direction.txt,sha256=oIPpcQpqCrKz5dPZ-qQ5gQ2Sdqtj6nsnf66pN8PGU50,199
|
|
52
|
+
mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar,sha256=SN4deU199dMcA1Bcx1BF6CBMvoSszxJWZC6vt7_5fHc,284
|
|
53
|
+
mx_bluesky/beamlines/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar,sha256=pZbFOEiN_S5yiTEtqdNHmTMtnQY-W2ImXVBYCovPCx0,1842
|
|
54
|
+
mx_bluesky/beamlines/i24/serial/setup_beamline/__init__.py,sha256=UhBdMcPdJMzwV0d8DKOBzvYNd6TDSwcP9GJVqfGa7Jc,261
|
|
55
|
+
mx_bluesky/beamlines/i24/serial/setup_beamline/ca.py,sha256=HdU4OUAT2du7cPfIssMjUNvIe9jQQChvCwnkiTw1_aA,1590
|
|
56
|
+
mx_bluesky/beamlines/i24/serial/setup_beamline/pv.py,sha256=Wen5tTUBggb5Gf4f2yar5Rkn0GbkLRpKu6rbbFb6qPM,15566
|
|
57
|
+
mx_bluesky/beamlines/i24/serial/setup_beamline/pv_abstract.py,sha256=WbD5ghgTG0F3-MR0XYm4nkiKYswVP5a2COYx_k_cngE,1806
|
|
58
|
+
mx_bluesky/beamlines/i24/serial/setup_beamline/setup_beamline.py,sha256=MqMaoDU_O8Zny9Lq1WUn1-EEEZx0nQKVwHaOHMTdW2I,18352
|
|
59
|
+
mx_bluesky/beamlines/i24/serial/setup_beamline/setup_detector.py,sha256=odNDKReW01GZ2C_yxPzkhUjZEl45jeRxzcfDlSZnZ4g,3365
|
|
60
|
+
mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py,sha256=dzkml6AbJovQr4znygV4yg2wrUffNQcRpgAQqGx0siY,17019
|
|
61
|
+
mx_bluesky/hyperion/__init__.py,sha256=f4E8wInL1Ll4eeFtAiyKmipOBTPlUtKmVK-m_LOQG4M,35
|
|
62
|
+
mx_bluesky/hyperion/__main__.py,sha256=UwvVJlDTb42CZIh1HjlOlSV26OYr0Op9zQGGIW8iO2s,13600
|
|
63
|
+
mx_bluesky/hyperion/exceptions.py,sha256=RUKfRG8V4TZY6dQFg1tISbUOG0p3cG-LUJdWkc32_5s,1298
|
|
64
|
+
mx_bluesky/hyperion/log.py,sha256=WClOd2edCk3kxisMcQgFQucDc1K04UYcCiBVf3jfhqs,2909
|
|
65
|
+
mx_bluesky/hyperion/tracing.py,sha256=rmHtH74WKUxn_Y73YIo7ogDgKakUTwvLtuasq1ocf2c,1139
|
|
66
|
+
mx_bluesky/hyperion/device_setup_plans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
|
+
mx_bluesky/hyperion/device_setup_plans/dcm_pitch_roll_mirror_adjuster.py,sha256=sO11UoCkUDd1pN6kSBl4ydE4eXnBnIyF516ir898Pig,4639
|
|
68
|
+
mx_bluesky/hyperion/device_setup_plans/manipulate_sample.py,sha256=vJdlTs9LILfkifqNcn15sQgG4_OJbK30v70YzJq0B8c,3217
|
|
69
|
+
mx_bluesky/hyperion/device_setup_plans/position_detector.py,sha256=g2gJZFqOF2klH92uKQAMoyXRSD7ehloe9wToIVfV-CM,631
|
|
70
|
+
mx_bluesky/hyperion/device_setup_plans/read_hardware_for_setup.py,sha256=Syn1fmk90tGcC_ekhQUUwQVvTxAnIUlc97X9arFIpNQ,2115
|
|
71
|
+
mx_bluesky/hyperion/device_setup_plans/setup_oav.py,sha256=LkhhcAyiNiTpeHCzW7vbz86PpnaoKGbcqym5ne4kcoc,2856
|
|
72
|
+
mx_bluesky/hyperion/device_setup_plans/setup_panda.py,sha256=ZnH2hTMR-Q35D0Gu00cwr-aobIRrfRxoQKW3A0j3fk4,7783
|
|
73
|
+
mx_bluesky/hyperion/device_setup_plans/setup_zebra.py,sha256=rzzxU1d3ahe5tIk0h2TULvabKlY57OhrtO4mM8oKyuc,8049
|
|
74
|
+
mx_bluesky/hyperion/device_setup_plans/smargon.py,sha256=sSqrURldwwqPvbS-y7y-9Y1LM6Rq3AO0JgA9cHCPais,788
|
|
75
|
+
mx_bluesky/hyperion/device_setup_plans/utils.py,sha256=5xuz4SFYfAA14pvYycvw3zQiwUq2_gscn3LiTdKRz8M,1813
|
|
76
|
+
mx_bluesky/hyperion/device_setup_plans/xbpm_feedback.py,sha256=tx9Sl3LMw4r9ls8J8TGf6COz__ISgLjJaEpInzlmnP8,3679
|
|
77
|
+
mx_bluesky/hyperion/experiment_plans/__init__.py,sha256=Tq9XXh8-N4obZMizxi5H1laV-toJQ9olu4K05gMFo8E,936
|
|
78
|
+
mx_bluesky/hyperion/experiment_plans/experiment_registry.py,sha256=n7A0yK4ftpwB0GoNop4ZM1jcFvdqEQuq6qLabzprLKo,2995
|
|
79
|
+
mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py,sha256=mGxz_6rMR3_z9hihP-e_DDtWzMulxdJrgIU2qoWGNEc,19321
|
|
80
|
+
mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py,sha256=C03cKIQLyDAeGnI05tW6Z2kzItTIfHL_wlXqd0X8TcM,7186
|
|
81
|
+
mx_bluesky/hyperion/experiment_plans/load_centre_collect_full_plan.py,sha256=vmqqlZANQB9LAl9QgMNmGU3yB624_gMuM7pJlglPOOc,1711
|
|
82
|
+
mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py,sha256=lzkC1mZCuXW_GmGhgWeTjKGTgAP1uqNWlcEpY5_dOgc,6943
|
|
83
|
+
mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py,sha256=7OcQ3nm7m-xLdPkct41-HrrQKrs9q_U8qOy80QqhnFg,2821
|
|
84
|
+
mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py,sha256=JZJW3hOzcxFyCEmsMYWWGwA9tAgGgg85nBKxBxKXeX0,16276
|
|
85
|
+
mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py,sha256=vV9UOubh2v6clL4LHFSQhqVBGcKPaNVWqK2rDrdPcQI,4146
|
|
86
|
+
mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py,sha256=YcGGckesXe_5NhaIEd0SFOPbtTYkpDKLSi3g7_2d52o,5969
|
|
87
|
+
mx_bluesky/hyperion/experiment_plans/robot_load_and_change_energy.py,sha256=jogvdhNYIb5B2dZihPX3EgL_o3iFUYMTNumNWZNRHRI,7802
|
|
88
|
+
mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py,sha256=lIGqj_ugGUfiS-1eTbO_5Q6MRfhA5QgINbUvY9JMhjI,5422
|
|
89
|
+
mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py,sha256=iYsLw3nlIlpdccK1EeWH1S7nN1JoINvVxNRfZG52DE4,15802
|
|
90
|
+
mx_bluesky/hyperion/experiment_plans/set_energy_plan.py,sha256=sBCwDxtBb-XzWPIYeIOqjKSeeOmdLzDvDihONA_Qcwg,1729
|
|
91
|
+
mx_bluesky/hyperion/external_interaction/__init__.py,sha256=95DwXDmKsx36RgAL-AtLZl2LQoLPKbzeYdlkkP_4Coc,559
|
|
92
|
+
mx_bluesky/hyperion/external_interaction/config_server.py,sha256=hA5r4v071gkV91F9YPwTVQGLPq3iMb1pjcBEE14Uxh4,1077
|
|
93
|
+
mx_bluesky/hyperion/external_interaction/exceptions.py,sha256=XBDES13VaW9fhxRZYNvSfLC_Mvg4M4RqMseW_u18Mb8,342
|
|
94
|
+
mx_bluesky/hyperion/external_interaction/callbacks/__init__.py,sha256=njGhxi0Qf06vvDXCpVlQhFAOebf6iVAVm3CjGCjwr1g,331
|
|
95
|
+
mx_bluesky/hyperion/external_interaction/callbacks/__main__.py,sha256=Ke_3nKJXOnPu06rq3r9oULoTqgfwfbQYQgt5GDEidYE,4860
|
|
96
|
+
mx_bluesky/hyperion/external_interaction/callbacks/aperture_change_callback.py,sha256=pWd84QldTGLoxPdyqXZk6_SLhvF7O-CQRsiXqWDQEkg,837
|
|
97
|
+
mx_bluesky/hyperion/external_interaction/callbacks/grid_detection_callback.py,sha256=tWtbpdq3dcTpoVpuDIeSAf-naziky38wgMeW6S1Dh7c,2914
|
|
98
|
+
mx_bluesky/hyperion/external_interaction/callbacks/ispyb_callback_base.py,sha256=ynztJNtM-Njs_kTIFI6aM1YzcX7TK3c_7p4gge2QUCg,8875
|
|
99
|
+
mx_bluesky/hyperion/external_interaction/callbacks/log_uid_tag_callback.py,sha256=MnpHKTwBbI5_xDtm5VK1cSObrfkWBuWP0_OXnU1qQCA,622
|
|
100
|
+
mx_bluesky/hyperion/external_interaction/callbacks/logging_callback.py,sha256=W5jO7uHvi84FmEwVC_wNk93oc3-SJ8pZq61cYS-qalU,708
|
|
101
|
+
mx_bluesky/hyperion/external_interaction/callbacks/plan_reactive_callback.py,sha256=7UtkXZluAag_Mx_JnESd7ODPSN3WrcNCgN8mquIpxjE,4086
|
|
102
|
+
mx_bluesky/hyperion/external_interaction/callbacks/zocalo_callback.py,sha256=Jwf_jFLnC1lRm-WIlZ6ZozbQyw_SHtXK_5HUA5RT7Fw,3960
|
|
103
|
+
mx_bluesky/hyperion/external_interaction/callbacks/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
104
|
+
mx_bluesky/hyperion/external_interaction/callbacks/common/callback_util.py,sha256=CjB3SOITmwv9I7pokwN0pmPomDAri7fJrg7Ww2kpXPo,1981
|
|
105
|
+
mx_bluesky/hyperion/external_interaction/callbacks/common/ispyb_mapping.py,sha256=g7g_YmW3ZqFSN_uIXV-gONoMWS_mrQUdv51vJ2UOe0s,2584
|
|
106
|
+
mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py,sha256=R60oJdMwx8l0qqfRoyNrcj7Qg0fL0VU9IDm0YzR8xi0,3580
|
|
107
|
+
mx_bluesky/hyperion/external_interaction/callbacks/rotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
108
|
+
mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py,sha256=tYc5B1UN8K_69rRBhx1KjpLv_r6htRJxjG05sAIFKvg,7220
|
|
109
|
+
mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py,sha256=gXub8lt04ClC4sU_QGaBW4w3wrH8hJK7Tjy0AY4zf7g,718
|
|
110
|
+
mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py,sha256=tx7G1Q9W3bCLB1h_IaNh1FvOmsE2Oy9LJMLC8NSWgCc,4478
|
|
111
|
+
mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
112
|
+
mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/ispyb_callback.py,sha256=kyEu2SXyN6kL4fcQm3HmAO4KEdEZvBH_7cDX9gEeyqw,11294
|
|
113
|
+
mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/ispyb_mapping.py,sha256=8SiT3Yes58HJNro4CatIM1dcnyIvTBt0DNtAGbcEx7g,1818
|
|
114
|
+
mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/nexus_callback.py,sha256=FvO6OcRgQNBm8HEeM6Gc-j2a1yH3OOGUat-GTtfh-gM,4409
|
|
115
|
+
mx_bluesky/hyperion/external_interaction/ispyb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
116
|
+
mx_bluesky/hyperion/external_interaction/ispyb/data_model.py,sha256=7P2Tz3Y9k-vKSGsdk8ppvKg15z1iBGGKbw3RNv_8y-E,2632
|
|
117
|
+
mx_bluesky/hyperion/external_interaction/ispyb/exp_eye_store.py,sha256=ekMaDRkshbC72_hY0VWjaBA5b1vQgUfHoYBW22wEzNw,4487
|
|
118
|
+
mx_bluesky/hyperion/external_interaction/ispyb/ispyb_store.py,sha256=K71lAHoqMBh-ayqFdfafIwRd8AIqnyj6LR6rzk00nl8,10318
|
|
119
|
+
mx_bluesky/hyperion/external_interaction/ispyb/ispyb_utils.py,sha256=2Vl5qvGoCvbZ-lJFJSSNpTkbE4YfHAhy79jP7Oap6gg,720
|
|
120
|
+
mx_bluesky/hyperion/external_interaction/nexus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
121
|
+
mx_bluesky/hyperion/external_interaction/nexus/nexus_utils.py,sha256=dVeKUc92TQcO1rpssqTsufwzlIdlHUu2e6zWm4mUYqs,5131
|
|
122
|
+
mx_bluesky/hyperion/external_interaction/nexus/write_nexus.py,sha256=L67UUdauzbXqsf2GJveGT6NP5YxbSzvcD0RjK5zrErI,4136
|
|
123
|
+
mx_bluesky/hyperion/parameters/__init__.py,sha256=kf2wfcILBUBpT0tJ8-W39BywQUkn67yxl9IVsfrr1LE,115
|
|
124
|
+
mx_bluesky/hyperion/parameters/cli.py,sha256=FGzvEB76YnQvBydUMPUNHJuqxvEe7Zc627w7gA2KODY,2125
|
|
125
|
+
mx_bluesky/hyperion/parameters/components.py,sha256=ayIH6QLX15Qeebbz5W66kXUpLpH70JuwdF2E3YyjEmE,7171
|
|
126
|
+
mx_bluesky/hyperion/parameters/constants.py,sha256=U21htONRj9Tvr7nyRbnrSyW6SRAADIkS0wLU0A3gvUQ,4458
|
|
127
|
+
mx_bluesky/hyperion/parameters/gridscan.py,sha256=eTBsjMmzRpS5BacbDmRhH4uncLS96EKrMgKQ1u4Chpg,8310
|
|
128
|
+
mx_bluesky/hyperion/parameters/load_centre_collect.py,sha256=Q0TpVoAZeqPvRBayWPacU3wOWdawmlqhB7361xRKVvc,1583
|
|
129
|
+
mx_bluesky/hyperion/parameters/robot_load.py,sha256=nWiFrakYIn55Y9FDM10TN3Leq5TsAVFpDfY59FU3pIw,435
|
|
130
|
+
mx_bluesky/hyperion/parameters/rotation.py,sha256=HP25ZPlM0U7rRsUxUQFvBPs5pI5NWE2PHSlCg3fI_2Y,5602
|
|
131
|
+
mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml,sha256=xrhgok-9X2VXdyLEWiYOUEeRCBqhYM6IJFAefnNdgzw,26521
|
|
132
|
+
mx_bluesky/hyperion/utils/context.py,sha256=TYG3e4lu88ssngoNbsR5pfEXI0DveDemLWaBuThtvbI,2710
|
|
133
|
+
mx_bluesky/hyperion/utils/utils.py,sha256=GoxupsUcAhGg0TmK_KMgGSB2rDDSd8tV5zGGLOfiAKk,731
|
|
134
|
+
mx_bluesky/hyperion/utils/validation.py,sha256=Cw8TDODble039-lqnSUmFu01p9jdgf-bchcTkByRxok,6569
|
|
135
|
+
mx_bluesky-1.2.0.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
136
|
+
mx_bluesky-1.2.0.dist-info/METADATA,sha256=6yz0owOp839jruq_KMLvJ2WlDWnlHZ1pgz7mLenyKKI,17163
|
|
137
|
+
mx_bluesky-1.2.0.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
|
138
|
+
mx_bluesky-1.2.0.dist-info/entry_points.txt,sha256=Bt3iHCqzZtHYnnSKoh_qM2k3K4LbK1Uxr0gF8B34F98,528
|
|
139
|
+
mx_bluesky-1.2.0.dist-info/top_level.txt,sha256=S4rrzXIUef58ulf_04wn01XGZ3xeJjXs4LPEJ_xoF-I,11
|
|
140
|
+
mx_bluesky-1.2.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
[console_scripts]
|
|
2
|
+
hyperion = mx_bluesky.hyperion.__main__:main
|
|
3
|
+
hyperion-callbacks = mx_bluesky.hyperion.external_interaction.callbacks.__main__:main
|
|
4
|
+
hyperion-generate-test-nexus = mx_bluesky.hyperion.utils.validation:generate_test_nexus
|
|
5
|
+
hyperion-populate-test-and-meta-files = mx_bluesky.hyperion.utils.validation:copy_test_meta_data_files
|
|
6
|
+
mx-bluesky = mx_bluesky.__main__:main
|
|
7
|
+
run_extruder = mx_bluesky.beamlines.i24.serial.run_serial:run_extruder
|
|
8
|
+
run_fixed_target = mx_bluesky.beamlines.i24.serial.run_serial:run_fixed_target
|
mx_bluesky/i04/__init__.py
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
from mx_bluesky.i24.serial.parameters.constants import SSXType
|
|
2
|
-
from mx_bluesky.i24.serial.parameters.experiment_parameters import (
|
|
3
|
-
ChipDescription,
|
|
4
|
-
ExtruderParameters,
|
|
5
|
-
FixedTargetParameters,
|
|
6
|
-
)
|
|
7
|
-
from mx_bluesky.i24.serial.parameters.utils import get_chip_format
|
|
8
|
-
|
|
9
|
-
__all__ = [
|
|
10
|
-
"SSXType",
|
|
11
|
-
"ExtruderParameters",
|
|
12
|
-
"ChipDescription",
|
|
13
|
-
"FixedTargetParameters",
|
|
14
|
-
"get_chip_format",
|
|
15
|
-
]
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
from .components import (
|
|
2
|
-
DiffractionExperiment,
|
|
3
|
-
IspybExperimentType,
|
|
4
|
-
OptionalGonioAngleStarts,
|
|
5
|
-
OptionalXyzStarts,
|
|
6
|
-
ParameterVersion,
|
|
7
|
-
RotationAxis,
|
|
8
|
-
SplitScan,
|
|
9
|
-
WithOavCentring,
|
|
10
|
-
WithSample,
|
|
11
|
-
WithScan,
|
|
12
|
-
WithSnapshot,
|
|
13
|
-
XyzAxis,
|
|
14
|
-
XyzStarts,
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
__all__ = [
|
|
18
|
-
"DiffractionExperiment",
|
|
19
|
-
"IspybExperimentType",
|
|
20
|
-
"OptionalGonioAngleStarts",
|
|
21
|
-
"OptionalXyzStarts",
|
|
22
|
-
"ParameterVersion",
|
|
23
|
-
"RotationAxis",
|
|
24
|
-
"SplitScan",
|
|
25
|
-
"WithOavCentring",
|
|
26
|
-
"WithSample",
|
|
27
|
-
"WithScan",
|
|
28
|
-
"WithSnapshot",
|
|
29
|
-
"XyzAxis",
|
|
30
|
-
"XyzStarts",
|
|
31
|
-
]
|