Time Series Cube DM - IVOA Note
Jiří Nádvorník
nadvornik.ji at gmail.com
Sun Mar 19 19:48:42 CET 2017
Hi Mark,
thank you for the response. My comments/answers below.
2017-03-16 17:19 GMT+01:00 CresitelloDittmar, Mark <mdittmar at cfa.harvard.edu
>:
>
>
> Yes.. the N-Dimensional Cube model is the continuation of that effort..
> when I took over that project it was folded into the effort of extracting
> DatasetMetadata from these Product models and forming the family of Cube,
> Dataset, STC( coordsys, coords, trans ); and using vo-dml compliant
> modeling. In that process, since the word 'Image' invokes the 'pixelated
> image type', and the model covers a broader scope than that, it was renamed
> Cube. The Cube model history includes the ImageDM iterations.
>
Thanks for the explanation. Now I understand - I will correct it in my
document.
>
>
>>
>> + Section 4/Figure 4
>>> your description of the TimeSeriesCube aligns pretty well with the
>>> SparseCube as it is..
>>> I'm not sure it is necessary to 'override' the content (btw you
>>> could just extend "PointDataProduct")
>>> o the cube model SparseCube has a collecton of NDPoints (ie rows),
>>> which contains a collection
>>> of DataAxis, each referring to an instance of a measurement
>>> type coordinate (value + errors)
>>> * your representation and mine simply reverse the row/column
>>> order.
>>> * in cube, the Observable is any instance of Coordinate which
>>> follows the pattern described
>>> in STC2-coords model. The modeling of that instance/domain
>>> does NOT have to be in
>>> any particular model.. so the Axis Domain DMs scenario you
>>> show works fine.
>>> * But.. for interoperability sake, we do require them to use
>>> the same pattern (by linking
>>> Observable to the abstract coords:DerivedCoordinate which is
>>> bound to a pattern)
>>>
>>
>> Yes, it is pretty similar - we used it as an inspiration and believe
>> originally that we will just build upon it without changing it. Problems
>> and difficulties listed beneath.
>>
>> 1. Axis Domain models - physical meaning of the data in the axis of
>> the data cube should not be part of the cube model. The Frame mappings and
>> CoordSys entities taken from STC are also such domain models IMHO.
>>
>> The cube model does not have any description of domain content.. (other
> than Pixel).
> The Mappings and CoordSys objects are containers for pan-domain
> information defined in the respective models (coordsys, trans).
>
Well then do I need to keep them as part of the Cube DM, can't we keep it
only in those respective models? Also connected with the point I put below:
>
>
+ Section 4.2.2
>> cube model does not have dependency on specifc axis domains any
>> more (since ~Nov)
>
>
> What about those FrameMappings and CoordSys entities? These are storing
> physical meaning of the data, not just describing the structure of the data
> (the data cube) itself.
>
>>
>>
Yes, they are containers for storing the physical meaning of the data. The
> content of a Cube or pixelated image is not devoid of physical meaning, if
> a sparse cube has data axes, each of these are of some physical quantity..
> these elements allow you to describe that content without imposing
> restrictions about specific domains.
I understand the purpose of the FrameMappings and CoordSys entities but
again I don't think we need to make them part of the Cube DM. I belive that
the physical domain model itself (Photometry DM, STC, Probability DM, ...)
should take care of their own FrameMappings and CoordSys objects (still, if
it's possible, I encourage them to use the existing models (coordsys,
trans).
Anyway, could you point me to the documents where those are specified? I
didn't find it in your document and am not sure how exactly is that
coordsys or trans defined.
>
>> 1. Row/column inversion - this is a bigger difference than it seems
>> on the first look. Logically we are storing the same information but I
>> don't want to explicitely store a reference to an axis in every single
>> point of the data cube. By this the Sparse Cube Model is IMHO saying that
>> the data can be unordered and so we need to store the reference for every
>> point? Doing it the other way around, the axis can just specify where I can
>> find the axis coordinates in the data element of the cube, no matter how we
>> serialize it.
>>
>> I think the annotation should end up pretty similar, except that
> Row-based will sit in a grouping for the NDPoint object, while column based
> will not.
> The axis reference is stored in the template next to the COLUMN spec.
> Each iteration of the Template (table row) fills in the appropriate
> elements of the template.. in my case the values and errors of the DataAxis
> observables in an NDPoint.. in the column-based approach each iteration
> will fill in the next element of the the observables.. outside of an
> NDPoint.
>
What exactly do you keep in the NDPoint then? Is it only a simple Coord, or
does it contain some metadata?
>
>
>> 1. What is the Observable entity's purpose in the diagram? Please
>> explain..
>>
>> Figure 2, 6, 7. Observable entity is a collection of Coordinates
> associated with the data product. This is something to make sure is
> explained well.
> The premise is that a DataProduct should OWN all of its coordinates/data.
> The vo-dml rules for composition state that a class/object may not be in
> more than one composition relation.
> + so one does not make composition relations across models.
> + it defines an aggregation pattern to use (as shown for DataProduct ->
> Observable -> DerivedObject ) for these situations
>
> Since there are multiple types of Data Axis types, I modeled it this way..
> where the DataProduct owns ALL its data (Observables), and the data axis
> types (DataAxis, DependentAxis) are organizational objects which refer to
> the instances of the same axis.
>
> This could be organized differently.. having the Observables owned by the
> DataAxis (which is directly or indirectly owned by the DataProduct), and
> extend that for various types of axis.. adding constraints as needed. The
> sub-classes of DataAxis would then each be in composition with some
> container (NDPoint, Voxel). I don't know if this would be
> better/worse/indifferent.
>
> <DataAxis> O---------- Cell (constrain mult=1)
> + |__ DependentAxis (constrain mult=1)
> | |__ Column ??
> V *
> Observable
> |
> V
> coords:DerivedCoordiante
>
>
> I want to note one distinction. The DataAxis here, is NOT the same as a
> coordinate space axis.
> If I have a 3D cartesian Space, with coordinate axes x,y,z.. there is 1
> DataAxis referring to a Position3D in that space.
> I think this maps well to statements below.. where the 'Observable' maybe
> need not be a DerivedCoordinate, but allow for complex objects like
> "Spectrum"
>
We need to draw this on a *sheet* and talk about it - I can think of
multiple instantiations of the abstractions that you used above (some would
actually be really close to the ones I want to make with the TimeSeriesCube
DM).
>
>
>>>
> <snip>
>
> So, I see we have 2 points of discussion for the cube model itself
> 1) relation between Dataset and DataProduct
> Currently modeled as according to Section 3.. extend Dataset add
> reference to DataProduct == MyDataset
>
> Alternates include:
> a) loose coupling
> verbal statement that MyDataset includes an instance of
> Dataset + instance of MyDataProduct
> b) referenced coupling
> MyDataSet == reference to Dataset + reference to MyDataProduct
> (allows validators to know what is expected, but allows
> flexibility w.r.t. Dataset flavor )
>
> I personally think a) is too loose, but b) might be a good way to
> go..
>
> 2) relation of DataProduct, DataAxis and the 'Observable'
> I haven't explored the alternative shown above very much, but like
> the possibility
> In the current relation, the DataProduct-Observable relation is a
> potential source of confusion to readers.
>
>
I agree we need to discuss these - we can on the Asterics meeting next week
if you will be there, otherwise a video call where we can share our
drawings would be also good.
Output of such discussion should be a model of the abstractions we are
using *with* the actual examples of data that are instances of those
abstractions. This is I feel the main source of my confusion as a reader of
other IVOA DMs, the lack of direct example that puts away the shadiness and
shortens up the discussions about it a lot.
Cheers,
Jiri
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ivoa.net/pipermail/dm/attachments/20170319/ebc68946/attachment.html>
More information about the dm
mailing list