Marking up HEALPix index columns in VOTable
Thomas Boch
thomas.boch at astro.unistra.fr
Wed Aug 10 15:07:50 CEST 2016
Thanks Mark for the clarification.
In that case, I would go for having a GROUP describing the parameters
and involved fields. Something like this:
<GROUP utype="stc:AstroCoordSystem">
<PARAM
utype="stc:AstroCoordSystem.SpaceFrame.CoordFlavor"
value="HEALPIX" name="CoordFlavor" />
<PARAM
utype="stc:AstroCoordSystem.SpaceFrame.CoordRefFrame"
value="ICRS" name="CoordRefFrame" />
<PARAM
utype="???:...norder"
value="8" name="HpxNorder" />
<PARAM
utype="???:...ordering"
value="NESTED" name="HpxOrdering />
<FIELDref
utype="???:...HpxIdx"
ref="hpx8" />
</GROUP>
[note: I'm not quite sure what would be the proper utypes to use to
describe the HEALPix norder, ordering and index.]
In addition to that, you might also want to tag somehow the field nsrc
to denote it is a cumulative count of something. <FIELD ID="nsrc"
ucd="src.density" /> might be enough for your example but we need
something other if we sum on a given parameter (flux for instance).
--
Thomas
Le 08/08/2016 10:49 PM, Mark Taylor a écrit :
> Thomas,
>
> the primary case we're thinking about here is the results of TAP queries.
> For instance, consider the following ADQL, which uses a custom
> User-Defined Function implemented by Markus's TAP service:
>
> SELECT ivo_healpix_index(raj2000, dej2000, 8) AS hpx8, COUNT(*) as nsrc
> FROM wise.main
> GROUP BY hpx8
> ORDER BY hpx8
>
> This generates a histogram binned by healpix index, or to put it
> another way an all-sky density map. Since it's TAP, the result
> is a table, typically transferred in VOTable format. The question is,
> how does the TAP service mark up the column resulting from
> the ivo_healpix_index UDF so that clients know what they're getting
> and can treat them accordingly, e.g. when attempting to make a
> healpix map plot?
>
> More generally, I'm adding various bits of healpix-related
> functionality to topcat/stilts (density map construction and
> visualisation). This kind of data set really does have the
> form of a table, so it seems like you should be able to serialize
> it with appropriate metadata in VOTable form. I admit it also
> makes sense to think of some such datasets as image-like in
> some circumstances too.
>
> Mark
>
> On Mon, 8 Aug 2016, Thomas Boch wrote:
>
>> Hi Mark,
>>
>> what's the motivation to have HEALPix maps in VOTable ?
>> Not to say I'm against the idea, but I'd like to understand better the use
>> case first. If had to output HEALPix maps, I'll go with the FITS serialization
>> as binary tables (and associated keywords ORDERING, COORDSYS, NSIDE) which can
>> be produced/is understood by the HEALPix library and the tools using it.
>>
>> Cheers,
>> Thomas
>>
>> Le 08/08/2016 à 18:55, Mark Taylor a écrit :
>>> [I've crossposted this to apps and semantics, but I suggest
>>> followups to Apps only]
>>>
>>> Dear colleagues,
>>>
>>> Gregory Mantelet, Markus Demleitner and I have been having some
>>> discussions about exchange of HEALPix maps within the VO.
>>>
>>> The type of data we're considering is a table for which one column
>>> contains a HEALPix index (an integer which identifies a tile on the sky),
>>> and other columns contain quantities relating to to that tile
>>> (source density, extinction, mean G magnitude, whatever).
>>> The question we're trying to answer is: how does a data producer
>>> mark up the healpix-index column in a VOTable so that consumers
>>> can recognise it as such?
>>>
>>> The following UCD1+ is defined:
>>>
>>> Q | pos.healpix | Hierarchical Equal Area IsoLatitude
>>> Pixelization
>>>
>>> So far so good; however, marking up a column like this provides
>>> insufficient information to make it useful, because to make sense
>>> of a HEALPix index you need to know what Order N of tiling it represents
>>> (HEALPix splits the sky into 12*4^N tiles, where N is an integer
>>> that for practical purposes falls in the range 0..29).
>>> Since UCD words cannot be parameterised (beyond composing them with
>>> other UCD words) there doesn't seem to be any way to encode this
>>> Order information in the UCD.
>>>
>>> Markus's clever idea is to do something like this:
>>>
>>> <FIELD datatype="int" ucd="pos.healpix">
>>> <VALUES type="legal">
>>> <MAX>49151</MAX>
>>> </VALUES>
>>> </FIELD>
>>>
>>> Since the legal maximum value for the column is 49151 (=12*(4^6)-1),
>>> it's possible to infer that N=6 for this healpix column. Note that
>>> since type="legal" this does not say that the actual contents of
>>> the column hit that maximum (i.e. some pixels might be absent, but the
>>> declaration would not change).
>>>
>>> This is kind of horrible, but at the same time the meaning is fairly
>>> unambiguous, and it requires no new standardisation activity.
>>> So, we are likely to go ahead with marking up HEALPix columns in
>>> this way (Markus's and Gregory's services will emit VOTables like
>>> this, and topcat will understand them) unless anybody persuades
>>> us different.
>>>
>>> We have considered various other options too, but on balance we
>>> think they're even worse. Briefly:
>>>
>>> - Abuse UCDs by trying to parameterise them:
>>> pos.healpix(6)?
>>> pos.healpix;index=6?
>>>
>>> - Introduce new UCD words to (0<=N<=29, so the number of new words
>>> would be quite, but not ridiculously, large):
>>> pos.healpix0, pos.healpix1, ... pos.healpix29?
>>> pos.healpix;arith.0, pos.healpix;arith.1, ... pos.healpix;arith.29
>>>
>>> - Xtype magic:
>>> xtype="healpix(6)"
>>> xtype="tilings:healpix(6)"
>>>
>>> - Some table-level indication of the order:
>>> <TABLE>
>>> <PARAM name="healpix-order" datatype="int" value="6">
>>> <FIELD datatype=int ucd="pos.healpix"/>
>>> ...
>>> </TABLE>
>>> this would work because in practice, it's hard to imagine you
>>> could have multiple columns in a single table with different
>>> healpix orders. This is somewhat analogous to how the
>>> ad-hoc FITS healpix serialization works.
>>> Note it still needs some convention to identify the healpix-order
>>> PARAM.
>>>
>>> - Some business with GROUP/FIELDref/PARAM elements at table level.
>>> Note this also needs some convention to identify the healpix-order.
>>>
>>> - Reinvent UCD syntax????
>>>
>>>
>>> Actually it is even worse than this: there are two alternative
>>> conventional schemes for assigning HEALPix indices to a tiling
>>> at a given order, known as NESTED and RING, and you need to know
>>> which one is intended. Furthermore, the actual sky position
>>> corresponding to a given pixel is dependent on how the tiling is
>>> attached to the celestial sphere (e.g. equatorial, ecliptic, galactic).
>>> So even if you know N you don't have enough explicit information
>>> to make sense of a healpix index. However, we are currently
>>> following MOC in assuming the NESTED scheme, and it's probably
>>> reasonable to take the sky system as implicit, so we're ignoring
>>> those details for now.
>>>
>>> Any bright ideas, wise comments etc welcome.
>>>
>>> Mark
>>>
>>> --
>>> Mark Taylor Astronomical Programmer Physics, Bristol University, UK
>>> m.b.taylor at bris.ac.uk +44-117-9288776 http://www.star.bris.ac.uk/~mbt/
> --
> Mark Taylor Astronomical Programmer Physics, Bristol University, UK
> m.b.taylor at bris.ac.uk +44-117-9288776 http://www.star.bris.ac.uk/~mbt/
More information about the apps
mailing list