Handling data cubes in VO

Arnold Rots arots at head.cfa.harvard.edu
Mon Dec 26 13:11:41 PST 2005


Part of this, especially item 5, is really a DM discussion.
David Berry proposed that the relation between physical coordinate
axes and pixel coordinates is really a transformation between two
separate coordinate systems (and provided an implementation).
As such it has been incorporated in STC.

  - Arnold

Roy Williams wrote:
> Perhaps I can lay out a strawman for a cube access protocol? I believe 
> that the following five concepts will give us all the exposure and 
> access that have been mentioned so far, but still keeping it 
> parsimonious and easily understandable.  Is it enough? Is it 
> implementable?
> Your comments welcome.
> Roy
> 
> 
> (1) Array
> First, let us define *subscriptRange*. It is a set of consecutive 
> integers, with the smallest being the lower subscript, and the largest 
> being one less than the upper subscript. An example of a subscriptRange 
> is {-2, -1, 0, 1, 2, 3}, which could be abbreviated (-2:4).
> 
>  From an ordered finite set of subscriptRanges, we can build an *Array* 
> as a multi-dimensional block of voxels, labeled by integer subscripts.
> 
> I think it would be best at this point to restrict the nature of the 
> voxel to only standard primitive typess, such as int, float, double, 
> doubleComplex etc. I think it would be overly complex to allow voxels 
> to themselves be structures. I would suggest using the same types as 
> FITS and VOTable. Note that the character is a primitive, but the 
> string is not. Let us call these the *standard types*.
> 
> Precisely, the Array is a mapping from the Cartesian product of the 
> subscriptRanges to a standard type. An example of an Array would be 
> written in Fortran like this:
> 	float Q(-2:4, 0:4, 2:6)
> The subscriptRanges have 6, 4, and 4 elements, and thus the Array 
> itself has 6x4x4 = 96 floats. An example of an element of the Array 
> would be
> 	Q(-2, 1, 5)
> 
> (2) subArray
> We can define a *subArray* as an Array together with a new set of 
> subscriptRanges, each of which is a subset of the corresponding 
> original subscriptRange. For example, a subArray of the example above 
> could be:
> 	float Q(0:2, 3:4, 2:3)
> which has subscriptRanges with 2, 1, 1 elements, and thus the subArray 
> has 2x1x1 = 2 floats.
> 
> (3) permutation
> We can define a permuted Array by exchanging the order of the 
> subscriptRanges, but keeping the same data. This is a useful operation 
> when there is an implied efficiency or ordering convention associated 
> with the order of the subscriptRanges (eg in Fortran "first subscript 
> varies fastest").
> 
> (4) Axis
> We can now add metadata to this very abstract object by associating a 
> metadata object with each SubscriptRange, and calling the result an 
> *Axis*. Some attibutes of an Axis would include the mapping from 
> subscript to independent variable, such as lowerLimit, delta, unit, 
> UCD, and the name of the Axis (eg "velocity").
> 
> (5) Continuum model
> The Array is defined as a mapping from a discrete space (product of 
> subscriptRanges), and we can extend this to a continuum mode by 
> interpolating. In other words, we are allowing real-valued subscripts. 
> This would only work for certain of the standard voxel types (float, 
> double, floatComplex, doubleComplex), where interpoation makes sense.
> 
> 
> 
> California Institute of Technology
> 626 395 3670
--------------------------------------------------------------------------
Arnold H. Rots                                Chandra X-ray Science Center
Smithsonian Astrophysical Observatory                tel:  +1 617 496 7701
60 Garden Street, MS 67                              fax:  +1 617 495 7356
Cambridge, MA 02138                             arots at head.cfa.harvard.edu
USA                                     http://hea-www.harvard.edu/~arots/
--------------------------------------------------------------------------



More information about the dal mailing list