VirtualObservatorySAMP
This package provides a Julia implementation of the Simple Application Messaging Protocol (SAMP), a messaging protocol that enables astronomy software tools to interoperate and communicate (see also Taylor et al. 2015).
Currently, the package implements only the non-callable client interface: this allows one to send synchronous message to SAMP-aware applications such as SAOImage DS9, TOPCAT, Aladin Sky Atlas and similar.
The package can also connect using a WEB hub provided, for example, by Aladin lite.
Example 1
Let us find all subscriptions that TOPCAT is providing.
Open TOPCAT, then type the following commands on the Julia REPL:
julia> using VirtualObservatorySAMP
julia> hub = SAMPHub();
julia> client = register(hub, "Test";
description="Simple test of VirtualObservatorySAMP.jl", version=v"1.0.0");
julia> topcat = findFirstClient(client, "topcat")
julia> getSubscriptions(client, topcat)
julia> unregister(client)
Example 2
In this example we send various messages to SAOImage DS9. Additionally, we make use of a simplified calls: the first argument (client
) is automatically replaced by the default client VirtualObservatorySAMP.defaultClient
.
Open TOPCAT and, then, SAOImage DS9 on your local computer.
Then type the following commands on the Julia REPL:
julia> using VirtualObservatorySAMP
julia> ds9 = first(getSubscribedClients("ds9.get"))
"c2"
julia> getMetadata(ds9)
Dict{Any, Any} with 9 entries:
"samp.icon.url" => "http://ds9.si.edu/sun.png"
"author.name" => "William Joye"
"author.affiliation" => "Smithsonian Astrophysical Observatory"
"ds9.version" => "8.6"
"home.page" => "http://ds9.si.edu/"
"samp.description.text" => "SAOImageDS9 is an astronomical visualization application"
"samp.documentation.url" => "http://ds9.si.edu/doc/ref/index.html"
"samp.name" => "ds9"
"author.email" => "ds9help@cfa.harvard.edu"
julia> callAndWait(ds9, "ds9.get"; cmd="version")
VirtualObservatorySAMP.SAMPSuccess{Dict{Any, Any}}(Dict{Any, Any}("value" => "ds9 8.6"))
julia> notify(ds9, "image.load.fits";
url="https://fits.gsfc.nasa.gov/samples/UITfuv2582gc.fits", name="Astro UIT")
julia> unregister()
julia> @assert VirtualObservatorySAMP.defaultClient === nothing
Example 3
Here we display a color image in SAOImage DS9. Start as a in the previous example, then type the following commands:
julia> using VirtualObservatorySAMP
julia> hub = SAMPHub();
julia> client = register(hub, "Test";
description="Simple test of VirtualObservatorySAMP.jl", version=v"1.0.0");
julia> ds9 = first(getSubscribedClients(client, "ds9.get"))
"c2"
julia> callAndWait(client, ds9, "ds9.set"; cmd="rgb")
julia> callAndWait(client, ds9, "ds9.set"; cmd="rgb red")
julia> callAndWait(client, ds9, "ds9.set"; cmd="url http://ds9.si.edu/download/data/673nmos.fits")
julia> callAndWait(client, ds9, "ds9.set"; cmd="zscale")
julia> callAndWait(client, ds9, "ds9.set"; cmd="rgb green")
julia> callAndWait(client, ds9, "ds9.set"; cmd="url http://ds9.si.edu/download/data/656nmos.fits")
julia> callAndWait(client, ds9, "ds9.set"; cmd="zscale")
julia> callAndWait(client, ds9, "ds9.set"; cmd="rgb blue")
julia> callAndWait(client, ds9, "ds9.set"; cmd="url http://ds9.si.edu/download/data/502nmos.fits")
julia> callAndWait(client, ds9, "ds9.set"; cmd="zscale")
julia> callAndWait(client, ds9, "ds9.set"; cmd="rotate 270")
julia> callAndWait(client, ds9, "ds9.set"; cmd="zoom to fit")
julia> unregister(client)