Spectrum load MType(s)
m.b.taylor at bristol.ac.uk
Wed Apr 8 04:56:45 PDT 2009
The spectrum load MType I proposed a month ago (below) hasn't attracted
any adverse comment, so I presume that people think it's reasonable.
Furthermore, following private discussions, something along these
lines has been implemented and works in (test versions of) SPLAT,
Aladin, JSkyCat and VODesktop. The prototype MType actually used
in these applications resembles the "spectrum.load.ssa" message I
proposed in my original message, except that it's called
"spectrum.load.ssa-generic". This somewhat unwieldy name arose
because I was thinking about maybe having different MTypes for
different SSA versions ... I actually was planning to rename it
before it was public, but others wrote code that used it, so it
seems to have stuck.
I suggest that I add the definition to the SampMTypes wiki page
at the end of this week, thus making it 'official'
(as official as MTypes get) and then applications using it can
be released and interoperate. However, if anyone feels that it
would be better to rename it (to ...?) before that, say so and
it's probably not too late for the authors of the applications
in question to make the change (for my part, I could easily change
the name in SPLAT).
On Wed, 11 Mar 2009, Mark Taylor wrote:
> Dear SAMP people,
> we are still lacking spectrum.load MType(s) for SAMP.
> I'm currently adding SAMP functionality to SPLAT; I hope that VOSpec
> and perhaps others will follow suit. Here are my thoughts about
> how a spectrum load MType should be defined.
> As for other SAMP MTypes, it's helpful to look at the corresponding
> PLASTIC message. Here it is (from
> url: String
> id: String
> meta: Map
> success: boolean
> Loads a spectrum or SED. id is an identifier as for the
> VOTable load message - use the URL if there's no reason to
> do otherwise. The meta argument is a map/struct containing
> additional information about the type of data found at url
> which encodes the spectrum. The entries of this map take the
> form of key->value pairs, where the keys are either utypes
> as defined in the SSAP specification (e.g. "Access.Format"
> for MIME type) or UCDs. As many or few of these entries as
> are known may be filled in.
> Unlike most of the other PLASTIC load messages (which have a fixed
> data format and transmit only the URL in a parameter), it wasn't very
> clear what was the best way to define this one, and it took us some while
> to decide how to do it. The form we adopted is influenced by the fact
> that there is a wide variety of spectrum data formats in use, and
> there may or may not be a lot of useful associated metadata, some
> or all of which receiving applications might want or need.
> The "meta" argument above is messy but pragmatic. It allows all
> known metadata to be placed in one bag for receiving applications
> to sort out. This means it's easy for an application which has
> the result of an SSA query to pass it on via PLASTIC to another
> application. The receiving application has to do some work
> disentangling this: for instance the MIME type may be given
> as the value of the "Access.Format" or perhaps "ssa:Access.Format"
> key (utype in the SSA v1.0 standard) or of the "VOX:Spectrum_Format"
> key (UCD in some earlier SSA versions).
> SSA Services which output in both these forms are alive and well.
> In practice this isn't much of a burden for the existing spectrum-
> consuming PLASTIC applications, since they all have to do the same
> job when they consume SSA service results directly in any case.
> Although in principle there is a possibility of meta map key
> clashes since utypes and UCDs are mixed, in practice the syntax
> of these is sufficiently different that it's unlikely to be a problem.
> You can use this message to transmit a spectrum which does not
> originate from an SSA query too - just fake the contents of
> the metadata map (maybe even leave it empty).
> A more or less direct translation of the above PLASTIC message,
> following the PLASTIC->SAMP conventions we've used for the
> other *.load.* MTypes, would look about like this:
> url (string):
> URL of the spectrum to load
> meta (map):
> Additional metadata describing the spectral data found
> at the URL. Key->value pairs represent either
> Utypes or UCDs as defined or used in some version of
> the SSA specification or its predecessors.
> For example "Access.Format" (SSA 1.0 MIME type Utype)
> or "VOX:Spectrum_Format" (pre-1.0 SSA MIME type UCD).
> spectrum-id (string) optional:
> Identifier which may be used to refer to the loaded spectrum
> in subsequent messages
> name (string) optional:
> Name which may be used to label the loaded spectrum in the
> application UI
> Return Values:
> There are other possibilities. For instance:
> - We could take the opportunity to align more closely with
> IVOA standards and require that the metadata map contains
> only Utypes from the SSA 1.0 standard. This would look tidier,
> but in practice would require more work by sending applications
> which have to deal with SSA responses that may not conform to
> SSA 1.0 (most currently don't). Doing a good job of translating
> a non-v1.0 SSA metadata map to a v1.0 one would be non-trivial.
> - We could introduce a set of type-specific spectrum.load.* messages
> (spectrum.load.fits, spectrum.load.votable, spectrum.load.ascii, ...)
> This would look more consistent with the way we've done other
> MTypes, but again introduces more work for sending applications,
> since they can no longer just forward the info from an SSA
> response. Extracting the data type from the SSA response is
> not in practice straightforward, since you need to do a bit
> of detective work (a) finding the utype/UCD containing this
> information and (b) turning the "MIME type" (interpreted very
> loosely by a lot of existing SSA services) into a SAMP-defined
> data type. We'd have to enumerate the list of known types for
> this purpose as well.
> - We could make the relatively minor adjustment of splitting
> the metadata map into two parameters, one for UCDs and
> one for Utypes. Or maybe one for SSA v1 Utypes and one for
> old-type SSA UCDs (call them ssa1-utypes and ssa-old-ucds or
> something). This would look a bit more respectable and could
> make the parsing slightly easier or more robust.
> - No doubt other options and variants exist.
> So, although it looks a bit untidy, I'm inclined to go for something
> close to the PLASTIC-like MType I've written above. We know this
> works because its equivalent is in use in PLASTIC applications.
> Of course since MTypes are just agreements between willing participants
> there is no absolute requirement to have a single agreed form for this
> purpose (i.e. different developers could do different things, or we
> could adopt all of the above. However the more agreement, and the
> fewer MTypes to do the same job, we can have, the better it will
> be for interoperability.
> Does anyone else have an opinion or comment?
Mark Taylor Astronomical Programmer Physics, Bristol University, UK
m.b.taylor at bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/
More information about the apps-samp