sardana-nxsrecorder 3.24.0__py3-none-any.whl → 3.26.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sardana-nxsrecorder
3
- Version: 3.24.0
3
+ Version: 3.26.0
4
4
  Summary: NeXus Sardana Scan Recorder
5
5
  Home-page: https://github.com/nexdatas/sardana-nxs-filerecorder/
6
6
  Author: Jan Kotanski
@@ -251,6 +251,7 @@ The NeXus file recorder uses the following sardana environment variables
251
251
  * **MetadataScript** *(str)* - a python module file name containing ``main()`` which provides a dictionary with user metadata stored in the INIT mode, default: ``""``
252
252
  * **ScicatMeasurements** *(dict)* - a dictionary of measurement names indexed by ``ScanDir`` and used by ``scingestor``, default: ``{}``
253
253
  * **CreateMeasurementFile** *(bool)* - create a measurement file with its filename releated to ``ScicatMeasurements`` or ``ScanFile``, default: ``False``
254
- * **NeXusSkipAcquisitionModes** *(list)* - a list of strategy modes for which acquisition is skip
255
254
  * **NeXusWriterProperties** *(dict)* - a dictionary of TangoDataWriter (NXSDataWriter) properties (starting with a small letter)
255
+ * **NeXusMeshScanID** *(int)* - ScanID used for composed scans e.g. mesh scan combined from many linear scans
256
+ * **NeXusWriterModes** *(list)* - a list of strategy modes e.g. ``NOINIT``, ``NOSTEP``, ``NOFINAL``, ``MESH``, ``VDS`` separated by commas
256
257
 
@@ -0,0 +1,6 @@
1
+ sardananxsrecorder/__init__.py,sha256=GktUxiQNBhdbje4E9WlYbikp7LfZxiGHRK8eBCiEf1U,896
2
+ sardananxsrecorder/nxsrecorder.py,sha256=n8QAbHwDbcJzHgFzR2wDhL9sdEBMqhj33T6BdKXyNvs,57947
3
+ sardana_nxsrecorder-3.26.0.dist-info/METADATA,sha256=1JlJrVuAujdNy7IUw-tKBo3OKAYpcPH5YnDwNExBuYA,8035
4
+ sardana_nxsrecorder-3.26.0.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
5
+ sardana_nxsrecorder-3.26.0.dist-info/top_level.txt,sha256=YdD3m417i-jlYyQWgiizgZ8lQQcOjM8y-bmUHrGkfY4,19
6
+ sardana_nxsrecorder-3.26.0.dist-info/RECORD,,
@@ -20,4 +20,4 @@
20
20
  """ Sardana Scan Recorders """
21
21
 
22
22
  #: package version
23
- __version__ = "3.24.0"
23
+ __version__ = "3.26.0"
@@ -152,11 +152,15 @@ class NXS_FileRecorder(BaseFileRecorder):
152
152
  #: (:obj:`str`) module lable
153
153
  self.__moduleLabel = 'module'
154
154
 
155
+ #: (:obj:`int`) serialno
156
+ self.__serial = 0
157
+
155
158
  #: (:obj:`dict` <:obj:`str` , :obj:`str`>) NeXus configuration
156
159
  self.__conf = {}
157
160
 
158
- #: (:obj:`list` <:obj:`str`>) skip Acquisition Modes
159
- self.skipAcquisitionModes = []
161
+ #: (:obj:`list` <:obj:`str`>) acquisition Modes
162
+ self.writerModes = self.__variableList(
163
+ "NeXusWriterModes")
160
164
 
161
165
  #: (:obj:`dict` <:obj:`str` , `any`>) User data
162
166
  self.__udata = None
@@ -172,6 +176,26 @@ class NXS_FileRecorder(BaseFileRecorder):
172
176
  self.__setFileName(
173
177
  self.__base_filename, not appendentry, scanID)
174
178
 
179
+ def _serial(self, scanID):
180
+ serial = None
181
+ if "NOINIT" in self.writerModes and \
182
+ "MESH" in self.writerModes:
183
+ if self.__macro:
184
+ serial = self.__macro().getEnv('NeXusMeshScanID', None)
185
+ if serial is None:
186
+ if scanID is None:
187
+ serial = self.recordlist.getEnvironValue('serialno')
188
+ elif scanID >= 0:
189
+ if isarver >= 304 or isarver == 0:
190
+ serial = scanID
191
+ else:
192
+ serial = scanID + 1
193
+ if "MESH" in self.writerModes and \
194
+ "NOINIT" not in self.writerModes:
195
+ if self.__macro:
196
+ self.__macro().setEnv('NeXusMeshScanID', serial)
197
+ return serial
198
+
175
199
  def __command(self, server, command, *args):
176
200
  """ execute tango server (or python object) command
177
201
 
@@ -378,27 +402,22 @@ class NXS_FileRecorder(BaseFileRecorder):
378
402
 
379
403
  subs = (len([None for _ in list(re.finditer('%', filename))]) == 1)
380
404
  # construct the filename, e.g. : /dir/subdir/etcdir/prefix_00123.nxs
381
- if scanID is None:
382
- serial = self.recordlist.getEnvironValue('serialno')
383
- elif scanID >= 0:
384
- if isarver >= 304 or isarver == 0:
385
- serial = scanID
386
- else:
387
- serial = scanID + 1
405
+ self.__serial = self._serial(scanID)
388
406
 
389
407
  if subs:
390
408
  try:
391
409
  #: output file name
392
- self.filename = filename % serial
410
+ self.filename = filename % self.__serial
393
411
  except Exception:
394
412
  subs = False
395
413
  if not self.__raw_filename:
396
- self.__raw_filename = self.__rawfilename(serial)
414
+ self.__raw_filename = self.__rawfilename(self.__serial)
397
415
  self.debug('Raw Filename: %s' % str(self.__raw_filename))
398
416
  if not subs and self.__raw_filename and \
399
417
  "{ScanID" in self.__raw_filename:
400
418
  try:
401
- self.filename = self.__raw_filename.format(ScanID=serial)
419
+ self.filename = self.__raw_filename.format(
420
+ ScanID=self.__serial)
402
421
  subs = True
403
422
  except Exception:
404
423
  pass
@@ -409,10 +428,12 @@ class NXS_FileRecorder(BaseFileRecorder):
409
428
  filename[-4].rpartition(".")[0] and \
410
429
  filename[-4].rpartition(".")[2] in self.formats.keys():
411
430
  tpl = filename[-4].rpartition(".")
412
- self.filename = "%s_%05d.%s.tmp" % (tpl[0], serial, tpl[2])
431
+ self.filename = "%s_%05d.%s.tmp" % (
432
+ tpl[0], self.__serial, tpl[2])
413
433
  else:
414
434
  tpl = filename.rpartition('.')
415
- self.filename = "%s_%05d.%s" % (tpl[0], serial, tpl[2])
435
+ self.filename = "%s_%05d.%s" % (
436
+ tpl[0], self.__serial, tpl[2])
416
437
  else:
417
438
  self.filename = filename
418
439
 
@@ -990,9 +1011,11 @@ class NXS_FileRecorder(BaseFileRecorder):
990
1011
  appendscanid = not self.__setFileName(
991
1012
  self.__base_filename, not appendentry)
992
1013
  envRec = self.recordlist.getEnviron()
993
- self.__vars["vars"]["serialno"] = ("_%05i" % envRec["serialno"]) \
1014
+ self.__vars["vars"]["serialno"] = ("_%05i" % self.__serial) \
994
1015
  if appendscanid else ""
995
1016
  self.__vars["vars"]["scan_id"] = envRec["serialno"]
1017
+ self.__vars["vars"]["acq_modes"] = \
1018
+ ",".join(self.writerModes or [])
996
1019
  self.__vars["vars"]["scan_title"] = envRec["title"]
997
1020
  if self.__macro:
998
1021
  if hasattr(self.__macro(), "integ_time"):
@@ -1014,7 +1037,7 @@ class NXS_FileRecorder(BaseFileRecorder):
1014
1037
  # self.debug('XML: %s' % str(cnfxml))
1015
1038
  self.__removeDynamicComponent()
1016
1039
 
1017
- self.__vars["data"]["serialno"] = envRec["serialno"]
1040
+ self.__vars["data"]["serialno"] = self.__serial
1018
1041
  self.__vars["data"]["scan_title"] = envRec["title"]
1019
1042
  if self.__macro:
1020
1043
  if hasattr(self.__macro(), "integ_time"):
@@ -1035,8 +1058,9 @@ class NXS_FileRecorder(BaseFileRecorder):
1035
1058
  # self.debug('START_DATA: %s' % str(envRec))
1036
1059
 
1037
1060
  self.__nexuswriter_device.jsonrecord = rec
1038
- self.skipAcquisitionModes = self.__skipAcquisitionModes()
1039
- if "INIT" in self.skipAcquisitionModes:
1061
+ self.writerModes = self.__variableList(
1062
+ "NeXusWriterModes")
1063
+ if "NOINIT" in self.writerModes:
1040
1064
  self.__nexuswriter_device.skipAcquisition = True
1041
1065
 
1042
1066
  self.__command(self.__nexuswriter_device, "openEntry")
@@ -1125,7 +1149,7 @@ class NXS_FileRecorder(BaseFileRecorder):
1125
1149
  rec = json.dumps(
1126
1150
  envrecord, cls=NXS_FileRecorder.numpyEncoder)
1127
1151
  self.__nexuswriter_device.jsonrecord = rec
1128
- if "STEP" in self.skipAcquisitionModes:
1152
+ if "NOSTEP" in self.writerModes:
1129
1153
  self.__nexuswriter_device.skipAcquisition = True
1130
1154
 
1131
1155
  # self.debug('DATA: {"data":%s}' % json.dumps(
@@ -1195,7 +1219,7 @@ class NXS_FileRecorder(BaseFileRecorder):
1195
1219
  rec = json.dumps(
1196
1220
  envrecord, cls=NXS_FileRecorder.numpyEncoder)
1197
1221
  self.__nexuswriter_device.jsonrecord = rec
1198
- if "FINAL" in self.skipAcquisitionModes:
1222
+ if "NOFINAL" in self.writerModes:
1199
1223
  self.__nexuswriter_device.skipAcquisition = True
1200
1224
  self.__command(self.__nexuswriter_device, "closeEntry")
1201
1225
  self.__command(self.__nexuswriter_device, "closeFile")
@@ -1243,18 +1267,18 @@ class NXS_FileRecorder(BaseFileRecorder):
1243
1267
  beamtimeid = self.beamtime_id(bmtfpath, bmtfprefix, bmtfext)
1244
1268
  return beamtimeid or "00000000"
1245
1269
 
1246
- def __skipAcquisitionModes(self):
1247
- """ find skip acquisition modes
1270
+ def __variableList(self, variable='NeXusWriterModes'):
1271
+ """ read variable list
1248
1272
  """
1249
1273
  try:
1250
- skip_acq = self.__macro().getEnv('NeXusSkipAcquisitionModes')
1274
+ msvar = self.__macro().getEnv(variable)
1251
1275
  except Exception:
1252
- skip_acq = []
1253
- if isinstance(skip_acq, str):
1254
- skip_acq = re.split(r"[-;,.\s]\s*", skip_acq)
1255
- if skip_acq:
1256
- self.debug('Skip Acquisition Modes: %s' % str(skip_acq))
1257
- return skip_acq
1276
+ msvar = []
1277
+ if isinstance(msvar, str):
1278
+ msvar = re.split(r"[-;,.\s]\s*", msvar)
1279
+ if msvar:
1280
+ self.debug('%s: %s' % (variable, str(msvar)))
1281
+ return msvar
1258
1282
 
1259
1283
  def __rawfilename(self, serial):
1260
1284
  """ find scan name
@@ -1310,7 +1334,7 @@ class NXS_FileRecorder(BaseFileRecorder):
1310
1334
  def __appendSciCatDataset(self, hostname=None):
1311
1335
  """ append dataset to SciCat ingestion list """
1312
1336
 
1313
- sid = self.__vars["vars"]["scan_id"]
1337
+ sid = self.__serial
1314
1338
  fdir, fname = os.path.split(self.filename)
1315
1339
  sname, fext = os.path.splitext(fname)
1316
1340
  beamtimeid = self.beamtimeid()
@@ -1342,10 +1366,10 @@ class NXS_FileRecorder(BaseFileRecorder):
1342
1366
  if appendentry is True and \
1343
1367
  '%' not in self.__raw_filename and \
1344
1368
  "{ScanID" not in self.__raw_filename:
1345
- sid = self.__vars["vars"]["scan_id"]
1369
+ sid = self.__serial
1346
1370
  sname = "%s::/%s_%05i;%s_%05i" % (
1347
1371
  scanname, entryname, sid, scanname, sid)
1348
- if "INIT" in self.skipAcquisitionModes:
1372
+ if "NOINIT" in self.writerModes:
1349
1373
  sname = "%s:%s" % (sname, time.time())
1350
1374
 
1351
1375
  # auto grouping
@@ -1381,7 +1405,7 @@ class NXS_FileRecorder(BaseFileRecorder):
1381
1405
  def __createMeasurementFile(self):
1382
1406
  """ create measurement file """
1383
1407
 
1384
- sid = self.__vars["vars"]["scan_id"]
1408
+ sid = self.__serial
1385
1409
  fdir, fname = os.path.split(self.filename)
1386
1410
  sname, fext = os.path.splitext(fname)
1387
1411
  # beamtimeid = self.beamtimeid()
@@ -1,6 +0,0 @@
1
- sardananxsrecorder/__init__.py,sha256=hMiS-40RFpQGJHFLwDY7Sy0gsO6e8bykEjdo-YgNxmY,896
2
- sardananxsrecorder/nxsrecorder.py,sha256=bVa7W85rxWLvHttxK5zaXZrZRvUka8ZCfHHmT65tbyE,57212
3
- sardana_nxsrecorder-3.24.0.dist-info/METADATA,sha256=FonANvw1tfIiizSe_R104MF6D8Q5hJj03Y8dgi7035k,7883
4
- sardana_nxsrecorder-3.24.0.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
5
- sardana_nxsrecorder-3.24.0.dist-info/top_level.txt,sha256=YdD3m417i-jlYyQWgiizgZ8lQQcOjM8y-bmUHrGkfY4,19
6
- sardana_nxsrecorder-3.24.0.dist-info/RECORD,,