[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