From ec261e020a811f70bd2cced282fd1b4e923895cf Mon Sep 17 00:00:00 2001 From: Sven Augustin Date: Wed, 4 Dec 2019 15:16:15 +0000 Subject: [PATCH] adjusted daq and scan logic --- slic/checkers/pvchecker.py | 9 ++++++++- slic/daq/bs.py | 6 +++--- slic/daq/dia.py | 11 +++++++---- slic/scans/scanner.py | 8 ++++---- 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/slic/checkers/pvchecker.py b/slic/checkers/pvchecker.py index 7bedd99f6..394815fdc 100644 --- a/slic/checkers/pvchecker.py +++ b/slic/checkers/pvchecker.py @@ -1,4 +1,5 @@ from epics import PV +from time import sleep def within(val, vmin, vmax): @@ -17,8 +18,14 @@ class PVChecker: self.wait_time = wait_time def check(self): - val = self.pv.get() + val = self.current() return within(val, self.vmin, self.vmax) + def current(self): + return self.pv.get() + + def sleep(self): + sleep(self.wait_time) + diff --git a/slic/daq/bs.py b/slic/daq/bs.py index 3fcf76d1b..ce2a9b7d8 100644 --- a/slic/daq/bs.py +++ b/slic/daq/bs.py @@ -63,9 +63,9 @@ class BS: def h5(self,fina=None,channel_list=None,N_pulses=None,default_path=True,queue_size=100): - if default_path: - fina = self._default_file_path%fina - +# if default_path: +# fina = self._default_file_path%fina +# if os.path.isfile(fina): print('!!! File %s already exists, would you like to delete it?'%fina) if input('(y/n)')=='y': diff --git a/slic/daq/dia.py b/slic/daq/dia.py index 059ef877f..834bccbac 100644 --- a/slic/daq/dia.py +++ b/slic/daq/dia.py @@ -1,5 +1,8 @@ +import os import datetime +from time import sleep from detector_integration_api import DetectorIntegrationClient +from .utilities import Acquisition class DIA: @@ -8,7 +11,7 @@ class DIA: self.client = DetectorIntegrationClient(api_address) print("\nDetector Integration API on %s" % api_address) # No pgroup by default - self.pgroup = 0 + self.pgroup = pgroup self.n_frames = 100 self.jf_name = jf_name self.jf_Ids = [] @@ -25,7 +28,7 @@ class DIA: def update_config(self, ): self.writer_config = { - "output_file": "/sf/%s/data/p%d/raw/test_data.h5" % (self.instrument, self.pgroup), + "output_file": "/sf/%s/data/%s/raw/test_data.h5" % (self.instrument, self.pgroup), "user_id": self.pgroup, "n_frames": self.n_frames, "general/user": str(self.pgroup), @@ -77,7 +80,7 @@ class DIA: # '/sf/alvra/config/com/channel_lists/default_channel_list') self.bsread_config = { - 'output_file': '/sf/%s/data/p%d/raw/test_bsread.h5' % (self.instrument, self.pgroup), + 'output_file': '/sf/%s/data/%s/raw/test_bsread.h5' % (self.instrument, self.pgroup), 'user_id': self.pgroup, "general/user": str(self.pgroup), "general/process": __name__, @@ -180,7 +183,7 @@ class DIA: JF_factor? bsread_padding? """ - file_rootdir = '/sf/%s/data/p%d/raw/' % (self.instrument, self.pgroup) + file_rootdir = '/sf/%s/data/%s/raw/' % (self.instrument, self.pgroup) if file_name is None: # FIXME /dev/null crashes the data taking (h5py can't close /dev/null and crashes) diff --git a/slic/scans/scanner.py b/slic/scans/scanner.py index 6d8e9d9b5..ad14aad2b 100644 --- a/slic/scans/scanner.py +++ b/slic/scans/scanner.py @@ -4,7 +4,7 @@ import numpy as np from time import sleep import traceback -class ScannerSimple: +class ScanSimple: def __init__(self,adjustables,values,counterCallers,fina,Npulses=100,basepath='',scan_info_dir='',checker=None,scan_directories=False): self.Nsteps = len(values) self.pulses_per_step = Npulses @@ -47,9 +47,9 @@ class ScannerSimple: def doNextStep(self,step_info=None,verbose=True): if self.checker: - while not self.checker['checker_call'](*self.checker['args'],**self.checker['kwargs']): + while not self.checker.check(): print('Condition checker is not happy, waiting for OK conditions.') - sleep(self.checker['wait_time']) + self.checker.sleep() if not len(self.values_todo)>0: return False @@ -78,7 +78,7 @@ class ScannerSimple: if verbose: print('Done with acquisition') if self.checker: - if not self.checker['checker_call'](*self.checker['args'],**self.checker['kwargs']): + if not self.checker.check(): return True if callable(step_info): tstepinfo = step_info()