Spectrum load MType(s)
Allan Brighton
Allan.Brighton at t-online.de
Wed Mar 11 15:35:32 PDT 2009
Hi Mark,
I just implemented a jskycat "Send Spectrum to ..." feature using PLASTIC and the
"ivo://votech.org/spectrum/loadFromURL" message. At first I wasn't sure
what to put in the Map argument, but after reading your mail, I think I
understand now.
In this case, the user is viewing the results of an SSA query and a table
cell editor displays an icon with a "send menu" that sends the spectrum URL
for that row to an another application. I assume that the Map should map
the column UCDs to the column values for the selected row.
I tested this with PLASTIC and SPLAT and it seems to work fine.
Currently the SAMP version of this code just sends a "table.load.votable"
or "table.load.fits" message, but once you have a version of SPLAT that works with SAMP,
I'll test the new SAMP spectrum message. Let me know if there is a new SPLAT version
I can check out from the StarJava SVN sources.
--
Allan
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
> http://eurovotech.org/twiki/bin/view/VOTech/PlasticMessagesProposal):
>
> ID:
> ivo://votech.org/spectrum/loadFromURL
> Parameters:
> url: String
> id: String
> meta: Map
> Returns:
> success: boolean
> Description:
> 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:
>
> MType:
> spectrum.load.ssa
> Parameters:
> 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:
> none
>
> 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
>
More information about the apps-samp
mailing list