scanning base Class created

This commit is contained in:
Lemke Henrik Till
2017-11-25 13:36:17 +01:00
parent adffe6022b
commit 18b5214ff5
2 changed files with 50 additions and 12 deletions
+49 -4
View File
@@ -1,18 +1,40 @@
import pyscan
import os
import json
class ScanSimple:
def __init__(self,adjustables,values,counterCallers,fina):
def __init__(self,adjustables,values,counterCallers,fina,basepath='',scan_info_dir=''):
self.Nsteps = len(values)
self.adjustables = adjustables
self.values_todo = values
self.values_done = None
self.values_done = []
self.counterCallers = counterCallers
self.fina = fina
self.nextStep = 0
self.basepath = basepath
self.scan_info_dir = scan_info_dir
self.scan_info = {'scan_parameters':
{
'name':[ta.name for ta in adjustables ],
'Id':[ta.Id for ta in adjustables]
},
'scan_values':[],
'scan_files':[],
'scan_step_info':[]}
self.scan_info_filename = os.path.join(self.scan_info_dir,fina)
self.scan_info_filename += '_scan_info.json'
def doNextStep(self):
def get_filename(self,stepNo,Ndigits=4):
fina = os.path.join(self.basepath,self.fina)
fina += '_setp%04d.h5'%stepNo
return fina
def doNextStep(self,step_info=None):
if not len(self.values_todo)>0:
return False
values_step = self.values_todo[0]
ms = []
fina = self.get_filename(self.nextStep)
for adj,tv in zip(self.adjustables,values_step):
ms.append(adj.changeTo(tv))
for tm in ms:
@@ -20,5 +42,28 @@ class ScanSimple:
for ctr in self.counterCallers:
ms.append(ctr.acquire(file_name=fina))
for tm in ms:
tm.wait()
tm.wait()
self.values_done.append(self.values_todo.pop(0))
self.appendScanInfo(values_step,fina,step_info=step_info)
self.writeScanInfo()
self.nextStep +=1
return True
def appendScanInfo(self,values_step,step_files=None,step_info=None):
self.scan_info['scan_values'].append(values_step)
self.scan_info['scan_files'].append(step_files)
self.scan_info['scan_step_info'].append(step_info)
def writeScanInfo(self):
with open(self.scan_info_filename,'w') as f:
json.dump(self.scan_info,f,indent=4,sort_keys=True)
def scanAll(self):
done = False
while not done:
done = not self.doNextStep()
+1 -8
View File
@@ -17,8 +17,7 @@ class MotorRecord:
self.Id = pvname
self._motor = _Motor(pvname)
self._elog = elog
if name:
self.name = name
self.name = name
# Conventional methods and properties for all Adjustable objects
@@ -155,12 +154,6 @@ class MotorRecord:
class Changer:
def __init__(self, target=None, parent=None, mover=None, hold=True, stopper=None):
self.target = target