[AstroPy] Convert FITS header into astropy Table entries?

Fred Moolekamp fred3public at gmail.com
Wed Aug 19 10:29:29 EDT 2015


What you propose should work if you change

rows=h0.values()

to

rows=[tuple(h0.values)]

which will create a table with a single row. However, if your FITS file has
duplicate keys this will fail too and you will have to come up with a
scheme for renaming the duplicate keys for yourself.

On Wed, Aug 19, 2015 at 10:00 AM, Jason Tumlinson <tumlinson at stsci.edu>
wrote:

> Hi,
> I am trying to harvest the information from a large number of FITS
> headers, parse them and do statistics on values, in an efficient manner. I
> read in each header in the usual fashion:
>
> h = fits.open('lbiy83i0q_x1d.fits’)
> h0 = h[0].header
>
> My goal then is to get all the header info into an astropy Table such that
> the table columns are given by the header keys and the values in the rows
> are given by the values in each of 100+ headers. I tried this:
>
> In [38]: t = Table(rows=h0.values(), names=h0.keys())
> ---------------------------------------------------------------------------
> TypeError                                 Traceback (most recent call
> last)
> <ipython-input-38-8a0ece2925d5> in <module>()
> ----> 1 t = Table(rows=h0.values(), names=h0.keys())
>
>
> /Users/tumlinson/Ureka/python/lib/python2.7/site-packages/astropy/table/table.pyc
> in __init__(self, data, masked, names, dtype, meta, copy, rows)
>     240                 data = rows
>     241             else:
> --> 242                 rec_data = recarray_fromrecords(rows)
>     243                 data = [rec_data[name] for name in rec_data.dtype.
> names]
>     244
>
>
> /Users/tumlinson/Ureka/python/lib/python2.7/site-packages/astropy/table/np_utils.pyc
> in recarray_fromrecords(rec_list)
>     604     # to column arrays in the recarray module; it could be there
> is a better
>     605     # way
> --> 606     nfields = len(rec_list[0])
>     607     obj = np.array(rec_list, dtype=object)
>     608     array_list = [np.array(obj[..., i].tolist()) for i in range(
> nfields)]
>
> TypeError: object of type 'bool' has no len()
>
> to no avail. Is this possible, easy, or wrongheaded? Advise appreciated.
>
> Thanks,
> JT
>
>
>
>
> _______________________________________________
> AstroPy mailing list
> AstroPy at scipy.org
> http://mail.scipy.org/mailman/listinfo/astropy
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/astropy/attachments/20150819/a0d2c1ca/attachment.html>


More information about the AstroPy mailing list