STILTS offers flexible and efficient facilities for crossmatching tables. Crossmatching is identifying different rows, which may be in the same or different tables, that refer to the same item. In an astronomical context such an item is usually, though not necessarily, an astronomical source or object. This operation corresponds to what in database terminology is called a join.
There are various complexities to specifying such a match. In the first place you have to define what is the condition that must be satisfied for two rows to be considered matching. In the second place you must decide what happens if, for a given row, more than one match can be found. Finally, you have to decide what to do having worked out what the matched rows are; the result will generally be presented as a new output table, but there are various choices about what columns and rows it will consist of. Some of these issues are discussed in this section, and others in the reference sections on the tools themselves in Appendix B.
Matching can in general be a computationally intensive process.
The algorithm used by the
tmatch* tasks in STILTS,
except in pathological cases, scales as O(N log(N)) or thereabouts,
where N is the total number of rows in all the tables being matched.
No preparation (such as sorting) is required on the tables prior to
invoking the matching operation.
It is reasonably fast; for instance an RA, Dec positional match
of two 105-row catalogues takes of the order of 60 seconds
on current (2005 laptop) hardware. Attempting matches with large tables can
lead to running out of memory; the calculation just mentioned required a
java heap size of around 200Mb (
In the current release of STILTS the following tasks are provided for crossmatching between local tables:
tmatch2provided for convenience when the full generality is not required.
sky: Sky Matching
skyerr: Sky Matching with Per-Object Errors
skyellipse: Sky Matching of Elliptical Regions
sky3d: Spherical Polar Matching
exact: Exact Matching
2d, ...: Isotropic Cartesian Matching
2d_anisotropic, ...: Anisotropic Cartesian Matching
2d_err, ...: Cartesian Matching with Per-Object Errors
2d_ellipse: Cartesian Matching of Elliptical Regions