# NXPEEK: An Tcl-API to NeXus

NXPEEK is an interface for reading NeXus files from Tcl. NXPEEK was written by by Nick Maliszewski at NIST. It works in the usual way of a widget command in Tcl. One special command, nxopen is added to Tcl which opens a NeXus file. The command returns a handle which in itself is again a Tcl command. The Usage looks like this:

set handle [nxopen filename]
  opens the NeXus file, craetes a new handle and returns it.
$handle ls
  lists the contents of the current vGroup.
$handle cd {name class}
  changes into the vGroup name of class class. Works much like a change directory on a file system.
$handle cat name
  Returns the contents of the SDS name as a Tcl-list or a list of Tcl-lists.
$handle info name
  Returns information about the SDS name. This includes rand, dimensions and data type.
$handle attributes name
  Returns the attributes of the SDS name. If no SDS name is specified a list of global attributes is returned.
$handle create VG {name class}
  creates a new vGroup with name name and class class at the current level in the NeXus vGroup hierarchy.
$handle create SDS name datatype rank dims
  This call creates an SDS. A name argument is required. The data type must be one of the NexUs datatypes: DFNT_INT8, DFNT_UNIT8, DFNT_INT16, DFNT_UINT16, DFNT_INT32, DFNT_UINT32, DFNT_FLOAT32 and DFNT_FLOAT64. Rank is currently to 2 and below. The dimensions are given as a Tcl-list.
$handle attrib SDSname attribname attribvalue
  Adds the attribute attribname with a value of attribvalue to the SDS SDSname.
$handle write SDSname data offset
  Writes data to the SDS SDSname. The data must be give as a Tcl list ( one dimensional case) or as a list of Tcl-lists (the two dimensional case). Offset is a Tcl list which describes at which position the data shall be written. Usually this is {0} or {0 0}.