From 5e06e49c45ed35e41ed0cc698006bfcdbabe4b35 Mon Sep 17 00:00:00 2001 From: Philipp Dijkstal Date: Tue, 3 Dec 2024 17:27:53 +0100 Subject: [PATCH] status 2024-12-03 --- ext/bscacquisition.py | 4 +++- interface/__init__.py | 1 + interface/load.py | 13 ++++++++----- interface/save.py | 2 +- interface/snap.py | 4 +++- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/ext/bscacquisition.py b/ext/bscacquisition.py index 837ac55..066bfda 100644 --- a/ext/bscacquisition.py +++ b/ext/bscacquisition.py @@ -11,6 +11,8 @@ class BSCAcquisition(Acquisition): def _acquire(self, filename, channels=None, data_base_dir=None, scan_info=None, n_pulses=100, **kwargs): + + print('*** Reading out the cache ****') queue =channels[0] # abusing interface since BSAcquisition assume a list of channels # allocating space @@ -27,7 +29,7 @@ class BSCAcquisition(Acquisition): for chn in chns: data[chn]['data'][i] = msg[chn] data['pulse_id'][i]=msg['pid'] - + print(msg['pid']) # write out the data file hid = h5py.File(filename,'w') hid.create_dataset('pulse_id', data = data['pulse_id']) diff --git a/interface/__init__.py b/interface/__init__.py index 7aca08e..ba53623 100644 --- a/interface/__init__.py +++ b/interface/__init__.py @@ -12,3 +12,4 @@ from .slic import SlicScan from .slic import importSlicScan from .doocs import doocsread from .doocs import doocswrite + diff --git a/interface/load.py b/interface/load.py index 9d82b6d..ce28a10 100644 --- a/interface/load.py +++ b/interface/load.py @@ -5,21 +5,24 @@ def loadDataset(filename): hid = h5py.File(filename, "r") icount = 0 snap = loadSnap(hid) - data =[] - act = [] + data={} + act= {} + maxID = 0 for key in hid.keys(): if 'scan' in key: ID = int(key.split('_')[1]) + if ID > maxID: + maxID = ID print('Reading scan_%d' % ID) - data.append(loadData(hid,ID)) - act.append(loadActuator(hid,ID)) + data[ID]=loadData(hid,ID) + act[ID]=loadActuator(hid,ID) icount +=1 hid.close() if icount == 0: return None, None, None elif icount == 1: return data[0], act[0],snap - return data,act,snap + return [data[j] for j in range(maxID+1)],[act[j] for j in range(maxID+1)],snap def loadSnap(hid): snap={} diff --git a/interface/save.py b/interface/save.py index 934c036..c902a84 100644 --- a/interface/save.py +++ b/interface/save.py @@ -19,7 +19,7 @@ def getDatasetFileName(program='Unknown'): path = '%s/%s' % (path,day) if not os.path.exists(path): os.makedirs(path) - datetag = datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S_%f') + datetag = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') filename=('%s/%s_%s' % (path, program.replace(' ','_'), datetag)) return filename diff --git a/interface/snap.py b/interface/snap.py index d4a6a3e..8e3c742 100644 --- a/interface/snap.py +++ b/interface/snap.py @@ -73,10 +73,12 @@ def getSnapVal(pvs=None): if not pvs: return None ret={} - val = [pv.value for pv in pvs] + val = [pv.get(timeout=0.1) for pv in pvs] for i,pv in enumerate(pvs): if not val[i] is None: # filter out None values ret[pv.pvname]=float(val[i]) + else: + print('Timeout:',pv.pvname) return ret def saveSnap(pvs={},label="", comment = "generated by application",reqfile = "SF_settings.yaml"):