[AstroPy] Fits file missing END card error when END is present in the header

Indy Leclercq indy.leclercq at manchester.ac.uk
Thu Oct 30 12:03:42 EDT 2014


Hi Erik, 

Thanks for pointing that out  – I didn’t make these files myself and after poking around a bit it would seem that there are indeed some extra bytes in the files that don’t open properly. I think that’s what the problem was here – will have to talk to the person who made the files!

Cheers, 

Indy


On 30 Oct 2014, at 17:51, Erik Bray <embray at stsci.edu> wrote:

> One suggestion I can offer is that there are some cases where the "missing END 
> card" error is a bit misleading (patches welcome to fix this issue).  This is 
> because there is no way in FITS to know how many HDUs *should* be in a file, so 
> if there are extra bytes at the end of a FITS file it will start reading those 
> bytes as though it's supposed to be the start of another FITS header.  But then 
> when it doesn't find an END card before the end of the file it raises that error.
> 
> One case I've seen very commonly is if somebody opened in a FITS file in a text 
> editor and then closed it again, many editors will append a newline to the end 
> of the file.  Other cases have occurred where the software that wrote the FITS 
> files appended extra bytes incorrectly.
> 
> Erik
> 
> 
> On 10/30/2014 11:39 AM, Indy Leclercq wrote:
>> Hello,
>> 
>> I’ve been processing a batch of similar of FITS files in python using astropy
>> 0.4.2 on Mac OSX 10.9, and on one subset of them (with a header in identical
>> format to the others), fits.open throws an error saying that there is a missing
>> END card in the file. Viewing the header in the terminal shows that the END card
>> is there, and as I said before, the routine works fine on files with essentially
>> the same header.
>> 
>> Could anyone shed some light on this, or is this a weird bug? I can bypass this
>> with the ignore_missing_end kwarg, but still find it weird.
>> 
>> Here are example of working and non-working headers (copied from a terminal more
>> command)
>> 
>> This file opens fine:
>> 
>> SIMPLE  =                    T /  Standard FITS file
>> BITPIX  =                  -32 /  IEEE 4-byte float
>> NAXIS   =                    3 /  Number of image dimensions
>> NAXIS1  =                 5155 /  Size of 1st dimension in pixels
>> NAXIS2  =                 1070 /  Size of 2nd dimension in pixels
>> NAXIS3  =                  376 /
>> OBJECT  = 'GALFACTS_S1 Stokes I'                                  /  Object name
>> CTYPE1  = 'RA---CAR'           /  1st axis type
>> CRVAL1  =           102.050003 /  Reference pixel value
>> CRPIX1  =              2578.00 /  Reference pixel
>> CDELT1  =           -0.0166667 /  Pixel size in world coordinate units
>> CROTA1  =               0.0000 /  Axis rotation in degrees
>> CTYPE2  = 'DEC--CAR'           /  2nd axis type
>> CRVAL2  =             0.000000 /  Reference pixel value
>> CRPIX2  =                53.25 /  Reference pixel
>> CDELT2  =            0.0166667 /  Pixel size in world coordinate units
>> CROTA2  =               0.0000 /  Axis rotation in degrees
>> CTYPE3  = 'FREQ'               /  3rd axis type
>> CRVAL3  =    1524717952.000000 /  Reference pixel value
>> CRPIX3  =                 1.00 /  Reference pixel
>> CDELT3  =      -420000.0000000 /  Pixel size in world coordinate units
>> CROTA3  =               0.0000 /  Axis rotation in degrees
>> EQUINOX =              2000.00 /  Equinox of coordinates (if any)
>> BUNIT   = 'Kelvin'                                 /  Units of pixel data values
>> END
>> 
>> 
>> But this one doesn’t:
>> 
>> SIMPLE  =                    T /  Standard FITS file
>> BITPIX  =                  -32 /  IEEE 4-byte float
>> NAXIS   =                    3 /  Number of image dimensions
>> NAXIS1  =                 6000 /  Size of 1st dimension in pixels
>> NAXIS2  =                 1074 /  Size of 2nd dimension in pixels
>> NAXIS3  =                  376 /
>> OBJECT  = 'GALFACTS_N4 Stokes I'                                  /  Object name
>> CTYPE1  = 'RA---CAR'           /  1st axis type
>> CRVAL1  =           335.000000 /  Reference pixel value
>> CRPIX1  =              3000.50 /  Reference pixel
>> CDELT1  =           -0.0166667 /  Pixel size in world coordinate units
>> CROTA1  =               0.0000 /  Axis rotation in degrees
>> CTYPE2  = 'DEC--CAR'           /  2nd axis type
>> CRVAL2  =             0.000000 /  Reference pixel value
>> CRPIX2  =             -1181.50 /  Reference pixel
>> CDELT2  =            0.0166667 /  Pixel size in world coordinate units
>> CROTA2  =               0.0000 /  Axis rotation in degrees
>> CTYPE3  = 'FREQ'               /  3rd axis type
>> CRVAL3  =    1524717952.000000 /  Reference pixel value
>> CRPIX3  =                 1.00 /  Reference pixel
>> CDELT3  =      -420000.0000000 /  Pixel size in world coordinate units
>> CROTA3  =               0.0000 /  Axis rotation in degrees
>> EQUINOX =              2000.00 /  Equinox of coordinates (if any)
>> BUNIT   = 'Kelvin'                                 /  Units of pixel data values
>> END
>> 
>> Thanks for any help you could provide!
> 
> 
> _______________________________________________
> AstroPy mailing list
> AstroPy at scipy.org
> http://mail.scipy.org/mailman/listinfo/astropy




More information about the AstroPy mailing list