HDF5 input file format

Data dimensions

Raw detector images are stored as a J 3D datasets (N * M, K, L), where:

  • J raster scans (with angle or energy varying) consisting of

  • N scan lines and

  • M scan columns

  • detector images with shape (K, L) taken for each point

Obviously (N, M, K, L) as well as the nominal motor positions need to be equal for all J scans.

File structure

Each scan is stored in a separated HDF5 file, all of which are accessible through a “master” HDF5 file. See Fig. 1 below for an example.

Master file root:

  • Scan entry: J entries, one for each raster scan done with som varying motor position or energy (NXentry)

    • instrument (NXinstrument)

      • detector (NXdetector)

        • beam_energy: Beam energy in eV (float)

        • center_chan_dim0: Pixel of the direct beam when all angles=0 for first image dimension (float)

        • center_chan_dim1: Pixel of the direct beam when all angles=0 for second image dimension (float)

        • chan_per_deg_dim0: Pixel per degree in first image dimension (float)

        • chan_per_deg_dim1: Pixel per degree in second image dimension (float)

        • data: 3D dataset for this raster scan with shape (N * M, K, L), i.e., flattened along scan axes.

        • image_roi_offset: Optional. Offset for center chan if using only a ROI of the PSD. Default: [0, 0] ([int, int])

      • positioners: This group contains datasets for all positioners. Dataset shape is either (1,) or (N * M,) (NXcollection)

    • measurement: Group containing all the scan data with shape (N * M,) can be used, e.g., for normalization. Not mandatory (NXcollection)

      • adcX: X encoder position (1D array of float)

      • adcY: Y encoder position (1D array of float)

      • adcZ: Z encoder position (1D array of float)

      • image (NXcollection)

        • data: Link to ../../instrument/detector/data

        • info: Link to ../../instrument/detector (NXdetector)

    • scan: Raster scan info

      • delay: Exposure time (float)

      • motor_0: Fast motor name (string)

      • motor_0_end: Fast motor end (float)

      • motor_0_start: Fast motor start (float)

      • motor_0_steps: Fast motor number of points (int)

      • motor_1: Slow motor name (string)

      • motor_1_end: Slow motor end (float)

      • motor_1_start: Slow motor start (float)

      • motor_1_steps: Slow motor number of points (int)

    • start_time (string)

    • title: Scan title (string)



Fig. 1 Example of a X-Socs HDF5 input file structure