'Construct a `Column` by specifying attributes.  All attributes
except ``format`` can be optional; see :ref:`column_creation` and
:ref:`creating_ascii_table` for more information regarding
``TFORM`` keyword.
Parameters
name : str, optional
column name, corresponding to ``TTYPE`` keyword
format : str
column format, corresponding to ``TFORM`` keyword
unit : str, optional
column unit, corresponding to ``TUNIT`` keyword
null : str, optional
null value, corresponding to ``TNULL`` keyword
bscale : int-like, optional
bscale value, corresponding to ``TSCAL`` keyword
bzero : int-like, optional
bzero value, corresponding to ``TZERO`` keyword
disp : str, optional
display format, corresponding to ``TDISP`` keyword
start : int, optional
column starting position (ASCII table only), corresponding
to ``TBCOL`` keyword
dim : str, optional
column dimension corresponding to ``TDIM`` keyword
array : iterable, optional
a `list`, `numpy.ndarray` (or other iterable that can be used to
initialize an ndarray) providing initial data for this column.
The array will be automatically converted, if possible, to the data
format of the column.  In the case were non-trivial ``bscale``
and/or ``bzero`` arguments are given, the values in the array must
be the *physical* values--that is, the values of column as if the
scaling has already been applied (the array stored on the column
object will then be converted back to its storage values).
ascii : bool, optional
set `True` if this describes a column for an ASCII table; this
may be required to disambiguate the column format
coord_type : str, optional
coordinate/axis type corresponding to ``TCTYP`` keyword
coord_unit : str, optional
coordinate/axis unit corresponding to ``TCUNI`` keyword
coord_ref_point : int-like, optional
pixel coordinate of the reference point corresponding to ``TCRPX``
keyword
coord_ref_value : int-like, optional
coordinate value at reference point corresponding to ``TCRVL``
keyword
coord_inc : int-like, optional
coordinate increment at reference point corresponding to ``TCDLT``
keyword
time_ref_pos : str, optional
reference position for a time coordinate column corresponding to
``TRPOS`` keyword'

def __init__(self, name=None, format=None, unit=None, null=None, bscale=None, bzero=None, disp=None, start=None, dim=None, array=None, ascii=None, coord_type=None, coord_unit=None, coord_ref_point=None, coord_ref_value=None, coord_inc=None, time_ref_pos=None):

    if (format is None):
        raise ValueError('Must    specify    format    to    construct    Column.')
    kwargs = {'ascii': ascii}
    for attr in KEYWORD_ATTRIBUTES:
        value = locals()[attr]
        if isinstance(value, Card):
            value = value.value
        kwargs[attr] = value
    (valid_kwargs, invalid_kwargs) = self._verify_keywords(**kwargs)
    if invalid_kwargs:
        msg = ['The    following    keyword    arguments    to    Column    were    invalid:']
        for val in invalid_kwargs.values():
            msg.append(indent(val[1]))
        raise VerifyError('\n'.join(msg))
    for attr in KEYWORD_ATTRIBUTES:
        setattr(self, attr, valid_kwargs.get(attr))
    recformat = valid_kwargs['recformat']
    self._dims = self.dim
    self.dim = dim
    self._pseudo_unsigned_ints = False
    if (not isinstance(array, (np.ndarray, chararray.chararray, Delayed))):
        try:
            if (array is not None):
                array = np.array(array)
        except Exception:
            try:
                itemsize = int(recformat[1:])
                array = chararray.array(array, itemsize=itemsize)
            except ValueError:
                if isinstance(recformat, _FormatP):
                    array = _VLF(array, dtype=recformat.dtype)
                else:
                    raise ValueError('Data    is    inconsistent    with    the    format    `{}`.'.format(format))
    array = self._convert_to_valid_data_type(array)
    if isinstance(array, np.ndarray):
        self._physical_values = True
    else:
        self._physical_values = False
    self._parent_fits_rec = None
    self.array = array
