September 27
This commit is contained in:
@@ -18,7 +18,7 @@ esac
|
||||
done
|
||||
|
||||
/opt/gfa/pshell/pshell \
|
||||
-version=v1_17 \
|
||||
-version=v1_17 -last \
|
||||
-py3 \
|
||||
-m=${PKG} \
|
||||
-z \
|
||||
|
||||
@@ -19,7 +19,7 @@ done
|
||||
|
||||
|
||||
/opt/gfa/pshell/pshell \
|
||||
-version=v1_17 \
|
||||
-version=v1_17 -last \
|
||||
-z \
|
||||
-py3 \
|
||||
-nbcf=true \
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#Mon Jan 17 16:00:40 CET 2022
|
||||
#Tue Sep 06 10:38:23 CEST 2022
|
||||
spatialCalOffsetY=-50.02549719530852
|
||||
spatialCalOffsetX=-50.01953888237593
|
||||
colormapLogarithmic=false
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
#Mon Mar 07 12:12:49 CET 2022
|
||||
#Fri Jun 17 06:58:23 CEST 2022
|
||||
minValue=0.0
|
||||
unit=eV
|
||||
offset=0.0
|
||||
maxValue=20000.0
|
||||
precision=3
|
||||
scale=1000.0
|
||||
resolution=NaN
|
||||
minValue=0.0
|
||||
unit=eV
|
||||
sign_bit=0
|
||||
scale=1000.0
|
||||
description=null
|
||||
resolution=NaN
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#Tue Jun 15 11:03:15 CEST 2021
|
||||
#Fri Jun 17 06:58:23 CEST 2022
|
||||
bins=1000
|
||||
min=11400.0
|
||||
max=11200.0
|
||||
precision=-1
|
||||
description=null
|
||||
numberOfSamples=10000
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#Fri Apr 30 07:45:13 CEST 2021
|
||||
#Fri Jun 17 06:58:23 CEST 2022
|
||||
bins=1000
|
||||
min=0.0
|
||||
max=40.0
|
||||
precision=-1
|
||||
description=null
|
||||
numberOfSamples=10000
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#Mon May 03 09:21:35 CEST 2021
|
||||
#Fri Jun 17 06:58:23 CEST 2022
|
||||
measures=10
|
||||
precision=-1
|
||||
description=null
|
||||
interval=-1
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#Mon May 03 09:21:52 CEST 2021
|
||||
#Fri Jun 17 06:58:23 CEST 2022
|
||||
measures=10
|
||||
precision=-1
|
||||
description=null
|
||||
interval=-1
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#Mon May 03 09:15:04 CEST 2021
|
||||
#Fri Jun 17 06:58:23 CEST 2022
|
||||
measures=10
|
||||
precision=-1
|
||||
description=null
|
||||
interval=-1
|
||||
integrate=false
|
||||
|
||||
@@ -51,6 +51,8 @@ import ch.psi.pshell.data.LayoutTable as LayoutTable
|
||||
import ch.psi.pshell.data.LayoutFDA as LayoutFDA
|
||||
import ch.psi.pshell.data.LayoutSF as LayoutSF
|
||||
|
||||
import ch.psi.pshell.device.Camera as Camera
|
||||
import ch.psi.pshell.device.CameraBase as CameraBase
|
||||
import ch.psi.pshell.device.Device as Device
|
||||
import ch.psi.pshell.device.DeviceBase as DeviceBase
|
||||
import ch.psi.pshell.device.GenericDevice as GenericDevice
|
||||
@@ -89,6 +91,8 @@ import ch.psi.pshell.device.Readable.ReadableArray as ReadableArray
|
||||
import ch.psi.pshell.device.Readable.ReadableMatrix as ReadableMatrix
|
||||
import ch.psi.pshell.device.Readable.ReadableCalibratedArray as ReadableCalibratedArray
|
||||
import ch.psi.pshell.device.Readable.ReadableCalibratedMatrix as ReadableCalibratedMatrix
|
||||
import ch.psi.pshell.device.ArrayRegisterStats as ArrayRegisterStats
|
||||
import ch.psi.pshell.device.DescStatsDouble as DescStatsDouble
|
||||
import ch.psi.pshell.device.ArrayCalibration as ArrayCalibration
|
||||
import ch.psi.pshell.device.MatrixCalibration as MatrixCalibration
|
||||
import ch.psi.pshell.device.Writable as Writable
|
||||
@@ -261,6 +265,8 @@ from javax.swing.SwingUtilities import invokeLater, invokeAndWait
|
||||
import org.jfree.ui.RectangleAnchor as RectangleAnchor
|
||||
import org.jfree.ui.TextAnchor as TextAnchor
|
||||
|
||||
import ch.psi.pshell.xscan.ProcessorXScan as ProcessorXScan
|
||||
|
||||
|
||||
def string_to_obj(o):
|
||||
if is_string(o):
|
||||
@@ -414,6 +420,20 @@ class ManualScan (ch.psi.pshell.scan.ManualScan):
|
||||
else:
|
||||
return self._dimensions
|
||||
|
||||
def getHardwareScanClass(config):
|
||||
cls = Class.forName(config["class"])
|
||||
class HardwareScan(cls):
|
||||
def __init__(self, config, writable, readables, start, end, stepSize, passes, zigzag):
|
||||
cls.__init__(self, config, writable, readables, start, end, stepSize, passes, zigzag)
|
||||
def onAfterReadout(self, record):
|
||||
__after_readout(self, record)
|
||||
def onBeforePass(self, num_pass):
|
||||
__before_pass(self, num_pass)
|
||||
def onAfterPass(self, num_pass):
|
||||
__after_pass(self, num_pass)
|
||||
return HardwareScan
|
||||
|
||||
|
||||
class BinarySearch(ch.psi.pshell.scan.BinarySearch):
|
||||
def onBeforeReadout(self, pos): __before_readout(self, pos)
|
||||
def onAfterReadout(self, rec): __after_readout(self, rec)
|
||||
|
||||
@@ -275,23 +275,48 @@ def hscan(config, writable, readables, start, end, steps, passes=1, zigzag=False
|
||||
Returns:
|
||||
ScanResult.
|
||||
"""
|
||||
cls = Class.forName(config["class"])
|
||||
class HardwareScan(cls):
|
||||
def __init__(self, config, writable, readables, start, end, stepSize, passes, zigzag):
|
||||
cls.__init__(self, config, writable, readables, start, end, stepSize, passes, zigzag)
|
||||
def onAfterReadout(self, record):
|
||||
__after_readout(self, record)
|
||||
def onBeforePass(self, num_pass):
|
||||
__before_pass(self, num_pass)
|
||||
def onAfterPass(self, num_pass):
|
||||
__after_pass(self, num_pass)
|
||||
|
||||
readables=to_list(string_to_obj(readables))
|
||||
scan = HardwareScan(config, writable,readables, start, end , steps, int(passes), zigzag)
|
||||
cls = getHardwareScanClass(config)
|
||||
scan = cls(config, writable,readables, start, end , steps, int(passes), zigzag)
|
||||
processScanPars(scan, pars)
|
||||
scan.start()
|
||||
return scan.getResult()
|
||||
|
||||
def oscan(ioc, prefix, writable, readables, start, end, steps, integration_time, additional_backlash=0, passes=1, zigzag=False, **pars):
|
||||
"""OTF scan based on crlogic
|
||||
|
||||
Args:
|
||||
ioc(string): Crlogic ioc
|
||||
prefix(string): Crlogic prefix
|
||||
writable(Writable): A cslogic positioner
|
||||
readables(list of Readable): List of crlogic sensors
|
||||
start(float): start positions of writable.
|
||||
end(float): final positions of writables.
|
||||
steps(int or float): number of scan steps (int) or step size (float).
|
||||
passes(int, optional): number of passes
|
||||
integration_time(float)
|
||||
additional_backlash(float, optional)
|
||||
pars(keyworded variable length arguments, optional): scan optional named arguments:
|
||||
- title(str, optional): plotting window name.
|
||||
- after_read (function(record, scan), optional): callback on each step, after sampling.
|
||||
- before_pass (function(pass_num, scan), optional): callback before each scan pass execution.
|
||||
- after_pass (function(pass_num, scan), optional): callback after each scan pass execution.
|
||||
- abort_on_error (bool, optional): if true then aborts scan in sensor failures. Default is false.
|
||||
- monitors (list of Device, optional): device values are saved on every change event during the scan.
|
||||
- snaps (list of Readable, optional): snapshot device values are saved before the scan.
|
||||
- meta (dict, optional): scan metadata.
|
||||
|
||||
Returns:
|
||||
ScanResult.
|
||||
"""
|
||||
config = {}
|
||||
config["class"] = "ch.psi.pshell.crlogic.CrlogicScan"
|
||||
config["ioc"] = ioc
|
||||
config["prefix"] = prefix
|
||||
config["integrationTime"] = integration_time
|
||||
config["additionalBacklash"] = additional_backlash
|
||||
return hscan(config, writable, readables, start, end, steps, **pars)
|
||||
|
||||
def bscan(stream, records, timeout = None, passes=1, **pars):
|
||||
"""BS Scan: records all values in a beam synchronous stream.
|
||||
|
||||
@@ -417,6 +442,18 @@ def escan(name, **pars):
|
||||
return scan.getResult()
|
||||
|
||||
|
||||
def xscan(file_name, arguments={}):
|
||||
""" Run FDA's XScan (devined in XML file)
|
||||
|
||||
Args:
|
||||
file_name(string): Name of the file (relative to XScan base folder)
|
||||
arguments(dict): map of of XScan variables
|
||||
E.g: in a linear positioner {"idXXXX.start":0.0, "idXXXX.end":5.0, "idXXXX.step_size":0.1})
|
||||
|
||||
"""
|
||||
ProcessorXScan().execute(file_name,arguments)
|
||||
|
||||
|
||||
def bsearch(writables, readable, start, end, steps, maximum = True, strategy = "Normal", latency=0.0, relative=False, **pars):
|
||||
"""Binary search: searches writables in a binary search fashion to find a local maximum for the readable.
|
||||
|
||||
@@ -680,8 +717,9 @@ def create_dataset(path, type, unsigned=False, dimensions=None, features=None):
|
||||
|
||||
Args:
|
||||
path(str): Path to dataset relative to the current persistence context root.
|
||||
type(str): array type 'b' = byte, 'h' = short, 'i' = int, 'l' = long, 'f' = float,
|
||||
'd' = double, 'c' = char, 's' = String, 'z'=bool, 'o' = Object
|
||||
type(str or class or Readable): array type 'b' = byte, 'h' = short, 'i' = int, 'l' = long, 'f' = float,
|
||||
'd' = double, 'c' = char, 's' = String, 'z'=bool, 'o' = Object
|
||||
if Readable then create a dataset appropriete for store readable data
|
||||
unsigned(boolean, optional)
|
||||
dimensions(tuple of int, optional): a 0 value means variable length in that dimension.
|
||||
features(dictionary, optional): storage features for the dataset, format specific.
|
||||
@@ -693,7 +731,11 @@ def create_dataset(path, type, unsigned=False, dimensions=None, features=None):
|
||||
Returns:
|
||||
None
|
||||
"""
|
||||
get_context().dataManager.createDataset(path, ScriptUtils.getType(type), unsigned, dimensions, features)
|
||||
if isinstance (type,Readable):
|
||||
get_context().dataManager.createDataset(path, type,dimensions, features)
|
||||
else:
|
||||
cls = ScriptUtils.getType(type) if is_string(type) else type
|
||||
get_context().dataManager.createDataset(path, cls, unsigned, dimensions, features)
|
||||
|
||||
def create_table(path, names, types=None, lengths=None, features=None):
|
||||
"""Create an empty table (dataset of compound type) within the current persistence context.
|
||||
|
||||
@@ -467,6 +467,7 @@ from javax.swing import SwingUtilities
|
||||
from org.jfree.ui import RectangleAnchor as RectangleAnchor
|
||||
from org.jfree.ui import TextAnchor as TextAnchor
|
||||
|
||||
from ch.psi.pshell.xscan import ProcessorXScan as ProcessorXScan
|
||||
|
||||
def string_to_obj(o):
|
||||
if is_string(o):
|
||||
@@ -1391,6 +1392,17 @@ def escan(name, **pars):
|
||||
scan.start()
|
||||
return scan.getResult()
|
||||
|
||||
def xscan(file_name, arguments={}):
|
||||
""" Run FDA's XScan (devined in XML file)
|
||||
|
||||
Args:
|
||||
file_name(string): Name of the file (relative to XScan base folder)
|
||||
arguments(dict): map of of XScan variables
|
||||
E.g: in a linear positioner {"idXXXX.start":0.0, "idXXXX.end":5.0, "idXXXX.step_size":0.1})
|
||||
|
||||
"""
|
||||
ProcessorXScan().startExecute(file_name,arguments)
|
||||
|
||||
|
||||
def bsearch(writables, readable, start, end, steps, maximum = True, strategy = "Normal", latency=0.0, relative=False, **pars):
|
||||
"""Binary search: searches writables in a binary search fashion to find a local maximum for the readable.
|
||||
@@ -1655,7 +1667,7 @@ def create_dataset(path, type, unsigned=False, dimensions=None, features=None):
|
||||
|
||||
Args:
|
||||
path(str): Path to dataset relative to the current persistence context root.
|
||||
type(str): array type 'b' = byte, 'h' = short, 'i' = int, 'l' = long, 'f' = float,
|
||||
type(str or Readable): array type 'b' = byte, 'h' = short, 'i' = int, 'l' = long, 'f' = float,
|
||||
'd' = double, 'c' = char, 's' = String, 'z'=bool, 'o' = Object
|
||||
unsigned(boolean, optional)
|
||||
dimensions(tuple of int, optional): a 0 value means variable length in that dimension.
|
||||
@@ -1668,7 +1680,10 @@ def create_dataset(path, type, unsigned=False, dimensions=None, features=None):
|
||||
Returns:
|
||||
None
|
||||
"""
|
||||
get_context().getDataManager().createDataset(path, ScriptUtils.getType(type), unsigned, dimensions, features)
|
||||
if "read" in (dir(type)): #If is Readable
|
||||
get_context().getDataManager().createDataset(path, type,dimensions, features)
|
||||
else:
|
||||
get_context().getDataManager().createDataset(path, ScriptUtils.getType(type), unsigned, dimensions, features)
|
||||
|
||||
def create_table(path, names, types=None, lengths=None, features=None):
|
||||
"""Create an empty table (dataset of compound type) within the current persistence context.
|
||||
|
||||
Reference in New Issue
Block a user