STILTS-CDSSKYMATCH(1)
β¨ NAME β¨
stilts-cdsskymatch β Crossmatches table on sky position against VizieR/SIMBAD table π
okay so bestie, quick context before we dive in: this is the STILTS-CDSSKYMATCH(1) page, one of the Stilts commands. It's a long one, so it comes in 2 parts, and this right here is part 1. Buckle up, hydrate, we're doing this π«Ά
π°οΈ SYNOPSIS π°οΈ
stilts cdsskymatch [ifmt=<in-format>] [istream=true|false] [in=<table>]
[icmd=<cmds>] [ocmd=<cmds>]
[omode=out|meta|stats|count|checksum|cgi|discard|topcat|samp|tosql|gui]
[out=<out-table>] [ofmt=<out-format>] [ra=<expr>]
[dec=<expr>] [radius=<value/arcsec>]
[cdstable=<value>] [find=all|best|best-
remote|each|each-dist] [blocksize=<int-value>]
[maxrec=<int-value>] [compress=true|false]
[serviceurl=<url-value>] [usemoc=true|false]
[presort=true|false] [fixcols=none|dups|all]
[suffixin=<label>] [suffixremote=<label>]
π« DESCRIPTION π«
cdsskymatch uses the CDS X-Match service to join a local table to one of the tables hosted by the Centre de DonnΓ©es astronomiques de Strasbourg β¨ That's all of the VizieR tables and the SIMBAD database, no cap. The service is very fast, and in most cases it's literally the best way to match a local table against a large external table hosted by a service. It is almost certainly much better than using coneskymatch β though ngl it's less flexible than TAP (go peek at the tapquery task for flexible access to TAP services, and tapskymatch for positional matches) πββοΈ
The local table gets uploaded to the X-Match service in chunks, and the matches for each chunk are retrieved in turn and eventually stitched together to form the final result π§΅β¨ The tool only uploads the sky position and an identifier for each row of the input table β that's it, that's the whole upload β but all columns of the input table are reinstated in the result for reference. iconic behaviour tbh π
If you want a better understanding of how this service actually operates, including exactly what coordinates are matched against the uploaded positions (roughly: integrated to J2000 using proper motions if available) and what columns end up in the output (roughly: a subset of the most commonly used columns), please go consult the service documentation π
Acknowledgement: CDS note that if the use of the X-Match service is useful to your research, they would appreciate the following acknowledgement: "This research made use of the cross-match service provided by CDS, Strasbourg." π
π OPTIONS π
ifmt=<in-format>β Specifies the format of the input table as specified by parameterin. The known formats are listed in SUN/256. Use this flag when you already know what format your table is in π§ If it has the special value(auto)(the default), then an attempt will be made to detect the format of the table automatically. This cannot always be done correctly though, and in that case the program will exit with an error explaining which formats were attempted π This parameter is ignored for scheme-specified tables.istream=true|falseβ If settrue, the input table specified by theinparameter will be read as a stream π You must give theifmtparameter in this case. Depending on the required operations and processing mode, this may cause the read to fail (sometimes it is necessary to read the table more than once) π It's not normally necessary to set this flag; in most cases the data will be streamed automatically if that's the best thing to do. However it can sometimes result in less resource usage when processing large files in certain formats (such as VOTable). This parameter is ignored for scheme-specified tables.in=<table>β The location of the input table π This may take one of the following forms:- A filename.
- A URL.
- The special value
-, meaning standard input. In this case the input format must be given explicitly using theifmtparameter. Note that not all formats can be streamed in this way. - A scheme specification of the form
:<scheme-name>:<scheme-args>. - A system command line with either a
"<"character at the start, or a"|"character at the end ("<syscmd"or"syscmd|"). This executes the given pipeline and reads from its standard output. This will probably only work on unix-like systems π§
In any case, compressed data in one of the supported compression formats (gzip, Unix compress or bzip2) will be decompressed transparently β¨
icmd=<cmds>β Specifies processing to be performed on the input table as specified by parameterin, before any other processing has taken place πͺ The value of this parameter is one or more of the filter commands described in SUN/256. If more than one is given, they must be separated by semicolon characters (";"). This parameter can be repeated multiple times on the same command line to build up a list of processing steps. The sequence of commands given in this way defines the processing pipeline which is performed on the table π
Commands may alternatively be supplied in an external file, by using the indirection character'@'π Thus a value of"@filename"causes the filefilenameto be read for a list of filter commands to execute. The commands in the file may be separated by newline characters and/or semicolons, and lines which are blank or which start with a'#'character are ignored. A backslash character'\fR'at the end of a line joins it with the following line.
ocmd=<cmds>β Specifies processing to be performed on the output table, after all other processing has taken place πͺ The value of this parameter is one or more of the filter commands described in SUN/256. If more than one is given, they must be separated by semicolon characters (";"). This parameter can be repeated multiple times on the same command line to build up a list of processing steps. The sequence of commands given in this way defines the processing pipeline which is performed on the table π
Commands may alternatively be supplied in an external file, by using the indirection character'@'π Thus a value of"@filename"causes the filefilenameto be read for a list of filter commands to execute. The commands in the file may be separated by newline characters and/or semicolons, and lines which are blank or which start with a'#'character are ignored. A backslash character'\fR'at the end of a line joins it with the following line.
omode=out|meta|stats|count|checksum|cgi|discard|topcat|samp|tosql|guiβ The mode in which the result table will be output π The default mode isout, which means the result will be written as a new table to disk or elsewhere, as determined by theoutandofmtparameters. But bestie, there are other possibilities β ones that correspond to uses a table can be put to other than outputting it, like displaying metadata, calculating statistics, or populating a table in an SQL database. For some values of this parameter, additional parameters (<mode-args>) are required to determine the exact behaviour π
Possible values are
outmetastatscountchecksumcgidiscardtopcatsamptosqlgui
Use the help=omode flag or see SUN/256 for more information π‘
out=<out-table>β The location of the output table π This is usually a filename to write to. If it is equal to the special value"-"(the default) the output table will be written to standard output.
Heads up: this parameter must only be given ifomodehas its default value of"out".
ofmt=<out-format>β Specifies the format in which the output table will be written (one of the ones in SUN/256 β matching is case-insensitive and you can use just the first few letters π). If it has the special value(auto)(the default), then the output filename will be examined to try to guess what sort of file is required, usually by looking at the extension. If it's not obvious from the filename what output format is intended, an error will result π΅
Heads up: this parameter must only be given ifomodehas its default value of"out".
ra=<expr>β Right ascension in degrees in the ICRS coordinate system for the position of each row of the input table π This may simply be a column name, or it may be an algebraic expression calculated from columns as explained in SUN/256. If left blank, an attempt is made to guess from UCDs, column names and unit annotations what expression to use πdec=<expr>β Declination in degrees in the ICRS coordinate system for the position of each row of the input table π This may simply be a column name, or it may be an algebraic expression calculated from columns as explained in SUN/256. If left blank, an attempt is made to guess from UCDs, column names and unit annotations what expression to use πradius=<value/arcsec>β Maximum distance from the local table(ra,dec)position at which counterparts from the remote table will be identified π This is a fixed value given in arcseconds, and it must be in the range[0,180](this limit is currently enforced by the CDS Xmatch service) π§cdstable=<value>β Identifier of the table from the CDS crossmatch service that is to be matched against the local table π― This identifier may be the standard VizieR identifier (e.g."II/246/out"for the 2MASS Point Source Catalogue) or"simbad"to indicate SIMBAD data.
See for instance the TAPVizieR table searching facility at http://tapvizier.u-strasbg.fr/adql/ to find VizieR catalogue identifiers π
find=all|best|best-remote|each|each-distβ Determines which pair matches are included in the result π§all: All matchesbest: Matched rows, best remote row for each input rowbest-remote: Matched rows, best input row for each remote roweach: One row per input row, contains best remote match or blank
each-distβ one row per input row, column giving distance only for best match
Also lowkey important: only the all mode is symmetric between the two tables. The others? Not so much, bestie. π
π¨ Bug alert! There's a bug inbest-remotematching. If the match is done in multiple blocks, it's possible for a remote table row to appear matched against one local table row per uploaded block, rather than just once for the whole result. If that gives you the ick, setblocksize >= rowCount. This may be fixed in a future release.
blocksize=<int-value>β The CDS Xmatch service has limits on the maximum number of rows you can upload and the maximum number of rows it will return from a single query. So for big input tables, they get broken down into smaller blocks, and one request is sent to the external service for each block. This parameter controls the number of rows in each block. For an input table with fewer rows than this value, the whole thing is done as a single request.
At time of writing, the maximum upload size is 100Mb (about 3Mrow; this does not depend on the width of your table), and the maximum return size is 2Mrow.
Large blocksizes tend to be good (up to a point) for reducing the total amount of time a large xmatch operation takes, but they can make it harder to see the job progressing. There is also the danger (for ALL-type find modes) of exceeding the return size limit, which will result in truncation of the returned result.
maxrec=<int-value>β Limit to the number of rows resulting from this operation. If the value is negative (the default) no limit is imposed. Note however that there can be truncation of the result if the number of records returned from a single chunk exceeds the service hard limit (2,000,000at time of writing).compress=true|falseβ If true, the service is requested to provide HTTP-level compression for the response stream (theAccept-Encodingheader is set to"gzip", see RFC 2616). This does not guarantee that compression will happen, but if the service honours this request it may result in a smaller amount of network traffic at the expense of more processing on the server and client.serviceurl=<url-value>β The URL at which the CDS Xmatch service can be found. Normally this should not be altered from the default, but if other implementations of the same service are known, this parameter can be used to access them.usemoc=true|falseβ If true, first acquire a MOC coverage map from CDS, and use that to pre-filter rows before uploading them for matching. This should improve efficiency, but have no effect on the result.presort=true|falseβ If true, the rows are sorted by HEALPix index before they are uploaded to the CDS X-Match service. If the match is done in multiple blocks, this may improve efficiency, since when matching against a large remote catalogue the X-Match service likes to process requests in which sources are grouped into a small region rather than scattered all over the sky.
Note this will have a couple of other side effects that may be undesirable: it will read all the input rows into the task at once, which may make it harder to assess progress, and it will affect the order of the rows in the output table.
It is probably only worth setting true for rather large (multi-million-row?) multi-block matches, where both local and remote catalogues are spread over a significant fraction of the sky. But feel free to experiment.
fixcols=none|dups|allβ Determines how input columns are renamed before use in the output table. The choices are:noneβ columns are not renameddupsβ columns which would otherwise have duplicate names in the output will be renamed to indicate which table they came fromallβ all columns will be renamed to indicate which table they came from
If columns are renamed, the new ones are determined by suffix* parameters.
suffixin=<label>β If thefixcolsparameter is set so that input columns are renamed for insertion into the output table, this parameter determines how the renaming is done. It gives a suffix which is appended to all renamed columns from the input table.suffixremote=<label>β If thefixcolsparameter is set so that input columns are renamed for insertion into the output table, this parameter determines how the renaming is done. It gives a suffix which is appended to all renamed columns from the CDS result table.
β¨ SEE ALSO β¨
If the package stilts-doc is installed, the full documentation SUN/256 is available in HTML format: file:///usr/share/doc/stilts/sun256/index.html
πΈ VERSION πΈ
STILTS version 3.5.4-debian
This is the Debian version of Stilts, which lack the support of some file formats and network protocols. For differences see file:///usr/share/doc/stilts/README.Debian
π AUTHOR π
Mark Taylor (Bristol University)
That's the tea, bestie! This page is from Mar 2017, for STILTS-CDSSKYMATCH(1), version STILTS version 3.5.4-debian. Now go slay those crossmatches! πβ¨
π¦ where this page comes from
- ubuntu stonking: stilts 3.5.4-1 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms