Difference: ReuF24mai2022 (1 vs. 2)

Revision 22022-05-25 - EmmanuellePerret

 
META TOPICPARENT name="WebHome"

Le format FITS (Flexible Image Transport System) - 24/05/2022

Présents : François B., Mihaela B., Esther C. (BBB), Sébastien D., Ana F., Pierre F. (BBB), Coralie F., Soizick L., Laurent M., Pierre O., Emmanuelle P., Katia V., Patricia V., Alicia V.

Bref historique et définition

Au départ il s'agit d'un format de transfert d’image (utilisé en radio astronomie) qui est devenu un format de stockage.
Il date des années 1970 (=> format pour le stockage des bandes magnétiques + en-tête de 80cc max pour lecture des cartes perforées) et n'a pas été détrôné depuis.

Une de ses particularités est de stocker les données et les métadonnées (CLEF = valeur - description) dans un même document.

Il existe des mots-clefs standards pour décrire les métadonnées dans le Header mais chacun peut définir ses propres mots-clefs (ce qui rend le format flexible mais plus ou moins standard...).

Certains mots-clefs sont plus ou moins obligatoires :

Pour tous les FITS :
SIMPLE : ' T' si le fichier est conforme au standard FITS
BITPIX : number of bits per data pixel
NAXIS : number of data axes (NAXIS = 2 => 2 axes)
NAXIS1 : longueur de AXIS 1
NAXIS2 : longueur de AXIS 2

Pour les images : CRVAL1, CRPIX1 qui permettent de définir la projection de l’image sur le ciel.

Cinq papiers de référence pour le format FITS :

- définition FITS en général : https://fits.gsfc.nasa.gov/fits_standard.html,
- 4 papiers spécialisés sur les conversions pixels pour les images (2 papiers : pixel vers coordonnées absolues & différentes projections – tangentielle, healpix, etc.), les spectres, et le temps : https://fits.gsfc.nasa.gov/fits_wcs.html.
- Un spécifique pour les hautes énergies (OGIP = Office of Guest Investigator Programs) => meilleure description du temps et résolution

Le contenu d'un fichier FITS

Un même fichier peut contenir plusieurs HDU (Header Data Unit) : en-tête + données => plusieurs XTENSION.
Chaque extension pouvant être une table (BINTABLE ou TABLE), un spectre, un cube de données, une image…

N.B. : un cube de données = plusieurs axes pour la même extension.

Par exemple, un FITS XMM contient 3 extensions : #1 = image + #2 = table de calibration + #3 = ? permettant de définir le spectre correspondant à ce fichier FITS.

Intérêt du format FITS

Le format FITS étant (plus ou moins) standard, il permet d’utiliser différents outils compatibles.

Pour les tables, le Header avec description des colonnes et la conversion des données en format binaire permet de stocker de gros volumes.

La simplicité du format FITS a permis de l'utiliser depuis 50 ans sans avoir besoin d'un nouveau format.
Par exemple, avec un simple "less" (et une fenêtre de 80cc), on a déjà une bonne idée du contenu du fichier.

Pour visualiser un fichier FITS

L'outil de base pour visualiser un fichier FITS est fv
Le programme fv a été créé en même temps que le format et est toujours utilisé.
Il permet d’afficher les Header des différentes extensions et d’afficher images et plots séparément…
Il permet également de modifier les fichiers.

Pour lire des FITS il y a également : Aladin, TOPCAT et STILTS (voir exemples plus bas).

Les mots-clefs permettent une série d'étapes pour convertir les pixels

Les pixels sont transformés en coordonnées universelles (ou vice-versa) pour les images ; les pixels des spectres sont transformés en longueur d'onde...

Pour les images :
CRPIX donne les coordonnées pixel => passage à PIX = coordonnées relatives => Calcul matrice+rotation => coordonnées relatives angulaires relatives au point central de l’image , puis avec CRVAL => position point sur une sphère pour coordonnées universelles (galactiques/etc.).

Le calcul des coefficients qui permettent la transformation en coordonnées sur le ciel = réduction astrométrique
Calibration : à partir des positions X, Y du pixel, on compare avec des étoiles de références sur une image déjà calibrée pour lesquelles on connaît déjà les coordonnées.
Par contre, besoin de résoudre la calibration avec des polynômes et il n'y a pas d’accord sur la manière de les utiliser.

cf. Exemple du HiPS pour PanSTARRS, où ajout de 2 mots-clefs supplémentaires non-standards dans le Header qui n'ont pas été pris en compte et ont conduit à un mauvais calcul pour le pixel.

Pour les spectres :
CDELT & CRVAL permettent de passer du numéro de pixel du spectre en vrai longueur d’onde en Angstroms ou en fréquence (Hz) = calibration spectroscopique
Pour la calibration, on utilise des spectres de références (= spectres de lampes thorium-Argon par ex. obtenus en labo et calibré) pour faire la correspondance.

Pour les spectres, les FITS sont moins stables qu’en imagerie (où le WCS est relativement standard) mais cela reste le format de base.

Données brutes :
Le système qui commande le télescope remplit une partie des Header.
Le système de la caméra (CCD) en remplit une autre partie.

Les données reçues au CDS sont, généralement, des données réduites :
Les Header dépendent des logiciels de réduction utilisés (IRAF, …) => Ajouts de keywords supplémentaires (type d’opération faites sur les données brutes, données de calibration, etc.).

=> Cours réduction spectro via IRAF par Pierre O.
IRAF est un peu vieux, actuellement les logiciels de réduction de données sont fournis avec les instruments (cf. GIRAFFE).

Lorsque les fichiers FITS arrivent de différents endroits, l'information devient hétérogène ce qui rend complexe une automatisation pour l'extraction des données (cf. la base de données associées Saada/VizieR) car les mots-clefs utilisés peuvent être différents, les unités pas forcément décrites au bon endroit, etc.

Outils

fits2a

A priori, un outil fournit dans le cdspack ?
Utilisé par l'équipe VizieR pour transformer les BINTABLE en table ASCII.
Voir fits2a -h pour les différentes options.
Il y avait un man sur cette page : http://cdsarc.u-strasbg.fr/doc/man//fits2a.htx -- mais elle a disparu...
Vous pouvez voir la doc créée pour les documentalistes VizieR mais c'est un peu brouillon...
Le programme permet avec l'option -tdisp d'obtenir une description du fichier avec les différents TDISP (les formats qui sont modifiables ensuite), les TUNIT, etc.
fits2a spectre.fits permet d'obtenir les valeurs du spectre (si le fichier est standard).

fitsverify

L'outil fitsverify de l'Heasarc permet également de vérifier qu'un fichier FITS est standard.

STILTS

En lignes de commandes, la commande "tpipe" permet de lire une table et de la transformer à la volée avec ajouts de colonnes calculées, modification du Header, validateur d’UCD et d’unités, etc.

Par exemple, Seb valide les unités <nop>VizieR avec la commande :

java -jar ~/Documents/IVOA/topcat/stilts.jar tpipe ifmt='csv' cmd='addcol UNIT_STATUS vounitStatus($1)' cmd='addcol UNIT_MESSAGE vounitMessage($1)' cmd='select !NULL_UNIT_MESSAGE' in=./all_units_stats.csv
Changed:
<
<
cf autres exemples : http://www.star.bris.ac.uk/~mbt/stilts/sun256/tpipeExamples.html
>
>
cf autres exemples :
http://www.star.bris.ac.uk/~mbt/stilts/sun256/tpipeExamples.html
 
Changed:
<
<
-- EmmanuellePerret - 2022-05-24
>
>
fitsinfo (package python astropy)
fournit un résumé des fichiers FITS passé en paramètre (nombre de HDU, type de HDU, dimension, type de codage: entier, float, float64, ...)
 
Added:
>
>
fitsheader (package python astropy)
retourne l'entête des fichiers FITS

fitsdiff (package python astropy)
propose de comparer 2 fichiers FITS, et affiche les différences

-- EmmanuellePerret - 2022-05-24

Revision 12022-05-24 - EmmanuellePerret

 
META TOPICPARENT name="WebHome"

Le format FITS (Flexible Image Transport System) - 24/05/2022

Présents : François B., Mihaela B., Esther C. (BBB), Sébastien D., Ana F., Pierre F. (BBB), Coralie F., Soizick L., Laurent M., Pierre O., Emmanuelle P., Katia V., Patricia V., Alicia V.

Bref historique et définition

Au départ il s'agit d'un format de transfert d’image (utilisé en radio astronomie) qui est devenu un format de stockage.
Il date des années 1970 (=> format pour le stockage des bandes magnétiques + en-tête de 80cc max pour lecture des cartes perforées) et n'a pas été détrôné depuis.

Une de ses particularités est de stocker les données et les métadonnées (CLEF = valeur - description) dans un même document.

Il existe des mots-clefs standards pour décrire les métadonnées dans le Header mais chacun peut définir ses propres mots-clefs (ce qui rend le format flexible mais plus ou moins standard...).

Certains mots-clefs sont plus ou moins obligatoires :

Pour tous les FITS :
SIMPLE : ' T' si le fichier est conforme au standard FITS
BITPIX : number of bits per data pixel
NAXIS : number of data axes (NAXIS = 2 => 2 axes)
NAXIS1 : longueur de AXIS 1
NAXIS2 : longueur de AXIS 2

Pour les images : CRVAL1, CRPIX1 qui permettent de définir la projection de l’image sur le ciel.

Cinq papiers de référence pour le format FITS :

- définition FITS en général : https://fits.gsfc.nasa.gov/fits_standard.html,
- 4 papiers spécialisés sur les conversions pixels pour les images (2 papiers : pixel vers coordonnées absolues & différentes projections – tangentielle, healpix, etc.), les spectres, et le temps : https://fits.gsfc.nasa.gov/fits_wcs.html.
- Un spécifique pour les hautes énergies (OGIP = Office of Guest Investigator Programs) => meilleure description du temps et résolution

Le contenu d'un fichier FITS

Un même fichier peut contenir plusieurs HDU (Header Data Unit) : en-tête + données => plusieurs XTENSION.
Chaque extension pouvant être une table (BINTABLE ou TABLE), un spectre, un cube de données, une image…

N.B. : un cube de données = plusieurs axes pour la même extension.

Par exemple, un FITS XMM contient 3 extensions : #1 = image + #2 = table de calibration + #3 = ? permettant de définir le spectre correspondant à ce fichier FITS.

Intérêt du format FITS

Le format FITS étant (plus ou moins) standard, il permet d’utiliser différents outils compatibles.

Pour les tables, le Header avec description des colonnes et la conversion des données en format binaire permet de stocker de gros volumes.

La simplicité du format FITS a permis de l'utiliser depuis 50 ans sans avoir besoin d'un nouveau format.
Par exemple, avec un simple "less" (et une fenêtre de 80cc), on a déjà une bonne idée du contenu du fichier.

Pour visualiser un fichier FITS

L'outil de base pour visualiser un fichier FITS est fv
Le programme fv a été créé en même temps que le format et est toujours utilisé.
Il permet d’afficher les Header des différentes extensions et d’afficher images et plots séparément…
Il permet également de modifier les fichiers.

Pour lire des FITS il y a également : Aladin, TOPCAT et STILTS (voir exemples plus bas).

Les mots-clefs permettent une série d'étapes pour convertir les pixels

Les pixels sont transformés en coordonnées universelles (ou vice-versa) pour les images ; les pixels des spectres sont transformés en longueur d'onde...

Pour les images :
CRPIX donne les coordonnées pixel => passage à PIX = coordonnées relatives => Calcul matrice+rotation => coordonnées relatives angulaires relatives au point central de l’image , puis avec CRVAL => position point sur une sphère pour coordonnées universelles (galactiques/etc.).

Le calcul des coefficients qui permettent la transformation en coordonnées sur le ciel = réduction astrométrique
Calibration : à partir des positions X, Y du pixel, on compare avec des étoiles de références sur une image déjà calibrée pour lesquelles on connaît déjà les coordonnées.
Par contre, besoin de résoudre la calibration avec des polynômes et il n'y a pas d’accord sur la manière de les utiliser.

cf. Exemple du HiPS pour PanSTARRS, où ajout de 2 mots-clefs supplémentaires non-standards dans le Header qui n'ont pas été pris en compte et ont conduit à un mauvais calcul pour le pixel.

Pour les spectres :
CDELT & CRVAL permettent de passer du numéro de pixel du spectre en vrai longueur d’onde en Angstroms ou en fréquence (Hz) = calibration spectroscopique
Pour la calibration, on utilise des spectres de références (= spectres de lampes thorium-Argon par ex. obtenus en labo et calibré) pour faire la correspondance.

Pour les spectres, les FITS sont moins stables qu’en imagerie (où le WCS est relativement standard) mais cela reste le format de base.

Données brutes :
Le système qui commande le télescope remplit une partie des Header.
Le système de la caméra (CCD) en remplit une autre partie.

Les données reçues au CDS sont, généralement, des données réduites :
Les Header dépendent des logiciels de réduction utilisés (IRAF, …) => Ajouts de keywords supplémentaires (type d’opération faites sur les données brutes, données de calibration, etc.).

=> Cours réduction spectro via IRAF par Pierre O.
IRAF est un peu vieux, actuellement les logiciels de réduction de données sont fournis avec les instruments (cf. GIRAFFE).

Lorsque les fichiers FITS arrivent de différents endroits, l'information devient hétérogène ce qui rend complexe une automatisation pour l'extraction des données (cf. la base de données associées Saada/VizieR) car les mots-clefs utilisés peuvent être différents, les unités pas forcément décrites au bon endroit, etc.

Outils

fits2a

A priori, un outil fournit dans le cdspack ?
Utilisé par l'équipe VizieR pour transformer les BINTABLE en table ASCII.
Voir fits2a -h pour les différentes options.
Il y avait un man sur cette page : http://cdsarc.u-strasbg.fr/doc/man//fits2a.htx -- mais elle a disparu...
Vous pouvez voir la doc créée pour les documentalistes VizieR mais c'est un peu brouillon...
Le programme permet avec l'option -tdisp d'obtenir une description du fichier avec les différents TDISP (les formats qui sont modifiables ensuite), les TUNIT, etc.
fits2a spectre.fits permet d'obtenir les valeurs du spectre (si le fichier est standard).

fitsverify

L'outil fitsverify de l'Heasarc permet également de vérifier qu'un fichier FITS est standard.

STILTS

En lignes de commandes, la commande "tpipe" permet de lire une table et de la transformer à la volée avec ajouts de colonnes calculées, modification du Header, validateur d’UCD et d’unités, etc.

Par exemple, Seb valide les unités <nop>VizieR avec la commande :

java -jar ~/Documents/IVOA/topcat/stilts.jar tpipe ifmt='csv' cmd='addcol UNIT_STATUS vounitStatus($1)' cmd='addcol UNIT_MESSAGE vounitMessage($1)' cmd='select !NULL_UNIT_MESSAGE' in=./all_units_stats.csv

cf autres exemples : http://www.star.bris.ac.uk/~mbt/stilts/sun256/tpipeExamples.html

-- EmmanuellePerret - 2022-05-24

 
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