From f6cb728887226034b79d80bb5aaa62a194e42f0f Mon Sep 17 00:00:00 2001 From: Barentine Date: Fri, 26 Feb 2021 22:19:56 -0500 Subject: [PATCH 1/3] set stack settings for each series and allow them to be passed in dict/mdh format --- PYME/Acquire/SpoolController.py | 3 ++- PYME/Acquire/protocol.py | 17 ++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/PYME/Acquire/SpoolController.py b/PYME/Acquire/SpoolController.py index ae1dd27c9..666414bbe 100644 --- a/PYME/Acquire/SpoolController.py +++ b/PYME/Acquire/SpoolController.py @@ -414,7 +414,8 @@ def StartSpooling(self, fn=None, stack=None, compLevel=None, if stack: protocol = protocol_z protocol.dwellTime = z_dwell - #print(protocol) + stack_settings = stack if hasattr(stack, 'keys') else None + protocol.set_stack_positions(stack_settings) else: protocol = protocol diff --git a/PYME/Acquire/protocol.py b/PYME/Acquire/protocol.py index 056d6fc77..435ee7b13 100644 --- a/PYME/Acquire/protocol.py +++ b/PYME/Acquire/protocol.py @@ -192,11 +192,13 @@ def __init__(self, taskList, startFrame, dwellTime, metadataEntries=[], prefligh self.slice_order = slice_order self.require_camera_restart = require_camera_restart - - def Init(self, spooler): - self.zPoss = np.arange(scope.stackSettings.GetStartPos(), - scope.stackSettings.GetEndPos() + .95 * scope.stackSettings.GetStepSize(), - scope.stackSettings.GetStepSize() * scope.stackSettings.GetDirection()) + + def set_stack_positions(self, stack_mdh=None): + stack_mdh = dict() if stack_mdh is None else stack_mdh + step_size = stack_mdh.get('StackSettings.StepSize', scope.stackSettings.GetStepSize()) + self.zPoss = np.arange(stack_mdh.get('StackSettings.StartPos', scope.stackSettings.GetStartPos()), + stack_mdh.get('StackSettings.EndPos', scope.stackSettings.GetEndPos()) + .95 * step_size, + step_size * scope.stackSettings.GetDirection()) if self.slice_order != 'saw': if self.slice_order == 'random': @@ -208,9 +210,10 @@ def Init(self, spooler): else: # even self.zPoss = np.concatenate([self.zPoss[::2], self.zPoss[-1::-2]]) + + self.piezoName = 'Positioning.%s' % stack_mdh.get('StackSettings.ScanPiezo', GetScanChannel()) - - self.piezoName = 'Positioning.%s' % scope.stackSettings.GetScanChannel() + def Init(self, spooler): self.startPos = scope.state[self.piezoName + '_target'] #FIXME - _target positions shouldn't be part of scope state self.pos = 0 From 52da6cee3a24c443d25a9b1d94e1bbcd39d29a84 Mon Sep 17 00:00:00 2001 From: Barentine Date: Fri, 26 Feb 2021 22:41:25 -0500 Subject: [PATCH 2/3] fix getScanChannel call --- PYME/Acquire/protocol.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PYME/Acquire/protocol.py b/PYME/Acquire/protocol.py index 435ee7b13..99f5c34a3 100644 --- a/PYME/Acquire/protocol.py +++ b/PYME/Acquire/protocol.py @@ -211,7 +211,7 @@ def set_stack_positions(self, stack_mdh=None): # even self.zPoss = np.concatenate([self.zPoss[::2], self.zPoss[-1::-2]]) - self.piezoName = 'Positioning.%s' % stack_mdh.get('StackSettings.ScanPiezo', GetScanChannel()) + self.piezoName = 'Positioning.%s' % stack_mdh.get('StackSettings.ScanPiezo', scope.stackSettings.GetScanChannel()) def Init(self, spooler): self.startPos = scope.state[self.piezoName + '_target'] #FIXME - _target positions shouldn't be part of scope state From d59149de69aac597bf19d5a0f703cca007fe9ecd Mon Sep 17 00:00:00 2001 From: Barentine Date: Fri, 26 Feb 2021 23:08:56 -0500 Subject: [PATCH 3/3] allow direction in scan without adding metadata key --- PYME/Acquire/protocol.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/PYME/Acquire/protocol.py b/PYME/Acquire/protocol.py index 99f5c34a3..6950bd621 100644 --- a/PYME/Acquire/protocol.py +++ b/PYME/Acquire/protocol.py @@ -195,10 +195,11 @@ def __init__(self, taskList, startFrame, dwellTime, metadataEntries=[], prefligh def set_stack_positions(self, stack_mdh=None): stack_mdh = dict() if stack_mdh is None else stack_mdh - step_size = stack_mdh.get('StackSettings.StepSize', scope.stackSettings.GetStepSize()) - self.zPoss = np.arange(stack_mdh.get('StackSettings.StartPos', scope.stackSettings.GetStartPos()), - stack_mdh.get('StackSettings.EndPos', scope.stackSettings.GetEndPos()) + .95 * step_size, - step_size * scope.stackSettings.GetDirection()) + start = stack_mdh.get('StackSettings.StartPos', scope.stackSettings.GetStartPos()) + stop = stack_mdh.get('StackSettings.EndPos', scope.stackSettings.GetEndPos()) + direction = 1 if stop > start else -1 + step = direction * stack_mdh.get('StackSettings.StepSize', scope.stackSettings.GetStepSize()) + self.zPoss = np.arange(start, stop + .95 * step, step) if self.slice_order != 'saw': if self.slice_order == 'random':