On Fri, 9 Jun 2006, Peter W. Draper wrote:
> Hi Mark (& interested),
>
> OK, as promised I've had a look at getting the basic infrastructure built
> into GAIA. After a bit of a struggle (initially getting the old services
> brain back into action) I now have a version that includes an XMLRPC
> server, along with an HTTP server, and support for XMLRPC client-side too.
>
> This is all committed (in a transitory form) to a CVS branch
> "gaia-xmlrpc":
>
> % cd applications/gaia
> % cvs update -r gaia-xmlrpc
>
> etc. When you start up that GAIA it should say:
>
> Started XML-RPC services on port (8015)
>
> and if you connect to localhost:8015 you should see the GAIA help page
> being served. As a simple client I've created "xmlrpcdisp.sh" for
> displaying a local image in GAIA:
>
> % $GAIA_DIR/xmlrpcdisp.sh $PISA_DIR/frame.sdf
>
> The server-side is all in the file "GaiaXMLRPC.tcl". I think all that's
> needed now is the PLASTICising work (including some UI control of all
> this, and maybe support for interoperating with VOTables)! The packaging
> could do with some looking at too. I'd better get back to day job for now.
Hi Peter,
I've finally got around to taking a look at this, and I've made some
progress. Changes so far are committed to the same (gaia-xmlrpc) branch.
Here is a summary of what I've done:
- Added some classes which handle locating and registering with
the PLASTIC hub if it's running, and invoked the relevant
things from the Gaia.tcl startup script. If there is a hub
running when GAIA starts up it will start up an XML-RPC server
and register with it. If not it doesn't start the server.
Either way a log message is printed. Currently there's no
way to register/unregister after program startup.
- Implemented a few of the Plastic messages, that is,
provided behaviour which responds to specific requests arriving
on the PLASTIC message bus. This functionality is all housed in
GaiaPlastic.tcl. As well as noddy ones like info/getName,
test/echo etc, the fits/image/loadFromURL message is implemented,
which means that other PLASTIC-registered apps can now use
GAIA for image display (with certain provisos).
- Removed the 'normal' (non-PLASTIC) XML-RPC server that you put in
Gaia.tcl. I presumed this was proof of concept rather than
because you wanted GAIA to serve XML-RPC in general, but it
can be reinstated if you want.
- Made a one-character change to xmlbits/tclsoap1.6.8/SOAP-domain.tcl,
for reasons explained in the CVS log.
- Updated gaia/library/tclIndex, which I presume is the right thing
to do. I haven't added the new classes to gaia/library/Makefile.in,
I'm not sure if they're supposed to go in there.
- I've attempted to follow your style of formatting, variable naming
etc etc in the new/modified .tcl files, but have no doubt failed
in some places - by all means point out offences and I'll try not
to repeat them.
Here's a couple of ways you can see this lot in action:
Using starjava PLASTIC package
------------------------------
starjava/lib/plastic/plastic.jar (no external dependencies)
contains a hub and a few utilities for mucking about with PLASTIC
(see http://www.star.bris.ac.uk/~mbt/plastic/ for some rudimentary
documentation).
- Start a hub
% java -classpath plastic.jar \
uk.ac.starlink.plastic.PlasticHub -gui -verbose
- Start Gaia (must do it after the hub has started)
% gaia
Started XML-RPC server for PLASTIC at http://andromeda.star.bris.ac.uk:8025
Registered PLASTIC XML-RPC listener at http://andromeda.star.bris.ac.uk:8025/plastic3818
(you should be able to see the effect in both the verbose output
and GUI display of the hub).
- Make a PLASTIC request to all capable registered applications
asking them what their name is:
% java -classpath plastic.jar \
uk.ac.starlink.plastic.PlasticRequest \
ivo://votech.org/info/getDescription
plastic://uk.ac.starlink.plastic.XmlRpcAgent/df1832-1-gaia:
Graphical Astronomy and Image Analysis Tool
- Make a PLASTIC request to all capable registered applications
asking them to display a FITS image:
% java -classpath plastic.jar \
uk.ac.starlink.plastic.PlasticRequest \
ivo://votech.org/fits/image/loadFromURL \
file://localhost/path/to/image.fits
plastic://uk.ac.starlink.plastic.XmlRpcAgent/df1832-1-gaia:
1
.. the image should appear in GAIA
From TOPCAT
-----------
Obviously, TOPCAT's more tables than images, but there is one place
it needs to display images, which is when it builds a density map
(2-d histogram) of objects on the sky
(http://www.starlink.ac.uk/topcat/sun253/DensityWindow.html).
You need quite a large/dense catalogue to make this worthwhile -
you can try the IRAS point source catalogue at
ftp://andromeda.star.bris.ac.uk/pub/star/data/iras_psc.fits.
- Start up TOPCAT loading that catalogue into it. The -hub flag
starts up a PLASTIC hub internally (don't need it if you've
already got the hub running from the last example).
% topcat -disk -hub \
ftp://andromeda.star.bris.ac.uk/pub/data/iras_psc.fits
- Plot a density map on the sky of IRAS sources by selecting
the Graphics|Density menu and filling in the selectors
X Axis = ra, Y Axis = dec (actually it will probably do this
automatically).
- Start Gaia (must do it after the hub has started)
% gaia
Started XML-RPC server for PLASTIC at http://andromeda.star.bris.ac.uk:8025
Registered PLASTIC XML-RPC listener at http://andromeda.star.bris.ac.uk:8025/plastic3818
- Select menu item Interop|Send FITS Image to...|Send to gaia
from TOPCAT's density window. It should appear in GAIA.
So, basic PLASTIC functionality works. Next steps and queries:
- PLASTIC apps ought to inform the hub when they are going to shut down
or otherwise stop responding for some reason. Is there somewhere
I can put tidying-up code which will be executed when GAIA shuts down?
This should preferably be invoked even if it shuts down abnormally.
- The fits/image/loadFromURL call implementation is a bit of a fudge -
it only works for file:-protocol URLs. Does GAIA have facilities
for loading FITS from a URL rather than just a local file?
If not I presume I can find some Tcl library code which will read
a stream from a URL which I can save to a temporary file.
- Obviously, this is only going to be really worthwhile if we can
implement some more, and more useful messages. There's a
(somewhat scrappily maintained) list of currently defined ones at
http://plastic.sourceforge.net/coremessages.html if you're
interested, though there's nothing to stop application authors
defining new ones. In particular:
sky/pointAtCoords:
Is there a (Tcl-accessible) way of indicating a sky position
in GAIA? This would ideally be some sort of moveable
visible cursor or pointer drawn on the image, but failing
that just warping the zoom window to the right place would
be better than nothing. This function on top of
fits/image/loadFromURL would already make GAIA a worthwhile
addition to the PLASTIC desktop.
table-type messages:
These currently mostly require VOTable manipulation.
I'm considering various approaches to this.
- [Eventually] There are issues with converting between (typeless)
Tcl variables and (typed) XML-RPC elements that I have to look into.
- [Eventually] There probably wants some to be some GUI at some
stage to control registering/unregistering with the hub etc -
cf TOPCAT's Interop menu
(http://www.starlink.ac.uk/topcat/sun253/plasticControl.html)
Not to mention getting GAIA to make requests to other PLASTIC
applications.
Finally: how can I run GAIA during development without deleting and
remaking gaia_swish (slow)? If I've just edited a couple of lines
in one of the Tcl files I don't know how to start up GAIA in such
a way that it notices I've made a change. I presume there must be a way!
Phew. That'll do for now.
Apologies for verbosity to anyone else who made it down this far.
Mark
--
Mark Taylor Astronomical Programmer Physics, Bristol University, UK
[log in to unmask] +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/
|