WAX Documentation
- Author:
- Serge Monkewitz
Motivation for WAX
The publicly released 2MASS catalogs were generated by running source extraction software on raw image data from many roughly rectangular regions on the sky (dubbed scans). These scans often overlap, producing multiple extractions or apparitions of a single astronomical source. In such situations, a "best" apparition was picked by 2MASS for inclusion in the source catalogs.As a consequence, there are many 2MASS extractions for which data is not publicly available. Furthermore, astronomers cannot pick "best" apparitions with algorithms of their choice.
The WAX software was developed to address these issues. It takes a completely different approach in that it generates groups of apparitions likely to correspond to a single astronomical source. These groups are made available as a catalog along with a complete database of extracted apparitions. The grouping algorithm employed is conservative in the sense that if an apparition is assigned to more than one group, that apparition and the groups containing it are flagged as confused. To avoid information loss, this confusion is not resolved.
WAX: Design
WAX is written in portable C/C++, but has currently only been run on SPARC CPUs and the Solaris OS. All apparition and group I/O is performed directly from and to an RDBMS (currently only Informix is supported), thereby saving disk space as well as database loading time. The output tables generated by WAX are immediately ready to be queried and served.The grouping algorithm used (the swiss cheese algorithm) is hardwired, and places minimal constraints on the input apparition database table: only an integer unique identifier, right ascension, and declination are required to be present for each apparition. The generated group catalog will always contain an integer unique group identifier, apparition count, and confusion flag for each group. Furthermore, a table of group and apparition identifier pairs is stored in a link catalog, allowing for the retrieval of all apparitions belonging to a group, or the retrieval of all groups containing an apparition.
All other computation is performed by a plug-in. This includes computation of group attributes and statistics (such as average positions, average magnitudes, etc...) as well as optionally choosing a "best" generated group for apparitions belonging to more than one.
The plug-in specifies supplementary retrieval and output columns. From this specification, C structures corresponding to the retrieval and output columns are generated. These structures are manipulated by the plug-in, thereby hiding all details of database IO from the plug-in implementation. Note that the actual ESQL/C code for database IO is also generated in order to attain higher performance (compile-time knowledge of columns allows dynamic ESQL/C statements to be replaced with static ones). At run-time, each generated group as well as each grouped apparition is passed to the plug-in implementation for processing via a simple C-interface contained in a single header file.
This allows the WAX software to be tailored to a particular apparition database, and extends its usefulness to missions beyond 2MASS.
Libraries are provided for common tasks likely to be performed by a plug-in. These include coverage computation and the spatial indexing (using the HTM indexing scheme) of positions.
Finally, it is important to note that the swiss cheese algorithm does not operate on the entire sky all at once. In practice, 2MASS apparition databases are far too large to hold entirely in memory, so the sky is segmented into disjoint sets of apparitions falling into small declination ranges (bands) which are then processed in relative isolation. The algorithm guarantees that non-adjacent bands are data-independent, meaning that an apparition database can be processed by running multiple instances of WAX in parallel.
For a brief overview of WAX and a high level view of the algorithms employed, please download the WAX ADASS 2004 poster, available in Adobe PDF format. More detailed explanations of WAX algorithms and usage are accessible through the links below.
WAX: Details
The Swiss Cheese Algorithm | |
Finding Match Sets | |
Computing Scan Coverage | |
Installing WAX | |
Compiling and Running WAX | |
WAX Helper Applications | |
Writing WAX Plug-Ins |
Generated on Thu Oct 21 13:19:37 2004 for WAX Version 2.1 by