Purpose
The OI-FITS (Optical Interferometry Flexible Image Transport System) format is commonly used to store data provided by optical interferometers. This software package is intended to check the validity of OI-FITS files relative to IAU standard.
The software package is intended to provide information about an input file, especially if this one isn't compliant with the norm, with different levels of granularity.
Technical information about OI-FITS format.
See the following articles or documents:
OI-FITS format controller
This tool aims at checking OI-FITS files format validity.
The rules for OIFits Files
Requirements
Software perspective
The OI-FITS format controller software is intended to be provided as
- a program runable in standalone mode
- a program operable on common platforms (ie Windows, Mac OS X, Linux)
- function library (?? or program ??) which can be integrated in a user's program
General requirements
The software has to provide a command line interface (CLI) and a graphical user interface (GUI).
Both will allow the user
- to select one or more input files.
- to configure the tool according to specific expectations (TBD - lesquelles sont possibles exactement?? ).
- to access detailed information about detected irregularities.
- anything else???
To restore
Improve the OIFITS validator (V1 / V2)
- improve the validation results:
- extract the severity, origin (table/keyword or column) from the validation message
- sort & filter validation results
TEST UPDATE NOM.TAM.FITS
Problem 1: We have multi min/max methodes
- In several file we have methode for calculate min/max value
- for exemple : oifitsFile.getMinWavelengthBound() and oiWavelength.getEffWaveMin()
- We need just 1 method to compute all kind of bound on any kind of mesurements (see also xmlOutputVisitor.appendRecord() )
Problem 2: We need to change Tam Fits Test for scrict comparison
- Currently we ignore some error for the strict test or we need to fix that
- We need to chose the best chose fix or ignore error, depending on severity.
See: oitools/src/test/resources/ref/WriteOIFitsTest.log
Ignore case:
- ARRAYXYZ: 123.0 vs 123.
- NAXIS1 = row size different (taille des String)
- TFORM = Data format
- different value of header card[TFORM2] '6A' <> '16A'
- different value of header card[TFORM3] 'I' <> '1I'
Extra Tables
Binary Tables that are not in the OIFits standards (V1 or V2) are totally skipped (
OIFitsLoader? /
OIFitsWriter? )
- Consequence: Copying a FITS file may loose 'unknown' tables (load then write) !
- Solution: When loading such a table, it seems possible to parse its header and create keyword / column descriptors on the fly then load it as usual (GenericTable extends Table)
Extra Columns in table
- Try to detect the displaced columns ... => avoid false positives
- file: PRODUCT_V838_Mon_1-copy.90-2.53micron_2013-04-15T01_49_24.8034--------0.00000------------inf--------1--------2--------3
- keywords:
- OI_VIS Missing header card TTYPE15 was = VISCOVRI
- OI_VIS Missing header card TFORM15 was = 16D
- Columns:
- different number of columns 17 <> 14 in VISCOVRI
- file: GRAVITY-copy.2016-01-09T05-37-06_singlesci_calibrated
- different number of columns 16 <> 14 in ASTROMETRIC_DELAY
- different number of columns 3 <> 2 in POLAR
- OI_VIS Missing header card TTYPE15 was = ASTROMETRIC_DELAY
- OI_VIS Missing header card TTYPE15 was = VISCOVRI
- OI_T3 different number of header card 50 <> 52
Dimensions (TDIM)
- file: AMBER_070409-copy
- OI_ARRAY Missing header card TDIM5 was = (3)
- OI_VIS Missing header card TDIM7 was = (20)
- different values for column[VISDATA]
- different values for column[VISERR]
See OIFits V2 standard that mentions how to use the TDIM keyword
Problem 6: Setters API
To easily fill tables (complex keywords, columns), a simple setter API will be implemented:
/**
* Define the column value for the given row (index)
*/
(OITable).setColumn(int row, (Type) value)
/**
* Define all column values for the given row (index)
*/
(OITable).setRow(int row, values...)