Skip to content

nexdatas/sardana-nxs-filerecorder

Repository files navigation

Welcome to sardananxsrecorder's documentation!

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.

Installation

Install the dependencies:

sardana, sphinx, NXSDataWriter, NXSConfigServer, NXSRecSelector

From sources

Download the latest NeXuS Scan Recorder version from

Extract sources and run

$ python3 setup.py install

and add an RecorderPath property of MacroServer with its value defining the package location, e.g.

/usr/lib/python2.7/dist-packages/sardananxsrecorder

Debian packages

Debian Bookworm, Bullseye, Buster and Ubuntu Oracular, Noble Jammy packages can be found in the HDRI repository.

To install the debian packages, add the PGP repository key

$ sudo su
$ wget -q -O - http://repos.pni-hdri.de/debian_repo.pub.gpg | apt-key add -

and then download the corresponding source list

$ cd /etc/apt/sources.list.d
$ wget http://repos.pni-hdri.de/bookworm-pni-hdri.list

Finally, for python2.7

$ apt-get update
$ apt-get install python3-sardana-nxsrecorder

and set the RecoderPath property of MacroServer with

$ apt-get install sardana-nxsrecorder

To instal other NexDaTaS packages

$ apt-get install python3-nxswriter nxsconfigserver-db python3-nxsconfigserver nxsconfigtool3 python3-nxstools nxswriter3 nxsconfigserver3

and

$ apt-get install python3-nxsrecselector nxsrecselector3 nxselector3

for Component Selector for Sardana related packages.

Setting environment

Setting Saradna

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 -l2

wait until Pool is started and run

$ nxsetup start MacroServer -l3

Additionally, one can create dummy devices by running sar_demo in

$ spock

Setting NeXus Servers

To set up NeXus Servers run

$ nxsetup set

or

$ nxsetup set NXSDataWriter
$ nxsetup set NXSConfigServer
$ nxsetup set NXSRecSelector

for 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/sardananxsrecorder

where the path should point the sardananxsrecorder package.

Sardana Variables

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 ScanDir and used by scingestor, default: {}
  • CreateMeasurementFile (bool) - create a measurement file with its filename releated to ScicatMeasurements or ScanFile, 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, VDS separated 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 ScanNames is False
  • ScanNamesNoMetadata (bool) - do not perform master file metadata ingestion when ScanNames is False