Provided by: funtools_1.4.8-1.1build2_amd64 bug

NAME

       funtable - copy selected rows from a Funtools file to a FITS binary table

SYNOPSIS

       funtable [-a] [-i⎪-z] [-m] [-s cols] <iname> <oname> [columns]

OPTIONS

         -a    # append to existing output file as a table extension
         -i    # for image data, only generate X and Y columns
         -m    # for tables, write a separate file for each region
         -s "col1 ..." # columns on which to sort
         -z    # for image data, output zero-valued pixels

DESCRIPTION

       funtable  selects  rows  from  the specified FITS Extension (binary table only) of a FITS file, or from a
       non-FITS raw event file, and writes those rows to a FITS binary table file. It also will  create  a  FITS
       binary table from an image or a raw array file.

       The first argument to the program specifies the FITS file, raw event file, or raw array file.  If "stdin"
       is  specified,  data  are  read  from  the  standard input. Use Funtools Bracket Notation to specify FITS
       extensions, and filters.  The second argument is the output FITS file.  If  "stdout"  is  specified,  the
       FITS  binary  table  is  written  to  the standard output.  By default, all columns of the input file are
       copied to the output file.  Selected columns can be output using an optional third argument in the form:

         "column1 column1 ... columnN"

       The funtable program generally is used to select rows from a FITS binary table using Table Filters and/or
       Spatial Region Filters.  For example, you can copy only selected rows (and output only selected  columns)
       by executing in a command such as:

         [sh] funtable "test.ev[pha==1&&pi==10]" stdout "x y pi pha" ⎪ fundisp stdin
                X       Y     PHA        PI
          ------- ------- ------- ---------
                1      10       1        10
                1      10       1        10
                1      10       1        10
                1      10       1        10
                1      10       1        10
                1      10       1        10
                1      10       1        10
                1      10       1        10
                1      10       1        10
                1      10       1        10

       The special column $REGION can be specified to write the region id of each row:

         [sh $] funtable "test.ev[time-(int)time>=.99&&annulus(0 0 0 10 n=3)]" stdout 'x y time $REGION' ⎪ fundisp stdin
                 X        Y                  TIME     REGION
          -------- -------- --------------------- ----------
                 5       -6           40.99000000          3
                 4       -5           59.99000000          2
                -1        0          154.99000000          1
                -2        1          168.99000000          1
                -3        2          183.99000000          2
                -4        3          199.99000000          2
                -5        4          216.99000000          2
                -6        5          234.99000000          3
                -7        6          253.99000000          3

       Here  only rows with the proper fractional time and whose position also is within one of the three annuli
       are written.

       Columns can be excluded from display using a minus sign before the column:

         [sh $] funtable "test.ev[time-(int)time>=.99]" stdout "-time" ⎪ fundisp stdin
                 X        Y      PHA         PI          DX          DY
          -------- -------- -------- ---------- ----------- -----------
                 5       -6        5         -6        5.50       -6.50
                 4       -5        4         -5        4.50       -5.50
                -1        0       -1          0       -1.50        0.50
                -2        1       -2          1       -2.50        1.50
                -3        2       -3          2       -3.50        2.50
                -4        3       -4          3       -4.50        3.50
                -5        4       -5          4       -5.50        4.50
                -6        5       -6          5       -6.50        5.50
                -7        6       -7          6       -7.50        6.50

       All columns except the time column are written.

       In general, the rules for activating and de-activating columns are:

       •   If only exclude columns are specified, then all columns but the exclude columns will be activated.

       •   If only include columns are specified, then only the specified columns are activated.

       •   If a mixture of include and exclude columns are specified, then all but the exclude columns  will  be
           active; this last case is ambiguous and the rule is arbitrary.

       In  addition  to specifying columns names explicitly, the special symbols + and - can be used to activate
       and de-activate all columns. This is useful if you want to activate the $REGION  column  along  with  all
       other  columns.   According  to  the rules, the syntax "$REGION" only activates the region column and de-
       activates the rest. Use "+ $REGION" to activate all columns as well as the region column.

       Ordinarily, only the selected table is copied to the output file.  In a FITS binary table,  it  sometimes
       is  desirable  to  copy  all of the other FITS extensions to the output file as well. This can be done by
       appending a '+' sign to the name of the extension in the input file name. For example, the first  command
       below copies only the EVENT table, while the second command copies other extensions as well:

         [sh] funtable "/proj/rd/data/snr.ev[EVENTS]" events.ev
         [sh] funtable "/proj/rd/data/snr.ev[EVENTS+]" eventsandmore.ev

       If  the  input file is an image or a raw array file, then funtable will generate a FITS binary table from
       the pixel values in the image. Note that it is not possible to  specify  the  columns  to  output  (using
       command-line  argument  3).  Instead,  there are two ways to create such a binary table from an image. By
       default, a 3-column table is generated, where the columns are "X", "Y", and "VALUE". For  each  pixel  in
       the  image,  a  single  row  (event) is generated with the "X" and "Y" columns assigned the dim1 and dim2
       values of the image pixel, respectively and the "VALUE" column assigned the value of the pixel. With sort
       of table, running funhist on the "VALUE" column will give the same results  as  running  funhist  on  the
       original image.

       If  the  -i  ("individual" rows) switch is specified, then only the "X" and "Y" columns are generated. In
       this case, each positive pixel value in the image generates n rows (events), where  n  is  equal  to  the
       integerized  value  of  that  pixel  (plus  0.5,  for  floating point data).  In effect, -i approximately
       recreates the rows of a table that would have been binned into the input image. (Of course, this is  only
       approximately correct, since the resulting x,y positions are integerized.)

       If  the  -s  [col1 col2 ... coln] ("sort") switch is specified, the output rows of a binary table will be
       sorted using the specified columns as sort keys. The sort keys must be scalar columns and  also  must  be
       part  of  the  output  file  (i.e.  you  cannot  sort on a column but not include it in the output). This
       facility uses the _sort program (included with funtools), which must be accessible via your path.

       For binary tables, the -m ("multiple files") switch will generate a separate file for each region in  the
       filter  specification  i.e. each file contains only the rows from that region. Rows which pass the filter
       but are not in any region also are put in a separate file.

       The separate output file names generated by the -m switch are produced automatically from the root output
       file to contain the region id of the associated region. (Note that region ids start at  1,  so  that  the
       file  name  associated  with  id  0  contains rows that pass the filter but are not in any given region.)
       Output file names are generated as follows:

       •   A $n specification can be used anywhere in the root file name (suitably quoted to protect it from the
           shell) and will be expanded to be the id number of the associated region. For example:

             funtable -m input.fits'[cir(512,512,1);cir(520,520,1)...]' 'foo.goo_$n.fits'

           will generate files named foo.goo_0.fits (for rows not in any region but still passing  the  filter),
           foo.goo_1.fits  (rows in region id #1, the first region), foo.goo_2.fits (rows in region id #2), etc.
           Note that single quotes in the output root are required to protect the '$' from the shell.

       •   If $n is not specified, then the region id will be placed before the first dot (.) in  the  filename.
           Thus:

             funtable -m input.fits'[cir(512,512,1);cir(520,520,1)...]' foo.evt.fits

           will  generate  files  named foo0.evt.fits (for rows not in any region but still passing the filter),
           foo1.evt.fits (rows in region id #1), foo2.evt.fits (rows in region id #2), etc.

       •   If no dot is specified in the root output file name, then the region  id  will  be  appended  to  the
           filename. Thus:

             funtable -m input.fits'[cir(512,512,1);cir(520,520,1)...]' 'foo_evt'

           will  generate  files  named  foo_evt0  (for  rows  not  in any region but still passing the filter),
           foo_evt1 (rows in region id #1), foo_evt2 (rows in region id #2), etc.

       The multiple file mechanism provide a simple way to generate individual source data files with  a  single
       pass through the data.

       By default, a new FITS file is created and the binary table is written to the first extension.  If the -a
       (append)  switch  is  specified,  the table is appended to an existing FITS file as a BINTABLE extension.
       Note that the output FITS file must already exist.

       If the -z ("zero" pixel values) switch is specified and -i is not specified, then pixels  having  a  zero
       value  will  be  output with their "VALUE" column set to zero. Obviously, this switch does not make sense
       when individual events are output.

SEE ALSO

       See funtools(7) for a list of Funtools help pages

version 1.4.5                                    April 14, 2011                                      funtable(1)