fitscore
fitscore copied to clipboard
Improve validation Code
The validation routines are currently very limited and do not cover many cases. It should be a piece of cake to implement most if not all of the rule for FITSverify(https://heasarc.gsfc.nasa.gov/docs/software/ftools/fitsverify/):
SEVERE ERROR CONDITIONS
- [ ] Mandatory keyword not present or out of order
- [ ] Mandatory keyword has wrong datatype or illegal value
- [ ] END header keyword is not present
- [ ] Sum of table column widths is inconsistent with NAXIS1 value
- [ ] BLANK keyword present in image with floating-point datatype
- [ ] TNULLn keyword present for floating-point binary table column
- [ ] Bit column has non-zero fill bits or is not left adjusted(*)
- [ ] ASCII TABLE column contains illegal value inconsistent with TFORMn(*)
- [ ] Address to a variable length array not within the data heap(*)
- [ ] Extraneous bytes in the FITS file following the last HDU
ERROR CONDITIONS
- [ ] Mandatory keyword values not expressed in fixed format
- [ ] Mandatory keyword duplicated elsewhere in the header
- [ ] Header contains illegal ASCII character (not ASCII 32 - 126)
- [ ] Keyword name contains illegal character
- [ ] Keyword value field has illegal format
- [ ] Value and comment fields not separated by a slash character
- [ ] END keyword not filled with blanks in columns 9 - 80
- [ ] Reserved keyword with wrong datatype or illegal value
- [ ] XTENSION keyword in the primary array
- [ ] Column related keyword (TFIELDS, TTYPEn,TFORMn, etc.) in an image
- [ ] SIMPLE, EXTEND, or BLOCKED keyword in any extension
- [ ] BSCALE, BZERO, BUNIT, BLANK, DATAMAX, DATAMIN keywords in a table
- [ ] Table WCS keywords (TCTYPn, TCRPXn, TCRVLn, etc.) in an image
- [ ] TDIMn or THEAP keyword in an ASCII table
- [ ] TBCOLn keyword in a Binary table
- [ ] THEAP keyword in a binary table that has PCOUNT = 0
- [ ] XTENSION, TFORMn, TDISPn or TDIMn value contains leading space(s)
- [ ] WCSAXES keyword appears after other WCS keywords
- [ ] Index of any WCS keyword (CRPIXn, CRVALn, etc.) greater than value of WCSAXES
- [ ] Index of any table column descriptor keyword (TTYPEn, TFORMn, etc.) greater than value of TFIELDS
- [ ] TSCALn or TZEROn present for an ASCII, logical, or Bit column
- [ ] TDISPn value is inconsistent with the column datatype
- [ ] Length of a variable length array greater than the maximum length as given by the TFORMn keyword
- [ ] ASCII table floating-point column value does not have decimal point(*)
- [ ] ASCII table numeric column value has embedded space character
- [ ] Logical column contains illegal value not equal to 'T', 'F', or 0(*)
- [ ] Character string column contains non-ASCII text character(*)
- [ ] Header fill bytes not all blanks (**)
- [ ] Data fill bytes not all blanks in ASCII tables or all zeros in any other type of HDU (**)
- [ ] Gaps between defined ASCII table columns contain characters with ASCII value > 127 (**)
WARNING CONDITIONS
- [ ] SIMPLE = F
- [ ] Presence of deprecated keywords BLOCKED or EPOCH
- [ ] 2 HDUs have identical EXTNAME and EXTVER values
- [ ] BSCALE or TSCALn value = 0.
- [ ] BLANK OR TNULLn value exceeds the legal range
- [ ] TFORMn has 'rAw' format and r is not a multiple of w
- [ ] DATE = 'dd/mm/yy' and yy is less than 10 (Y2K problem??)
- [ ] Index of any WCS keyword (CRPIXn, CRVALn, etc.) greater than value of NAXIS, if the WCSAXES keyword is not present
- [ ] Duplicated keyword (except COMMENT, HISTORY, blank, etc.)
- [ ] Column name (TTYPEn) does not exist or contains characters other than letter, digit and underscore
- [ ] Binary table has PCOUNT > 0, but no variable-length array columns
- [ ] Calculated checksum inconsistent with CHECKSUM or DATASUM keyword(***)
- [ ] The HEASARC long string keyword convention is used without the recommended LONGSTRN keyword (****)
(*) only checked when "testdata" is 'Yes' (**) only checked when "testdata" and "testfill" are 'Yes' (***) only checked when "testdata" and "tchksum" are 'Yes' (****) only checked when the "heasarc" is 'Yes'
Every HDU in the FITS file is checked in turn until the end of file is detected.