The nxsreader CLI

Apart from the fact that files can be purged using nxsreader this tools gives you some insight into NeXus files.

$ nxsreader -h                         
usage: nxsreader.py [-h] [--attr [ATTRPATTERN]] [--field [FIELDPATTERN]]
                    [--group [GROUPPATTERN]] [--ndim [NDIMPATTERN]] [--purge]
                    [--util [UTILPATTERN]]
                    fileName

nxsreader, the CLI to the nxsReader class

positional arguments:
  fileName              the name of the file to be processed

optional arguments:
  -h, --help            show this help message and exit
  --attr [ATTRPATTERN]  search pattern for attribute paths
  --field [FIELDPATTERN]
                        search pattern for field and link paths
  --group [GROUPPATTERN]
                        search pattern for group paths
  --ndim [NDIMPATTERN]  search pattern for field shapes
  --purge               remove data belonging identical motor positions
  --util [UTILPATTERN]  select a utility, debug feature

Examples:
  nxsreader.py tst_00204.nxs
    displays groups, fields, links and attributes.

  nxsreader nxsTest_00004.nxs --group 
    display groups, no search restriction

  nxsreader nxsTest_00004.nxs --group insertion 
    searches the file for groups with a path containing "insertion"

  nxsreader nxsTest_00004.nxs --field
    displays all fields

  nxsreader nxsTest_00004.nxs --field /scan:NXentry/instrument:NXinstrument/collection:NXcollection/exp_c03
    displays a specific field

  nxsreader nxsTest_00004.nxs --ndim 2
    displays 2-dimensional fields, e.g. (21, 2048)

  nxsreader nxsTest_00004.nxs --attr
    displays all attributes

  nxsreader nxsTest_00004.nxs --purge
    uses the motor positions to purge the data fields

Example, show all:

$ nxsreader nexusTest_00391.nxs
  1 Group: name: /, parent: None
    path: /
    2 Attr: HDF5_version, parent: /, value: 1.8.13
      path: /@HDF5_version 
    2 Attr: NX_class, parent: /, value: NXroot
      path: /@NX_class 
    2 Attr: NeXus_version, parent: /, value: 4.3.0
      path: /@NeXus_version 
    2 Attr: file_name, parent: /, value: /home/kracht/Misc/IVP/temp/nexusTest_00391.nxs
      path: /@file_name 
    2 Attr: file_time, parent: /, value: 2016-05-18T11:07:44.666647+0200
      path: /@file_time 
    2 Attr: file_update_time, parent: /, value: 2016-05-18T11:07:52.814789+0200
      path: /@file_update_time 
    2 Group: name: nexus_configuration_logs, parent: /
       path: /nexus_configuration_logs:NXcollection
      3 Attr: NX_class, parent: nexus_configuration_logs, value: NXcollection
        path: /nexus_configuration_logs:NXcollection@NX_class 
      3 Field: name: Nexus__entry__1_XML, shape: (1,), dtype: string
         path:  /nexus_configuration_logs:NXcollection/Nexus__entry__1_XML
         value: <?xml version="1.0" ?><definit... up> </group> <nl></definition>
      3 Field: name: python_version, shape: (1,), dtype: string
         path:  /nexus_configuration_logs:NXcollection/python_version
         value: 2.7.9 (default, Mar  1 2015, 12:57:24) <nl>[GCC 4.9.2]
 ...

Use the shape to search a field:

$ nxsreader nexusTest_00391.nxs --ndim 3
          5 Field: name: data, shape: (27, 195, 487), dtype: int32
             path:  /scan:NXentry/instrument:NXinstrument/pilatus:NXdetector/data
             value[0][...]: [[33 34 32 ..., 19 22 19]<nl> ... <nl> [30 31 27 ..., 21 14 14]]
             value[1][...]: [[33 34 32 ..., 19 22 19]<nl> ... <nl> [30 31 27 ..., 21 14 14]]
             value[2][...]: [[33 34 32 ..., 19 22 19]<nl> ... <nl> [30 31 27 ..., 21 14 14]]
 ...

Use a full path for the search:

$ nxsreader nexusTest_00391.nxs --field /scan:NXentry/instrument:NXinstrument/pilatus:NXdetector/data
          5 Field: name: data, shape: (27, 195, 487), dtype: int32
             path:  /scan:NXentry/instrument:NXinstrument/pilatus:NXdetector/data
             value[0][...]: [[33 34 32 ..., 19 22 19]<nl> ... <nl> [30 31 27 ..., 21 14 14]]
             value[1][...]: [[33 34 32 ..., 19 22 19]<nl> ... <nl> [30 31 27 ..., 21 14 14]]
             value[2][...]: [[33 34 32 ..., 19 22 19]<nl> ... <nl> [30 31 27 ..., 21 14 14]]
 ...


2019-11-13