nxstools 4.34.0__py3-none-any.whl → 4.36.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nxstools/h5cppwriter.py +9 -9
- nxstools/h5rediswriter.py +215 -21
- nxstools/release.py +1 -1
- nxstools/xmltemplates/__init__.py +12 -0
- nxstools/xmltemplates/prodigyremote.xml +78 -0
- {nxstools-4.34.0.dist-info → nxstools-4.36.0.dist-info}/METADATA +1 -1
- {nxstools-4.34.0.dist-info → nxstools-4.36.0.dist-info}/RECORD +15 -14
- {nxstools-4.34.0.data → nxstools-4.36.0.data}/scripts/nxscollect +0 -0
- {nxstools-4.34.0.data → nxstools-4.36.0.data}/scripts/nxsconfig +0 -0
- {nxstools-4.34.0.data → nxstools-4.36.0.data}/scripts/nxscreate +0 -0
- {nxstools-4.34.0.data → nxstools-4.36.0.data}/scripts/nxsdata +0 -0
- {nxstools-4.34.0.data → nxstools-4.36.0.data}/scripts/nxsetup +0 -0
- {nxstools-4.34.0.data → nxstools-4.36.0.data}/scripts/nxsfileinfo +0 -0
- {nxstools-4.34.0.dist-info → nxstools-4.36.0.dist-info}/WHEEL +0 -0
- {nxstools-4.34.0.dist-info → nxstools-4.36.0.dist-info}/top_level.txt +0 -0
nxstools/h5cppwriter.py
CHANGED
|
@@ -1196,7 +1196,7 @@ class H5CppField(filewriter.FTField):
|
|
|
1196
1196
|
v = v[0, :, :]
|
|
1197
1197
|
shape = v.shape
|
|
1198
1198
|
if len(shape) == 2 and shape[1] == 1:
|
|
1199
|
-
# v.reshape([shape[0]]
|
|
1199
|
+
# v.reshape([shape[0]]]
|
|
1200
1200
|
v = v[0, :]
|
|
1201
1201
|
shape = v.shape
|
|
1202
1202
|
if len(shape) == 2 and shape[0] == 1:
|
|
@@ -1941,12 +1941,12 @@ class H5CppAttribute(filewriter.FTAttribute):
|
|
|
1941
1941
|
(hasattr(o, "__len__") and t == slice(0, len(o), None)):
|
|
1942
1942
|
if self.dtype in ['string', b'string']:
|
|
1943
1943
|
if isinstance(o, str):
|
|
1944
|
-
self.
|
|
1944
|
+
self.write(unicode(o))
|
|
1945
1945
|
else:
|
|
1946
1946
|
dtype = npunicode
|
|
1947
|
-
self.
|
|
1947
|
+
self.write(np.array(o, dtype=dtype))
|
|
1948
1948
|
else:
|
|
1949
|
-
self.
|
|
1949
|
+
self.write(np.array(o, dtype=self.dtype))
|
|
1950
1950
|
elif isinstance(t, slice):
|
|
1951
1951
|
var = self._h5object.read()
|
|
1952
1952
|
if self.dtype not in ['string', b'string']:
|
|
@@ -1956,11 +1956,11 @@ class H5CppAttribute(filewriter.FTAttribute):
|
|
|
1956
1956
|
var[t] = np.array(o, dtype=dtype)
|
|
1957
1957
|
var = var.astype(dtype)
|
|
1958
1958
|
try:
|
|
1959
|
-
self.
|
|
1959
|
+
self.write(var)
|
|
1960
1960
|
except Exception:
|
|
1961
1961
|
dtype = npunicode
|
|
1962
1962
|
tvar = np.array(var, dtype=dtype)
|
|
1963
|
-
self.
|
|
1963
|
+
self.write(tvar)
|
|
1964
1964
|
|
|
1965
1965
|
elif isinstance(t, tuple):
|
|
1966
1966
|
var = self._h5object.read()
|
|
@@ -1980,12 +1980,12 @@ class H5CppAttribute(filewriter.FTAttribute):
|
|
|
1980
1980
|
else:
|
|
1981
1981
|
var[t] = np.array(o, dtype=self.dtype).tolist()
|
|
1982
1982
|
var = var.astype(dtype)
|
|
1983
|
-
self.
|
|
1983
|
+
self.write(var)
|
|
1984
1984
|
else:
|
|
1985
1985
|
if isinstance(o, str) or isinstance(o, unicode):
|
|
1986
|
-
self.
|
|
1986
|
+
self.write(unicode(o))
|
|
1987
1987
|
else:
|
|
1988
|
-
self.
|
|
1988
|
+
self.write(np.array(o, dtype=self.dtype))
|
|
1989
1989
|
|
|
1990
1990
|
def __getitem__(self, t):
|
|
1991
1991
|
""" read attribute value
|
nxstools/h5rediswriter.py
CHANGED
|
@@ -1010,6 +1010,32 @@ class H5RedisGroup(H5Group):
|
|
|
1010
1010
|
raise Exception("Undefined constructor parameters")
|
|
1011
1011
|
H5Group.__init__(self, h5object, tparent)
|
|
1012
1012
|
self.__nxclass = nxclass
|
|
1013
|
+
self.__avcache_lock = threading.Lock()
|
|
1014
|
+
self.__avcache = {}
|
|
1015
|
+
|
|
1016
|
+
def set_attr_value(self, name, value):
|
|
1017
|
+
""" set device parameters
|
|
1018
|
+
|
|
1019
|
+
:param name: attribute name
|
|
1020
|
+
:type name: :obj:`str`
|
|
1021
|
+
:param value: attribute value
|
|
1022
|
+
:type value: :obj:`any`
|
|
1023
|
+
"""
|
|
1024
|
+
with self.__avcache_lock:
|
|
1025
|
+
self.__avcache[name] = value
|
|
1026
|
+
|
|
1027
|
+
def get_attr_value(self, name):
|
|
1028
|
+
""" get scan info parameters
|
|
1029
|
+
|
|
1030
|
+
:param name: attribute name
|
|
1031
|
+
:type name: :obj:`str`
|
|
1032
|
+
:returns value: attribute value
|
|
1033
|
+
:rtype value: :obj:`any`
|
|
1034
|
+
"""
|
|
1035
|
+
with self.__avcache_lock:
|
|
1036
|
+
# print(self.__avcache)
|
|
1037
|
+
vl = self.__avcache.get(name, None)
|
|
1038
|
+
return vl
|
|
1013
1039
|
|
|
1014
1040
|
def open(self, name):
|
|
1015
1041
|
""" open a file tree element
|
|
@@ -1235,10 +1261,14 @@ class H5RedisGroup(H5Group):
|
|
|
1235
1261
|
self.set_insname(n)
|
|
1236
1262
|
if REDIS and nxclass in ["NXentry", u'NXentry']:
|
|
1237
1263
|
self.reset_scaninfo(n)
|
|
1238
|
-
|
|
1264
|
+
gr = H5RedisGroup(
|
|
1239
1265
|
h5imp=H5Group.create_group(self, n, nxclass),
|
|
1240
1266
|
nxclass=nxclass)
|
|
1241
1267
|
|
|
1268
|
+
# print("CREATE", "NX_class", nxclass)
|
|
1269
|
+
self.set_attr_value("NX_class", nxclass)
|
|
1270
|
+
return gr
|
|
1271
|
+
|
|
1242
1272
|
def create_virtual_field(self, name, layout, fillvalue=0):
|
|
1243
1273
|
""" creates a virtual filed tres element
|
|
1244
1274
|
|
|
@@ -1354,6 +1384,43 @@ class H5RedisField(H5Field):
|
|
|
1354
1384
|
self.__jstream = None
|
|
1355
1385
|
self.__rstream = None
|
|
1356
1386
|
self.__rcounter = 0
|
|
1387
|
+
self.__avcache_lock = threading.Lock()
|
|
1388
|
+
self.__avcache = {}
|
|
1389
|
+
|
|
1390
|
+
def set_attr_value(self, name, value):
|
|
1391
|
+
""" set device parameters
|
|
1392
|
+
|
|
1393
|
+
:param name: attribute name
|
|
1394
|
+
:type name: :obj:`str`
|
|
1395
|
+
:param value: attribute value
|
|
1396
|
+
:type value: :obj:`any`
|
|
1397
|
+
"""
|
|
1398
|
+
with self.__avcache_lock:
|
|
1399
|
+
self.__avcache[name] = value
|
|
1400
|
+
|
|
1401
|
+
def get_attr_value(self, name):
|
|
1402
|
+
""" get scan info parameters
|
|
1403
|
+
|
|
1404
|
+
:param name: attribute name
|
|
1405
|
+
:type name: :obj:`str`
|
|
1406
|
+
:returns value: attribute value
|
|
1407
|
+
:rtype value: :obj:`any`
|
|
1408
|
+
"""
|
|
1409
|
+
with self.__avcache_lock:
|
|
1410
|
+
vl = self.__avcache.get(name, None)
|
|
1411
|
+
return vl
|
|
1412
|
+
|
|
1413
|
+
def get_attrs(self):
|
|
1414
|
+
""" get scan info parameters
|
|
1415
|
+
|
|
1416
|
+
:param name: attribute name
|
|
1417
|
+
:type name: :obj:`str`
|
|
1418
|
+
:returns value: attribute value
|
|
1419
|
+
:rtype value: :obj:`any`
|
|
1420
|
+
"""
|
|
1421
|
+
with self.__avcache_lock:
|
|
1422
|
+
vl = dict(self.__avcache)
|
|
1423
|
+
return vl
|
|
1357
1424
|
|
|
1358
1425
|
def append_stream(self, name, stream):
|
|
1359
1426
|
""" scan object
|
|
@@ -1511,7 +1578,7 @@ class H5RedisField(H5Field):
|
|
|
1511
1578
|
h5imp=super(H5RedisField, self).attributes)
|
|
1512
1579
|
|
|
1513
1580
|
def __set_step_channel_info(self, dsname, units, shape, strategy="STEP",
|
|
1514
|
-
o=None):
|
|
1581
|
+
o=None, av=None):
|
|
1515
1582
|
""" set step channel info
|
|
1516
1583
|
|
|
1517
1584
|
:param dsname: datasource name
|
|
@@ -1525,6 +1592,7 @@ class H5RedisField(H5Field):
|
|
|
1525
1592
|
:param o: object value to write
|
|
1526
1593
|
:type o: :obj:`any`
|
|
1527
1594
|
"""
|
|
1595
|
+
av = av or {}
|
|
1528
1596
|
attrs = self.attributes
|
|
1529
1597
|
sds = {
|
|
1530
1598
|
"name": dsname,
|
|
@@ -1541,8 +1609,8 @@ class H5RedisField(H5Field):
|
|
|
1541
1609
|
anames = [at.name for at in attrs]
|
|
1542
1610
|
for key, vl in attrdesc.items():
|
|
1543
1611
|
if vl[0] in anames:
|
|
1544
|
-
|
|
1545
|
-
|
|
1612
|
+
avl = av[vl[0]] if vl[0] in av.keys() else attrs[vl[0]].read()
|
|
1613
|
+
sds[key] = vl[1](filewriter.first(avl))
|
|
1546
1614
|
sds["nexus_path"] = self.path
|
|
1547
1615
|
self.append_scaninfo(sds, ["datadesc", dsname])
|
|
1548
1616
|
try:
|
|
@@ -1665,7 +1733,7 @@ class H5RedisField(H5Field):
|
|
|
1665
1733
|
else:
|
|
1666
1734
|
raise
|
|
1667
1735
|
|
|
1668
|
-
def __set_init_channel_info(self, dsname, units, shape, strategy, o):
|
|
1736
|
+
def __set_init_channel_info(self, dsname, units, shape, strategy, o, av):
|
|
1669
1737
|
""" set init channel info
|
|
1670
1738
|
|
|
1671
1739
|
:param dsname: datasource name
|
|
@@ -1691,8 +1759,8 @@ class H5RedisField(H5Field):
|
|
|
1691
1759
|
anames = [at.name for at in attrs]
|
|
1692
1760
|
for key, vl in attrdesc.items():
|
|
1693
1761
|
if vl[0] in anames:
|
|
1694
|
-
|
|
1695
|
-
|
|
1762
|
+
avl = av[vl[0]] if vl[0] in av.keys() else attrs[vl[0]].read()
|
|
1763
|
+
ids[key] = vl[1](filewriter.first(avl))
|
|
1696
1764
|
ids["nexus_path"] = self.path
|
|
1697
1765
|
pars = (self.get_scaninfo(["snapshot"]) or {}).keys()
|
|
1698
1766
|
dsn = dsname
|
|
@@ -1710,11 +1778,12 @@ class H5RedisField(H5Field):
|
|
|
1710
1778
|
np = str(filewriter.first(attrs[vl[0]].read()))
|
|
1711
1779
|
if vl[2] or np:
|
|
1712
1780
|
self.set_scaninfo(np, [key])
|
|
1713
|
-
|
|
1781
|
+
# print(key, np)
|
|
1782
|
+
if key == "title" and isinstance(np, str):
|
|
1714
1783
|
macro_name = np.split(" ")[0]
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1784
|
+
for mn, plot in titleplots.items():
|
|
1785
|
+
if mn in macro_name:
|
|
1786
|
+
self.append_scaninfo(plot, ["plots"])
|
|
1718
1787
|
|
|
1719
1788
|
except Exception as e:
|
|
1720
1789
|
print(str(e))
|
|
@@ -1726,18 +1795,31 @@ class H5RedisField(H5Field):
|
|
|
1726
1795
|
:param o: object value to write
|
|
1727
1796
|
:type o: :obj:`any`
|
|
1728
1797
|
"""
|
|
1729
|
-
|
|
1730
1798
|
attrs = self.attributes
|
|
1731
|
-
|
|
1799
|
+
av = self.get_attrs()
|
|
1800
|
+
strategy = av.get("nexdatas_strategy", None)
|
|
1801
|
+
if strategy is None:
|
|
1802
|
+
strategy = attrs["nexdatas_strategy"].read()
|
|
1803
|
+
strategy = filewriter.first(strategy)
|
|
1732
1804
|
dsname = "%s_%s" % (self._tparent.name, self.name)
|
|
1733
1805
|
dsnm = ""
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1806
|
+
dsnm = av.get("nexdatas_source", None)
|
|
1807
|
+
if dsnm is None and "nexdatas_source" in attrs.names():
|
|
1808
|
+
# dsnm = self.get_attr_value("nexdatas_source")
|
|
1809
|
+
# if dsnm is None:
|
|
1810
|
+
dsnm = attrs["nexdatas_source"].read()
|
|
1811
|
+
if dsnm is not None:
|
|
1812
|
+
dsnm = getdsname(filewriter.first(dsnm))
|
|
1737
1813
|
dsname = dsnm
|
|
1738
|
-
units = ""
|
|
1739
|
-
if
|
|
1740
|
-
units
|
|
1814
|
+
units = av.get("units", None)
|
|
1815
|
+
if units is None:
|
|
1816
|
+
if "units" in attrs.names():
|
|
1817
|
+
units = attrs["units"].read()
|
|
1818
|
+
print("READ UNIT", units)
|
|
1819
|
+
if units is not None:
|
|
1820
|
+
units = filewriter.first(units)
|
|
1821
|
+
else:
|
|
1822
|
+
units = ""
|
|
1741
1823
|
self.__dsname = dsname
|
|
1742
1824
|
shape = []
|
|
1743
1825
|
if hasattr(o, "shape"):
|
|
@@ -1749,9 +1831,10 @@ class H5RedisField(H5Field):
|
|
|
1749
1831
|
if strategy in ["STEP"] and dsnm:
|
|
1750
1832
|
# skip 2D images
|
|
1751
1833
|
if not shape or len(shape) < 2 or FileStream is not None:
|
|
1752
|
-
self.__set_step_channel_info(
|
|
1834
|
+
self.__set_step_channel_info(
|
|
1835
|
+
dsname, units, shape, strategy, o, av)
|
|
1753
1836
|
else:
|
|
1754
|
-
self.__set_init_channel_info(dsname, units, shape, strategy, o)
|
|
1837
|
+
self.__set_init_channel_info(dsname, units, shape, strategy, o, av)
|
|
1755
1838
|
|
|
1756
1839
|
def __setitem__(self, t, o):
|
|
1757
1840
|
""" set value
|
|
@@ -1799,6 +1882,31 @@ class H5RedisLink(H5Link):
|
|
|
1799
1882
|
if h5object is None:
|
|
1800
1883
|
raise Exception("Undefined constructor parameters")
|
|
1801
1884
|
H5Link.__init__(self, h5object, tparent)
|
|
1885
|
+
self.__avcache_lock = threading.Lock()
|
|
1886
|
+
self.__avcache = {}
|
|
1887
|
+
|
|
1888
|
+
def set_attr_value(self, name, value):
|
|
1889
|
+
""" set device parameters
|
|
1890
|
+
|
|
1891
|
+
:param name: attribute name
|
|
1892
|
+
:type name: :obj:`str`
|
|
1893
|
+
:param value: attribute value
|
|
1894
|
+
:type value: :obj:`any`
|
|
1895
|
+
"""
|
|
1896
|
+
with self.__avcache_lock:
|
|
1897
|
+
self.__avcache[name] = value
|
|
1898
|
+
|
|
1899
|
+
def get_attr_value(self, name):
|
|
1900
|
+
""" get scan info parameters
|
|
1901
|
+
|
|
1902
|
+
:param name: attribute name
|
|
1903
|
+
:type name: :obj:`str`
|
|
1904
|
+
:returns value: attribute value
|
|
1905
|
+
:rtype value: :obj:`any`
|
|
1906
|
+
"""
|
|
1907
|
+
with self.__avcache_lock:
|
|
1908
|
+
vl = self.__avcache.get(name, None)
|
|
1909
|
+
return vl
|
|
1802
1910
|
|
|
1803
1911
|
|
|
1804
1912
|
class H5RedisDataFilter(H5DataFilter):
|
|
@@ -2096,6 +2204,8 @@ class H5RedisAttributeManager(H5AttributeManager):
|
|
|
2096
2204
|
:returns: attribute object
|
|
2097
2205
|
:rtype: :class:`H5RedisAttribute`
|
|
2098
2206
|
"""
|
|
2207
|
+
if overwrite:
|
|
2208
|
+
self.set_attr_value(name, None)
|
|
2099
2209
|
return H5RedisAttribute(
|
|
2100
2210
|
h5imp=H5AttributeManager.create(
|
|
2101
2211
|
self, name, dtype, shape, overwrite))
|
|
@@ -2111,6 +2221,28 @@ class H5RedisAttributeManager(H5AttributeManager):
|
|
|
2111
2221
|
return H5RedisAttribute(
|
|
2112
2222
|
h5imp=H5AttributeManager.__getitem__(self, name))
|
|
2113
2223
|
|
|
2224
|
+
def set_attr_value(self, name, value):
|
|
2225
|
+
""" set device parameters
|
|
2226
|
+
|
|
2227
|
+
:param name: attribute name
|
|
2228
|
+
:type name: :obj:`str`
|
|
2229
|
+
:param value: attribute value
|
|
2230
|
+
:type value: :obj:`any`
|
|
2231
|
+
"""
|
|
2232
|
+
if hasattr(self._tparent, "set_attr_value"):
|
|
2233
|
+
return self._tparent.set_attr_value(name, value)
|
|
2234
|
+
|
|
2235
|
+
def get_attr_value(self, name):
|
|
2236
|
+
""" get scan info parameters
|
|
2237
|
+
|
|
2238
|
+
:param name: attribute name
|
|
2239
|
+
:type name: :obj:`str`
|
|
2240
|
+
:returns value: attribute value
|
|
2241
|
+
:rtype value: :obj:`any`
|
|
2242
|
+
"""
|
|
2243
|
+
if hasattr(self._tparent, "get_attr_value"):
|
|
2244
|
+
return self._tparent.get_attr_value(name)
|
|
2245
|
+
|
|
2114
2246
|
|
|
2115
2247
|
class H5RedisAttribute(H5Attribute):
|
|
2116
2248
|
|
|
@@ -2133,3 +2265,65 @@ class H5RedisAttribute(H5Attribute):
|
|
|
2133
2265
|
if h5object is None:
|
|
2134
2266
|
raise Exception("Undefined constructor parameters")
|
|
2135
2267
|
H5Attribute.__init__(self, h5object, tparent)
|
|
2268
|
+
|
|
2269
|
+
def read(self):
|
|
2270
|
+
""" read attribute value
|
|
2271
|
+
|
|
2272
|
+
:returns: python object
|
|
2273
|
+
:rtype: :obj:`any`
|
|
2274
|
+
"""
|
|
2275
|
+
vl = None
|
|
2276
|
+
if H5CPP:
|
|
2277
|
+
vl = self.get_attr_value(self.name)
|
|
2278
|
+
# print("READ", self.name, vl)
|
|
2279
|
+
if vl is None:
|
|
2280
|
+
# print("READ", self.name, vl)
|
|
2281
|
+
vl = self._h5object.read()
|
|
2282
|
+
# print("READ2", self.name, vl)
|
|
2283
|
+
if vl is not None:
|
|
2284
|
+
self.set_attr_value(self.name, vl)
|
|
2285
|
+
if self.dtype in ['string', b'string']:
|
|
2286
|
+
try:
|
|
2287
|
+
vl = vl.decode('UTF-8')
|
|
2288
|
+
except Exception:
|
|
2289
|
+
pass
|
|
2290
|
+
return vl
|
|
2291
|
+
|
|
2292
|
+
def write(self, o):
|
|
2293
|
+
""" write attribute value
|
|
2294
|
+
|
|
2295
|
+
:param o: python object
|
|
2296
|
+
:type o: :obj:`any`
|
|
2297
|
+
"""
|
|
2298
|
+
self._h5object.write(o)
|
|
2299
|
+
vl = o
|
|
2300
|
+
if vl is not None and H5CPP:
|
|
2301
|
+
if self.dtype in ['string', b'string']:
|
|
2302
|
+
try:
|
|
2303
|
+
vl = vl.decode('UTF-8')
|
|
2304
|
+
except Exception:
|
|
2305
|
+
pass
|
|
2306
|
+
# print("WRITE", self.name, vl)
|
|
2307
|
+
self.set_attr_value(self.name, vl)
|
|
2308
|
+
|
|
2309
|
+
def set_attr_value(self, name, value):
|
|
2310
|
+
""" set device parameters
|
|
2311
|
+
|
|
2312
|
+
:param name: attribute name
|
|
2313
|
+
:type name: :obj:`str`
|
|
2314
|
+
:param value: attribute value
|
|
2315
|
+
:type value: :obj:`any`
|
|
2316
|
+
"""
|
|
2317
|
+
if hasattr(self._tparent, "set_attr_value"):
|
|
2318
|
+
return self._tparent.set_attr_value(name, value)
|
|
2319
|
+
|
|
2320
|
+
def get_attr_value(self, name):
|
|
2321
|
+
""" get scan info parameters
|
|
2322
|
+
|
|
2323
|
+
:param name: attribute name
|
|
2324
|
+
:type name: :obj:`str`
|
|
2325
|
+
:returns value: attribute value
|
|
2326
|
+
:rtype value: :obj:`any`
|
|
2327
|
+
"""
|
|
2328
|
+
if hasattr(self._tparent, "get_attr_value"):
|
|
2329
|
+
return self._tparent.get_attr_value(name)
|
nxstools/release.py
CHANGED
|
@@ -1766,6 +1766,7 @@ standardComponentTemplateFiles = {
|
|
|
1766
1766
|
#: xml template files of modules
|
|
1767
1767
|
moduleTemplateFiles = {
|
|
1768
1768
|
'mythen2': ['mythen2.xml'],
|
|
1769
|
+
'prodigyremote': ['prodigyremote.xml'],
|
|
1769
1770
|
'cobold': ['cobold.xml'],
|
|
1770
1771
|
'mythen': ['mythen.xml',
|
|
1771
1772
|
'mythen_postrun.ds.xml',
|
|
@@ -1987,6 +1988,17 @@ moduleMultiAttributes = {
|
|
|
1987
1988
|
'mca_xia@pool': [
|
|
1988
1989
|
'CountsRoI', 'RoIEnd', 'RoIStart',
|
|
1989
1990
|
],
|
|
1991
|
+
'prodigyremote': [
|
|
1992
|
+
'FullSpectrum', 'IntegratedSpectrum', 'EnergyPoints',
|
|
1993
|
+
'LensMode', 'EntrySlit',
|
|
1994
|
+
'StartEnergy', 'PassEnergy', 'StepWidth', 'StopEnergy',
|
|
1995
|
+
# 'ExitSlit',
|
|
1996
|
+
'KinEnergy', 'KinEnergyBase',
|
|
1997
|
+
'NumberOfAcquiredPoints', 'ExpectedNumberOfPoints',
|
|
1998
|
+
'DwellTime', 'ScanRange',
|
|
1999
|
+
'Samples', 'RetardingRatio', 'Mode',
|
|
2000
|
+
'NonEnergyChannels', 'ScanVariable',
|
|
2001
|
+
],
|
|
1990
2002
|
'limaccd': [
|
|
1991
2003
|
'camera_type', 'camera_pixelsize', 'camera_model',
|
|
1992
2004
|
'acq_mode', 'acq_nb_frames', 'acq_trigger_mode',
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
<?xml version='1.0'?>
|
|
2
|
+
<definition>
|
|
3
|
+
<group type="NXentry" name="$var.entryname#'$(__entryname__)'$var.serialno">
|
|
4
|
+
<group type="NXinstrument" name="instrument">
|
|
5
|
+
<group type="NXelectronanalyzer" name="$(name)">
|
|
6
|
+
<group type="NXelectron_detector" name="electron_detector">
|
|
7
|
+
<group type="NXdata" name="raw_data">
|
|
8
|
+
<attribute type="NX_CHAR" name="signal">
|
|
9
|
+
<strategy mode="INIT"/>raw
|
|
10
|
+
</attribute>
|
|
11
|
+
<field type="NX_FLOAT64" name="raw">
|
|
12
|
+
<strategy mode="STEP"/>$datasources.$(name)_integratedspectrum<dimensions rank="1"/>
|
|
13
|
+
</field>
|
|
14
|
+
<field units="eV" type="NX_FLOAT64" name="energy">
|
|
15
|
+
<strategy mode="STEP"/>$datasources.$(name)_energypoints<dimensions rank="1"/>
|
|
16
|
+
</field>
|
|
17
|
+
</group>
|
|
18
|
+
<field units="eV" type="NX_FLOAT64" name="data">
|
|
19
|
+
<strategy mode="STEP"/>$datasources.$(name)_fullspectrum<dimensions rank="2"/>
|
|
20
|
+
</field>
|
|
21
|
+
</group>
|
|
22
|
+
<group type="NXcollectioncolumn" name="collectioncolumn">
|
|
23
|
+
<field type="NX_CHAR" name="lens_mode">
|
|
24
|
+
<strategy mode="FINAL"/>$datasources.$(name)_lensmode</field>
|
|
25
|
+
</group>
|
|
26
|
+
<group type="NXenergydispersion" name="energydispersion">
|
|
27
|
+
<group type="NXaperture" name="entrance_slit">
|
|
28
|
+
<field type="NX_CHAR" name="description">
|
|
29
|
+
<strategy mode="FINAL"/>$datasources.$(name)_entryslit</field>
|
|
30
|
+
</group>
|
|
31
|
+
<field units="eV" type="NX_FLOAT64" name="pass_energy">
|
|
32
|
+
<strategy mode="FINAL"/>$datasources.$(name)_passenergy</field>
|
|
33
|
+
</group>
|
|
34
|
+
<group type="NXresolution" name="energy_resolution">
|
|
35
|
+
<field units="eV" type="NX_CHAR" name="physical_quantity">
|
|
36
|
+
<strategy mode="FINAL"/>energy</field>
|
|
37
|
+
<field units="eV" type="NX_FLOAT64" name="resolution">
|
|
38
|
+
<strategy mode="FINAL"/>$datasources.$(name)_stepwidth</field>
|
|
39
|
+
<group type="NXcollection" name="collection">
|
|
40
|
+
<field units="eV" type="NX_FLOAT64" name="start_energy">
|
|
41
|
+
<strategy mode="FINAL"/>$datasources.$(name)_startenergy</field>
|
|
42
|
+
<field units="eV" type="NX_FLOAT64" name="stop_energy">
|
|
43
|
+
<strategy mode="FINAL"/>$datasources.$(name)_stopenergy</field>
|
|
44
|
+
<field units="eV" type="NX_FLOAT64" name="kin_energy">
|
|
45
|
+
<strategy mode="FINAL"/>$datasources.$(name)_kinenergy</field>
|
|
46
|
+
<field units="eV" type="NX_FLOAT64" name="kin_energybase">
|
|
47
|
+
<strategy mode="FINAL"/>$datasources.$(name)_kinenergybase</field>
|
|
48
|
+
</group>
|
|
49
|
+
</group>
|
|
50
|
+
<group type="NXcollection" name="collection">
|
|
51
|
+
<field units="s" type="NX_FLOAT64" name="dwell_time">
|
|
52
|
+
<strategy mode="FINAL"/>$datasources.$(name)_dwelltime</field>
|
|
53
|
+
<field type="NX_INT64" name="number_of_acquired_points">
|
|
54
|
+
<strategy mode="FINAL"/>$datasources.$(name)_numberofacquiredpoints</field>
|
|
55
|
+
<field type="NX_INT64" name="expected_number_of_points">
|
|
56
|
+
<strategy mode="FINAL"/>$datasources.$(name)_expectednumberofpoints</field>
|
|
57
|
+
<field type="NX_INT64" name="samples">
|
|
58
|
+
<strategy mode="FINAL"/>$datasources.$(name)_samples</field>
|
|
59
|
+
<field type="NX_FLOAT64" name="retarding_ratio">
|
|
60
|
+
<strategy mode="FINAL"/>$datasources.$(name)_retardingratio</field>
|
|
61
|
+
<field type="NX_CHAR" name="scan_range">
|
|
62
|
+
<strategy mode="FINAL"/>$datasources.$(name)_scanrange</field>
|
|
63
|
+
<field type="NX_INT64" name="mode">
|
|
64
|
+
<strategy mode="FINAL"/>$datasources.$(name)_mode</field>
|
|
65
|
+
<field type="NX_INT64" name="non_energy_channels">
|
|
66
|
+
<strategy mode="FINAL"/>$datasources.$(name)_nonenergychannels</field>
|
|
67
|
+
<field type="NX_CHAR" name="scan_variable">
|
|
68
|
+
<strategy mode="FINAL"/>$datasources.$(name)_scanvariable</field>
|
|
69
|
+
</group>
|
|
70
|
+
</group>
|
|
71
|
+
</group>
|
|
72
|
+
<group type="NXdata" name="data">
|
|
73
|
+
<link target="/scan$var.serialno/instrument/$(name)/electron_detector/raw_data/raw" name="$(name)_integratedspectrum"/>
|
|
74
|
+
<link target="/scan$var.serialno/instrument/$(name)/electron_detector/raw_data/energy" name="$(name)_energy"/>
|
|
75
|
+
<link target="/scan$var.serialno/instrument/$(name)/electron_detector/data" name="$(name)_fullspectrum"/>
|
|
76
|
+
</group>
|
|
77
|
+
</group>
|
|
78
|
+
</definition>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
nxstools/__init__.py,sha256=FkLnQ-abF4YwyoLQWk9IJcSmvS1E0rVisgD3wAin9rM,899
|
|
2
2
|
nxstools/filenamegenerator.py,sha256=82Zbrxk54OiDFi6MuXtKgSgPNti4CVciBCe9NgPY8HE,3401
|
|
3
3
|
nxstools/filewriter.py,sha256=feSjyvCkUvoiD949-PB6bP6F30-MSuRPtboZehYbaVk,31899
|
|
4
|
-
nxstools/h5cppwriter.py,sha256=
|
|
4
|
+
nxstools/h5cppwriter.py,sha256=m7vnOwimaLK9qqFhvSypH5ZxLvM8v1sCup6ftZZLFls,68971
|
|
5
5
|
nxstools/h5pywriter.py,sha256=PxV0ou_WBpKE2NTnmIfsw0xKwjOO6WIjkMmxvtYXbsk,57830
|
|
6
|
-
nxstools/h5rediswriter.py,sha256=
|
|
6
|
+
nxstools/h5rediswriter.py,sha256=BdiD79lSgIscuUdUnuvgNi-Rba7J4_eMUVXt8z1_q6c,76817
|
|
7
7
|
nxstools/nxsargparser.py,sha256=j2ZEhBbs1TelCTEVSWMnVTvujusjKhFNSY6kQR3nIbQ,3241
|
|
8
8
|
nxstools/nxscollect.py,sha256=1kYhO6Vpk5Hb-cF14EMFkljF_nr2UUcXvzuk46-uVcM,64898
|
|
9
9
|
nxstools/nxsconfig.py,sha256=hyuLqLFC9nVHPaARut74_Oy-5_SBkuADGV6ilPM6dqI,61686
|
|
@@ -17,7 +17,7 @@ nxstools/nxsfileparser.py,sha256=hoNDweS_o9RjM7p89dVQdP13VRf-1SytCUwuVNMOWag,283
|
|
|
17
17
|
nxstools/nxsparser.py,sha256=Z6xOHCd7W20ICIurOM6H3I0FbFLF4xa29iwkotk9b40,35902
|
|
18
18
|
nxstools/nxsxml.py,sha256=EMh9ZctS6TsEA9cpJc5BRabd-a8CQClTm0_H4QqaLAk,25209
|
|
19
19
|
nxstools/redisutils.py,sha256=3QSILdasxql4geSHxrWAfOQ5v0-KZ6lv-e8uhlbhNPk,2586
|
|
20
|
-
nxstools/release.py,sha256=
|
|
20
|
+
nxstools/release.py,sha256=O2ann4EL-rXYD_vdlw1oFRtQUKSKf_72oR1CY6vPxIs,890
|
|
21
21
|
nxstools/ontology/__init__.py,sha256=QoAaEawW9gN3-Oan4Nh4RcnIQ5xTUy_cyTTt_qH7MH0,5583
|
|
22
22
|
nxstools/ontology/ontology.json,sha256=skBZzmbhLGtQ9ahizOKlolG5agHf0lfaK4Bao2e43Lk,191838
|
|
23
23
|
nxstools/pyeval/__init__.py,sha256=PtASTU6yoxWfn8GWA17Y9jcLRQjkqCKy9bpCxhaeMSo,848
|
|
@@ -48,7 +48,7 @@ nxstools/pyeval/secop.py,sha256=fjyNHoKyJbuuCdTIrq0kzoQOwApH-KpOR9y6DpLo2AE,1495
|
|
|
48
48
|
nxstools/pyeval/tangovimba.py,sha256=cd2sOH4u6ZoJda2abiwaQuNdLncFcdkkftzE6eyldW4,2612
|
|
49
49
|
nxstools/pyeval/timestamp.py,sha256=c8lpSVPMgQIr_keZic4qSxQtt0WdavNuWqwNuhHkGJI,2888
|
|
50
50
|
nxstools/pyeval/xspress3.py,sha256=RGkM8H-ubY8EbOXkEJxMt1JT3N32f6xRcKNrEly7b_o,5898
|
|
51
|
-
nxstools/xmltemplates/__init__.py,sha256=
|
|
51
|
+
nxstools/xmltemplates/__init__.py,sha256=j0cCxDetfvn-SsT0adB-SRBxbwk8PoCpX_rBwJSPeUY,80288
|
|
52
52
|
nxstools/xmltemplates/absorber.xml,sha256=zCxlNyhd2vGYmOjlrspt3S3l5q4rDHbgZ4E6j1TRyMc,2183
|
|
53
53
|
nxstools/xmltemplates/absorber_foil.ds.xml,sha256=--C8l-bF24lAKwoJr_N2ZkhGl9Q6ghrPSuqcx1aDl9Y,272
|
|
54
54
|
nxstools/xmltemplates/absorber_thickness.ds.xml,sha256=qBS1PGEhLIB4UtYLpMeYaG_yXkjgMhCEzoW85TvJB4E,287
|
|
@@ -238,6 +238,7 @@ nxstools/xmltemplates/pilcvds_encoder4map.ds.xml,sha256=eaEuXW5odE4d7M2Wow-5clKY
|
|
|
238
238
|
nxstools/xmltemplates/pilcvds_encoder5map.ds.xml,sha256=S8TRkQ2TeETr3-_L0a2txM3d6HO0TUaKf3YE5D7OwUY,674
|
|
239
239
|
nxstools/xmltemplates/pinhole.xml,sha256=J945kv2nRkB104KV-qjJJ1sfvE4FN5Bx01RnVvHy9ME,2028
|
|
240
240
|
nxstools/xmltemplates/pointdet.xml,sha256=z5LlXpFiQ207wed3elGCePiDA2XXCGLg33EhCCAEqi8,560
|
|
241
|
+
nxstools/xmltemplates/prodigyremote.xml,sha256=Ax4hMM8kGcNfZzZ5LA43G5H5yTC6VGVtouCAUp_x8DU,4314
|
|
241
242
|
nxstools/xmltemplates/qbpm.xml,sha256=BcEktuSQ5rOQUR0lqzHWeEWi2q3SJ0FtlB4DevVjV7Y,2186
|
|
242
243
|
nxstools/xmltemplates/qbpm_foil.ds.xml,sha256=IPYdpP50zt0zsJc68b99F08BLOXZFdyAn-HWOxU26Gg,265
|
|
243
244
|
nxstools/xmltemplates/sample_description.ds.xml,sha256=RCpUhPQJnNqlhn-lpIHhHQ9CEZG2mlPMyMlSLzJ2xkg,160
|
|
@@ -272,13 +273,13 @@ nxstools/xmltemplates/title.ds.xml,sha256=cBN_WigqtvGK2vS3dCotwH7NNDAb2Z_z7CLw-t
|
|
|
272
273
|
nxstools/xmltemplates/undulator.xml,sha256=Tnfkgftm6KOQyifc-BVyqUuEB9alHUru7z3_Qv9tJrY,2369
|
|
273
274
|
nxstools/xmltemplates/xspress3.xml,sha256=uOsLW21SyXcsilZAZdIyQ37npTkzuIEqjat3QlNyndY,1873
|
|
274
275
|
nxstools/xmltemplates/xspress3_triggermode_cb.ds.xml,sha256=xrXNLT6uuDofgXRqVhdIo25J7nUPPdSPJs4kE_u8_rw,871
|
|
275
|
-
nxstools-4.
|
|
276
|
-
nxstools-4.
|
|
277
|
-
nxstools-4.
|
|
278
|
-
nxstools-4.
|
|
279
|
-
nxstools-4.
|
|
280
|
-
nxstools-4.
|
|
281
|
-
nxstools-4.
|
|
282
|
-
nxstools-4.
|
|
283
|
-
nxstools-4.
|
|
284
|
-
nxstools-4.
|
|
276
|
+
nxstools-4.36.0.data/scripts/nxscollect,sha256=ckAVuZnNdjepU9S6EKDACb-Zcojpt_UhiTKnHoMVEhk,60
|
|
277
|
+
nxstools-4.36.0.data/scripts/nxsconfig,sha256=va2RtUWqZN_Nb4dSs_0d63XjzqYkbSLSnvkCB0dbwYw,58
|
|
278
|
+
nxstools-4.36.0.data/scripts/nxscreate,sha256=kpc2eEoCpWNg3inzgm2if6bpT9i-9-GJJQ-8mSs6a7M,59
|
|
279
|
+
nxstools-4.36.0.data/scripts/nxsdata,sha256=XvalTwXtrS2DOb8nKLp-7Mjom-L_WBLBqY5xtl-CPH4,54
|
|
280
|
+
nxstools-4.36.0.data/scripts/nxsetup,sha256=pYXgv6vHpblrmURXikAZBAOOaPxDnqu3n6OSYuLXkWE,54
|
|
281
|
+
nxstools-4.36.0.data/scripts/nxsfileinfo,sha256=Hhus49bHtva79IwY_7nxDhQF-ianVKMYo1uvNqeOqJ0,62
|
|
282
|
+
nxstools-4.36.0.dist-info/METADATA,sha256=RqLnT1GwUHy_EIkPUMl5piyzVt9XQGG0V4JaSYyOcqA,5051
|
|
283
|
+
nxstools-4.36.0.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
|
284
|
+
nxstools-4.36.0.dist-info/top_level.txt,sha256=puE4GNPuhMbwc3ViVq7sru72pVPcvxWlx9lPezA-5RQ,9
|
|
285
|
+
nxstools-4.36.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|