Skip to content

Commit 97477b4

Browse files
committed
Read energy and insert into ispyb
1 parent dc6aa4a commit 97477b4

3 files changed

Lines changed: 38 additions & 3 deletions

File tree

src/murfey/client/contexts/sxt.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,12 @@ def register_sxt_data_collection(
6161
"source": str(self._basepath),
6262
"tag": tilt_series,
6363
"pixel_size_on_image": str(
64-
data_collection_parameters.get("pixel_size", 100)
64+
data_collection_parameters.get("pixel_size", 100) * 1e-10
6565
),
6666
"image_size_x": data_collection_parameters.get("image_size_x", 0),
6767
"image_size_y": data_collection_parameters.get("image_size_y", 0),
6868
"magnification": data_collection_parameters.get("magnification", 0),
69+
"energy": data_collection_parameters.get("energy", 0),
6970
"voltage": 0,
7071
}
7172
capture_post(
@@ -177,16 +178,43 @@ def post_transfer(
177178
).tolist()
178179
metadata["tilt_series_length"] = tilt_count_txrm[0]
179180

181+
if txrm_ole.exists("PositionInfo/AxisNames") and txrm_ole.exists(
182+
"PositionInfo/MotorPositions"
183+
):
184+
# The ImageInfo/Energy field is empty
185+
# Instead it needs extracting from the PositionInfo list
186+
axis_names = [
187+
i
188+
for i in txrm_ole.openstream("PositionInfo/AxisNames")
189+
.read()
190+
.decode("ascii")
191+
.split("\x00")
192+
if i
193+
]
194+
axis_values = np.frombuffer(
195+
txrm_ole.openstream("PositionInfo/MotorPositions").getvalue(),
196+
np.float32,
197+
)
198+
if "Energy" in axis_names:
199+
energy_index = list(np.array(axis_names) == "Energy").index(
200+
True
201+
)
202+
metadata["energy"] = int(round(axis_values[energy_index]))
203+
180204
if not metadata.get("has_reference", False):
181205
logger.debug(f"Reference image {transferred_file} not processed")
182206
return True
183207

208+
visit_index = transferred_file.parent.parts.index(environment.visit)
209+
destination_search_dir = "/".join(
210+
transferred_file.parent.parts[: visit_index + 2]
211+
)
184212
self.register_sxt_data_collection(
185213
tilt_series=transferred_file.stem,
186214
data_collection_parameters=metadata,
187215
file_extension=transferred_file.suffix,
188216
image_directory=environment.default_destinations.get(
189-
transferred_file.parent, transferred_file.parent
217+
Path(destination_search_dir), destination_search_dir
190218
),
191219
environment=environment,
192220
)

src/murfey/server/api/workflow.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,7 @@ class DCParameters(BaseModel):
301301
exposure_time: Optional[float] = None
302302
slit_width: Optional[float] = None
303303
phase_plate: bool = False
304+
energy: float = 0
304305
data_collection_tag: str = ""
305306

306307

@@ -327,6 +328,7 @@ def start_dc(
327328
"image_directory": str(rsync_basepath / dc_params.image_directory),
328329
"start_time": str(datetime.now()),
329330
"voltage": dc_params.voltage,
331+
"energy": dc_params.energy,
330332
"pixel_size": str(float(dc_params.pixel_size_on_image) * 1e9),
331333
"image_suffix": dc_params.file_extension,
332334
"experiment_type": dc_params.experiment_type,

src/murfey/workflows/register_data_collection.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ def run(message: dict, murfey_db: SQLModelSession) -> dict[str, bool]:
6565
imageDirectory=message["image_directory"],
6666
imageSuffix=message["image_suffix"],
6767
voltage=message["voltage"],
68+
wavelength=message["energy"],
6869
dataCollectionGroupId=dcgid,
6970
pixelSizeOnImage=message["pixel_size"],
7071
imageSizeX=message["image_size_x"],
@@ -81,7 +82,11 @@ def run(message: dict, murfey_db: SQLModelSession) -> dict[str, bool]:
8182
tag=(
8283
message.get("tag")
8384
if message["experiment_type"] == "tomography"
84-
else ""
85+
else (
86+
message.get("tag", "").split("_angle")[0]
87+
if message["experiment_type"] == "sxt"
88+
else ""
89+
)
8590
),
8691
).get("return_value", None)
8792
if dcid is None:

0 commit comments

Comments
 (0)