NeXus scan recorder for Sardana which stores experimenal data in NeXus/HDF5 file with use of NeXDatas Tango Server or packages, i.e. NXSDataWriter, NXSConfigServer, NXSRecSelector.
Install the dependencies:
Download the latest NeXuS Scan Recorder version from
Extract sources and run
$ python3 setup.py installand add an RecorderPath property of MacroServer with its value defining the package location, e.g.
Debian Trixie, Bookworm, Bullseye and Ubuntu Questing, Noble Jammy packages can be found in the HDRI repository.
To install the debian packages, add the PGP repository key
$ sudo su
$ curl -s http://repos.pni-hdri.de/debian_repo.pub.gpg | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/debian-hdri-repo.gpg --import
$ chmod 644 /etc/apt/trusted.gpg.d/debian-hdri-repo.gpgand then download the corresponding source list
$ cd /etc/apt/sources.list.d
$ wget http://repos.pni-hdri.de/trixie-pni-hdri.sourcesFinally, for python2.7
$ apt-get update
$ apt-get install python3-sardana-nxsrecorderand set the RecoderPath property of MacroServer with
$ apt-get install sardana-nxsrecorderTo instal other NexDaTaS packages
$ apt-get install python3-nxswriter nxsconfigserver-db python3-nxsconfigserver nxsconfigtool3 python3-nxstools nxswriter3 nxsconfigserver3and
$ apt-get install python3-nxsrecselector nxsrecselector3 nxselector3for Component Selector for Sardana related packages.
If sardana is not yet set up run
$ Pool- enter a new instance name
- create the new instance
Then wait a while until Pool is started and in a new terminal run
$ MacroServer- enter a new instance name
- create the new instance
- connect pool
Next, run Astor and change start-up levels: for Pool to 2, for MacroServer to 3 and restart servers.
Alternatively, terminate Pool and MacroServer in the terminals and run
$ nxsetup start Pool -l2wait until Pool is started and run
$ nxsetup start MacroServer -l3Additionally, one can create dummy devices by running sar_demo in
$ spockTo set up NeXus Servers run
$ nxsetup setor
$ nxsetup set NXSDataWriter
$ nxsetup set NXSConfigServer
$ nxsetup set NXSRecSelectorfor specific servers.
If the RecoderPath property of MacroServer is not set one can do it by
$ nxsetup add-recorder-path /usr/lib/python2.7/dist-packages/sardananxsrecorderwhere the path should point the sardananxsrecorder package.
The NeXus file recorder uses the following sardana environment variables
- ActiveMntGrp (str) - active measurement group
- ScanID (int) - the last scan identifier number, default:
-1 - ScanDir (str) - the scan directory
- ScanFile (list) - a list of scan files
- NeXusSelectorDevice (str) - NXSRecSelector tango device if more installed, otherwise first one found
- NXSAppendSciCatDataset (bool) - append scan name to scicat dataset list file, default:
False - BeamtimeFilePath (str) - beamtime file path to search beamtime metadata file, default:
"/gpfs/current" - BeamtimeFilePrefix (str) - beamtime metadata file prefix, default:
"beamtime-metadata-" - BeamtimeFileExt (str) - beamtime metadata file extension, default:
".json" - SciCatDatasetListFilePrefix (str) - scicat dataset list file prefix, default:
"scicat-datasets-" - SciCatDatasetListFileExt (str) - scicat dataset list file extension, default:
".lst" - SciCatDatasetListFileLocal (bool) - add the hostname to the scicat dataset list file extension, default:
False - SciCatAutoGrouping (bool) - group all scans with the measurement name set to the base scan filename, default:
False - MetadataScript (str) - a python module file name containing
main()which provides a dictionary with user metadata stored in the INIT mode, default:"" - ScicatMeasurements (dict) - a dictionary of measurement names indexed by
ScanDirand used byscingestor, default:{} - CreateMeasurementFile (bool) - create a measurement file with its filename releated to
ScicatMeasurementsorScanFile, default:False - NeXusWriterProperties (dict) - a dictionary of TangoDataWriter (NXSDataWriter) properties (starting with a small letter)
- NeXusMeshScanID (int) - ScanID used for composed scans e.g. mesh scan combined from many linear scans
- NeXusWriterModes (list) - a list of strategy modes e.g.
NOINIT,NOSTEP,NOFINAL,MESH,VDSseparated by commas - ScanNames (bool) - special mode of using ScanName directories i.e.
True: the master file in the ScanName directory,False: the master file in the grouping ScanName directory (e.g. without ScanID),None(or undefined): standard mode where the master files are outside the ScanName directory
- ScanNamesNoGrouping (bool) - do not perform grouping when
ScanNamesisFalse - ScanNamesNoMetadata (bool) - do not perform master file metadata ingestion when
ScanNamesisFalse