From 40f53655e0498c4bae104e310f63cb5b1a6e3f23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Tcho=C5=84?= Date: Sat, 30 May 2026 17:27:29 +0200 Subject: [PATCH 1/3] You cannot `get_data_from_shared_memory` if data is an error report --- src/instamatic/camera/camera_client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/instamatic/camera/camera_client.py b/src/instamatic/camera/camera_client.py index 08536fbb..2825f05a 100644 --- a/src/instamatic/camera/camera_client.py +++ b/src/instamatic/camera/camera_client.py @@ -139,7 +139,7 @@ def _eval_dct(self, dct): else: raise RuntimeError(f'Received empty response when evaluating {dct=}') - if self.use_shared_memory and acquiring_image and data: + if status == 200 and self.use_shared_memory and acquiring_image and data: data = self.get_data_from_shared_memory(**data) if status == 200: From 7e35ec53c6cbd3caaa57ea67893308f28d025f5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Tcho=C5=84?= Date: Sat, 18 Jul 2026 12:14:19 +0200 Subject: [PATCH 2/3] Pre-set starting beamshift before experiment to avoid issues with first frame --- src/instamatic/experiments/fast_adt/experiment.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/instamatic/experiments/fast_adt/experiment.py b/src/instamatic/experiments/fast_adt/experiment.py index ea87ffb2..2d70fe2a 100644 --- a/src/instamatic/experiments/fast_adt/experiment.py +++ b/src/instamatic/experiments/fast_adt/experiment.py @@ -137,7 +137,10 @@ def buffer(self) -> list[tuple[int, np.ndarray, dict]]: @property def has_beamshifts(self) -> bool: - return {'beamshift_x', 'beamshift_y'}.issubset(self.table.columns) + columns = ['beamshift_x', 'beamshift_y'] + columns_exist = set(columns).issubset(self.table.columns) + columns_have_nans = self.table[columns].isna().any().any() + return columns_exist and not columns_have_nans @property def osc_angle(self) -> float: @@ -497,6 +500,8 @@ def pathing_save_to_files(self) -> None: def collect_run(self, run: Run) -> None: """Collect `run.steps` and place them in `self.steps` Queue.""" + if run.has_beamshifts: + self.ctrl.beamshift.set(*run.table[['beamshift_x', 'beamshift_y']].iloc[0]) with self.ctrl.beam.unblanked(delay=0.2): if run.continuous: self._collect_scans(run=run) From 10d85a4ae7d8314476e02d6641999712694cc78e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Tcho=C5=84?= Date: Sat, 18 Jul 2026 12:44:57 +0200 Subject: [PATCH 3/3] Look for NaNs only after asserting columns exist --- src/instamatic/experiments/fast_adt/experiment.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/instamatic/experiments/fast_adt/experiment.py b/src/instamatic/experiments/fast_adt/experiment.py index 2d70fe2a..af642a1c 100644 --- a/src/instamatic/experiments/fast_adt/experiment.py +++ b/src/instamatic/experiments/fast_adt/experiment.py @@ -139,8 +139,7 @@ def buffer(self) -> list[tuple[int, np.ndarray, dict]]: def has_beamshifts(self) -> bool: columns = ['beamshift_x', 'beamshift_y'] columns_exist = set(columns).issubset(self.table.columns) - columns_have_nans = self.table[columns].isna().any().any() - return columns_exist and not columns_have_nans + return columns_exist and not self.table[columns].isna().any().any() @property def osc_angle(self) -> float: