[NeXus-definitions-tickets] [NeXusDefinitions] #182: define axes for multi-dimensional scans

NeXus Base Classes and Instrument Definitions noreply at nexusformat.org
Thu Mar 3 15:09:10 GMT 2011


#182: define axes for multi-dimensional scans
----------------------------+-----------------------------------------------
 Reporter:  Tobias Richter  |       Owner:  Tobias Richter
     Type:  defect          |      Status:  new           
 Priority:  major           |   Milestone:                
Component:  general         |    Keywords:                
----------------------------+-----------------------------------------------
 In the 1 dimensional world everything is quite straight forward:

     data:NXdata

         data[n]

             @signal=1

         x[n]

             @axis=1

 For perfect equipment and independent axis it even works for 2D data:

     data:NXdata

         data[nx,ny]

             @signal=1

         x[nx]

             @axis=1

         y[ny]

             @axis=2

 This assumes that x recorded as x[i] is identical for every point [i,j].

 But of course when recording readback values of real motors you will
 actually receive an array x[nx,ny] because the motor positions are not
 perfectly reproducible every time you try to visit the same position.

 In cases were x and y are not independent this scheme does not work at
 all.

 With the requirement being to record true values we end up with this:

     data:NXdata

         data[nx,ny]

             @signal=1

         x[nx,ny]

         y[nx,ny]

 The problem is that all information on the axes is lost. There is no way
 of telling which motor you tried to drive along each of the dimensions.

 The 'recommended' way of unrolling the dimensions:

     data:NXdata

         data[nx*ny]

             @signal=1

         x[nx*ny]

             @axis=1

         y[nx*ny]

             @axis=1

 Has the same disadvantage: You don't know what you were driving to arrive
 at each point. But you also loose the efficient display of the data by
 slicing. So this is clearly not an option.

 So the questions are:

         * How do we annotate that x and y provide the          position
 information?

         * How do we provide the information on the intended
 motion along the axes? This would allow at least an          axis title
 (but no ticks and numbers) to be added          to a 2D plot of "data".

 There are some problems with this but this idea should illustrate what I
 have in mind:

     data:NXdata

         data[nx,ny]

             @signal=1

         x[nx,ny]

             @axis=1,2

             @label=1

         y[nx,ny]

             @axis=1,2

             @label=2

 The @axis attributes associate the dimensions of detector and positioner
 data.

 The @label allows a labelling of the dimension in a 2D plot of the data.
 And when you slice along that dimension it gives a preference for the axis
 to use in the 1D plot.

 In most cases @label would also imply that the positioner was moved
 actively along that dimension in a scan. But the may not always be the
 case. So there might be a benefit in having another indicating attribute
 like @drive. But that's an aside and we should focus on the main problem
 first.

-- 
Ticket URL: <http://trac.nexusformat.org/definitions/ticket/182>
NeXus Base Classes and Instrument Definitions <http://www.nexusformat.org/>
NeXus Base Classes and Instrument Definitions



More information about the NeXus-definitions-tickets mailing list