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.