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

  1. 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

  1. 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)

  1. 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...)
Edit | Attach | Watch | Print version | History: r11 < r10 < r9 < r8 < r7 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r9 - 2017-10-20 - CharleenKemps
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback