[AstroPy] Accessing a FITS table generates "ValueError: Inconsistent data column lengths: set([0, 27645])"

Aldcroft, Thomas aldcroft at head.cfa.harvard.edu
Tue Apr 17 08:45:37 EDT 2018


Hi Jordan,

That particular HDU (#8) has a table with a column that has data type 0J.
This the source of the problem.  I see that numpy arrays can have a length
with zero-width (e.g. shape=(10, 0)), so in theory astropy should be able
to support this.  If you can file this as an issue on GitHub that would be
very helpful.

In the meantime something like this might work (untested) to just skip that
column:

dat = hdulist[8].data
names = [name for name in dat.dtype.names if name != 'col_with_0J']
cols = [dat[name] for name in names]

tbl = Table(cols, names=names)

- Tom

On Tue, Apr 17, 2018 at 6:53 AM, Jordan Alexander <
jordan.alexander at aut.ac.nz> wrote:

> First, thank you astropy for this outstanding package.  It played an
> important role in the completion of my PhD; much respect :)
>
> Using python 2.7.12 &  astropy 2.0.5 and following Lia R. Corrales' useful
> tutorial,
>
> http://www.astropy.org/astropy-tutorials/FITS-tables.html
>
> I am trying to access data stored in a FITS table, which generates
>
> ValueError: Inconsistent data column lengths: set([0, 27645])"
>
> Below are my steps and intermediate results that leads to this error...
>
> Can you please help here, astropy at python.org?
>
> P.S. I am able to access other tables in the following FITS file, just not
> the one I am interested in...
>
> --------
>
> from astropy.io import fits
>
> from astropy.table import Table
>
> hdulist = fits.open('WS001H.0.bin0000.source0000.FITS')
>
> hdulist.info()
>
> <generates the following output...>
>
> Filename: WS001H.0.bin0000.source0000.FITS
> No.    Name      Ver    Type      Cards   Dimensions   Format
>   0  PRIMARY       1 GroupsHDU       51   ()      0 Groups  0 Parameters
>   1  ARRAY_GEOMETRY    1 BinTableHDU     53   2R x 7C   [8A, 3D, 3E, 0D, 1J, 1J, 3E]
>   2  SOURCE        1 BinTableHDU     89   3R x 26C   [1J, 16A, 1J, 4A, 1J, 8E, 8E, 8E, 8E, 8E, 8D, 1D, 1D, 8A, 1D, 1D, 8D, 8A, 8A, 8D, 1D, 1D, 1E, 1D, 1D, 1D]
>   3  ANTENNA       1 BinTableHDU     52   18R x 13C   [1D, 1E, 8A, 1J, 1J, 1J, 1J, 1A, 8E, 8E, 1A, 8E, 8E]
>   4  FREQUENCY     1 BinTableHDU     35   1R x 6C   [1J, 8D, 8E, 8E, 8J, 8J]
>   5  INTERFEROMETER_MODEL    1 BinTableHDU     83   946R x 20C   [1D, 1E, 1J, 1J, 1J, 1J, 1E, 8E, 48D, 6D, 48D, 6D, 1E, 1E, 48D, 6D, 48D, 6D, 1E, 1E]
>   6  CALC          1 BinTableHDU     75   5R x 11C   ['1D', '1D', '1D', '1D', '1A', '2D', '1A', '1D', '1D', '1D', '1D']
>   7  MODEL_COMPS    1 BinTableHDU     86   946R x 21C   ['1D', '1J', '1J', '1J', '1J', '1D', '1D', '1D', '1D', '1D', '1D', '8E', '8E', '1E', '1E', '1D', '1D', '8E', '8E', '1E', '1E']
>   8  UV_DATA       1 BinTableHDU     93   27645R x 13C   ['1E', '1E', '1E', '1D', '1D', '1J', '1J', '1J', '1J', '1E', '32E', '0J', '4096E']
>   9  PHASE-CAL     1 BinTableHDU     61   2406R x 17C   [1D, 1E, 1J, 1J, 1J, 1J, 1D, 32E, 16D, 16E, 16E, 16E, 32E, 16D, 16E, 16E, 16E]
>  10  GAIN_CURVE    1 BinTableHDU     62   0R x 19C   [1J, 1J, 1J, 8J, 8J, 8J, 8J, 8E, 48E, 48E, 8E, 8J, 8J, 8J, 8J, 8E, 48E, 48E, 8E]
>
>
> Table(hdulist[8].data)
>
> <generates...>
>
> ValueError                                Traceback (most recent call last)<ipython-input-82-fca4b3ff146b> in <module>()      1 hdulist.info()----> 2 Table(hdulist[8].data)
> /usr/local/lib/python2.7/dist-packages/astropy/table/table.pyc in __init__(self, data, masked, names, dtype, meta, copy, rows, copy_indices, **kwargs)    411         init_func(data, names, dtype, n_cols, copy)    412 --> 413         # Whatever happens above, the masked property should be set to a boolean    414         if type(self.masked) is not bool:    415             raise TypeError("masked property has not been set to True or False")
> /usr/local/lib/python2.7/dist-packages/astropy/table/table.pyc in _init_from_ndarray(self, data, names, dtype, n_cols, copy)    700             self._init_from_list(cols, names, dtype, n_cols, copy)    701         else:--> 702             dtype = [(name, col.dtype, col.shape[1:]) for name, col in zip(names, cols)]    703             newdata = data.view(dtype).ravel()    704             columns = self.TableColumns()
> /usr/local/lib/python2.7/dist-packages/astropy/table/table.pyc in _init_from_list(self, data, names, dtype, n_cols, copy)    684         self._init_from_cols(cols)    685 --> 686     def _init_from_ndarray(self, data, names, dtype, n_cols, copy):    687         """Initialize table from an ndarray structured array"""    688
> /usr/local/lib/python2.7/dist-packages/astropy/table/table.pyc in _init_from_cols(self, cols)    749                              .format(lengths))    750 --> 751         # Set the table masking    752         self._set_masked_from_cols(cols)    753
> ValueError: Inconsistent data column lengths: set([0, 27645])
>
>
> _______________________________________________
> AstroPy mailing list
> AstroPy at python.org
> https://mail.python.org/mailman/listinfo/astropy
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/astropy/attachments/20180417/c099be42/attachment-0001.html>


More information about the AstroPy mailing list