mx-bluesky 0.0.1__py3-none-any.whl → 0.3.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. mx_bluesky/__main__.py +1 -2
  2. mx_bluesky/_version.py +14 -2
  3. mx_bluesky/example.py +4 -4
  4. mx_bluesky/i04/__init__.py +3 -0
  5. mx_bluesky/i04/callbacks/murko_callback.py +45 -0
  6. mx_bluesky/i04/thawing_plan.py +84 -0
  7. mx_bluesky/i24/serial/__init__.py +49 -0
  8. mx_bluesky/i24/serial/blueapi_config.yaml +12 -0
  9. mx_bluesky/{I24 → i24}/serial/dcid.py +53 -41
  10. mx_bluesky/{I24 → i24}/serial/extruder/EX-gui-edm/DetStage.edl +1 -2
  11. mx_bluesky/{I24 → i24}/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl +28 -32
  12. mx_bluesky/{I24 → i24}/serial/extruder/EX-gui-edm/microdrop_alignment.edl +0 -1
  13. mx_bluesky/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +513 -0
  14. mx_bluesky/{I24 → i24}/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl +1 -2
  15. mx_bluesky/{I24 → i24}/serial/fixed_target/FT-gui-edm/DetStage.edl +1 -2
  16. mx_bluesky/{I24 → i24}/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl +46 -41
  17. mx_bluesky/{I24 → i24}/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl +0 -1
  18. mx_bluesky/{I24 → i24}/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl +10 -11
  19. mx_bluesky/{I24 → i24}/serial/fixed_target/FT-gui-edm/PMAC_Command.edl +0 -1
  20. mx_bluesky/{I24 → i24}/serial/fixed_target/FT-gui-edm/Shutter_Control.edl +0 -1
  21. mx_bluesky/{I24 → i24}/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl +0 -1
  22. mx_bluesky/{I24 → i24}/serial/fixed_target/FT-gui-edm/nudgechip.edl +0 -1
  23. mx_bluesky/{I24 → i24}/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl +300 -119
  24. mx_bluesky/i24/serial/fixed_target/FT-gui-edm/short1-laser.png +0 -0
  25. mx_bluesky/i24/serial/fixed_target/FT-gui-edm/short2-laser.png +0 -0
  26. mx_bluesky/{I24 → i24}/serial/fixed_target/ft_utils.py +24 -1
  27. mx_bluesky/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +798 -0
  28. mx_bluesky/{I24 → i24}/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py +374 -408
  29. mx_bluesky/{I24 → i24}/serial/fixed_target/i24ssx_Chip_Mapping_py3v1.py +34 -40
  30. mx_bluesky/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +325 -0
  31. mx_bluesky/{I24 → i24}/serial/fixed_target/i24ssx_moveonclick.py +40 -45
  32. mx_bluesky/i24/serial/log.py +156 -0
  33. mx_bluesky/i24/serial/parameters/__init__.py +15 -0
  34. mx_bluesky/i24/serial/parameters/constants.py +47 -0
  35. mx_bluesky/i24/serial/parameters/experiment_parameters.py +124 -0
  36. mx_bluesky/i24/serial/parameters/fixed_target/cs/cs_maker.json +9 -0
  37. mx_bluesky/{I24 → i24}/serial/parameters/fixed_target/cs/motor_direction.txt +1 -1
  38. mx_bluesky/{I24 → i24}/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar +1 -1
  39. mx_bluesky/i24/serial/parameters/utils.py +40 -0
  40. mx_bluesky/i24/serial/run_extruder.sh +19 -0
  41. mx_bluesky/i24/serial/run_fixed_target.sh +22 -0
  42. mx_bluesky/i24/serial/run_serial.py +36 -0
  43. mx_bluesky/{I24 → i24}/serial/set_visit_directory.sh +6 -1
  44. mx_bluesky/{I24 → i24}/serial/setup_beamline/pv.py +1 -62
  45. mx_bluesky/{I24 → i24}/serial/setup_beamline/pv_abstract.py +6 -7
  46. mx_bluesky/{I24 → i24}/serial/setup_beamline/setup_beamline.py +90 -269
  47. mx_bluesky/{I24 → i24}/serial/setup_beamline/setup_detector.py +47 -40
  48. mx_bluesky/i24/serial/setup_beamline/setup_zebra_plans.py +459 -0
  49. mx_bluesky/i24/serial/start_blueapi.sh +28 -0
  50. mx_bluesky/i24/serial/write_nexus.py +102 -0
  51. mx_bluesky/parameters/__init__.py +31 -0
  52. mx_bluesky/parameters/components.py +200 -0
  53. {mx_bluesky-0.0.1.dist-info → mx_bluesky-0.3.1.dist-info}/METADATA +37 -26
  54. mx_bluesky-0.3.1.dist-info/RECORD +67 -0
  55. {mx_bluesky-0.0.1.dist-info → mx_bluesky-0.3.1.dist-info}/WHEEL +1 -1
  56. mx_bluesky-0.3.1.dist-info/entry_points.txt +4 -0
  57. mx_bluesky/I24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py +0 -476
  58. mx_bluesky/I24/serial/fixed_target/FT-gui-edm/ME14E-motors.edl +0 -1874
  59. mx_bluesky/I24/serial/fixed_target/__init__.py +0 -0
  60. mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py +0 -695
  61. mx_bluesky/I24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py +0 -463
  62. mx_bluesky/I24/serial/log.py +0 -101
  63. mx_bluesky/I24/serial/parameters/__init__.py +0 -5
  64. mx_bluesky/I24/serial/parameters/constants.py +0 -39
  65. mx_bluesky/I24/serial/parameters/fixed_target/cs/cs_maker.json +0 -9
  66. mx_bluesky/I24/serial/parameters/fixed_target/cs/fiducial_1.txt +0 -4
  67. mx_bluesky/I24/serial/parameters/fixed_target/cs/fiducial_2.txt +0 -4
  68. mx_bluesky/I24/serial/parameters/fixed_target/litemaps/currentchip.map +0 -81
  69. mx_bluesky/I24/serial/parameters/fixed_target/parameters.txt +0 -13
  70. mx_bluesky/I24/serial/run_serial.py +0 -52
  71. mx_bluesky/I24/serial/write_nexus.py +0 -113
  72. mx_bluesky-0.0.1.dist-info/RECORD +0 -58
  73. mx_bluesky-0.0.1.dist-info/entry_points.txt +0 -4
  74. /mx_bluesky/{I24 → i24}/__init__.py +0 -0
  75. /mx_bluesky/{I24/serial → i24/serial/extruder}/__init__.py +0 -0
  76. /mx_bluesky/{I24/serial/extruder → i24/serial/fixed_target}/__init__.py +0 -0
  77. /mx_bluesky/{I24 → i24}/serial/parameters/fixed_target/pvar_files/oxford.pvar +0 -0
  78. /mx_bluesky/{I24 → i24}/serial/run_ssx.sh +0 -0
  79. /mx_bluesky/{I24 → i24}/serial/setup_beamline/__init__.py +0 -0
  80. /mx_bluesky/{I24 → i24}/serial/setup_beamline/ca.py +0 -0
  81. {mx_bluesky-0.0.1.dist-info → mx_bluesky-0.3.1.dist-info}/LICENSE +0 -0
  82. {mx_bluesky-0.0.1.dist-info → mx_bluesky-0.3.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,200 @@
1
+ from __future__ import annotations
2
+
3
+ from abc import abstractmethod
4
+ from collections.abc import Sequence
5
+ from enum import Enum
6
+ from pathlib import Path
7
+ from typing import SupportsInt, TypeVar
8
+
9
+ from dodal.devices.aperturescatterguard import AperturePositionGDANames
10
+ from dodal.devices.detector import (
11
+ DetectorParams,
12
+ TriggerMode,
13
+ )
14
+ from pydantic import BaseModel, Field, root_validator
15
+ from scanspec.core import AxesPoints
16
+ from semver import Version
17
+
18
+ T = TypeVar("T")
19
+
20
+
21
+ class ParameterVersion(Version):
22
+ @classmethod
23
+ def _parse(cls, version):
24
+ if isinstance(version, cls):
25
+ return version
26
+ return cls.parse(version)
27
+
28
+ @classmethod
29
+ def __get_validators__(cls):
30
+ """Return a list of validator methods for pydantic models."""
31
+ yield cls._parse
32
+
33
+ @classmethod
34
+ def __modify_schema__(cls, field_schema):
35
+ """Inject/mutate the pydantic field schema in-place."""
36
+ field_schema.update(examples=["1.0.2", "2.15.3-alpha", "21.3.15-beta+12345"])
37
+
38
+
39
+ class RotationAxis(str, Enum):
40
+ OMEGA = "omega"
41
+ PHI = "phi"
42
+ CHI = "chi"
43
+ KAPPA = "kappa"
44
+
45
+
46
+ class XyzAxis(str, Enum):
47
+ X = "sam_x"
48
+ Y = "sam_y"
49
+ Z = "sam_z"
50
+
51
+
52
+ class IspybExperimentType(str, Enum):
53
+ # Enum values from ispyb column data type
54
+ SAD = "SAD" # at or slightly above the peak
55
+ SAD_INVERSE_BEAM = "SAD - Inverse Beam"
56
+ OSC = "OSC" # "native" (in the absence of a heavy atom)
57
+ COLLECT_MULTIWEDGE = (
58
+ "Collect - Multiwedge" # "poorly determined" ~ EDNA complex strategy???
59
+ )
60
+ MAD = "MAD"
61
+ HELICAL = "Helical"
62
+ MULTI_POSITIONAL = "Multi-positional"
63
+ MESH = "Mesh"
64
+ BURN = "Burn"
65
+ MAD_INVERSE_BEAM = "MAD - Inverse Beam"
66
+ CHARACTERIZATION = "Characterization"
67
+ DEHYDRATION = "Dehydration"
68
+ TOMO = "tomo"
69
+ EXPERIMENT = "experiment"
70
+ EM = "EM"
71
+ PDF = "PDF"
72
+ PDF_BRAGG = "PDF+Bragg"
73
+ BRAGG = "Bragg"
74
+ SINGLE_PARTICLE = "single particle"
75
+ SERIAL_FIXED = "Serial Fixed"
76
+ SERIAL_JET = "Serial Jet"
77
+ STANDARD = "Standard" # Routine structure determination experiment
78
+ TIME_RESOLVED = "Time Resolved" # Investigate the change of a system over time
79
+ DLS_ANVIL_HP = "Diamond Anvil High Pressure" # HP sample environment pressure cell
80
+ CUSTOM = "Custom" # Special or non-standard data collection
81
+ XRF_MAP = "XRF map"
82
+ ENERGY_SCAN = "Energy scan"
83
+ XRF_SPECTRUM = "XRF spectrum"
84
+ XRF_MAP_XAS = "XRF map xas"
85
+ MESH_3D = "Mesh3D"
86
+ SCREENING = "Screening"
87
+ STILL = "Still"
88
+ SSX_CHIP = "SSX-Chip"
89
+ SSX_JET = "SSX-Jet"
90
+
91
+ # Aliases for historic hyperion experiment type mapping
92
+ ROTATION = "SAD"
93
+ GRIDSCAN_2D = "mesh"
94
+ GRIDSCAN_3D = "Mesh3D"
95
+
96
+
97
+ class WithSnapshot(BaseModel):
98
+ snapshot_directory: Path
99
+ snapshot_omegas_deg: list[float] | None
100
+
101
+ @property
102
+ def take_snapshots(self) -> bool:
103
+ return bool(self.snapshot_omegas_deg)
104
+
105
+
106
+ class DiffractionExperiment(WithSnapshot):
107
+ """For all experiments which use beam"""
108
+
109
+ visit: str = Field(min_length=5, regex=r"[\w]{2}[\d]+-[\d]+")
110
+ file_name: str
111
+ exposure_time_s: float = Field(gt=0)
112
+ comment: str = Field(default="")
113
+ beamline: str = Field(regex=r"BL\d{2}[BIJS]")
114
+ insertion_prefix: str = Field(regex=r"SR\d{2}[BIJS]")
115
+ det_dist_to_beam_converter_path: str
116
+ zocalo_environment: str
117
+ trigger_mode: TriggerMode = Field(default=TriggerMode.FREE_RUN)
118
+ detector_distance_mm: float | None = Field(default=None, gt=0)
119
+ demand_energy_ev: float | None = Field(default=None, gt=0)
120
+ run_number: int | None = Field(default=None, ge=0)
121
+ selected_aperture: AperturePositionGDANames | None = Field(default=None)
122
+ transmission_frac: float = Field(default=0.1)
123
+ ispyb_experiment_type: IspybExperimentType
124
+ storage_directory: str
125
+
126
+ @root_validator(pre=True)
127
+ def validate_snapshot_directory(cls, values):
128
+ snapshot_dir = values.get(
129
+ "snapshot_directory", Path(values["storage_directory"], "snapshots")
130
+ )
131
+ values["snapshot_directory"] = (
132
+ snapshot_dir if isinstance(snapshot_dir, Path) else Path(snapshot_dir)
133
+ )
134
+ return values
135
+
136
+ @property
137
+ def num_images(self) -> int:
138
+ return 0
139
+
140
+ @property
141
+ @abstractmethod
142
+ def detector_params(self) -> DetectorParams: ...
143
+
144
+
145
+ class WithScan(BaseModel):
146
+ """For experiments where the scan is known"""
147
+
148
+ @property
149
+ @abstractmethod
150
+ def scan_points(self) -> AxesPoints: ...
151
+
152
+ @property
153
+ @abstractmethod
154
+ def num_images(self) -> int: ...
155
+
156
+
157
+ class SplitScan(BaseModel):
158
+ @property
159
+ @abstractmethod
160
+ def scan_indices(self) -> Sequence[SupportsInt]:
161
+ """Should return the first index of each scan (i.e. for each nexus file)"""
162
+ ...
163
+
164
+
165
+ class WithSample(BaseModel):
166
+ sample_id: int
167
+ sample_puck: int | None = None
168
+ sample_pin: int | None = None
169
+
170
+
171
+ class WithOavCentring(BaseModel):
172
+ oav_centring_file: str
173
+
174
+
175
+ class OptionalXyzStarts(BaseModel):
176
+ x_start_um: float | None = None
177
+ y_start_um: float | None = None
178
+ z_start_um: float | None = None
179
+
180
+
181
+ class XyzStarts(BaseModel):
182
+ x_start_um: float
183
+ y_start_um: float
184
+ z_start_um: float
185
+
186
+ def _start_for_axis(self, axis: XyzAxis) -> float:
187
+ match axis:
188
+ case XyzAxis.X:
189
+ return self.x_start_um
190
+ case XyzAxis.Y:
191
+ return self.y_start_um
192
+ case XyzAxis.Z:
193
+ return self.z_start_um
194
+
195
+
196
+ class OptionalGonioAngleStarts(BaseModel):
197
+ omega_start_deg: float | None = None
198
+ phi_start_deg: float | None = None
199
+ chi_start_deg: float | None = None
200
+ kappa_start_deg: float | None = None
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mx-bluesky
3
- Version: 0.0.1
4
- Summary: Bluesky tools for MX Beamlines
3
+ Version: 0.3.1
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,30 +205,42 @@ 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/mx_bluesky
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
211
  Classifier: Programming Language :: Python :: 3.10
213
212
  Classifier: Programming Language :: Python :: 3.11
214
- Requires-Python: >=3.9
213
+ Classifier: Programming Language :: Python :: 3.12
214
+ Requires-Python: >=3.10
215
215
  Description-Content-Type: text/x-rst
216
216
  License-File: LICENSE
217
217
  Requires-Dist: bluesky
218
218
  Requires-Dist: ophyd
219
219
  Requires-Dist: pyepics
220
+ Requires-Dist: caproto
220
221
  Requires-Dist: jupyterlab
221
222
  Requires-Dist: matplotlib
222
223
  Requires-Dist: requests
223
224
  Requires-Dist: opencv-python
224
- Requires-Dist: dls-dodal ==1.8.0
225
+ Requires-Dist: pydantic
226
+ Requires-Dist: semver
227
+ Requires-Dist: fastapi[all]
228
+ Requires-Dist: dls-dodal ==1.30.0
229
+ Requires-Dist: blueapi ==0.4.4
225
230
  Provides-Extra: dev
226
231
  Requires-Dist: black ; extra == 'dev'
232
+ Requires-Dist: copier ; extra == 'dev'
233
+ Requires-Dist: GitPython ; extra == 'dev'
227
234
  Requires-Dist: mypy ; extra == 'dev'
235
+ Requires-Dist: myst-parser ; extra == 'dev'
228
236
  Requires-Dist: pipdeptree ; extra == 'dev'
229
237
  Requires-Dist: pre-commit ; extra == 'dev'
230
238
  Requires-Dist: pydata-sphinx-theme >=0.12 ; extra == 'dev'
239
+ Requires-Dist: pyright ; extra == 'dev'
240
+ Requires-Dist: pytest-asyncio ; extra == 'dev'
231
241
  Requires-Dist: pytest-cov ; extra == 'dev'
242
+ Requires-Dist: pytest-random-order ; extra == 'dev'
243
+ Requires-Dist: pytest ; extra == 'dev'
232
244
  Requires-Dist: ruff ; extra == 'dev'
233
245
  Requires-Dist: sphinx-autobuild ; extra == 'dev'
234
246
  Requires-Dist: sphinx-copybutton ; extra == 'dev'
@@ -237,45 +249,44 @@ Requires-Dist: tox-direct ; extra == 'dev'
237
249
  Requires-Dist: types-mock ; extra == 'dev'
238
250
  Requires-Dist: types-requests ; extra == 'dev'
239
251
 
240
- mx_bluesky
252
+ mx-bluesky
241
253
  ===========================
242
254
 
243
- |code_ci| |docs_ci| |coverage| |pypi_version| |license|
255
+ |ci| |coverage| |pypi_version| |license|
244
256
 
245
257
  Contains code for working with Bluesky on MX beamlines at Diamond
246
258
 
247
259
  ============== ==============================================================
248
- PyPI ``pip install mx_bluesky``
249
- Source code https://github.com/DiamondLightSource/mx_bluesky
250
- Documentation https://DiamondLightSource.github.io/mx_bluesky
251
- Releases https://github.com/DiamondLightSource/mx_bluesky/releases
260
+ PyPI ``pip install mx-bluesky``
261
+ Source code https://github.com/DiamondLightSource/mx-bluesky
262
+ Documentation https://DiamondLightSource.github.io/mx-bluesky
263
+ Releases https://github.com/DiamondLightSource/mx-bluesky/releases
252
264
  ============== ==============================================================
253
265
 
254
266
  Getting Started
255
267
  ===============
256
268
 
257
- To get started with developing this repo at DLS run ```dls_dev_setup.sh``.
269
+ To get started with developing this repo at DLS run ``dls_dev_setup.sh``.
258
270
 
259
- We recommend developing with VSCode. You can do this at DLS by running::
271
+ If you want to develop interactively at the beamline we recommend using jupyter notebooks. You can get started with this by running::
260
272
 
273
+ $ ./start_jupyter.sh
274
+
275
+ If you're doing more in-depth development we recommend developing with VSCode. You can do this at DLS by running::
261
276
 
262
277
  $ module load vscode
263
- $ code .
278
+ $ code .vscode/mx-bluesky.code-workspace
264
279
 
265
- .. |code_ci| image:: https://github.com/DiamondLightSource/mx_bluesky/actions/workflows/code.yml/badge.svg?branch=main
266
- :target: https://github.com/DiamondLightSource/mx_bluesky/actions/workflows/code.yml
280
+ .. |ci| image:: https://github.com/DiamondLightSource/mx-bluesky/actions/workflows/ci.yml/badge.svg?branch=main
281
+ :target: https://github.com/DiamondLightSource/mx-bluesky/actions/workflows/ci.yml
267
282
  :alt: Code CI
268
283
 
269
- .. |docs_ci| image:: https://github.com/DiamondLightSource/mx_bluesky/actions/workflows/docs.yml/badge.svg?branch=main
270
- :target: https://github.com/DiamondLightSource/mx_bluesky/actions/workflows/docs.yml
271
- :alt: Docs CI
272
-
273
- .. |coverage| image:: https://codecov.io/gh/DiamondLightSource/mx_bluesky/branch/main/graph/badge.svg
274
- :target: https://codecov.io/gh/DiamondLightSource/mx_bluesky
284
+ .. |coverage| image:: https://codecov.io/gh/DiamondLightSource/mx-bluesky/branch/main/graph/badge.svg
285
+ :target: https://codecov.io/gh/DiamondLightSource/mx-bluesky
275
286
  :alt: Test Coverage
276
287
 
277
- .. |pypi_version| image:: https://img.shields.io/pypi/v/mx_bluesky.svg
278
- :target: https://pypi.org/project/mx_bluesky
288
+ .. |pypi_version| image:: https://img.shields.io/pypi/v/mx-bluesky.svg
289
+ :target: https://pypi.org/project/mx-bluesky
279
290
  :alt: Latest PyPI version
280
291
 
281
292
  .. |license| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg
@@ -286,4 +297,4 @@ We recommend developing with VSCode. You can do this at DLS by running::
286
297
  Anything below this line is used when viewing README.rst and will be replaced
287
298
  when included in index.rst
288
299
 
289
- See https://DiamondLightSource.github.io/mx_bluesky for more detailed documentation.
300
+ See https://DiamondLightSource.github.io/mx-bluesky for more detailed documentation.
@@ -0,0 +1,67 @@
1
+ mx_bluesky/__init__.py,sha256=twUymKa_5teVCbYPgxRDu87WyQhJa8nMRb8HLTCFJZ8,115
2
+ mx_bluesky/__main__.py,sha256=bmFrxcsN8zGadkDLRnE3qV3-iXJcEWVPp5GNx2rsTJ0,383
3
+ mx_bluesky/_version.py,sha256=HzPz9rq3s1AiZXregKlqKaJJ2wGMtvH_a3V9la9CnpM,411
4
+ mx_bluesky/example.py,sha256=_zBoGrKAI1ReOvBz51F9PDorKWQufrb0_ydmoqJ2UAA,478
5
+ mx_bluesky/jupyter_example.ipynb,sha256=tfgYrPU8Rfyv5miiaJUjrTn1jduXlD3e78Z9iHG9s8Y,1663
6
+ mx_bluesky/i04/__init__.py,sha256=gz4F6vux8PoVu4-1a2wylakjR_Heqjf1mOD4gIz4zUc,101
7
+ mx_bluesky/i04/thawing_plan.py,sha256=tUexudXQZ-YU0zZGexysw-ja6AQyYKwLOTBpO5IqJ0A,3408
8
+ mx_bluesky/i04/callbacks/murko_callback.py,sha256=tq7dWDoTonuJZCTfrq6dBs7eOgCql88lnMOwRQCCP_o,1701
9
+ mx_bluesky/i24/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ mx_bluesky/i24/serial/__init__.py,sha256=Jfc9eLVRgPIai_Sob8E4yn35-PTKYajZX7PmQUeDNwM,1096
11
+ mx_bluesky/i24/serial/blueapi_config.yaml,sha256=72NE3cSoZ2taNQe-cFNeimIutfnwyBmKAisiVyZntKo,235
12
+ mx_bluesky/i24/serial/dcid.py,sha256=CXDliRxmRWsXlbnioQrcNBDb7qBO_x-IxwT3PBEWuY8,15152
13
+ mx_bluesky/i24/serial/log.py,sha256=xLKyKrxC6zro9-uHBitGSsQUTkN1aZjDvNu9YdFFXNI,4661
14
+ mx_bluesky/i24/serial/run_extruder.sh,sha256=Rujzmh3J6VZ7ZiupK5MVWJsCp0a4Z9Oh3eR64-v1F1Y,436
15
+ mx_bluesky/i24/serial/run_fixed_target.sh,sha256=BMpmLWbBpWNOFC5lYhEUw06DJIoq8KeIOJQDZuT_qVo,585
16
+ mx_bluesky/i24/serial/run_serial.py,sha256=UvebrQwEY5axl7RMOXh49udvrD-JwC_LLtHWERmPC_0,940
17
+ mx_bluesky/i24/serial/run_ssx.sh,sha256=0Ir5iQQ-xSN_5teHtxzht6G-mJ08mE1gxBS32vkh1eM,714
18
+ mx_bluesky/i24/serial/set_visit_directory.sh,sha256=WuN5PUBxTofzuESk1-3gWtTcbPjOx-26JaQSVCsZhZs,1660
19
+ mx_bluesky/i24/serial/start_blueapi.sh,sha256=4iBzQljTLXQiVIF4UO7drc9qUkP7KSRC6Mjh8hcGxpI,608
20
+ mx_bluesky/i24/serial/write_nexus.py,sha256=m94N1NdGNuj9U9a4UpGjNpIRMwn0mixG9Wl_7uZagwU,4007
21
+ mx_bluesky/i24/serial/extruder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ mx_bluesky/i24/serial/extruder/i24ssx_Extruder_Collect_py3v2.py,sha256=XS2xfiyAGGQcep6mS55c7fCDfguzd2FUjo5BM2UtCO4,17797
23
+ mx_bluesky/i24/serial/extruder/EX-gui-edm/DetStage.edl,sha256=WX55FC_xraum6refr0nKpzTvlNdslEcCB33pwVCqAcc,1974
24
+ mx_bluesky/i24/serial/extruder/EX-gui-edm/DiamondExtruder-I24-py3v1.edl,sha256=z27XUU7lConpsunfWjhCd3pNBNkjNYFtLS_9N8MW7AY,30896
25
+ mx_bluesky/i24/serial/extruder/EX-gui-edm/microdrop_alignment.edl,sha256=K79vmGAcf9qVEQLXTgr0g4bZDWaJ7nFoK4e0Ex7qAwM,14690
26
+ mx_bluesky/i24/serial/fixed_target/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ mx_bluesky/i24/serial/fixed_target/ft_utils.py,sha256=cLZBEN-PK_7V6T5mjaHv53xa3rvKBStD4g-GUqCjkOM,1223
28
+ mx_bluesky/i24/serial/fixed_target/i24ssx_Chip_Collect_py3v1.py,sha256=prh5ICQxani7L0XfZdM1rbOumv84RiQpXQEluHxBXWk,28070
29
+ mx_bluesky/i24/serial/fixed_target/i24ssx_Chip_Manager_py3v1.py,sha256=irvWkruV4hOn_IJzibpxKrNAwkj7uwIVs4tq6l-ikWM,35424
30
+ mx_bluesky/i24/serial/fixed_target/i24ssx_Chip_Mapping_py3v1.py,sha256=Xnw0mVr6vziceHNLYFHoTtyNA9HazB1n94y1z6jJHBU,5202
31
+ mx_bluesky/i24/serial/fixed_target/i24ssx_Chip_StartUp_py3v1.py,sha256=RDFRifmUcNbkwICCnAVy9QNT9iUFFjzNvHu-XHDkn-8,10790
32
+ mx_bluesky/i24/serial/fixed_target/i24ssx_moveonclick.py,sha256=VCHHUSOUvY_8IzbUVwraobPDa_ig4pVBvKXZexLVISI,5778
33
+ mx_bluesky/i24/serial/fixed_target/FT-gui-edm/CustomChip_py3v1.edl,sha256=_Oyged8nr4sRNsRhNbvuId0nTshzY1BoCOIbmk2LAUU,10325
34
+ mx_bluesky/i24/serial/fixed_target/FT-gui-edm/DetStage.edl,sha256=gqCNAANug952ZM7_7Hmcta-nRmY8oMgQWuFG2xfDFMg,1977
35
+ mx_bluesky/i24/serial/fixed_target/FT-gui-edm/DiamondChipI24-py3v1.edl,sha256=eqOV27njC5woic1UxAXUnqXNwyo5ps6ZieSL_2ltWuw,55404
36
+ mx_bluesky/i24/serial/fixed_target/FT-gui-edm/ME14E-GeneralPurpose.edl,sha256=cpKpXfU668mGjIz35jUMTF8KAi0RI7WlVO2AR-EnJ8U,60868
37
+ mx_bluesky/i24/serial/fixed_target/FT-gui-edm/MappingLite-oxford_py3v1.edl,sha256=-zIGNE1V-O3uzGgBAdvP4comQdbkqfOunwBdEFiaciQ,38846
38
+ mx_bluesky/i24/serial/fixed_target/FT-gui-edm/PMAC_Command.edl,sha256=2KUy2iEcX9AC07zSH3Sp97b5qauGIm8_HjvoQ4pkyCU,1417
39
+ mx_bluesky/i24/serial/fixed_target/FT-gui-edm/Shutter_Control.edl,sha256=o2PDoIFzeErIUijDbGdfWdrh3wd5GFAqEsDD2at2a4k,1601
40
+ mx_bluesky/i24/serial/fixed_target/FT-gui-edm/microdrop_alignment.edl,sha256=8TWQTIBnX3OLa1kjsibsCnG5wCVotPYIOHwFam7rJe4,14679
41
+ mx_bluesky/i24/serial/fixed_target/FT-gui-edm/nudgechip.edl,sha256=IgLLF7gcNoG8Z4t9FTA7_4ggUccNm6-ekK5bb0V4ekY,15711
42
+ mx_bluesky/i24/serial/fixed_target/FT-gui-edm/pumpprobe-py3v1.edl,sha256=-E5-njqa9UnyeeqbAYPsXnVdRM_HBCly825aZNT9gsg,22558
43
+ mx_bluesky/i24/serial/fixed_target/FT-gui-edm/short1-laser.png,sha256=wDNuKCa_8hUPy4W01vdIrfdZtCyQKT8qVS5AS6kOTmo,9740
44
+ mx_bluesky/i24/serial/fixed_target/FT-gui-edm/short2-laser.png,sha256=MrdiCFX7j-ODkfSdzc4NQ_8hj2Gs8i9gQqWyNXvdM5s,10189
45
+ mx_bluesky/i24/serial/parameters/__init__.py,sha256=AoL4WdUHmarre1J0inFH_M59RymX7uPn-G7HX8w3Gr4,404
46
+ mx_bluesky/i24/serial/parameters/constants.py,sha256=3_k3JA7KXr1uKTzpELRJMq3OQvC1d9QCQWIcJtBeTEw,1484
47
+ mx_bluesky/i24/serial/parameters/experiment_parameters.py,sha256=FfxJmczWKLcxRRCflY9473ieBte6JeFBN-cxj1B8d_8,3411
48
+ mx_bluesky/i24/serial/parameters/utils.py,sha256=y1BLxjWPOQg6wM-tCtdHMSQUC87cgl01sk6VpHWjIAk,2079
49
+ mx_bluesky/i24/serial/parameters/fixed_target/cs/cs_maker.json,sha256=n8FxMtq3iFsbG3IIrFmgQWDdnG_BsFXZ_P40Z7wIuE4,142
50
+ mx_bluesky/i24/serial/parameters/fixed_target/cs/motor_direction.txt,sha256=oIPpcQpqCrKz5dPZ-qQ5gQ2Sdqtj6nsnf66pN8PGU50,199
51
+ mx_bluesky/i24/serial/parameters/fixed_target/pvar_files/minichip-oxford.pvar,sha256=SN4deU199dMcA1Bcx1BF6CBMvoSszxJWZC6vt7_5fHc,284
52
+ mx_bluesky/i24/serial/parameters/fixed_target/pvar_files/oxford.pvar,sha256=pZbFOEiN_S5yiTEtqdNHmTMtnQY-W2ImXVBYCovPCx0,1842
53
+ mx_bluesky/i24/serial/setup_beamline/__init__.py,sha256=UhBdMcPdJMzwV0d8DKOBzvYNd6TDSwcP9GJVqfGa7Jc,261
54
+ mx_bluesky/i24/serial/setup_beamline/ca.py,sha256=HdU4OUAT2du7cPfIssMjUNvIe9jQQChvCwnkiTw1_aA,1590
55
+ mx_bluesky/i24/serial/setup_beamline/pv.py,sha256=Wen5tTUBggb5Gf4f2yar5Rkn0GbkLRpKu6rbbFb6qPM,15566
56
+ mx_bluesky/i24/serial/setup_beamline/pv_abstract.py,sha256=KVj1_HiTb51RmG0wxp-kxIDuwyQYo0wMCARXnkX-dtc,1796
57
+ mx_bluesky/i24/serial/setup_beamline/setup_beamline.py,sha256=F0HHyj5WwdZzdHynnBpZ5t75UMTACxIFb0etwk1hTz0,18332
58
+ mx_bluesky/i24/serial/setup_beamline/setup_detector.py,sha256=iNnAjtD18Jd_mxGHeYkdhmi4ZozZkhPwa3V1FIlB1r0,3315
59
+ mx_bluesky/i24/serial/setup_beamline/setup_zebra_plans.py,sha256=dzkml6AbJovQr4znygV4yg2wrUffNQcRpgAQqGx0siY,17019
60
+ mx_bluesky/parameters/__init__.py,sha256=JfT3Y5XiAQAD2IHedVxb5KVZzC9B47HVe6GPuiCCS1U,583
61
+ mx_bluesky/parameters/components.py,sha256=3D2ww7xV3AY47lASqqOq8JXuiFafb4ZBbHuauAGa_-k,5659
62
+ mx_bluesky-0.3.1.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
63
+ mx_bluesky-0.3.1.dist-info/METADATA,sha256=BA3YdXE-z6zmKD2FK2S1Wa0YxmEQJuzHSjHetcfLe7Q,16677
64
+ mx_bluesky-0.3.1.dist-info/WHEEL,sha256=nCVcAvsfA9TDtwGwhYaRrlPhTLV9m-Ga6mdyDtuwK18,91
65
+ mx_bluesky-0.3.1.dist-info/entry_points.txt,sha256=LHs220CM6hOrmptR6i9pLzyWZfJ0_PZ4Mvyp2VFNsgY,186
66
+ mx_bluesky-0.3.1.dist-info/top_level.txt,sha256=S4rrzXIUef58ulf_04wn01XGZ3xeJjXs4LPEJ_xoF-I,11
67
+ mx_bluesky-0.3.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: setuptools (73.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -0,0 +1,4 @@
1
+ [console_scripts]
2
+ mx-bluesky = mx_bluesky.__main__:main
3
+ run_extruder = mx_bluesky.i24.serial.run_serial:run_extruder
4
+ run_fixed_target = mx_bluesky.i24.serial.run_serial:run_fixed_target