Construction du site
Le site ErosMap décrit les observations réalisées par l'expérience Eros 2 entre 1996 et 2003. Les informations présentées sont extraites de la base de données ErosDB, la base de données de l'expérience. Elles sont organisées en fonction des programmes scientifiques conduits et des régions d'observation.
La construction du site est réalisée en 3 étapes:
1/ Les informations à présenter sont extraites de la base
de données grâce à l'application ErosMapCollector du projet
ErosDb.
Les données sont sauvées en format JSON dans un fichier
erosmap.json.
2/ Les pages du site, écrites en MarkDown, sont créées par l'application ErosMapBuilder du projet ErosDb. Cette application utilise la librairie Velocity de la Fondation Apache.
3/ Le site lui-même est construit grâce à MkDocs qui met en place en outre les menus de navigation entre les pages.
Velocity
Velocity est une librairie de la Fondation Apache destinée à la génération de documents par substitution de variables dans des modèles. Ces variables correspondent à des objets de l'application dont les méthodes peuvent être invoquées via l'introspection Java.
Velocity supporte en outre l'accès aux propriétés des variables selon la convention usuelle Java Bean. Cette convention spécifie qu'une propriété est associée à deux méthodes, l'une pour accéder à la valeur de la propriété, l'autre pour la modifier. Les noms et signatures des méthodes sont imposés. Le nom de la méthode d'accès doit débuter par get et se poursuivre avec le nom capitalisé de la propriété. Cette méthode à un type de retour mais n'accepte aucun argument. Le nom de la méthode de modification débute par set puis le nom capitalisé de la propriété. La valeur à affecter à la propriété est transmis en argument. Le type de retour n'est pas pris en compte.
Par exemple, la propriété nbStars, représentant le nombre d'étoiles
analysées doit être associée à deux méthodes : Long getNbStars()
et void setNbStars(Long n). Dans les modèles traités par
Velocity, le nombre d'étoile peut être accédée soit par le nom
de la méthode :
Nombre d'étoiles: $pgm.getNbStars()
soit directement par le seul nom de la propriété :
Nombre d'étoiles: $pgm.nbStars
Les données ErosMap
Le fichier erosmap.json est chargé par ErosMapBuilder sous la forme
d'une instance de la classe ErosMap. L'objet Java est associé
à une variable Velocity nommée $erosmap. Les données collectées
sont accessibles au travers de cette variable. Elles sont organisées
sous la forme d'une hiérarchie de classes correspondant aux différents
types de régions observées:
-
ErosMap: la structure principale regroupant les programmes scientifiques suivis ainsi que différentes propriétés résumant les données collectées ;
-
Program: description des programmes scientifiques suivis par l'expérience ;
-
Field: description des champs correspondant à une zone du ciel « vue » par le télescope durant une observation - le nombre de champs d'un programme scientifique dépend de l'importance de ce programme ;
-
Qccd: un quart de ccd correspond à la granularité des analyses réalisées sur les images - les fichiers de suivi, les catalogues ASCII et les courbes de lumière sont structurés en termes de quart de CCD. Les mesures réalisées pour les caméras rouge et bleue sont regroupées dans le cas des catalogues et des courbes de lumière,
Par exemple, l'ensemble des programmes scientifiques suivis par
l'expérience est accessible via la variable $erosmap au moyen
d'une boucle Velocity. L'exemple suivant montre une séquence
présentant les noms, codes et nombres d'étoiles par programme :
Programmes Eros 2
#foreach ($pgm in $erosmap.programs)
$pgm.code - $pgm.name
Nombre de champs : $pgm.nbFields
Nombre d'étoiles : $pgm.nbStars
Nombre d'images : $pgm.nbImages
#end
Les instructions #foreach et #end sont des directives Velocity décrites
dans le manuel utilisateur.
Le résultat est le suivant:
% ErosMapBuilder -map erosmap.json exemple.model
Programmes Eros 2
aj - Amas jeunes
Nombre de champs : 4
Nombre d'étoiles : 0
Nombre d'images : 2320
as - Alain Special
Nombre de champs : 40
Nombre d'étoiles : 0
Nombre d'images : 1081
bi - bidon
Nombre de champs : 0
Nombre d'étoiles : 0
Nombre d'images : 0
bs - Beta Scutti
Nombre de champs : 6
Nombre d'étoiles : 2416924
Nombre d'images : 69613
ca - Calibration
Nombre de champs : 55
Nombre d'étoiles : 0
Nombre d'images : 14552
(...)
Par ailleurs, l'application ErosMapBuilder
se déclare elle-même sous la forme d'une variable Velocity $builder,
permettant aux modèles d'accéder à différents services pour la création
de nouvelles pages ou la présentation des valeurs décimales.
Le fichier Json
L'intérêt du format Json pour conserver les données extraites de la base de données est qu'il est largement supporté aujourd'hui. Les données ErosMap sont proposées sous une forme Gzippé.
Le fichier erosmap.json est organisé comme une hiérarchie de dictionnaires
où les clés sont les noms des propriétés correspondant aux données
collectées. Chaque objet de la hiérarchie Java est représenté par
un tel dictionnaire. Il est donc très facile d'explorer l'ensemble
des données. Les exemples suivants montrent une mise en oeuvre
simplifiée en Python et en Groovy. Un exemple plus concret est
présenté dans le chapitre consacré à la
recherche des étoiles.