Tags:
create new tag
, view all tags
Page à compléter/corriger ...

Sommaire

I. Les différents types de données d'un fichier FITS

Rapide définition du fichiers .fits
Les différents types de données

II. Comment visualiser un fichier .fits

La meilleure option : Aladin
TOPCAT
La commande fv
Une simple commande "less" permet de voir l'entête
La commande fits2a -par
Le contenu du Header

III. Pour les données tabulaires : conversion du fichier .fits en ASCII

La commande fits2a

IV. Pour les spectres : tracé direct du graphe

La commande fits2a dans un .graph

V. Pour les autres types de données

Que faire des images ?
Autres types de données ???

VI. Exemples de catalogues avec des .fits vus en réunion hebdomadaire

VII. La base de données associées pour les FITS (spectres et images principalement)

Le programme xfits

VIII. Liens utiles


I. Les différents types de données d'un fichier FITS

Rapide définition du fichiers .fits :
FITS ou Flexible Image Transport System est le format de fichiers le plus communément utilisé en astronomie.
Le format de fichiers FITS est généralement utilisé pour stocker, envoyer et manipuler des données scientifiques ou des images. Il est également utilisé pour sauvegarder d'autres données, comme le spectre, des listes de photons, des cubes de données, et bien d'autres choses encore. Un fichier FITS peut contenir plusieurs extensions, et chacune de celles-ci peut contenir des données. Par exemple, il est possible de sauvegarder dans le même fichier FITS des images à la fois dans le domaine des rayons X et dans celui de l'infrarouge.

Les différents types de données :
XTENSION= 'BINTABLE' => Binary table
XTENSION= 'TABLE' => ASCII table
XTENSION= 'IMAGE' => matrice de points

Retour au sommaire

II. Comment visualiser un fichier .fits

La meilleure option : Aladin
Dans le Menu "Fichier" => "Ouvrir un fichier" (Ctrl O), on peut indiquer un fichier .fits qui sera lu s'il s'agit d'une image ou même d'une table.
On peut ouvrir directement un fichier en .fits.gz sans le dézipper
Dans le cas d'une table avec des positions, on a l'emplacement de tous les objets que l'on peut ajouter à une image all-sky par exemple.

Le logiciel TOPCAT
Dans "Open a new table", possibilité de charger une table en .fits ou .fits.gz
Ne fonctionne que pour les tables...

La commande fv :
Depuis un terminal de cats et le répertoire où se trouve le fichier, on peut utiliser la commande fv (le .gz n'est pas génant).
La case "Header" affiche uniquement le "header"...
Il faut cliquer sur "Table" pour voir la table.

La commande less :
Depuis n'importe quel terminal, on peut faire un "less" sur le fichier .fits pour voir le header (en-tête). Dans ce cas, il faut que le fichier soit dézippé.
Note : c'est mieux si la fenêtre du Terminal fait exactement 80 caractères...

La commande fits2a -par :
L'option -par de la commande fits2a permet d'afficher la table d'un fichier .fits par paragraphe ce qui donne une idée de son contenu.

Par exemple pour le Cat. J/ApJ/748/93 : le fits2a fonctionne avec l'option -par : fits2a -par -axis2="0,1" nltt25869.ra2012.kband.fits | acut -c10- donne les 2 premières colonnes Wavelength (um) vs Flux. Avec fits2a -par -axis2="0,1,2" gl526.ra2012.kband.fits | sed s/nan/0/g on a les erreurs en plus, avec les "nan" transformés en "0"...


#ContenuHeader
Le Header d'un fichier .fits :
Un dispositif important du format FITS est que les metadatas d'image sont stockées dans un en-tête lisible par un humain, au format ASCII, de sorte qu'un utilisateur intéressé puisse examiner les en-têtes d'un fichier de provenance inconnue. Chaque fichier FITS se compose d'une ou plusieurs en-têtes contenant des "card" ASCII (80 caractères de longueur constante) qui portent des paires de "keyword / value" (mots clés / valeurs), intercalées entre les blocs de données. Les paires de mots clés / valeurs fournissent des informations telles que la taille, l'origine, les coordonnées, le format de données binaire, les commentaires en format libre, l'historique des données, et toute autre chose souhaitée par le rédacteur ; tandis que beaucoup de mots-clés sont réservés pour l'usage interne, la norme permet l'utilisation arbitraire du reste.

La commande fits2a -toc permet d'obtenir la/les valeur(s) de "xtension" pour définir le(s) type(s) de données du fichier.

Par exemple :

       #ext xtension bpx (dim)              x2880 extname
       #000     main   8 ()                    1b
       #001 BINTABLE   8 (400x0/1f)            1b MASKS
       #002 BINTABLE   8 (32x3334/4f)         39b FILTER
       #003 BINTABLE   8 (376x503/69f)        73b OBJECTS
       #004 BINTABLE   8 (1127x1/109f)         8b FIELDS
       for a FITS file made of 4 binary tables. The fourth  column  lists  the
       number  of  columns in the number preceded by a f, and the fifth column
       lists the size of the FITS extension in blocks of 2880 bytes.

La commande fits2a -TOC permet de lister le header complet.

On peut aussi vérifier les fichiers FITS grâce à la commande : fitsverify file.fits qui fournit une liste d'erreurs éventuelles.

N.B. : Et bien sûr, une fois que le fichier FITS (ou une table) est dans VizieR, on peut récupérer le format FITS via l'onglet Browse...
Retour au sommaire

III. Pour les données tabulaires : conversion du fichier .fits en ASCII

On convertit les fichiers .fits qui contiennent des tables en ASCII afin de pouvoir les rendre interrogeables via les fonctionnalités de VizieR.

La commande fits2a permet de convertir un fichier FITS en ASCII :
Lorsqu'on a une ou plusieurs tables (BINTABLE), la commande :
fits2a -tdsip -v fichier.fits > cat_format permet d'avoir la liste des formats (best "TDISP" formats) de chaque colonne.
L'option -v calcule pour chaque colonne les valeurs max, min et nulles.
Exemple de fichier "cat_format" :

#---File: apj290785t5_fits[#1] (BINTABLE)
#     1 A OBJECT                          0            0 NULs=229       -------#
#         tail blanks
TDISP1  = '10A'       / A0       always blank
#-------------------------------------------------------------------------------
#     2 D RA                      9.1362500000000002e-01 NULs=0         -------#
#                                 3.5901749999999998e+02 Decimals:
#         0=0 1=0 2=4 3=8 4=19 5=15 6=36 7=2 8=0 9=0 10=0 11=0 12=110 13=31 14=4
TDISP2  = 'F10.6'     / D22.15   range=(0.913625,359.017)
#-------------------------------------------------------------------------------
#     3 D DEC                    -8.2238861083984375e+01 NULs=0         -------#
#                                 7.9603332519531250e+01 Decimals:
#         0=0 1=0 2=0 3=0 4=0 5=0 6=0 7=0 8=0 9=0 10=0 11=7 12=30 13=165 14=25 15=2
TDISP3  = 'F10.6'     / D22.15   range=(-82.2389,79.6033)
#-------------------------------------------------------------------------------
#     4 E POS_ERR                 0.0000000000000000e+00 NULs=0         -------#
#                                 1.4100000381469727e+01 Decimals:
#         0=52 1=171 2=5 3=0 4=0 5=0 6=1
TDISP4  = 'F6.2'      / F9.6     range=(0,14.1)
#-------------------------------------------------------------------------------
#     5 A POS_REF                         4            7 NULs=0         -------#
#         tail blanks
TDISP5  = 'A8'        / A7      
#-------------------------------------------------------------------------------


Il est parfois nécessaire de préciser fits2a -x 1 -tdsip -v fichier.fits pour préciser où commence la table (il y a "#001" pour "ext" dans le résultat du fits2a -toc).


Si l'on souhaite modifier les formats de la table ASCII que l'on veut produire, il faut modifier les formats des TDISP. Par exemple pour modifier un format D22.5 (double précision) en F5.2 pour une magnitude.

Attention : Lorsqu'on modifie un TDISP, il ne faut pas que la quote passe au-delà du 20è caractère. Sinon le format n'est pas compris et à la place des valeurs on a un %5.2f (par exemple) !!!

On a ensuite la commande -a, associé à -tdisp qui permet de fournir la nouvelle description choisie :
fits2a -a cat_format2 -tdisp file.fits > new_format
La seconde partie de ce fichier "new_format" permet de créer le fichier de description qui servira pour l'anafile.

L'option -a spécifie un fichier qui contient des changement dans les metadatas du FITS. Le fichier ressemble, par exemple à :

        TTYPE2 = 'RA(J2000)'   / Name of column#2
        TTYPE3 = 'Dec(J2000)'  / Name of column#3
        TDISP2 = 'F8.4'        / Fortran-like format. Note that C-like format
       can be
        TDISP3 = 'F8.4'        / used if starting by %, e.g. '%+08.4f' for a
       latitude


Quant à elle, la commande fits2a -d"|" -a cat_format2 file.fits > catalog.dat
permet d'obtenir la table ASCII correspondante "catalog.dat" (le -d permet de choisir un séparateur différent du blanc).

La commande fits2a -xten 3 2PC_catalog_v04.fits | less permet de ne s'occuper que de la 3è table. C'est la même chose que fits2a 2PC_catalog_v04.fits\#3
Avec fits2a 2PC_catalog_v04.fits\#3 | grep SED_Center_Energy_OP | sort | uniq -c | less : on peut afficher les valeurs pour ce vecteur (cf. Cat. J/ApJS/208/17).

On peut utiliser le fichier new_format que l'on a modifié pour différents fichiers FITS si on veut leur appliquer le même format. Par contre, il faut veiller à commenter les TMIN/TMAX.


Avec fits2a 2PC_catalog_v04.fits > /dev/null : on voit la liste des erreurs sur les fichiers.

Voir aussi le man fits2a et/ou le fits2a --help pour la liste des options. Ainsi que la page : http://cdsarc.u-strasbg.fr/doc/man//fits2a.htx

N.B. : Lorsqu'il y a des ensembles vectoriels, on peut le spécifier dans le ReadMe mais faire attention au fait que les blancs comptent comme format de la valeur dans ce cas. Par exemple pour le Cat. J/ApJS/216/4, les format 32I5, 32I6 et 32F5.1 indiquent les 32 valeurs au format I5, I6 et F5.1 respectivement (qui tiennent comptent des blancs qui ne sont pas comptés comme des séparateurs, dans ce cas, mais comme faisant partie du format.)

Autre exemple dans le J/ApJS/222/5, certaines colonnes comprennent 2 valeurs. Ceci est indiqué dans le format par [2]x :
TDISP22 = 'E12.6' / E10.4 [2]x NaN=191 range=(-3.76861e-11,3.76861e-11)
Il faut donc en tenir compte si on veut faire un nouveau format (TDISP25 = 'E9.3' / E10.4 [2]x NaN=307 range=(-1.60734e-11,1.89346e-11) au lieu de TDISP25 = 'E8.3' / E10.4 [2]x NaN=307 range=(-1.60734e-11,1.89346e-11) comme pour les colonnes simples en E8.3...) Sinon les valeurs vides décalent les lignes...En fait, c'est simplement parce que la première valeur est en E9.3 à cause du signe <0 donc il faut mettre les 2 valeurs au même format !

Lorsque les colonnes de vecteurs sont énormes (4649 valeurs par exemple), on peut choisir de ne pas les inclure dans la table ASCII transformée. Ainsi pour le Cat. J/ApJ/805/96, l'option -c permet de ne pas inclure les 5 colonnes de vecteurs.

fits2a -c 1-5,11-27 -a newformat_t1 table1_apj.fits | less pour afficher les colonnes aux formats TDISP définis dans le fichier newformat_t1 sans les colonnes 6 à 10.

N.B. : Avec la commande fits2a -par -c 1,'6&7&8' -start 12 -top 1 table1_apj.fits | less , on affiche les valeurs ID, lambda, flux, e_flux pour la ligne 12 et on colle le champ 1 (ID) grâce à la virgule.

Le fits2a permet aussi de combiner des colonnes formées de vecteurs, et aussi de choisir éventuellement quels sont les éléments que l'on édite ou pas. Par exemple pour la table 2 de J/ApJ/817/55 où une seule ligne contient le paramètre et toutes les valeurs pour ce paramètre puis le 2è paramètre, etc. :
fits2a -valign -c '1&2&3&4' /ftp/cats/J/ApJ/817/55/apj522003_table3/table3.fits

* le -c '1&2&3&4' demande de combiner les colonnes 1 2 3 et 4 (qu'on pourrait aussi écrire -c '1+2+3+4' ou bien -c '&1-4' ou bien encore -c 'OBJNAME&PLATE&FIBER&MJD'
* le -valign permet d'aligner les colonnes combinées
* on peut aussi choisir des lignes
fits2a -valign -c '1&2&3&4' -vstart 4 -vmax 4 /ftp/cats/J/ApJ/817/55/apj522003_table3/table3.fits
pour juste les 4èmes éléments des vecteurs

Ou fits2a -valign -c'&1-40' table3.fits > table3.dat pour combiner les champs 1 à 40...



Retour au sommaire

IV. Pour les spectres : tracé direct du graphe

La commande fits2a peut aussi être utilisée dans un .graph pour tracer directement un spectre ou une courbe de lumière :

2 exemples seulement dans l'ApJ : Cat. J/ApJ/703/894 et Cat. J/ApJ/708/661

Exemple pour des courbes de lumière dans le Cat. J/ApJ/727/125 :

  • une table liste les 4 fichiers FITS (coo, MJD, lambda pour les filtres et FileName. Le fits.list permet de récupérer les coo et les FileName...
  • Le .status fait le lien vers le graphe correspondant :
    • \vizLink{ fits }{LC -FileName}{LC}{ \vizContent{timeSerie/fits} \wGraph{@{@catab}/@{*FileName}}{}{@{}} } {light curve}
    • \vizObj{(\wGraph{@{@cat}/foldedlc}{P=1.0914240}{IRAC light curve})}
  • Le .graph utilise directement la commande fits2a :
    • fits2a -c=7,16,17,23 $file | grep '1$' |gawk -v P=$P 'BEGIN{P*=86400}{\
      x = substr($1,5); if (P>0) x = (x/P) - int(x/P) ; \
      printf("%s %s %s\n", x, $2, $3) }'\
      | graph -T $Vgraph -C -I e --pen-colors "`graph_color '$filters'`" \
      $plotarg -X $X:q -Y $Y:q $argv:q
Le .graph est l'ancienne version des graphes. Mais fits2a peut également être utilisé directement pour la nouvelle version .graph_sql. Voir la page consacrée au graphes : http://cds.u-strasbg.fr/twiki/bin/view/Ressources/PageWidget

V. Pour les autres types de données

Pour les images

La commande fits.list fits/* > list.dat permet d'obtenir un fichier list.dat qui contient une table de valeurs correspondant au fichiers du répertoires "fits" avec la description de ces valeurs :

  • centre de l'image,
  • échelle,
  • nombre de pixel de long des X et Y
  • les noms des fichiers fits contenu dans le répertoire "fits".
  • Exemple de catalogue avec des images FITS : Cat. J/ApJ/736/119.
Dans le ReadMe, il faut ajouter "in subdirectory fits" au "Name of FITS file" pour avoir un lien automatique depuis le nom de fichier vers une page de téléchargement du fichier avec sa description. Par exemple : Cat. J/A+A/551/A53

On ajoute également un "\vizExplain{ list }{}{+\vizContent{fits}}" au .status pour signaler le contenu FITS. Il faut penser à ajouter le \vizContent dans le \vizObj également.

Autre exemple Cat. J/ApJ/748/93 :

La commande \aFile dans le \vizLink permet à Aladin de générer un bouton pour télécharger le fichier d'image FITS correspondant...
De plus en expliquant la colonne comme "FileName in subdirectory "fits"", un lien se fait automatiquement sur le nom du fichier pour arriver sur la page verte d'explication du FITS avec le fits2a -toc en en-tête, la possibilité de télécharger le fichier et le header ainsi qu'un exemple des valeurs...

Est-ce que les infos ci-dessus sont toujours d'actualité (notamment fits.list fonctionne ?) ???

Concernant la base de données associées - voir la doc pour l'ingestion des données : ici

Rappel : commande edfits pour voir la liste des catalogues contenant des FITS avec données associées potentielles.

2 exemples vu lors de la data crunch session du 26/11/2018 :

J/A+A/618/A154 : 80 images FITS.

Avec la commande xfits - depuis le répertoire J/A+A/618/A154, on ouvre dans le menu "File", l'option "New collection from a Directory", on clique sur le répertoire "fits" qui contient les images FITS et on clique sur "Open". On prie (dans la non-religion de son choix) pour que tous les fichiers FITS soient structurés de la même manière.

En l'occurrence, les fichiers sont bien structurés de la même manière, on peut donc faire un Ctrl+s pour sauvegarder le fichier qui s'intitule automatiquement "obscoreimage". On peut fermer le xfits (après avoir fait un "Preview" par exemple...) et modifier à la main le fichier "obscoreimage s'il manque des informations.

Dans tous les cas, on cherche les positions, le téléscope/instrument, la date d'observation du début au moins et les min/max des longueurs d'onde observées. Dans cet exemple, il n'y avait que les min/max à ajouter. C'est fait dans les champs "em_min", "em_max" en spécifiant l'unité dans "spcunit".

Note : Bien penser à mettre entre simple quotes, les valeurs que l'on ajoute ainsi au fichier obscore.

Il ne reste plus qu'à faire un putimg pour que les données soient insérées dans Saada.
On répond à toutes les questions qui sont posées par l'option par défaut... (Gilles doit supprimer les questions inutiles ?)

On peut ne pas mettre en production directement (dernière question posée) pour gagner du temps. Dans ce cas, on peut toujours vérifier le résultat de l'ingestion via l'adresse locale : http://cdsarc.u-strasbg.fr/local/assocdata/

Une fois le putimg effectué, des commandes sont ajoutées au .status du catalogue :

  • \VizAssocData{obscoreimage} (dans l'en-tête du fichier) qui ajoutera le logo Saada/fits après le titre du catalogue
  • Les commandes :
\vizMore{ list }{AssocData}{\AssocDataImageLink{@{@cat}}{@{FileName}}}
%\vizMore{ table }{AssocData}{\AssocDataSpecLink{@{@cat}}{ column }}
\vizAddColumn{ list }{AssocData}{fits}{}{ }{Associated Data web page}

qui sont commentées et que l'on peut remplir dans certains cas (comme ici) pour ajouter une imagette dans la table.


Dans tous les cas, il faut faire un 2v pour que la commande "\VizAssocData{obscoreimage}" --au minimum si le lien n'est pas possible via un \vizAddColumn-- soit prise en compte.

J/A+A/618/A104 : plusieurs images FITS au formats différents dont 2 data cubes...

Dans le cas de formats différents, on peut regrouper différents fichiers qui auraient la même structure dans une liste pour les traiter ensemble.

Ici c'est plus simple : Pierre propose de ne rentrer que les 2 data cubes qui sont les données brutes d'observation - les autres images étant des analyses déjà travaillées.

Dans le fichier obscoreimage, il y a donc une description par fichier.

Gilles a proposé de rajouter un commentaire pour préciser d'où sont récupérées les données que l'on rajoute à la main dans le fichier obscoreimage. C'est donc le cas dans cet exemple.

putimg et 2v sans problème particulier - de manière plus générale, penser à commenter également le .history pour que l'on comprenne d'où viennent les différentes réinsertion des fichiers.

Le plus long dans le processus est bien évidemment de retrouver les informations qui décrivent chaque fichier.

Voir data cube dans la liste d'exemples ci-dessous, sinon ??

Retour au sommaire

VI. Exemples de catalogues avec des .fits vus en réunion hebdomadaire

  • J/A+A/556/A1 : 1 seul fichier .fit. Nouveau format Healpix différent d'une image. => pas de liste (fits2a et fits.list habituels ne fonctionnent pas). Il y a un lien en \vizComment pour télécharger le fichier. Pas de description autre que titre fichier et section "Description" dans le ReadMe.

  • J/A+A/556/A10 : 127 fichiers .fits
Le résultat du fits.list fits/* donne la liste des fichiers avec coo, scale, Nx x Ny, fits/file_name.fits.
L'auteur donne en plus la liste des Exposure time + filters .
L'ensemble des 2 sources d'informations donne la table list.dat qui paraît contenir l'info nécessaire pour ce type de données.
On ajoute ici l'échantillon de BCGs concerné (table1) disponible sur ArXiv.

  • J/A+A/556/L1 : ALMA observations of ^12^CO/^13^CO around R Sculptoris. 2 fichiers .fits
data cube d'images avec positions X, Y, et 3è axe = FREQ.
Le résultat du fits.list fits/* donne :
021.74210-32.54322 0.3      432x 432x  25 [FREQ=3.45771e+11/3.45854e+11(3.46035e+06)HZ] RScl_12co32.fits
021.74210-32.54322 0.3      432x 432x  25 [FREQ=3.30564e+11/3.30643e+11(3.30817e+06)HZ] RScl_13co32.fits

Dans ces fits 3D, les 2 premières dimensions correspondent à la position sur le ciel (432x432) avec une échelle de 0.3arcsec/pix. Ce qui est entre crochets [FREQ=3.45771e+11/3.45854e+11(3.46035e+06)HZ] correspond à la fréquence, qui varie entre 3.45771e+11 et 3.45854e+11 avec un pas de 3.46035e+06 Hz. Il faudrait, pour être plus lisible, récrire ces paramètres :

345.771 345.854 3.46
330.564 330.643 3.31

avec dans le format

 ... F7.3 GHz Freq1 Lower value of the frequency
 ... F7.3 GHz Freq2 Upper value of the frequency
 ... F4.2 MHz dFreq Resolution (step) in the frequency

et il faudrait encore rajouter le titre que donne l'auteur de ses cubes.
Au final, le "résumé" pourrait être

021.74210-32.54322 0.3      432x 432x  25 345.771 345.854 3.46 RScl_12co32.fits ^12^CO(J=3-2) line
021.74210-32.54322 0.3      432x 432x  25 330.564 330.643 3.30 RScl_13co32.fits ^13^CO(J=3-2) line

Ainsi, quand on "tombe" sur cette table, on aura les infos de base sur la zone du ciel, la zone de fréquence, et les molécules observées, qui sont indispensables pour situer le type de données.
Le 25, donne le Nz, c'est-à-dire le nombre de fréquences ou channels observés .
Il est également intéressant d'ajouter la fréquence au repos (REST FRQ) .

  • J/A+A/556/A123 : NIR imaging polarimetry of HD142527.
N.B. Le format est en fits.fz, format compressé pour les .fits (Francois a recupé le fpack/funpack pour qu'il ne pose plus de problème au fits2a).
Le fits.list fits/* donne coo, scale, Nx x Ny, des trucs bizarres, filenames
L'auteur donne en titre : exposure times, filtres, nom de l'étoile .
Au final le list.dat donne donc l'information suffisante.

  • Ref. J/ApJS/209/39 : FITS image cubes - pour exemple : quelles informations à donner ?
Le fits.list donne les principales informations (fits.list fits/*) :
277.33335+00.50000 10       305x 721x 133 fits/Serpens_12CO.fits
277.33335+00.50000 10       305x 721x 133 fits/Serpens_13CO.fits

Où on a les RAdeg+DEdeg, l'échelle en arcsec/pix, le Nx x Ny (voir description qui suit la table fournit par le fits.list).
Il manque dans la description le "133" qui correspond au Nz (Number of pixels along Z-axis)
En faisant le fits2a -toc fits/*, la dernière partie de chaque ligne nous fournit le CTYPE3 (ce Nz), ici "[VELOCITY=-10925/28675(300)]" que l'on retrouve avec l'option -TOC également. Nous n'avons pas les unités mais comme il s'agit de nuages moléculaires galactiques, elles doivent être en m/s !
Pour les images, le RESTFREQ serait un bon paramètre à ajouter, ici on ne l'a pas dans le header mais on peut l'ajouter au titre de chaque fichier.

VII. La base de données associées pour les FITS (spectres et images principalement)

Gilles a créé la base de données associées : http://cdsarc.u-strasbg.fr/assocdata/ en collaboration avec Laurent Michel (et ses outils Saada).

Pour l'alimenter, il a aussi créé l'outil xfits qui s'appelle en tapant cette simple commande.

Voir des exemples d'utilisation dans la section Images.


VIII. Liens utiles

La page de Wikipedia ! FITS (Voir aussi celle en français !)
FITS support office (NASA)
Autres... ??

-- EmmanuellePerret - 11 Dec 2012

Topic attachments
I Attachment Action Size Date Who Comment
Unknown file formatodt CRreuFITS_20130318.odt manage 27.7 K 2013-03-26 - 16:08 EmmanuellePerret Compte-rendu réunion FITS
PDFpdf CRreuFITS_20130318.pdf manage 218.7 K 2013-06-05 - 12:23 EmmanuellePerret  
Topic revision: r25 - 2022-04-22 - EmmanuellePerret
 
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