National Virtual Observatory Summer School Software Overview

Introduction

This document gives an overview of the major elements of the software developed for the second National Virtual Observatory Summer School held in Aspen, CO from September 6-15, 2005. Many of the libraries and tools included provide capabilities that can be used in astronomical research immediately. Other elements of the distribution provide templates that developers can adapt to their specific needs. This document provides a quick overview of the distribution to guide astronomers and developers to the software packages and libraries that they can use.

Overall Organization

The summer school software distribution comprises three main elements. Software developed specifically for the summer school (and anciallary files to build and test the software) are divided into a set of directories for each language used: csharp, idl, iraf, java, perl, php, python and sql. The java directory also includes a number of tools and services that were bundled in with this distribution for the convenience of users. Some of these tools and libraries (e.g., Tomcat and AXIS) are required for the summer school, while others, e.g., TOPCAT and Mirage, are generally useful tools. We only included such software for Java, since in other languages there are typically many distributions depending upon the specific hardware a user might have. Finally, the bin contains a number of scripts which make it easier to use the distribution. Most of the software anticipates that the user has successfully run the setup script. This directory also includes convenience scripts to start tools like Mirage, TOPCAT and Aladin.

Most of the directories which we describe below have a README file which gives more details of what is included in this area of the summer school distribution. The README file will also discuss any prerequisite software, and how such prerequisites may be obtained. Some of the software packages assume that you have installed appropriate software on your machine which is not bundled in this package, e.g., MySQL, Python or PHP.

Software Descriptions

This section gives a brief description of the software in each directory so that users can find the specific software modules that may meet their needs.

C#

The csharp/examples directory contains a few simple examples of how users may code in C#. Examples include connecting to a MySQL database and using a simple cosmology Web service.

IDL

The idl hierarchy contains a beta version of IDL software for querying VO services (including Registry, Cone Search, SIAP and SkyNode services) developed by Chris Miller. There is also a programmatic interface to the WESIX VO tool (which automatically finds objects in images and correlates them with other databases). An IDL VOTable reader is included. Elements of this package use the IDL2Java bridge and may not work on older versions of IDL.

IRAF

The iraf directory contains a script for downloading IRAF VO tools developed by Mike Fitzpatrick. This includes access to VO services, parsing VOTables and converting them to FITS.

Java

The java area includes many subdirectories. Most of the software developed for the summer school is found in the dev subdirectory while various other software tools are available in parallel subdirectories. These include:
Aladin
The Aladin image/catalog display tool allows users to display and overlay images and catalog data.
Axis ( axis-1_2_1)
The Axis library enables the TOMCAT Web server to support SOAP Web services. Two versions of Axis are supplied to accommodate Java 1.4 and Java 1.5 implementations. Generally speaking we have found that users need to be very careful to choose a compatible set of versions of the Java JDK, Tomcat web-server and AXIS library to be successful in deploying SOAP Web services.
Ant ( apache-ant-1.6.5)
The Ant tool is used to compile, build and deploy Java (and other language) tools. It provides functionality similar to the standard Unix make, but may be better adapted to building Java-based tools.
Tomcat ( jakarta-tomcat-5.0.28 )
Tomcat is an HTTP server that supports Java servlets. In conjunction with the AXIS library it also supports SOAP-based Web services.
Mirage
The Mirage application provides a powerful tool for the visualization of multidimensional tabular data. The version of Mirage supplied in the summer school reads VOTables.
VOPlot
The VOPlot tool is a powerful plotting tool for VOTables. Two versions are supplied. The version in voplot1_2_1 does standard 2-d plotting, while that in voplot3d1_0 has a 3-d visualization capability.
TOPCat
The TOPCat tool provides powerful capabilities for manipulating (displaying, correlating, combining, plotting) tables in many formats including VOTables and FITS. TOPCAT uses the STILTS library and the TOPCat classes and STILTS library are found in the lib subdirectory.
The lib directory contains a number of libraries that are used in various places. The IVOA FITS library may also be of interest to users. It includes modules for reading and wriing FITS files. The Junit library provides support for easy development of unit tests of Java software. The JDBC library for MySQL is also included here.

Summer School Developed Code

The dev directory contains many subdirectories with applications and libraries that were used in the summer school but are often of quite general interest. Each of these is briefly described below:
ADQL Library (adqllib)
This library provides simple translation capabilities between the XML and SQL-like representations of ADQL.
Basic Java examples (basicjava)
This directory examples of simple Java programs.
Basic Sky Node (basicskynode)
This directory contains implementations of a simple server and client for a basic sky node.
Cone Client (coneclient)
This directory contains a java implemention of a Cone Search client.
Cone Service (coneservice)
An implementation of the Cone Search using a data file supplied with the summer school.
Cone Web Service (conewebservice)
This directory contains a build file for a client for an SDSS Cone search deployed as a web service.
Catalog Extractor (catalog_extractor)
This service tries to normalize the photometry in an image.
DAL Client (dalclient)
A powerful library of routines for accessing Conesearch, Simple Image Access and soon Simple Spectral Access services. Users can query and retreive catalog and binary data in just a few method calls.
Full SkyNode (fullskynode)
A simple server and client implementation of the full SkyNode implementation. However this version is not yet full compatible with existing SkyNodes so that cross-correlations with other nodes may not be successful.
IVOA client (ivoaclient)
Classes for parsing VOTables using the JAVOT and SAVOT libraries.
IVOA FITS (ivoafits)
Classes for using the IVOA FITS library.
IVOA Registry (ivoaregistry)
Classes to access VO registries.
K Giant (kgiant)
A example application looking for K-giants using VO protocols.
NVO Registry (nvoregistry)
Classes to search the VO registry at JHU.
Read FITS (readfits)
A simple example program for reading a FITS file.
Read VOTable (readvotable)
A simple example prorgram for reading a VOTable.
SIAP Server (siapserver)
Build a simple image access service.
SkyPortal client (skyportalclient)
Build a client to the SkyPortal service. The SkyPortal in turn sends queries to various SkyNodes and sends the final response back to the user.
SkyPortal Upload Client (skyportaluploadclient)
This SkyPortal client uploads a table into the portal to do cross-correlations with the SkyNode catalogs.
URL Reader (urlreader)
This program gives a simple example of a Java program reading data from a URL.
WESIX Client (wesixclient)
This directory includes a Web services client for the WESIX service.
XML Parser (xmlparse)
Example XML parsers.

Perl

The Perl directory contains a Perl VOTable parsing package and modules for accessing VO conesearch, SIAP and registry services developed by Tom McGlynn. The examp subdirectory contains a set of self-contained Perl applications.

PHP

The PHP directory contains libraries for accessing VO conesearch, SIAP, registry, SkyNode and SkyPortal services developed by Shui Kwok. It also constains several example PHP programs. A modified version of the PHP SOAP library, NuSOAP, is included which fixes some known bugs.

Python

The Python directory contains libraries for accessing VO conesearch, SIAP, registry and SkyNode services developed by Shui Kwok. There are also a number of example Python programs for accessing VO resources. The Python libraries make it very simple to query and retrieve data using VO protocols.

SQL

The SQL directories contain SQL scripts and data which are used to illustrate many of the basic features of SQL. Scripts for SQLServer and MySQL are included. To use other relational database implementations some modification of the scripts is likely to be needed.

Suggestions, additions, bug reports, etc...

We welcome your suggestions for additions or improvements to the summer school code. If you have suggestions you wish to report problems with the packages please let us know. Some of the elements of the summer school package are not intended to be production quality code, but we hope that many of the libraries included here become the basis of a growing VO multi-language API.