+ Développement de services d’accès intelligents en imagerie astronomique multidimensionnelle
Financement Icube-Miv, coll. Icube équipe MIV Ch. Collet (MIV)
Présentation
Ce stage a pour but de développer un service d'accès au image astronomique mutlidimensionnelle de type cube hyperspectral sous forme de serveur de cube.
Ce programme s'integrera dans le service SIAP v2.
Le language de programmation utilisé est java.
Accès au service
Le service est disponible à l'adresse suivante
http://obs-stage-s4:8080/cubeTools
Code source
Tout les sources du programme développé durant ce stage sont disponibles sur un dépot git se trouvant sur le poste "obs-stage-s4".
Pour récupérer ces sources, il vous faut tout d'abord créer une clez rsa, envoyer la partie public à l'adresse e-mail
suivante. Une fois votre clez ajouté au dépot, dans le terminal linux, entrer la commande suivante
# git clone git@obs-stage-s4.u-strasbg.fr:cubeTools.git
Première ébauche
1. Objectif et fonctions implémenté
Dans une première version du programme, nous avons voulu créer un executable capable d'effectuer un certains nombre de fonctions.
- Extraction d'un plan
- Extraction d'un spectre
- Extraction d'un sous cube
- Extraction d'un sous cube en sous bande
- Extracton d'une coupe en biais de type position vitesse
- Moyenne sur des sous-bandes
- Moyenne sur un sous cube
- Moyenne sur un cylindre
2. Paramètre
Les coordonées entré en paramètre peuvent être de deux type:
- Coordonnée pixel
- Coordonnée WCS
3. Format de sortie
Deux types de sortie sont prévu pour ce programme. Le formats fits, utiliser pour les cubes et les spectres. et le format VOTable utilisé spécifiquement pour les spectres.
4. Exemple d'utilisation de l'executable
# java -jar cubeTools.jar -h // Affiche la manuel d'utilisation
# java -jar cubeTools.jar -i ../fits/cube/radio/ATCA.fits -o ../fits/sous_cube.fits -m csc -t pix [100,100,20;200,200,120] // Extrait un sous cube
Accès a distance au service
1. Objectif
// Avoir un service permettant de manipuler des données avant le téléchargements. Les données issue des cube hyperspectraux étant très volumineuse. Il est interrssant de
// pouvoir prétraiter les données avant le chargement. Ce service doit pouvoir etre utiliser de deux facons, d'une maniere synchrone, le serveur attends que le traitement soit terminé avant
// de répondre au client, et d'une maniere asynchrone, le serveur lance la tache, renvoie le statut courant du traitement au client. Le
2. Implémentation du servlet
a) Servlet asynchrone (UWS)
// La première implémentation du servlet a été l'implémentation du service asynchrone. La librairie
UWS a été choisie
// develloper ce service. Elle renvoie des informations au format XML sur l'avancement d'une tache.
// La communication entre le client se fait en deux temps:
// 1. Le client emets une requete ( demande de traitement d'un cube, copie, moyenne sur des plans, regridding, ect ... ). Le serveur lui réponds via un document XML comprenant l'ID de la tache et sont statut courant.
// 2. Le client emets une requete sur le traitement lancé via l'id communiqué par le serveur à l'étape 1. Le serveur lui réponds via un document XML, comprenant l'état de la tache et dans le cas ou la tache est finie,
// le lien du cube résultant du traitement.
b) Servlet synchrone (Frontal)
// Cette implémentation se base sur le service asynchrone.
// Les données sont directement renvoyé lors de la fin du traitement.
c) Les paramètres du service
// Liste des différents paramètre:
// ...
// ...
Binning adaptatif
1. Objectif
On cherche a avoir une méthode robuste pour identifier les sources dans un cube,
afin de facilité l'analyse des données.
2. Centroidal Voronoi Tesselation
3. Weigthed Voronoi Tesselation
4. Comparaison entre les deux méthodes et test effectué
5.Utilisation du GPU pour la méthode de construction du diagramme de Voronoi
Bibliothèque de fonction utilisé
- apache.commons.cli Destiné uniquement à l'executable, cette bibliothèque permet de gérer simplement les paramètres du programme.
- cds.astro Gère la calibration astrometrique des cubes.
- server-api Destiné au classe coté servlet.
- uws3.0 Gère les taches du servlet de manière asynchrone.
- aparapi Permet d'utiliser le GPU, génère du code OPENCL
Bibliographie
- FITS: A Flexible Image Transport System D.C. Wells, E.W. Greisen et R.H. Harten
- The FITS image extension J.D. ponz, R.W. Thompson et J.R. Munoz
- Simple Image Access Protocol V.2.0 F. Bonnarel, D. Durand, A. Richards, J. Salgado et D. Tody
- Adaptive binning of X-ray data with weighted Voronoi tesselations S. Diehl et S. Statler
- Voronoi binning: Optimal adaptive tesselations of mutli-dimensional data M. Cappelari
- Adaptative spatial binning of integral-field spectroscopic data using Voronoi tessellations M. Cappellari and Yannick Copin
- Centroidal Voronoi Tesselations: Applications and Algorithms Quiang Du, Vance Faber, Max Gunzburger
Mémo
Zone mémoire de la jvm
Une fois lancé une zone mémoire est alloué à la JVM. La JVM ne pourra pas dépasser cette zone mémoire. ( lève l'exception "java.lang.OutOfMemoryError: Java heap space" )
-Xms permet de définir la taille mémoire alloué à la JVM.
-Xmx permet de définir la taille maximal qui pourra être alloué à la JVM
Exemple:
# java -Xms3500m -jar cubeTools.jar // Alouera 3500Mo à la JVM
Zone mémoire de la jvm pour tomcat7
Dans le fichier de config catalina.sh ( "/usr/share/tomcat7/bin" ) ajouter cette ligne au début.
# export CATALINA_OPTS="-Xms512M -Xmx2048M