mx-bluesky 0.0.2__py3-none-any.whl → 1.1.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/__main__.py +1 -2
- mx_bluesky/_version.py +14 -2
- mx_bluesky/beamlines/i04/__init__.py +3 -0
- mx_bluesky/beamlines/i04/callbacks/murko_callback.py +45 -0
- mx_bluesky/beamlines/i04/thawing_plan.py +85 -0
- mx_bluesky/beamlines/i24/serial/__init__.py +49 -0
- mx_bluesky/beamlines/i24/serial/blueapi_config.yaml +12 -0
- mx_bluesky/{I24 → beamlines/i24}/serial/dcid.py +53 -41
- mx_bluesky/{I24 → beamlines/i24}/serial/extruder/EX-gui-edm/DetStage.edl +3 -4
- mx_bluesky/{I24 → beamlines/i24}/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +28 -32
- mx_bluesky/{I24 → beamlines/i24}/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -1
- mx_bluesky/beamlines/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +516 -0
- mx_bluesky/{I24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +3 -4
- mx_bluesky/{I24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/DetStage.edl +3 -4
- mx_bluesky/{I24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +273 -223
- mx_bluesky/{I24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -1
- mx_bluesky/{I24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +12 -13
- mx_bluesky/{I24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -1
- mx_bluesky/{I24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -1
- mx_bluesky/{I24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -1
- mx_bluesky/{I24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -1
- mx_bluesky/{I24 → beamlines/i24}/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +273 -143
- mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short1-laser.png +0 -0
- mx_bluesky/beamlines/i24/serial/fixed_target/FT-gui-edm/short2-laser.png +0 -0
- mx_bluesky/{I24 → beamlines/i24}/serial/fixed_target/ft_utils.py +24 -1
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +808 -0
- mx_bluesky/{I24 → beamlines/i24}/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +377 -416
- mx_bluesky/{I24 → beamlines/i24}/serial/fixed_target/i24ssx_Chip_Mapping_py3v1.py +34 -40
- mx_bluesky/beamlines/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +328 -0
- mx_bluesky/{I24 → beamlines/i24}/serial/fixed_target/i24ssx_moveonclick.py +66 -48
- mx_bluesky/{I24 → beamlines/i24}/serial/log.py +66 -19
- mx_bluesky/beamlines/i24/serial/parameters/__init__.py +15 -0
- mx_bluesky/beamlines/i24/serial/parameters/constants.py +47 -0
- mx_bluesky/beamlines/i24/serial/parameters/experiment_parameters.py +103 -0
- mx_bluesky/beamlines/i24/serial/parameters/fixed_target/cs/cs_maker.json +9 -0
- mx_bluesky/{I24 → beamlines/i24}/serial/parameters/fixed_target/cs/motor_direction.txt +1 -1
- mx_bluesky/{I24 → beamlines/i24}/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +1 -1
- mx_bluesky/beamlines/i24/serial/parameters/utils.py +42 -0
- mx_bluesky/beamlines/i24/serial/run_extruder.sh +19 -0
- mx_bluesky/beamlines/i24/serial/run_fixed_target.sh +22 -0
- mx_bluesky/beamlines/i24/serial/run_serial.py +36 -0
- mx_bluesky/{I24 → beamlines/i24}/serial/set_visit_directory.sh +6 -1
- mx_bluesky/{I24 → beamlines/i24}/serial/setup_beamline/pv.py +1 -62
- mx_bluesky/{I24 → beamlines/i24}/serial/setup_beamline/pv_abstract.py +6 -7
- mx_bluesky/{I24 → beamlines/i24}/serial/setup_beamline/setup_beamline.py +90 -269
- mx_bluesky/{I24 → beamlines/i24}/serial/setup_beamline/setup_detector.py +47 -40
- mx_bluesky/beamlines/i24/serial/setup_beamline/setup_zebra_plans.py +459 -0
- mx_bluesky/beamlines/i24/serial/start_blueapi.sh +28 -0
- mx_bluesky/beamlines/i24/serial/write_nexus.py +105 -0
- mx_bluesky/example.py +4 -4
- 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 +44 -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 +84 -0
- mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py +528 -0
- mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py +209 -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_then_centre_plan.py +322 -0
- mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py +436 -0
- mx_bluesky/hyperion/experiment_plans/set_energy_plan.py +68 -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 +46 -0
- mx_bluesky/hyperion/external_interaction/callbacks/common/ispyb_mapping.py +70 -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 +88 -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 +29 -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/hyperion/parameters/components.py +253 -0
- mx_bluesky/hyperion/parameters/constants.py +158 -0
- mx_bluesky/hyperion/parameters/gridscan.py +216 -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.0.2.dist-info → mx_bluesky-1.1.0.dist-info}/METADATA +53 -32
- mx_bluesky-1.1.0.dist-info/RECORD +136 -0
- {mx_bluesky-0.0.2.dist-info → mx_bluesky-1.1.0.dist-info}/WHEEL +1 -1
- mx_bluesky-1.1.0.dist-info/entry_points.txt +8 -0
- mx_bluesky/I24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +0 -476
- mx_bluesky/I24/serial/fixed_target/FT-gui-edm/ME14E-motors.edl +0 -1874
- mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +0 -706
- mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +0 -463
- mx_bluesky/I24/serial/parameters/__init__.py +0 -5
- mx_bluesky/I24/serial/parameters/constants.py +0 -39
- mx_bluesky/I24/serial/parameters/fixed_target/cs/cs_maker.json +0 -9
- mx_bluesky/I24/serial/parameters/fixed_target/cs/fiducial_1.txt +0 -4
- mx_bluesky/I24/serial/parameters/fixed_target/cs/fiducial_2.txt +0 -4
- mx_bluesky/I24/serial/parameters/fixed_target/litemaps/currentchip.map +0 -81
- mx_bluesky/I24/serial/parameters/fixed_target/parameters.txt +0 -13
- mx_bluesky/I24/serial/run_serial.py +0 -52
- mx_bluesky/I24/serial/write_nexus.py +0 -113
- mx_bluesky-0.0.2.dist-info/RECORD +0 -58
- mx_bluesky-0.0.2.dist-info/entry_points.txt +0 -4
- /mx_bluesky/{I24 → beamlines}/__init__.py +0 -0
- /mx_bluesky/{I24/serial → beamlines/i24}/__init__.py +0 -0
- /mx_bluesky/{I24 → beamlines/i24}/serial/extruder/__init__.py +0 -0
- /mx_bluesky/{I24 → beamlines/i24}/serial/fixed_target/__init__.py +0 -0
- /mx_bluesky/{I24 → beamlines/i24}/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
- /mx_bluesky/{I24 → beamlines/i24}/serial/run_ssx.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-0.0.2.dist-info → mx_bluesky-1.1.0.dist-info}/LICENSE +0 -0
- {mx_bluesky-0.0.2.dist-info → mx_bluesky-1.1.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,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mx-bluesky
|
|
3
|
-
Version:
|
|
4
|
-
Summary: Bluesky tools for MX Beamlines
|
|
3
|
+
Version: 1.1.0
|
|
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
|
|
7
7
|
Version 2.0, January 2004
|
|
@@ -205,57 +205,83 @@ License: Apache License
|
|
|
205
205
|
See the License for the specific language governing permissions and
|
|
206
206
|
limitations under the License.
|
|
207
207
|
|
|
208
|
-
Project-URL: GitHub, https://github.com/DiamondLightSource/
|
|
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.9
|
|
212
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
213
211
|
Classifier: Programming Language :: Python :: 3.11
|
|
214
|
-
|
|
212
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
213
|
+
Requires-Python: >=3.11
|
|
215
214
|
Description-Content-Type: text/x-rst
|
|
216
215
|
License-File: LICENSE
|
|
217
|
-
Requires-Dist:
|
|
218
|
-
Requires-Dist:
|
|
219
|
-
Requires-Dist:
|
|
216
|
+
Requires-Dist: annotated-types
|
|
217
|
+
Requires-Dist: caproto
|
|
218
|
+
Requires-Dist: fastapi[all]
|
|
219
|
+
Requires-Dist: flask-restful
|
|
220
|
+
Requires-Dist: ispyb
|
|
220
221
|
Requires-Dist: jupyterlab
|
|
221
222
|
Requires-Dist: matplotlib
|
|
222
|
-
Requires-Dist:
|
|
223
|
+
Requires-Dist: nexgen
|
|
224
|
+
Requires-Dist: numpy
|
|
223
225
|
Requires-Dist: opencv-python
|
|
224
|
-
Requires-Dist:
|
|
226
|
+
Requires-Dist: opentelemetry-distro
|
|
227
|
+
Requires-Dist: opentelemetry-exporter-otlp
|
|
228
|
+
Requires-Dist: pydantic
|
|
229
|
+
Requires-Dist: pyepics
|
|
230
|
+
Requires-Dist: pyzmq
|
|
231
|
+
Requires-Dist: requests
|
|
232
|
+
Requires-Dist: scanspec
|
|
233
|
+
Requires-Dist: scipy
|
|
234
|
+
Requires-Dist: semver
|
|
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.32.0
|
|
225
241
|
Provides-Extra: dev
|
|
226
|
-
Requires-Dist: GitPython ; extra == 'dev'
|
|
227
242
|
Requires-Dist: black ; extra == 'dev'
|
|
243
|
+
Requires-Dist: build ; extra == 'dev'
|
|
244
|
+
Requires-Dist: diff-cover ; extra == 'dev'
|
|
245
|
+
Requires-Dist: GitPython ; extra == 'dev'
|
|
246
|
+
Requires-Dist: ipython ; extra == 'dev'
|
|
228
247
|
Requires-Dist: mypy ; extra == 'dev'
|
|
248
|
+
Requires-Dist: myst-parser ; extra == 'dev'
|
|
229
249
|
Requires-Dist: pipdeptree ; extra == 'dev'
|
|
230
250
|
Requires-Dist: pre-commit ; extra == 'dev'
|
|
231
251
|
Requires-Dist: pydata-sphinx-theme >=0.12 ; extra == 'dev'
|
|
252
|
+
Requires-Dist: pyright ; extra == 'dev'
|
|
253
|
+
Requires-Dist: pytest-asyncio ; extra == 'dev'
|
|
232
254
|
Requires-Dist: pytest-cov ; extra == 'dev'
|
|
255
|
+
Requires-Dist: pytest-random-order ; extra == 'dev'
|
|
256
|
+
Requires-Dist: pytest ; extra == 'dev'
|
|
233
257
|
Requires-Dist: ruff ; extra == 'dev'
|
|
234
258
|
Requires-Dist: sphinx-autobuild ; extra == 'dev'
|
|
235
259
|
Requires-Dist: sphinx-copybutton ; extra == 'dev'
|
|
260
|
+
Requires-Dist: sphinxcontrib-plantuml ; extra == 'dev'
|
|
236
261
|
Requires-Dist: sphinx-design ; extra == 'dev'
|
|
237
262
|
Requires-Dist: tox-direct ; extra == 'dev'
|
|
263
|
+
Requires-Dist: tox ; extra == 'dev'
|
|
238
264
|
Requires-Dist: types-mock ; extra == 'dev'
|
|
239
265
|
Requires-Dist: types-requests ; extra == 'dev'
|
|
240
266
|
|
|
241
|
-
|
|
267
|
+
mx-bluesky
|
|
242
268
|
===========================
|
|
243
269
|
|
|
244
|
-
|
|
|
270
|
+
|ci| |coverage| |pypi_version| |license|
|
|
245
271
|
|
|
246
272
|
Contains code for working with Bluesky on MX beamlines at Diamond
|
|
247
273
|
|
|
248
274
|
============== ==============================================================
|
|
249
|
-
PyPI ``pip install
|
|
250
|
-
Source code https://github.com/DiamondLightSource/
|
|
251
|
-
Documentation https://DiamondLightSource.github.io/
|
|
252
|
-
Releases https://github.com/DiamondLightSource/
|
|
275
|
+
PyPI ``pip install mx-bluesky``
|
|
276
|
+
Source code https://github.com/DiamondLightSource/mx-bluesky
|
|
277
|
+
Documentation https://DiamondLightSource.github.io/mx-bluesky
|
|
278
|
+
Releases https://github.com/DiamondLightSource/mx-bluesky/releases
|
|
253
279
|
============== ==============================================================
|
|
254
280
|
|
|
255
281
|
Getting Started
|
|
256
282
|
===============
|
|
257
283
|
|
|
258
|
-
To get started with developing this repo at DLS run
|
|
284
|
+
To get started with developing this repo at DLS run ``dls_dev_setup.sh``.
|
|
259
285
|
|
|
260
286
|
If you want to develop interactively at the beamline we recommend using jupyter notebooks. You can get started with this by running::
|
|
261
287
|
|
|
@@ -263,24 +289,19 @@ If you want to develop interactively at the beamline we recommend using jupyter
|
|
|
263
289
|
|
|
264
290
|
If you're doing more in-depth development we recommend developing with VSCode. You can do this at DLS by running::
|
|
265
291
|
|
|
266
|
-
|
|
267
292
|
$ module load vscode
|
|
268
|
-
$ code .
|
|
293
|
+
$ code .vscode/mx-bluesky.code-workspace
|
|
269
294
|
|
|
270
|
-
.. |
|
|
271
|
-
:target: https://github.com/DiamondLightSource/
|
|
295
|
+
.. |ci| image:: https://github.com/DiamondLightSource/mx-bluesky/actions/workflows/ci.yml/badge.svg?branch=main
|
|
296
|
+
:target: https://github.com/DiamondLightSource/mx-bluesky/actions/workflows/ci.yml
|
|
272
297
|
:alt: Code CI
|
|
273
298
|
|
|
274
|
-
.. |
|
|
275
|
-
:target: https://
|
|
276
|
-
:alt: Docs CI
|
|
277
|
-
|
|
278
|
-
.. |coverage| image:: https://codecov.io/gh/DiamondLightSource/mx_bluesky/branch/main/graph/badge.svg
|
|
279
|
-
:target: https://codecov.io/gh/DiamondLightSource/mx_bluesky
|
|
299
|
+
.. |coverage| image:: https://codecov.io/gh/DiamondLightSource/mx-bluesky/branch/main/graph/badge.svg
|
|
300
|
+
:target: https://codecov.io/gh/DiamondLightSource/mx-bluesky
|
|
280
301
|
:alt: Test Coverage
|
|
281
302
|
|
|
282
|
-
.. |pypi_version| image:: https://img.shields.io/pypi/v/
|
|
283
|
-
:target: https://pypi.org/project/
|
|
303
|
+
.. |pypi_version| image:: https://img.shields.io/pypi/v/mx-bluesky.svg
|
|
304
|
+
:target: https://pypi.org/project/mx-bluesky
|
|
284
305
|
:alt: Latest PyPI version
|
|
285
306
|
|
|
286
307
|
.. |license| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg
|
|
@@ -291,4 +312,4 @@ If you're doing more in-depth development we recommend developing with VSCode. Y
|
|
|
291
312
|
Anything below this line is used when viewing README.rst and will be replaced
|
|
292
313
|
when included in index.rst
|
|
293
314
|
|
|
294
|
-
See https://DiamondLightSource.github.io/
|
|
315
|
+
See https://DiamondLightSource.github.io/mx-bluesky for more detailed documentation.
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
mx_bluesky/__init__.py,sha256=twUymKa_5teVCbYPgxRDu87WyQhJa8nMRb8HLTCFJZ8,115
|
|
2
|
+
mx_bluesky/__main__.py,sha256=bmFrxcsN8zGadkDLRnE3qV3-iXJcEWVPp5GNx2rsTJ0,383
|
|
3
|
+
mx_bluesky/_version.py,sha256=CqDGE4B1ZqZ-56mxeOFcXRTmlxrdOh4ayrjbcPjziE4,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=Im_9MYCzIv5A9wAVjD5PeIRRqhn3UHZrrmnUgFSX2Eo,1430
|
|
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=bYQtPAVlsS3f4vM57MXIhr_ltTJoMFpn1ZQYtsZ_jvo,2592
|
|
79
|
+
mx_bluesky/hyperion/experiment_plans/flyscan_xray_centre_plan.py,sha256=Dhw5BYh4MU2oby344JGya1qsFSXvipDaxhQcBoqxSCM,18973
|
|
80
|
+
mx_bluesky/hyperion/experiment_plans/grid_detect_then_xray_centre_plan.py,sha256=C03cKIQLyDAeGnI05tW6Z2kzItTIfHL_wlXqd0X8TcM,7186
|
|
81
|
+
mx_bluesky/hyperion/experiment_plans/oav_grid_detection_plan.py,sha256=lzkC1mZCuXW_GmGhgWeTjKGTgAP1uqNWlcEpY5_dOgc,6943
|
|
82
|
+
mx_bluesky/hyperion/experiment_plans/oav_snapshot_plan.py,sha256=7OcQ3nm7m-xLdPkct41-HrrQKrs9q_U8qOy80QqhnFg,2821
|
|
83
|
+
mx_bluesky/hyperion/experiment_plans/optimise_attenuation_plan.py,sha256=JZJW3hOzcxFyCEmsMYWWGwA9tAgGgg85nBKxBxKXeX0,16276
|
|
84
|
+
mx_bluesky/hyperion/experiment_plans/pin_centre_then_xray_centre_plan.py,sha256=vV9UOubh2v6clL4LHFSQhqVBGcKPaNVWqK2rDrdPcQI,4146
|
|
85
|
+
mx_bluesky/hyperion/experiment_plans/pin_tip_centring_plan.py,sha256=YcGGckesXe_5NhaIEd0SFOPbtTYkpDKLSi3g7_2d52o,5969
|
|
86
|
+
mx_bluesky/hyperion/experiment_plans/robot_load_then_centre_plan.py,sha256=PKQf5hdaiXWXNL53MYc0289RuDEc0eyBzdCxEWP0m34,10988
|
|
87
|
+
mx_bluesky/hyperion/experiment_plans/rotation_scan_plan.py,sha256=iYsLw3nlIlpdccK1EeWH1S7nN1JoINvVxNRfZG52DE4,15802
|
|
88
|
+
mx_bluesky/hyperion/experiment_plans/set_energy_plan.py,sha256=Q5mlujyR0odDkf2BRurFiWhSfEHJtIPqW904EjUOxLA,2011
|
|
89
|
+
mx_bluesky/hyperion/external_interaction/__init__.py,sha256=95DwXDmKsx36RgAL-AtLZl2LQoLPKbzeYdlkkP_4Coc,559
|
|
90
|
+
mx_bluesky/hyperion/external_interaction/config_server.py,sha256=hA5r4v071gkV91F9YPwTVQGLPq3iMb1pjcBEE14Uxh4,1077
|
|
91
|
+
mx_bluesky/hyperion/external_interaction/exceptions.py,sha256=XBDES13VaW9fhxRZYNvSfLC_Mvg4M4RqMseW_u18Mb8,342
|
|
92
|
+
mx_bluesky/hyperion/external_interaction/callbacks/__init__.py,sha256=njGhxi0Qf06vvDXCpVlQhFAOebf6iVAVm3CjGCjwr1g,331
|
|
93
|
+
mx_bluesky/hyperion/external_interaction/callbacks/__main__.py,sha256=Ke_3nKJXOnPu06rq3r9oULoTqgfwfbQYQgt5GDEidYE,4860
|
|
94
|
+
mx_bluesky/hyperion/external_interaction/callbacks/aperture_change_callback.py,sha256=pWd84QldTGLoxPdyqXZk6_SLhvF7O-CQRsiXqWDQEkg,837
|
|
95
|
+
mx_bluesky/hyperion/external_interaction/callbacks/grid_detection_callback.py,sha256=tWtbpdq3dcTpoVpuDIeSAf-naziky38wgMeW6S1Dh7c,2914
|
|
96
|
+
mx_bluesky/hyperion/external_interaction/callbacks/ispyb_callback_base.py,sha256=SQ9FDrQ02BN3YYDU3kNBvZ28louPBMaRVipEb6OQId8,8854
|
|
97
|
+
mx_bluesky/hyperion/external_interaction/callbacks/log_uid_tag_callback.py,sha256=MnpHKTwBbI5_xDtm5VK1cSObrfkWBuWP0_OXnU1qQCA,622
|
|
98
|
+
mx_bluesky/hyperion/external_interaction/callbacks/logging_callback.py,sha256=W5jO7uHvi84FmEwVC_wNk93oc3-SJ8pZq61cYS-qalU,708
|
|
99
|
+
mx_bluesky/hyperion/external_interaction/callbacks/plan_reactive_callback.py,sha256=7UtkXZluAag_Mx_JnESd7ODPSN3WrcNCgN8mquIpxjE,4086
|
|
100
|
+
mx_bluesky/hyperion/external_interaction/callbacks/zocalo_callback.py,sha256=Jwf_jFLnC1lRm-WIlZ6ZozbQyw_SHtXK_5HUA5RT7Fw,3960
|
|
101
|
+
mx_bluesky/hyperion/external_interaction/callbacks/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
102
|
+
mx_bluesky/hyperion/external_interaction/callbacks/common/callback_util.py,sha256=Db3ZfUPaOFv53umd8b8kVIHOb4Pxugw2hmBGA75yB08,1512
|
|
103
|
+
mx_bluesky/hyperion/external_interaction/callbacks/common/ispyb_mapping.py,sha256=8cgmMDGTNuD8Y-bNWytzBRv8Kjy8lrVO4Mq0dnEtUFE,2797
|
|
104
|
+
mx_bluesky/hyperion/external_interaction/callbacks/robot_load/ispyb_callback.py,sha256=PGM3fFwM0iCOiEiAlSMSkr79TD-M6lSXOocvoA4LsX0,3696
|
|
105
|
+
mx_bluesky/hyperion/external_interaction/callbacks/rotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
106
|
+
mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_callback.py,sha256=tYc5B1UN8K_69rRBhx1KjpLv_r6htRJxjG05sAIFKvg,7220
|
|
107
|
+
mx_bluesky/hyperion/external_interaction/callbacks/rotation/ispyb_mapping.py,sha256=gXub8lt04ClC4sU_QGaBW4w3wrH8hJK7Tjy0AY4zf7g,718
|
|
108
|
+
mx_bluesky/hyperion/external_interaction/callbacks/rotation/nexus_callback.py,sha256=tx7G1Q9W3bCLB1h_IaNh1FvOmsE2Oy9LJMLC8NSWgCc,4478
|
|
109
|
+
mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
110
|
+
mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/ispyb_callback.py,sha256=kyEu2SXyN6kL4fcQm3HmAO4KEdEZvBH_7cDX9gEeyqw,11294
|
|
111
|
+
mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/ispyb_mapping.py,sha256=8SiT3Yes58HJNro4CatIM1dcnyIvTBt0DNtAGbcEx7g,1818
|
|
112
|
+
mx_bluesky/hyperion/external_interaction/callbacks/xray_centre/nexus_callback.py,sha256=FvO6OcRgQNBm8HEeM6Gc-j2a1yH3OOGUat-GTtfh-gM,4409
|
|
113
|
+
mx_bluesky/hyperion/external_interaction/ispyb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
114
|
+
mx_bluesky/hyperion/external_interaction/ispyb/data_model.py,sha256=7P2Tz3Y9k-vKSGsdk8ppvKg15z1iBGGKbw3RNv_8y-E,2632
|
|
115
|
+
mx_bluesky/hyperion/external_interaction/ispyb/exp_eye_store.py,sha256=ekMaDRkshbC72_hY0VWjaBA5b1vQgUfHoYBW22wEzNw,4487
|
|
116
|
+
mx_bluesky/hyperion/external_interaction/ispyb/ispyb_store.py,sha256=K71lAHoqMBh-ayqFdfafIwRd8AIqnyj6LR6rzk00nl8,10318
|
|
117
|
+
mx_bluesky/hyperion/external_interaction/ispyb/ispyb_utils.py,sha256=WbfYhECi44bgaR0ciF8ME8T-leQ8WoczqiNpGGLRzOU,780
|
|
118
|
+
mx_bluesky/hyperion/external_interaction/nexus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
119
|
+
mx_bluesky/hyperion/external_interaction/nexus/nexus_utils.py,sha256=dVeKUc92TQcO1rpssqTsufwzlIdlHUu2e6zWm4mUYqs,5131
|
|
120
|
+
mx_bluesky/hyperion/external_interaction/nexus/write_nexus.py,sha256=L67UUdauzbXqsf2GJveGT6NP5YxbSzvcD0RjK5zrErI,4136
|
|
121
|
+
mx_bluesky/hyperion/parameters/__init__.py,sha256=kf2wfcILBUBpT0tJ8-W39BywQUkn67yxl9IVsfrr1LE,115
|
|
122
|
+
mx_bluesky/hyperion/parameters/cli.py,sha256=FGzvEB76YnQvBydUMPUNHJuqxvEe7Zc627w7gA2KODY,2125
|
|
123
|
+
mx_bluesky/hyperion/parameters/components.py,sha256=5na3ka5xhPLrQcgVGbkIhZLFPtkEGAA3iPjagC5jqpw,7239
|
|
124
|
+
mx_bluesky/hyperion/parameters/constants.py,sha256=U21htONRj9Tvr7nyRbnrSyW6SRAADIkS0wLU0A3gvUQ,4458
|
|
125
|
+
mx_bluesky/hyperion/parameters/gridscan.py,sha256=iWKxMPI2piEzC5Hsr2uBzBq7tSndzTpgxPQX9vGPOAw,8107
|
|
126
|
+
mx_bluesky/hyperion/parameters/rotation.py,sha256=HP25ZPlM0U7rRsUxUQFvBPs5pI5NWE2PHSlCg3fI_2Y,5602
|
|
127
|
+
mx_bluesky/hyperion/resources/panda/panda-gridscan.yaml,sha256=xrhgok-9X2VXdyLEWiYOUEeRCBqhYM6IJFAefnNdgzw,26521
|
|
128
|
+
mx_bluesky/hyperion/utils/context.py,sha256=TYG3e4lu88ssngoNbsR5pfEXI0DveDemLWaBuThtvbI,2710
|
|
129
|
+
mx_bluesky/hyperion/utils/utils.py,sha256=GoxupsUcAhGg0TmK_KMgGSB2rDDSd8tV5zGGLOfiAKk,731
|
|
130
|
+
mx_bluesky/hyperion/utils/validation.py,sha256=Cw8TDODble039-lqnSUmFu01p9jdgf-bchcTkByRxok,6569
|
|
131
|
+
mx_bluesky-1.1.0.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
132
|
+
mx_bluesky-1.1.0.dist-info/METADATA,sha256=jHAAxwbqoobEvOQmiiceJoRVKYTFZDyjPoJwrWGv92g,17163
|
|
133
|
+
mx_bluesky-1.1.0.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
|
134
|
+
mx_bluesky-1.1.0.dist-info/entry_points.txt,sha256=Bt3iHCqzZtHYnnSKoh_qM2k3K4LbK1Uxr0gF8B34F98,528
|
|
135
|
+
mx_bluesky-1.1.0.dist-info/top_level.txt,sha256=S4rrzXIUef58ulf_04wn01XGZ3xeJjXs4LPEJ_xoF-I,11
|
|
136
|
+
mx_bluesky-1.1.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
|