>  Docs Center  >  Libraries  >  ASTROLIB  >  FXBREADM
Libraries

FXBREADM

FXBREADM

Name


      FXBREADM

Purpose


      Read multiple columns/rows from a disk FITS binary table file.

Explanation


      A call to FXBREADM will read data from multiple rows and
      multiple columns in a single procedure call. Up to forty-nine
      columns may be read in a single pass; the number of rows is
      limited essentially by available memory. The file should have
      already been opened with FXBOPEN. FXBREADM optimizes reading
      multiple columns by first reading a large chunk of data from
      the FITS file directly, and then slicing the data into columns
      within memory. FXBREADM can read variable-length arrays (see
      below).
      The number of columns is limited to 49 if data are passed by
      positional argument. However, this limitation can be overcome
      by having FXBREADM return the data in an array of pointers.
      The user should set the PASS_METHOD keyword to 'POINTER', and an
      array of pointers to the data will be returned in the POINTERS keyword.
      The user is responsible for freeing the pointers; however,
      FXBREADM will reuse any pointers passed into the procedure, and
      hence any pointed-to data will be destroyed.
      FXBREADM can also read variable-length columns from FITS
      binary tables. Since such data is not of a fixed size, it is
      returned as a structure. The structure has the following
      elements:
              VARICOL: ;; Flag: variable length column (= 1)
              N_ELEMENTS: ;; Total number of elements returned
              TYPE: ;; IDL data type code (integer)
              N_ROWS: ;; Number of rows read from table (integer)
              INDICES: ;; Indices of each row's data (integer array)
              DATA: ;; Raw data elements (variable type array)
      In order to gain access to the Ith row's data, one should
      examine DATA(INDICES(I):INDICES(I+1)-1), which is similar in
      construct to the REVERSE_INDICES keyword of the HISTOGRAM
      function.

Calling Sequence


      FXBREADM, UNIT, COL, DATA1, [ DATA2, ... DATA48, ROW=, BUFFERSIZE = ]
          /NOIEEE, /NOSCALE, /VIRTUAL, NANVALUE=, PASS_METHOD = POINTERS=,
          ERRMSG = , WARNMSG = , STATUS = , /DEFAULT_FLOAT]

Input Parameters


      UNIT = Logical unit number corresponding to the file containing the
                binary table.
      COL = An array of columns in the binary table to read data
                from, either as character strings containing column
                labels (TTYPE), or as numerical column indices
                starting from column one.

Outputs


      DATA1, DATA2...DATA48 = A named variable to accept the data values, one
                for each column. The columns are stored in order of the
                list in COL. If the read operation fails for a
                particular column, then the corresponding output Dn
                variable is not altered. See the STATUS keyword.
                Ignored if PASS_METHOD is 'POINTER'.

Optional Input Keywords


      ROW = Either row number in the binary table to read data from,
                starting from row one, or a two element array containing a
                range of row numbers to read. If not passed, then the entire
                column is read in.
      /DEFAULT_FLOAT = If set, then scaling with TSCAL/TZERO is done with
                floating point rather than double precision.
      /NOIEEE = If set, then then IEEE floating point data will not
                be converted to the host floating point format (and
                this by definition implies NOSCALE). The user is
                responsible for their own floating point conversion.
      /NOSCALE = If set, then the output data will not be scaled using the
                optional TSCAL and TZERO keywords in the FITS header.
                Default is to scale.
      VIRTUAL = If set, and COL is passed as a name rather than a number,
                then if the program can't find a column with that name, it
                will then look for a keyword with that name in the header.
                Such a keyword would then act as a "virtual column", with the
                same value for every row.
      DIMENSIONS = FXBREADM ignores this keyword. It is here for
compatibility only.
      NANVALUE= Value signalling data dropout. All points corresponding to
                IEEE NaN (not-a-number) are converted to this number.
                Ignored unless DATA is of type float, double-precision or
                complex.
      PASS_METHOD = A scalar string indicating method of passing
                data from FXBREADM. Either 'ARGUMENT' (indicating
                pass by positional argument), or 'POINTER' (indicating
                passing an array of pointers by the POINTERS
                keyword).
                Default: 'ARGUMENT'
      POINTERS = If PASS_METHOD is 'POINTER' then an array of IDL
                pointers is returned in this keyword, one for each
                requested column. Any pointers passed into FXBREADM will
                have their pointed-to data destroyed. Ultimately the
                user is responsible for deallocating pointers.
      BUFFERSIZE = Raw data are transferred from the file in chunks
                to conserve memory. This is the size in bytes of
                each chunk. If a value of zero is given, then all
                of the data are transferred in one pass. Default is
                32768 (32 kB).

Optional Output Keywords


      ERRMSG = If defined and passed, then any error messages will be
                returned to the user in this parameter rather than
                depending on the MESSAGE routine in IDL. If no errors are
                encountered, then a null string is returned. In order to
                use this feature, ERRMSG must be defined first, e.g.
                      ERRMSG = ''
                      FXBREAD, ERRMSG=ERRMSG, ...
                      IF ERRMSG NE '' THEN ...
      WARNMSG = Messages which are considered to be non-fatal
                "warnings" are returned in this output string.
                Note that if some but not all columns are
                unreadable, this is considered to be non-fatal.
      STATUS = An output array containing the status for each
                column read, 1 meaning success and 0 meaning failure.

Calls


      IEEE_TO_HOST, FXPAR(), WHERENAN()
  Common :
      Uses common block FXBINTABLE--see "fxbintable.pro" for more
      information.

Restrictions


      The binary table file must have been opened with FXBOPEN.
      The data must be consistent with the column definition in the binary
      table header.
      The row number must be consistent with the number of rows stored in the
      binary table header.
      Generaly speaking, FXBREADM will be faster than iterative
      calls to FXBREAD when (a) a large number of columns is to be
      read or (b) the size in bytes of each cell is small, so that
      the overhead of the FOR loop in FXBREAD becomes significant.

Side Effects


      If there are no elements to read in (the number of elements is zero),
      then the program sets !ERR to -1, and DATA is unmodified.

Category


      Data Handling, I/O, FITS, Generic.
  Prev. Hist. :
      C. Markwardt, based in concept on FXBREAD version 12 from
                              IDLASTRO, but with significant and
                              major changes to accomodate the
                              multiple row/column technique. Mostly
                              the parameter checking and general data
                              flow remain.
      C. Markwardt, updated to read variable length arrays, and to
                              pass columns by handle or pointer.
                              20 Jun 2001
      C. Markwardt, try to conserve memory when creating the arrays
                              13 Oct 2001
  Handle case of GE 50 columns, C. Markwardt, 18 Apr 2002
  Handle case where TSCAL/TZERO changes type of column,
      C. Markwardt, 23 Feb 2003
  Fix bug in handling of FOUND and numeric columns,
      C. Markwardt 12 May 2003
  Removed pre-V5.0 HANDLE options W. Landsman July 2004
  Fix bug when HANDLE options were removed, July 2004
  Handle special cases of TSCAL/TZERO which emulate unsigned
      integers, Oct 2003
  Add DEFAULT_FLOAT keyword to select float values instead of double
      for TSCAL'ed, June 2004
  Read 64bit integer columns, E. Hivon, Mar 2008
  Add support for columns with TNULLn keywords, C. Markwardt, Apr 2010
  Add support for files larger than 2 GB, C. Markwardt, 2012-04-17



© 2024 NV5 Geospatial Solutions, Inc. |  Legal
   Contact Us