[AstroPy] Opening file in PyFits, works in v2.4, not in v3.0.6

Erik Bray embray at stsci.edu
Tue Apr 3 10:09:23 EDT 2012


On 04/03/2012 09:53 AM, Phil Hodge wrote:
> On 04/02/2012 07:48 PM, Eddy Barratt wrote:
>> I have a number of fits files that I cannot open in PyFits 3.0.6, though a colleague using 2.4 can open them. PyFits does work on other fits files on my computer. I would have assumed that the problem is with the files, but they do open using the older version and my colleagues using IDL and matlab have managed to open them too, so perhaps the issue is with PyFits instead. I've attached one of the files, they all have the same error message.
>>
>> Here is the error message:
>>
>> ...
>
> Here is the output from fverify for your file:
>
>                         FVERIFY V4.0.0 (CFITSIO V2.470)
>                         -------------------------------
>
> HEASARC conventions are being checked.
>
> File: 00000075.fits
>
> 1 Header-Data Units in this file.
>
> =================== HDU 1: Primary Array ===================
>
> *** Error:   Byte #1 in Card#33 is a null(\0).
> *** Error:   Keyword #6, BSCALE: lower-case exponent d or e is illegal
> in value
>                +1.000000000000e+000.
> *** Error:   Keyword #7, BZERO: lower-case exponent d or e is illegal in
> value
>                +3.276800000000e+004.
> *** Error:   Keyword #9, ORIGIN: Value and Comment not separated by a "/".
> *** Error:   Keyword #11, FOCALLEN: lower-case exponent d or e is illegal in
>                value +1.550000000000e+002.
> *** Error:   Keyword #12, APERTURE: lower-case exponent d or e is illegal in
>                value +0.000000000000e+000.
> *** Error:   Keyword #22, TEMPERAT: lower-case exponent d or e is illegal in
>                value -2.041762134545e+001.
> *** Error:   Keyword #24, E-GAIN: lower-case exponent d or e is illegal in
>                value +1.430000000000e+000.
> *** Error:   Keyword #25, XPIXSZ: lower-case exponent d or e is illegal in
>                value +6.800000000000e-003.
> *** Error:   Keyword #26, YPIXSZ: lower-case exponent d or e is illegal in
>                value +6.800000000000e-003.
> *** Error:   Keyword #29, EXPOSURE: lower-case exponent d or e is illegal in
>                value +3.000000000000e+002.
> *** Error:   The header fill area is not totally filled with blanks.
>
>    32 header keywords
>
>    16-bit integer pixels,  2 axes (2184 x 1472),
>
> ++++++++++++++++++++++ Error Summary  ++++++++++++++++++++++
>
>    HDU#  Name (version)       Type             Warnings  Errors
>    1                          Primary Array    0         12
>
> **** Verification found 0 warning(s) and 12 error(s). ****

Specifically, the problem in this file that PyFITS is breaking on is 
that the header block is not filled with spaces.  According to the FITS 
standard any extra bytes at the end of a header block must be spaces, 
and not nulls as is the case in this file.

I'm not sure what PyFITS should do here.  Should it treat a file like 
this as an error, or should it just produce a warning?  Given that other 
tools (including earlier PyFITS versions) seem to be accepting of this, 
I'm leaning toward the latter.  There's no reason PyFITS can't ignore 
the standard here and read the file anyways.  That said, it's still 
malformatted...

Erik



More information about the AstroPy mailing list