Transformation d'une table TSV en VOTable - Ajout des métadonnées
L'objectif de cet exercice est :
- d'appréhender le format VOTable
- de comprendre le rôle important que jouent les métadonnées
- d'expérimenter l'utilisation des métadonnées dans un outil VO
Nous allons partir d'une table au format CSV (coma-separated values) , dépourvue de métadonnées, la charger dans Topcat et lui assigner les UCD correspondants.
Quelques notions sur les UCDs
Les UCDs (Unified Content Descriptors) donnent la signification sémantique d'une quantité ("de quelle quantité s'agit-il ?"). Ils sont utilisés principalement pour décrire le contenu des colonnes dans les documents VOTable, par le biais d'un attribut
ucd="... au niveau de l'élément
FIELD. Ils sont également utilisés pour décrire des paramètres individuels ou des données tabulaires dans le registry (annuaire) de l'OV.
Les UCDs sont standardisés et décrits dans deux documents de référence (recommendations IVOA) : un pour
les règles de syntaxe
, et un autre contenant
la liste des mots valides
.
En bref : un UCD est constitué au minimum d'un mot, ou de plusieurs mots séparés par des ';' . L'essentiel du sens est donné par le premier mot. Pour décrire une magnitude mesurée dans la bande V, on peut utiliser le mot
phot.mag
(décrivant une magnitude) et le combiner au mot
em.opt.V
(décrivant la bande V dans le domaine optique) : l'UCD complet sera donc
phot.mag;em.opt.V
La documentation et les outils se rapportant aux UCDs se trouvent ici :
http://cdsweb.u-strasbg.fr/UCD/
. Un ensemble d'outils en ligne sont également disponibles :
http://cdsweb.u-strasbg.fr/UCD/tools.htx
Assignation des UCDs
- Récupérez la table apj_614.csv sur votre disque dur
- Récupérez également apj_614.desc, qui contient la description des différentes colonnes contenues dans la table
- Lancez Topcat ( java -jar topcat-full.jar)
- Chargez la table dans Topcat (menu File --> Load table en précisant CSV comme format)
- Puis, cliquez sur le bouton
Display column metadata
, et sélectionnez l'affichage de la colonne "UCD" depuis le menu Display
.
- Pour chaque colonne de la table, remplissez le champ UCD correspondant (double-cliquez sur la cellule à éditer) en vous aidant de la description correspondante (fichier apj_614.desc ) et de l'outil UCD Builder (cf. section suivante)
Recherche manuelle d'UCD
Pour trouver les UCD à assigner, utilisez l'outil UCD builder (
http://cdsweb.u-strasbg.fr/UCD/cgi-bin/descr2ucd
).
Entrez simplement la description du paramètre, et l'outil vous suggérera l'UCD à utiliser.
Vous pouvez copier/coller chaque UCD dans la colonne adéquate dans le tableau des métadonnées de Topcat.
Assignation des unités
Les outils en ligne suivants sont utiles lorsqu'on cherche à assigner des unités :
Afin de gagner du temps, les unités à utiliser se trouvent dans le fichier
apj_614.units
Pour comprendre la signification d'une unité, vous pouvez utiliser
http://vizier.u-strasbg.fr/cgi-bin/Unit
- Cliquez sur le bouton
Display column metadata
, et sélectionnez l'affichage de la colonne "Units" depuis le menu Display
, puis copier/coller les unités de chaque champ.
Conversion vers le format VOTable
Une fois les UCDs et les unités assignées, il ne nous reste plus qu'à sauvegarder notre table au format VOTable.
- Dans Topcat, sélectionnez
File --> Save table
, précisez votable-tabledata
et sauvegardez.
- Ouvrez le fichier obtenu dans un éditeur de texte
Vous pouvez aussi vous référer au
fichier solution.
Utilisation des métadonnées dans un outil VO
Utilisation des UCD
Nous allons démontrer deux utilisations différentes des UCDs :
- Détection automatique des colonnes d'intérêt
- Utilisation dans les filtres Aladin
- Lancez Aladin (
java -Xmx300M -jar Aladin.jar
) et chargez une image de M33 (File, Open, Aladin Images, choisissez l'image Lw-POSSI.E par exemple).
- Puis interrogez SIMBAD et chargez la VOTable que vous avez obtenue à l'étape précédente (ou utilisez la VOTable solution).
- Sélectionnez ensuite
Cross-match objects
depuis le menu Catalog
: remarquez que les colonnes portant l'information de la position ont été sélectionnées automatiquement, même si elles portent des noms différents. Les UCDs nous renseignent de façon non ambigue sur la nature des colonnes.
- Sélectionnez
Create a filter
depuis le menu Catalog
, et sélectionnez Draw circles proportional to object luminosity
.
- Passez en
Advanced mode
afin de voir la syntaxe du filtre : celle-ci repose sur l'utilisation d'expressions régulières sur les UCDs pour indiquer les colonnes à utiliser pour interpréter l'expression. Un filtre générique peut opérer sur des données d'origines différentes, à condition que les UCDs soient renseignés.
Utilisation des unités
Nous allons démontrer l'utilisation des unités, à nouveau au travers des filtres Aladin :
- Lancez Aladin (
java -Xmx300M -jar Aladin.jar
) et chargez une image de M33 (File, Open, Aladin Images, choisissez l'image Lw-POSSI.E par exemple).
- Puis chargez la VOTable obtenue précédemment (ou utilisez la VOTable solution).
- Sélectionnez "Create a filter" depuis le menu
Catalog
, et basculez en Advanced mode
. Copiez/collez le script suivant :
$[spect.dopplerVeloc*]<-1.7e5m/s {draw blue square}
{draw red rhomb}
et cliquez sur
Apply
Les filtres utilisent une
bibliothèque de conversion
capable d'interpréter les unités, et d'effectuer à la volée la conversion de m/s en km/s.
Utilisation de STILTS (en ligne de commande)
STILTS
est un outil en ligne de commande permettant d'effectuer la plupart des opérations qu'offre Topcat : conversion de formats, ajout de colonnes, création de plots 2D. Il est intéressant d'utiliser STILTS si on a besoin d'un mode batch ( conversion d'un grand nombre de fichiers ) ou pour une utilisation derrière un CGI par exemple.
- Exécutez
java -jar stilts.jar
dans un terminal. STILTS affiche les différentes tâches disponibles. Nous allons nous intéresser dans un premier temps à tcopy
qui permet la conversion entre différents formats tabulaires
-
java -jar stilts.jar tcopy in=apj_614.csv ifmt=csv ofmt=votable
va permettre de convertir notre table CSV en VOTable et d'afficher le résultat sur la sortie standard. java -jar stilts.jar tcopy in=apj_614.csv ifmt=csv ofmt=votable out=matable.xml
permet de préciser le fichier de sortie.
- La tâche
tpipe
permet, en plus de la conversion de format, d'effectuer des opérations sur les colonnes (suppression, ajout de nouvelles colonnes). Exemple : en partant de notre table apj_614.xml, on va ajouter une colonne flux5007 (calculée à partir de la magnitude) et ne conserver en sortie que les champs RAJ2000, DEJ2000 et flux5007 :
java -jar stilts.jar tpipe in=apj_614.xml ifmt=votable ofmt=votable cmd='addcol -units Jy flux5007 "pow(10, -0.4*(m5007+13.74))"' cmd='keepcols "RAJ2000 DEJ2000 flux5007"'
- En utilisant la tâche
plot2d
, on peut très facilement créer un graphe RAJ2000 vs. DEJ2000 dont la couleur des points dépend de la valeur de la magnitude :
java -jar stilts.jar plot2d in=apj_614.xml ifmt=votable xdata=RAJ2000 ydata=DEJ2000 auxdata=m5007
. Pour sauvegarder le graphe dans un fichier, il suffit d'ajouter
-out=foo.png
à la fin de la commande.
Aller plus loin
Voici quelques liens pour approfondir le sujet, après la journée OV :
Pour des grandes collections de données, il est préférable d'automatiser le processus d'assignation des UCDs à partir des descriptions des colonnes. Nous pouvons pour cela utiliser la méthode
assign
des Web Services SOAP dédiés aux UCDs (
http://cdsweb.u-strasbg.fr/cdsws/ucdClient.gml
). La description de chaque colonne peut être passée au service, qui renverra l'UCD correspondant le mieux adapté.
Ce Web Service SOAP, ainsi que d'autres méthodes de manipulation des UCDs, peut être consommé dans différents languages (Perl, Python, Java). Un exemple Java est
disponible ici
.
- Parsers VOTable (liste non exhaustive)
- Java
- SAVOT
- STIL
(Starlink Tables Infrastructure Library)
- Python
- Perl
- C++
Ce tutoriel est librement adapté de la session Metadata présentée par Sebastien Derriere et. al lors du workshop How to publish data to the VO
(Juin 2009)
--
ThomasBoch - 16 Sep 2009