diff --git a/ChangeLog b/ChangeLog index d2874ad8..fa00a1c1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2024-07-19 Jan Kotanski + * improve findAttribute by adding moduleAttributeMap (#696) + * tagged as v4.13.0 + 2024-07-15 Jan Kotanski * create output dir is does not exists (#696) * fix ScanFileinScanNameDir name to ScanNames (#694) diff --git a/man/nxscollect.1 b/man/nxscollect.1 index fb92a244..3edcd8e8 100644 --- a/man/nxscollect.1 +++ b/man/nxscollect.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "NXSCOLLECT" "1" "Jul 16, 2024" "4.12" "NXSTools" +.TH "NXSCOLLECT" "1" "Jul 18, 2024" "4.13" "NXSTools" .SH NAME nxscollect \- upload external images into NeXus/HDF5 file .SH DESCRIPTION diff --git a/man/nxsconfig.1 b/man/nxsconfig.1 index 411cfea5..25f96bf4 100644 --- a/man/nxsconfig.1 +++ b/man/nxsconfig.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "NXSCONFIG" "1" "Jul 16, 2024" "4.12" "NXSTools" +.TH "NXSCONFIG" "1" "Jul 18, 2024" "4.13" "NXSTools" .SH NAME nxsconfig \- read NeXus Configuration Server settings .SH DESCRIPTION diff --git a/man/nxscreate.1 b/man/nxscreate.1 index fbd765ab..f4fb9c73 100644 --- a/man/nxscreate.1 +++ b/man/nxscreate.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "NXSCREATE" "1" "Jul 16, 2024" "4.12" "NXSTools" +.TH "NXSCREATE" "1" "Jul 18, 2024" "4.13" "NXSTools" .SH NAME nxscreate \- create NeXus Configuration component .SH DESCRIPTION diff --git a/man/nxsdata.1 b/man/nxsdata.1 index a2d947c8..50fd7441 100644 --- a/man/nxsdata.1 +++ b/man/nxsdata.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "NXSDATA" "1" "Jul 16, 2024" "4.12" "NXSTools" +.TH "NXSDATA" "1" "Jul 18, 2024" "4.13" "NXSTools" .SH NAME nxsdata \- run NeXus Data Writer .SH DESCRIPTION diff --git a/man/nxsetup.1 b/man/nxsetup.1 index ef6240fd..496f7525 100644 --- a/man/nxsetup.1 +++ b/man/nxsetup.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "NXSETUP" "1" "Jul 16, 2024" "4.12" "NXSTools" +.TH "NXSETUP" "1" "Jul 18, 2024" "4.13" "NXSTools" .SH NAME nxsetup \- set NeXDaTaS Tango Server environment up .SH DESCRIPTION diff --git a/man/nxsfileinfo.1 b/man/nxsfileinfo.1 index 206f8930..bc6514f7 100644 --- a/man/nxsfileinfo.1 +++ b/man/nxsfileinfo.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "NXSFILEINFO" "1" "Jul 16, 2024" "4.12" "NXSTools" +.TH "NXSFILEINFO" "1" "Jul 18, 2024" "4.13" "NXSTools" .SH NAME nxsfileinfo \- show metadata of the NeXus file .SH DESCRIPTION diff --git a/man/nxstools.1 b/man/nxstools.1 index 0d3828b9..5a713923 100644 --- a/man/nxstools.1 +++ b/man/nxstools.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "NXSTOOLS" "1" "Jul 16, 2024" "4.12" "NXSTools" +.TH "NXSTOOLS" "1" "Jul 18, 2024" "4.13" "NXSTools" .SH NAME nxstools \- nxstools Documentation .sp diff --git a/nxstools/nxscreator.py b/nxstools/nxscreator.py index ae622172..c1d1f6bd 100644 --- a/nxstools/nxscreator.py +++ b/nxstools/nxscreator.py @@ -31,7 +31,7 @@ from nxstools.nxsdevicetools import ( storeDataSource, getDataSourceComponents, storeComponent, - moduleAttributes, motorModules, + moduleAttributes, moduleAttributeMap, motorModules, generateDeviceNames, getServerTangoHost, openServer, findClassName, xmlPackageHandler) @@ -265,9 +265,13 @@ def findAttribute(self, tangohost, clientlike=False): self.attribute = None spdevice = self.tdevice.split("/") if mhost and len(spdevice) > 3: - self.attribute = spdevice[3] self.tdevice = "/".join(spdevice[0:3]) self.hostname = mhost + if self.module in moduleAttributeMap.keys() and \ + spdevice[3] in moduleAttributeMap[self.module].keys(): + self.attribute = moduleAttributeMap[self.module][spdevice[3]] + else: + self.attribute = spdevice[3] if self.module in motorModules or self.dtype == 'stepping_motor': if self.attribute is None: self.attribute = 'Position' diff --git a/nxstools/nxsdevicetools.py b/nxstools/nxsdevicetools.py index 189da1ce..a7a7a2e3 100644 --- a/nxstools/nxsdevicetools.py +++ b/nxstools/nxsdevicetools.py @@ -108,6 +108,20 @@ def loadXMLTemplates(self, packagename): 'xmcd': ['Value', None], } +#: attributes of device modules to acquire with elements: +# 'module': {, } +moduleAttributeMap = { + 'amptekroi': { + '1': 'CountsRoI1', + '2': 'CountsRoI2', + '3': 'CountsRoI3', + '4': 'CountsRoI4', + '5': 'CountsRoI5', + '6': 'CountsRoI6', + '7': 'CountsRoI7', + '8': 'CountsRoI8', + }, +} #: (:obj:`list` <:obj:`str`>) modules of 2d detectors twoDModules = [ diff --git a/nxstools/release.py b/nxstools/release.py index 60f4ef84..674168f8 100644 --- a/nxstools/release.py +++ b/nxstools/release.py @@ -19,4 +19,4 @@ """ NXS tools release version""" #: (:obj:`str`) package version -__version__ = "4.12.0" +__version__ = "4.13.0" diff --git a/test/NXSCreateOnlineDSFS_test.py b/test/NXSCreateOnlineDSFS_test.py index 2d353345..b7ee1a4d 100644 --- a/test/NXSCreateOnlineDSFS_test.py +++ b/test/NXSCreateOnlineDSFS_test.py @@ -322,6 +322,139 @@ def test_onlineds_stepping_motor(self): if self.dsexists(ds): self.deleteds(ds) + def test_onlineds_amptekroi(self): + """ test nxsccreate onlineds file system + """ + fun = sys._getframe().f_code.co_name + print("Run: %s.%s() " % (self.__class__.__name__, fun)) + + fname = '%s/%s%s.xml' % ( + os.getcwd(), self.__class__.__name__, fun) + + xml = """ + + + amptek_roi1 + counter + amptekroi + p03/amptekpx5/exp.01/1 + tango + haso000:10000 + + + amptek_roi2 + counter + amptekroi + p03/amptekpx5/exp.01/2 + tango + haso000:10000 + + + amptek_roi3 + counter + amptekroi + p03/amptekpx5/exp.01/3 + tango + haso000:10000 + + + amptek_roi4 + counter + amptekroi + p03/amptekpx5/exp.01/4 + tango + haso000:10000 + + + +""" + + args = [ + [ + ('nxscreate onlineds %s %s' + % (fname, self.flags)).split(), + ['amptek_roi1', + 'amptek_roi2', + 'amptek_roi3', + 'amptek_roi4'], + [ + '\n' + '\n' + ' \n' + ' \n' + ' \n' + ' \n' + '\n', + '\n' + '\n' + ' \n' + ' \n' + ' \n' + ' \n' + '\n', + '\n' + '\n' + ' \n' + ' \n' + ' \n' + ' \n' + '\n', + '\n' + '\n' + ' \n' + ' \n' + ' \n' + ' \n' + '\n', + ], + ], + ] + + totest = [] + if os.path.isfile(fname): + raise Exception("Test file %s exists" % fname) + with open(fname, "w") as fl: + fl.write(xml) + try: + for arg in args: + skip = False + for ds in arg[1]: + if self.dsexists(ds): + skip = True + if not skip: + for ds in arg[1]: + totest.append(ds) + + vl, er = self.runtest(arg[0]) + + if er: + self.assertTrue(er.startswith( + "Info")) + else: + self.assertEqual('', er) + self.assertTrue(vl) + + for i, ds in enumerate(arg[1]): + xml = self.getds(ds) + self.assertEqual( + arg[2][i], xml) + + for ds in arg[1]: + self.deleteds(ds) + finally: + os.remove(fname) + for ds in totest: + if self.dsexists(ds): + self.deleteds(ds) + def test_onlineds_stepping_motor_noclientlike(self): """ test nxsccreate onlineds file system """