Skip to main content
`Ctrl`+`K`

# Ipac

class astropy.io.ascii.Ipac(definition='ignore', DBMS=False)

  Bases: `Basic`

  IPAC format table.

  See: https://irsa.ipac.caltech.edu/applications/DDGEN/Doc/ipac_tbl.html

  Example:

      \\name=value
      \\ Comment
      |  column1 |   column2 | column3 | column4  |    column5    |
      |  double  |   double  |   int   |   double |     char      |
      |  unit    |   unit    |   unit  |    unit  |     unit      |
      |  null    |   null    |   null  |    null  |     null      |
       2.0978     29.09056    73765     2.06000    B8IVpMnHg

  Or:

      |-----ra---|----dec---|---sao---|------v---|----sptype--------|
        2.09708   29.09056     73765   2.06000    B8IVpMnHg

  The comments and keywords defined in the header are available via the output table `meta` attribute:

      >>> import os
      >>> from astropy.io import ascii
      >>> filename = os.path.join(ascii.__path__[0], 'tests/data/ipac.dat')
      >>> data = ascii.read(filename)
      >>> print(data.meta['comments'])
      ['This is an example of a valid comment']
      >>> for name, keyword in data.meta['keywords'].items():
      ...     print(name, keyword['value'])
      ...
      intval 1
      floatval 2300.0
      date Wed Sp 20 09:48:36 1995
      key_continue IPAC keywords can continue across lines

  Note that there are different conventions for characters occurring below the position of the `|` symbol in IPAC tables. By default, any character below a `|` will be ignored (since this is the current standard), but if you need to read files that assume characters below the `|` symbols belong to the column before or after the `|`, you can specify `definition='left'` or `definition='right'` respectively when reading the table (the default is `definition='ignore'`). The following examples demonstrate the different conventions:

  - `definition='ignore'`:

        |   ra  |  dec  |
        | float | float |
          1.2345  6.7890

  - `definition='left'`:

        |   ra  |  dec  |
        | float | float |
           1.2345  6.7890

  - `definition='right'`:

        |   ra  |  dec  |
        | float | float |
        1.2345  6.7890

  IPAC tables can specify a null value in the header that is shown in place of missing or bad data. On writing, this value defaults to `null`. To specify a different null value, use the `fill_values` option to replace masked values with a string or number of your choice as described in Parameters for write():

      >>> from astropy.io.ascii import masked
      >>> fill = [(masked, 'N/A', 'ra'), (masked, -999, 'sptype')]
      >>> ascii.write(data, format='ipac', fill_values=fill)
      \ This is an example of a valid comment
      ...
      |          ra|         dec|      sai|          v2|            sptype|
      |      double|      double|     long|      double|              char|
      |        unit|        unit|     unit|        unit|              ergs|
      |         N/A|        null|     null|        null|              -999|
                N/A     29.09056      null         2.06               -999
       2345678901.0 3456789012.0 456789012 4567890123.0 567890123456789012

  When writing a table with a column of integers, the data type is output as `int` when the column `dtype.itemsize` is less than or equal to 2; otherwise the data type is `long`. For a column of floating-point values, the data type is `float` when `dtype.itemsize` is less than or equal to 4; otherwise the data type is `double`.

  Parameters:
    definition `python:str`, optional

      Specify the convention for characters in the data table that occur directly below the pipe (`|`) symbol in the header column definition:

      > - ‘ignore’ - Any character beneath a pipe symbol is ignored (default)

      > - ‘right’ - Character is associated with the column to the right

      > - ‘left’ - Character is associated with the column to the left

    DBMS bool, optional

      If true, this verifies that written tables adhere (semantically) to the IPAC/DBMS definition of IPAC tables. If ‘False’ it only checks for the (less strict) IPAC definition.

  Methods Summary

  `write`(table) | Write `table` as list of strings.

  Methods Documentation

  write(table)

    Write `table` as list of strings.

    Parameters:
      table `Table`

        Input table data

    Returns:
      lines `python:list`

        List of strings corresponding to ASCII table