3.3.3.10. NXspecdataΒΆ

Status:

contributed definition, extends NXobject, version 1.0

Description:

Data collected by SPEC control and data acquisition software

SPEC [1] is software for instrument control and data acquisition in X-ray diffraction experiments.

[1]SPEC: https://certif.com

Symbols:

No symbol table
Groups cited:
NXcrystal, NXdata, NXentry, NXinstrument, NXmonitor, NXnote, NXuser

Structure:

@default: NX_CHAR

Declares which NXentry group contains the data to be shown by default. It is needed to resolve ambiguity when more than one NXentry group exists. The value is the name of the default NXentry group.

@HDF5_Version: NX_CHAR

Version of HDF5 library used in writing the file (as specified in NXroot).

Note this attribute is spelled with uppercase “V”, different than other version attributes.

@h5py_version: NX_CHAR

version of h5py Python package used to write this HDF5 file

@SPEC_file: NX_CHAR

original SPEC data file name from #F line in file header

@SPEC_date: NX_CHAR

date from #D line in file header, in ISO8601 format

@SPEC_epoch: NX_INT

UNIX time epoch from #E line in file header

@SPEC_comments: NX_CHAR

any #C lines in file header, stored as one string with newlines between comments

@SPEC_num_headers: NX_INT

Number of header sections found in the spec file

(entry): NXentry

one scan from a SPEC data file, starts with a #S line

@default: NX_CHAR

Declares which NXdata group contains the data to be shown by default. It is needed to resolve ambiguity when more than one NXdata group exists. The value is the name of the default NXdata group.

definition: NX_CHAR

Official NeXus NXDL schema to which this subentry conforms.

Obligatory value: NXspecdata

scan_number: NX_NUMBER

SPEC scan number

title: NX_CHAR

SPEC scan number and command, from #S line

SPEC data file line:

#S 1  cscan en 690 750 60 0

title:

1  cscan en 690 750 60 0

command: NX_CHAR

SPEC scan command, from #S line, after the scan number.

SPEC data file line:
 #S 1  cscan en 690 750 60 0
command*:cscan en 690 750 60 0

date: NX_DATE_TIME

date from #D line in scan header, in ISO8601 format

comments: NX_CHAR

Any #C lines in this scan, stored as one string with newlines between comments

Q: NX_NUMBER

#Q () at start of scan

array of [ ]

TEMP_SP: NX_NUMBER

#X – temperature set point

DEGC_SP: NX_NUMBER

#X – temperature set point (C)

(monitor): NXmonitor

@description: NX_CHAR

mode: NX_CHAR

Count to a preset value based on either clock time (timer) or received monitor counts (monitor).

Any of these values: monitor | timer

preset: NX_NUMBER

preset value for time or monitor

  • #M – counting against this constant monitor count (see #T)
  • #T – counting against this constant number of seconds (see #M)

@units: NX_CHAR

data: NX_NUMBER

array(s) of monitor data

count_time: NX_NUMBER

array(s) of monitor data

data: NXdata

detector (and MCA) data from this scan

@description: NX_CHAR

@signal: NX_CHAR

name of the field with the plottable data, typically the last column for 1-D scans

This is the primary dependent axis, such as two-theta detector. This field must exist (or be linked) in this NXdata group.

@axes: NX_CHAR

name(s) of the field(s) for plotting the data, typically the first column for 1-D scans

These are the independent axes, such as positioners. For 2-D or higher dimension data, there will be a field named for each dimension, separated by ”:” (preferred) or ”,” or ” ” (whitespace).

Such as for 2-D data plotted against energy and th:

@axes = energy:th

This(these) field(s) must exist (or be linked) in this NXdata group.

@AXISNAME_indices: NX_NUMBER

For each field named in @axes, there will be an instance of this attribute, defining into which dimensions of the @signal data this field applies. The value of this attribute is a list of index numbers using 0-based indexing (first dimension is 0, seconds i 1, ...).

Such as for 2-D data plotted against energy and th:

@energy_indices = [0]
@th_indices = [1]

data: NX_NUMBER

one column of data from the scan

HDF5 requires that each member of a group must have a unique name.

Pick the name of column from #L but make it unique which means if the same name is used in more than one column, append a number to the extra instances to make them unique yet preserve their content, just in case they might be different.

Example: seconds seconds becomes seconds and seconda_1.

@spec_name: NX_CHAR

name as specified in #L line, before it was made unique for HDF5

@units: NX_CHAR

Unless stated otherwise, units (not declared in the SPEC data file) are assumed to be counts for detectors and “unknown” for positioners or other scan columns.

intensity_factor: NX_NUMBER

#I – intensity normalizing factor

_mca_: NX_NUMBER

_mca_channel_: NX_NUMBER

_mca1_: NX_NUMBER

_mca1_channel_: NX_NUMBER

counter_cross_reference: NXnote

associates values declared in #J and #j scan header lines

@comment: NX_CHAR

@description: NX_CHAR

positioner_cross_reference: NXnote

associates values declared in #O and #o scan header lines

@comment: NX_CHAR

@description: NX_CHAR

spec: NXinstrument

various metadata from the SPEC scan header that have well-known NeXus base clases

UB: NXcrystal

Orientation matrix of single crystal sample using Busing-Levy convention

orientation_matrix[3, 3]: NX_FLOAT

#G3 line in scan header

G: NXnote

SPEC geometry variables for this diffractometer geometry (instrument specific)

TODO: give interpreted name for each array value (need to figure out how to get the names)

@comment: NX_CHAR

@description: NX_CHAR

G0: NX_NUMBER

geometry parameters from G[] array (geo mode, sector, etc)

G1: NX_NUMBER

geometry parameters from U[] array (lattice constants, orientation reflections)

G2: NX_NUMBER

not used, although some files has a single zero value

G4: NX_NUMBER

geometry parameters from Q[] array (lambda, frozen angles, cut points, etc)

positioners: NXnote

names and values of all positioners (#O and #P lines) in scan header

@description: NX_CHAR

positioner: NX_NUMBER

one positioner from the scan header

HDF5 requires that each member of a group must have a unique name.

SPEC assigns a unique name to each positioner, no extra work is neccesary to comply with the HDF5 rule for unique names in a group.

MCA: NXnote

#@CALIB – coefficients to compute a scale based on the MCA channel number

@description: NX_CHAR

preset_time: NX_NUMBER

elapsed_live_time: NX_NUMBER

elapsed_real_time: NX_NUMBER

number_saved: NX_NUMBER

first_saved: NX_INT

last_saved: NX_INT

reduction_coef: NX_NUMBER

calib_a: NX_NUMBER

calib_b: NX_NUMBER

calib_c: NX_NUMBER

ROI: NXnote

roiN: NX_CHAR

numbered regions of interest, use an index number as part of the name

@description: NX_CHAR

first_channel, last_channel

@first_channel: NX_INT

@last_channel: NX_INT

metadata: NXnote

SPEC metadata (UNICAT-style #H and #V lines)

This is a block that may be unique to SPEC files acquired at certain APS beam lines. Other facilities or instruments may use this block for storing key:value pairs of data where the values have suitable attributes (such as units).

@description: NX_CHAR

SPEC_user: NXuser

SPEC_user: NX_CHAR

user name from first #C line in file header

_unrecognized: NXnote

Fallback for any SPEC data file control lines not otherwise placed into groups or fields elsewhere in this specification.

@comment: NX_CHAR

@description: NX_CHAR

NXDL Source:
https://github.com/nexusformat/definitions/blob/master/contributed_definitions/NXspecdata.nxdl.xml