[QUANTITY] The discussion so far
Jonathan McDowell
jcm at head-cfa.harvard.edu
Thu Oct 30 19:27:34 PST 2003
Quantity Discussions Oct 2003
I've been drowning in email but I think I'm almost caught up. Phew!
Here's my understanding of the issues so far, as represented
in both dm at ivoa,net and off-list discussions, with a few of my own
spins. Forgive me if I have misrepresented opinions and been sloppy
about credit (e.g. the Dowler:: namespace should really be
Dowler-Lemson::?; I use Foo:: to indicate an object introducted into the
discussion by person Foo in some email).
What should Q be called? Is Quantity an OK name?
Thomas yes, but it means what we want it to mean
Dowler yes, but it means what CS people mean
Berry no, use Data Container
McDowell yes.
Should we do Q now, or wait until we've done O (Observation)?
Alberto - wait
Everyone else writing emails, - presumably, now
McDowell: I think O is a higher priority, but no reason not to
forge ahead with Q too.
Is the name of the (phenomenon, variable, etc) part of Q?
(Dowler::Property name in a separate place)
(Berry::DataContainer: yes, include name and/or label)
McDowell: I would like to see a name as part of Q - then scalar Qs
can serialize as a FITS keyword.
Does Q support arrays? Multi-dim arrays?
(Dowler: yes)
(Thomas Oct 25 0845: yes)
(Didelon Oct 28 no: model something simple)
Reason: same unit for many samples, commonalities
McDowell: I say yes, because we will need such a multi-dim object,
and it will be exactly the same as Q except for the multi-dimensionality.
So why do the same work twice? So much of astronomical life
is N-dim array based. We might as well put it in at the basic level.
Does Q support multi-dim arrays with links to other Q's as axes?
example: Flux(Wavelength)
Thomas Oct 29: yes
Plante: no, higher level object to connect data Q with axis Qs
McDowell: I agree with Ray, this should be a higher level object.
Q should be the values associated with a single UCD (not counting
modifiers like error, quality), and anything connecting two UCDs
should not be in Q.
(admittedly our CfA DataContainer object does do this WCS stuff,
but I think we are trying
to keep Q a little simpler.)
Does Q support complex types?
Dowler::Type = Ellipse2D, Oct 27
Dowler, polygon types (Oct 29)
McDowell: suggest we not rule this out, but an initial implementation
would only support basic datatypes.
Should array quantity and a scalar quantity be separate
classes?
(Dowler::AtomicQuantity, Dowler::ArrayQuantity;
McDowell - My view:
Not a separate class, simply the case n = 1
Failing that, at least a class inheriting via restriction
from Array, not a separate derivation from Q.
Dowler's view (Oct 29): "really dislike the array of length 1..."
(but I think this is just for the serialization, not
the internal class representation, so perhaps reconciliation possible)
Should Q include heterogenous arrays? (with different UCD, units etc)
(Thomas::QuantitySet table row construct)
Most people: No
Dowler: No, but consider representation issues (ISO date, numerical error)
McDowell: Probably no, at least for rev 1
Should units be in Q?
Everyone (I think!): Yes
Should errors be in Q or in Measurement (aggregation with Q)?
Dowler::Measurement: not in Q
Dowler: lots of things in VO are not physical measurements and do not have errors
Thomas: data fusion requires errors in Q.
Thomas (Oct 30): suggest that
Dowler::Measurement maps to Q (and Dowler::Quantity does not)
Berry::DataContainer should include them
McDowell: yes, but don't model the Error object fully yet.
If errors are in Q, should there be a simpler class similar to Dowler::Quantity
which does not contain errors?
Didelon yes, (Oct 30)
Thomas: implicitly no (Oct 30?) but didn't address Didelon's request for
a name to talk about Dowler::Quantity (the object with no errors)
McDowell: I think no, there's no need for a 'Simple-Q' with no errors
(as opposed to a Q with a null error), it doesn't add significant
weight to the class (and in the XML serialization doesn't have to add any weight?)
Lemson (Oct 30): Dowler::Quantity is individual pixels - but errors
may be correlated. Whole image is a Lemson::Result and not a Dowler::Quantity.
McDowell: I like the idea that a single pixel can be a Quantity on its own,
and an array of pixels can be a Quantity. Much fun will be hidden in the
Error model. In particular, even in an image where the errors are
correlated, one sometimes asks 'what is the absolute error on this pixel?',
or 'what is the relative error on this pixel?', information that really
is meaningful for just that pixel alone. Sometimes in contrast one asks:
'what is the error on the flux extracted from this group of pixels'
in which case the array's Error is the thing you need to use. The
fact that errors are correlated doesn't mean it's meaningless to
ask a pixel what its error is, and so doesn't mean Quantity shouldn't
have an Error object.
Is there an intermediate astronomy/container-type object
between O and Q?
Tody: Adding quality etc to Q makes it no longer Q, but Tody::Dataset
McDowell: I introduce this question because of Doug's comment;
one can perhaps recast the continuum of opinions into a divide between
those who want Q really simple (scalar value + unit, no array, no
name, no error) and those who (like me) want Q to be the basis for containing
everything except the astronomy (array values, unit, quality, errors,
perhaps even coords). Maybe that's an indication there are two
objects to be modelled, even if some of us think that using the
extra, simpler object will mean more difficulty in writing properly
general application code.
Should quality be in Q?
Berry::DataContainer, yes (specific flags, not overall Obs quality)
Thomas: Yes, as part of Accuracy
Tody: No, keep Q simple
Micol: No, keep Q simple
Others: my impression is tending no
McDowell: yes, I think it would be good to have this
Should Measurement inherit from Q vs use it as e.g. aggregation?
(Thomas yes, inherit?)
(Didelon no, aggregate)
(McDowell no, aggregate)
(Lemson no, "uses")
Should Q support string values?
(Thomas, Oct 25 0845, yes)
(Plante, Oct 29, no)
(McDowell, strongly yes)
Should Q also be used for metadata?
(Thomas Oct 25 0845, yes)
Didelon says Dowler separation (in fact, layering) of concept
and Q is good. Thomas seems to think he is arguing for separation
of data and metadata. I don't see the connection but perhaps
I missed something.
Should Q describe its datatype?
Most people: yes? and I agree
Dowler::Type can be things like Ellipse2D, or things like Double.
Should Q include coverage, completeness?
Everyone: no, belongs in Observation
Should Q describe everything in a FITS file or VOTable
Everyone (?): No! Maybe this is true for Observation
Should Q talk about transform/mappings?
(Didelon no)
(Thomas details should be at higher level)
(Thomas no astronomical concepts like astro coord transforms)
(Berry: yes, since need to know why pixel 3 and pixel 4 are distinct)
(Plante no)
(McDowell: no, this should be the next higher level object)
Should Q have methods to describe quantity arithmetic?
(Barnes yes?)
(Everyone else: maybe but not yet?)
Should things be attributes or pointers?
(Dowler: start off with everything as classes)
(Plante: can refer to quantity without it having a value)
McDowell: I argue everything should be classes as long as possible,
allows for interfaces to hide special cases.
- Cheers, Jonathan
More information about the dm
mailing list