Comment compiler ses propres catalogues d'objets ?

Introduction

Les fichiers utilisateur textuels (voir la section Comment définir ses propres catalogues d'objets) sont utiles lorsque les bases de données à charger ne sont pas trop volumineuses et que l'utilisateur ne désire pas associer aux objets de ces bases des informations autres que le nom et un commentaire. Dans le cas contraire, les temps de chargement et de réactualisation de l’écran deviennent prohibitifs.

C2A offre la possibilité de compiler une base de données, c'est à dire de produire un fichier binaire directement lisible par le programme, à partir d'un fichier ASCII quelconque dont la syntaxe est décrite par l'utilisateur. La lecture d'un tel fichier binaire est beaucoup plus rapide que la lecture d'un fichier textuel. De plus, l'utilisateur a la possibilité de définir ses propres champs dont les valeurs seront affichées lors de l'identification des objets de la base compilée.

Pour qu’une base de données textuelle soit compilée, il faut que l’utilisateur fournisse un certain nombre d’informations dans un fichier texte appelé fichier “modèle”. Ces informations permettront au compilateur de bases de données de retrouver dans le fichier textuel les données pertinentes qui seront placées dans la base de données binaire.

Le compilateur de données pour C2A s’appelle “DC” et doit être lancé depuis la ligne de commande Windows. Cet outil est disponible en téléchargement dans la section Outils du site de C2A (http://www.astrosurf.com/c2a/download.htm).

La figure ci-dessous montre comment est produit un fichier binaire éditable dans C2A à partir d’une base de données textuelle et d’un fichier modèle qui décrit les différents champs dans la base de données.

Il est à noter que des bases déjà compilées sont disponibles au téléchargement sur le site Web de C2A (http://www.astrosurf.com/c2a/download.htm).

Format des fichiers de données textuels

Pour pouvoir être compilées par le compilateur DC, les données d’entrée fournies dans les fichiers textuels doivent satisfaire un certain nombre de contraintes :

-   les données concernant un objet particulier doivent être fournies sur une seule et même ligne de texte (une ligne par objet),

-   les données pour un objet doivent être formatées en colonnes : une donnée particulière doit commencer à une colonne donnée et doit avoir une longueur fixe, et ce pour tous les objets (toutefois, un champ peut contenir des caractères “espace”),

-   chaque donnée doit pouvoir être définie comme une chaîne de caractères (type string), un entier (type int) ou bien un flottant (type float).

Syntaxe des fichier modèles

La syntaxe des fichiers modèles fait appel à la notion de “champ”. Un champ est défini par son début (un numéro de colonne dans le fichier de données textuel) et une longueur (le nombre de caractères qui composent le champ). On peut donc donner la définition suivante de la notion de champ :

<champ> = <début> <longueur>
<début> = ENTIER
<longueur> = ENTIER

Dans un fichier modèle, toutes les informations sont fournies à l’aide de commandes et d’arguments. Une commande (et ses arguments) doit être exprimée sur une ligne, et la première chaîne de caractères sur la ligne représente le nom de la commande. Ce nom peut être fourni indifféremment en majuscules ou minuscules.

La syntaxe générale d’un fichier modèle est la suivante :

INPUT_FILE <nom de fichier>

OUTPUT_FILE <nom de fichier>

DATABASE_TYPE full | zones1 | zones2

LINE_LENGTH <nombre entier>

DESCRIPTION "<chaîne de 32 caractères au maximum>"

EQUINOX <équinoxe 1> <équinoxe 2>

OBJECT_TYPE star | galaxy
   | open_cluster | globular_cluster
   | diffuse_nebulae | obscure_nebulae
   | planetary_nebulae | asteroid
   | comet | supernova
   | pulsar | galaxy_cluster
   | binary_star | object
   | quasar | source

RA [deg] <champ> [<champ>] [<champ>]

DE <champ> [<champ>] [<champ>]

MAGNITUE <champ> [ignore='<caractère à ignorer>']* [mult=<facteur multiplicatif>] [defaut=<nombre flottant>]

SET_MAGNITUDE <nombre flottant>

LUMINOSITY <champ> [ignore='<caractère à ignorer>']* [mult=<facteur multiplicatif>] [defaut=<nombre flottant>]

SPECTRAL_TYPE <champ> [defaut='<caractère par défaut>'] [ignore='<caractère à ignorer>']*

SET_SPECTRAL_TYPE '<caractère>'

MAJOR_AXIS <champ> [mult=<facteur multiplicatif>]

MINOR_AXIS <champ> [mult=<facteur multiplicatif>]

INCLINATION <champ>

SIZE <champ> [mult=<facteur multiplicatif>]

COMMENT <champ>

USER_FIELD <champ> name="<nom du champ>"
   type=<integer | long | float | string> [purge_be=<y | n>]
   [purge_all=<y | n>] [purge_mb=<y | n>] [search=<y | n>]
   [prefix="<chaîne de caractères>"]

IGNORE_LINE <liste de lignes à ignorer>

Les éléments syntaxiques placés entre crochets (“[” et “]”) sont optionnels. Le caractère “*” signifie que l’élément syntaxique auquel il s’applique peut être répété un nombre quelconque de fois. Dans la description ci-dessus, les caractères ' et " participent à la syntaxe et doivent être utilisés dans les fichiers modèles.

Le détail de chacune des commandes de la syntaxe est donné dans les paragraphes suivants.

input_file

Cette commande permet de définir le nom du fichier de données textuel à analyser. Le nom de fichier en argument de cette commande peut posséder un chemin d’accès DOS (e.g. C:\DATA\FILE1) mais ce n’est pas obligatoire (auquel cas le fichier cité est recherché dans le répertoire courant). Ce nom de fichier peut être fourni indifféremment en majuscules ou minuscules.

output_file

Cette commande permet de définir le nom du fichier binaire qui sera produit par le compilateur. Le nom de fichier en argument de cette commande peut posséder un chemin d’accès DOS (e.g. C:\DATA\FILE1) mais ce n’est pas obligatoire (auquel cas le fichier cité est créé dans le répertoire courant). Ce nom de fichier peut être fourni indifféremment en majuscules ou minuscules.

database_type

La base de données binaire produite par le compilateur (et lisible directement dans C2A) peut être de deux types différents :

-   type “full” : la base de données sera entièrement affichée à l’écran lors d’un chargement dans C2A (i.e. tous les objets visibles dans la vue courante seront systématiquement affichés). Ce type n’est valable que pour des bases de données pas trop volumineuses (quelques milliers d’objets), sans quoi les temps d’affichages deviennent prohibitifs sur des machines moyennement puissantes.

-   type “zones1” ou "zones2": ce type permet de produire une base de données qui sera affichée par zones lors de son chargement dans C2A. La sphère céleste est divisée en 24 x 18 zones (correspondant aux 24 heures en ascension droite et aux 180 degrés en déclinaison) et une zone correspond donc à une heure en ascension droite et 10° en déclinaison. C2A détermine les zones qui participent à la vue à afficher et ne cherchera à accéder que les objets appartenant à ces zones. Cela permet de gagner en efficacité lors des affichages. Cette méthode d’affichage est celle utilisée pour la base de données SAO fournie en standard dans C2A. Les valeurs "zones1" et "zones2" signifient en fait la même chose. Elles sont conservées pour des raisons de compatibilité avec des version plus anciennes du logiciel C2A.

line_length

Cette commande optionnelle permet d'indiquer que l'on souhaite compléter, avec des caractères espace, les lignes du catalogue utilisé en entrée jusqu'à une certaine longueur spécifiée en argument de cette commande. La longueur ne peut pas dépasser 1023 caractères.

Cette commande est utile pour des catalogues textuels dont certaines lignes sont plus courtes et ne comportent pas toutes les informations présentes sur les autres lignes. Cela évite l'apparition de messages d'erreur lors du processus de compilation.

description

Cette commande optionnelle permet de décrire succinctement le contenu de la base données à l’aide d’une chaîne de 32 caractères maximum. Cette chaîne doit être encadrée par des guillemets (").

Pour qu’un fichier puisse être automatiquement reconnu comme un fichier utilisateur compilé, il doit posséder l’extension “ccc” (qui signifie C2A Compiled Catalog). Sans cette convention, les fichiers utilisateurs ne seront pas automatiquement reconnus dans le répertoire de données spécifié à l’aide de la commande "Ajouter" de la boîte de dialogue des catalogues utilisateur.

equinox

Cette commande permet de spécifier une transformation d’équinoxe lors du passage de la base de données textuelle vers le fichier binaire. Les deux paramètres de ce champ doivent être des entiers. Le premier exprime l’année de l’équinoxe d’origine. Le second exprime l’année d’équinoxe d’arrivée.

Exemple: equinox 1950 2000

object_type

Une base de données compilée par le compilateur DC ne peut contenir des objets que d’une seul type (étoiles, galaxies, ...). Les types autorisés sont les mêmes que pour les bases textuelles qui peuvent être chargées dans C2A.

Le tableau suivant décrit ces différents type ainsi que les mot-clés associés qu’il faut utiliser en argument de la commande OBJECT_TYPE :

 

Type d’objet

Mot-clé

 

Etoile

star

 

Source quelconque

source

 

Galaxie

galaxy

 

Amas ouvert

open_cluster

 

Amas globulaire

globular_cluster

 

Nébuleuse diffuse

diffuse_nebulae

 

Nébuleuse obscure

obscure_nebulae

 

Nébuleuse planétaire

planetary_nebulae

 

Astéroïde

asteroid

 

Comète

comet

 

Supernova

supernova

 

Plulsar

pulsar

 

Quasar

quasar

 

Amas de galaxies

galaxy_cluster

 

Etoile double

binary_star

 

Objet (objet utilisateur sans type)

object

Le type des objets peut être fourni indifféremment en majuscules ou minuscules.

ra / de

L’ascension droite et la déclinaison sont définies par au moins trois champs. Seul le premier est obligatoire et il définit les heures d’ascension droite (respectivement les degrés de déclinaison). Les champs optionnels définissent les minutes et secondes d’ascension droite (respectivement les minutes et secondes de déclinaison). Si un ou deux de ces champs optionnels sont absents, la valeur de l’ascension droite (respectivement de la déclinaison) est calculée uniquement à partir du ou des champs présents.

Pour la déclaration de l’ascension droite, il est possible de faire figurer avant le premier champ le mot clé deg qui spécifie que dans le fichier textuel à analyser, les ascensions droites sont exprimées en degrés, minutes et secondes d’arc et non pas en heures, minutes et secondes.

Aux emplacements définis par ces champs, le compilateur s’attend à trouver des nombres entiers ou réels dans les fichiers de données textuels qui seront analysés.

magnitude

La commande magnitude dans les fichiers modèles est facultative, même pour les bases de données d’étoiles (i.e. dont les objets sont de type star). Ce mot-clé doit être immédiatement suivi de la définition d’un champ (numéro de colonne et longueur du champ en caractères). Si la magnitude des étoiles n’est pas définie (absence des commandes magnitude et set_magnitude), les étoiles seront affichées comme de simples points indifférenciés à l’écran et leur magnitude ne sera bien sûr pas reportée lors des identifications.

L’argument optionnel ignore peut être répété un nombre quelconque de fois et il permet de spécifier les caractères à ignorer lors de la lecture des chaînes de caractères qui définissent les magnitudes (lors de la lecture des fichiers de données textuels). Ainsi, si le caractère ‘(‘ doit être ignoré (c’est le cas dans les bases de données définissant des étoiles variables), on utilisera l’argument :

ignore=‘(‘

L’utilisateur doit spécifier à l’aide de cet argument tous les caractères qui risqueraient de gêner la reconnaissance de nombres flottants ou entiers (puisque les magnitudes doivent être définies par un nombre flottant ou entier pour pouvoir être effectivement utilisées).

L’argument optionnel default permet de spécifier une valeur par défaut pour les magnitudes. Cette valeur par défaut est utilisée lorsqu’un problème survient lors de la lecture de la valeur des magnitudes dans un fichier de données textuel (reconnaissance d’une chaîne de caractères qui ne représente pas un nombre flottant ou entier, absence pure et simple de caractères, ...). Par exemple, on pourrait avoir l’argument suivant :

default=10.0

Cette argument default ne peut apparaître qu’une seule fois dans la commande magnitude des fichier modèles. Pour les étoiles, si aucune valeur par défaut n’est spécifiée et qu’une erreur survient lors de la recherche de la magnitude, l’affichage se fera simplement sous la forme de points.

On peut aussi utiliser le champ mult optionnel pour spécifier un facteur multiplicatif qui sera appliqué à la valeur trouvée dans le fichier de données textuel. Par défaut, ce facteur vaut 1. Par exemple, on pourrait avoir l’argument suivant :

mult=0.01

set_magnitude

Cette commande permet de définir une valeur unique de la magnitude qui sera utilisée pour tous les objets de la base. Cette commande ne doit pas être utilisée si la commande magnitude est utilisée dans le fichier modèle.

luminosity

La commande luminosity permet de spécifier la luminosité associée à des objets d’une base de données et donc, indirectement, leur magnitude. Ceci est spécialement intéressant pour les objets de type source (type sources de rayons X, de rayons ?, ...) pour lesquels les catalogues fournissent habituellement la luminosité apparente plutôt que la magnitude apparente.

La magnitude des objets (qui sera utilisée pour l’affichage des objets de type star et source ou qui sera simplement reportée lors d’une identification pour les autres types) est calculée à l’aide de la formule :



où mag est la magnitude apparente de l’objet et lum sa luminosité apparente. On peut aussi utiliser le champ mult optionnel pour spécifier un facteur multiplicatif qui sera appliqué à la valeur trouvée dans le fichier de données textuel. Par défaut, ce facteur vaut 1.

spectral_type

Cette commande permet de définir le type spectral des étoiles d’une base de données. Ce mot-clé doit être immédiatement suivi de la définition d’un champ (numéro de colonne et longueur du champ en caractères).

Une fois purgés les caractères “espace” de début et de fin de chaîne, seul le premier caractère du champ est analysé. Ce caractère doit faire partie de la liste suivante :

‘A’, ‘B’, ‘C’, ‘F’, ‘G’, ‘K’, ‘M’, ‘O’, ‘S’, ‘W’, ‘N’, ‘X’, ‘R’, ‘P’

Si un caractère n’appartenant pas à cette liste est détecté, c’est la valeur par défaut qui est utilisée (voir plus loin comment spécifier la valeur par défaut). Si aucune valeur par défaut n’est spécifiée, le type spectral ‘G’ est systématiquement affecté à l’étoile et celle-ci est affichée dans la couleur jaune.

L’argument optionnel ignore peut être répété un nombre quelconque de fois et il permet de spécifier les caractères à ignorer lors de la lecture des chaînes de caractères qui définissent les types spectraux. On peut utiliser par exemple l’argument

ignore=‘:’

pour ignorer tous les caractères ‘:’ dans les champs qui définissent les types spectraux.

L’argument optionnel default permet de spécifier une valeur par défaut pour les types spectraux. Cette valeur par défaut est utilisée lorsque :

-   un problème est rencontré lors de la lecture du champ définissant le type spectral,

-   le caractère trouvé ne fait pas partie de la liste des caractères autorisés (voir plus haut).

set_spectral_type

Cette commande permet de spécifier un type spectral unique pour toutes les étoiles d’une base de données. Elle ne peut être utilisée si la commande spectral_type est utilisée dans le fichier modèle.

major_axis

Cette commande permet de définir le grand axe d’une galaxie que l’on peut représenter sous la forme d ’une ellipse (définie par son grand axe, son petit axe et son inclinaison par rapport au Nord en allant ver l’Est).

Les trois commandes major_axis, minor_axis et inclination ne sont utiles que pour les galaxies, mais rien empêche de les utiliser pour d’autres types d’objets (auquel cas elles ne seront pas utilisées) sauf si le champ size est lui aussi défini (dans ce cas, une erreur est reportée).

Les valeurs attendues dans les bases de données à compiler doivent être exprimées en minutes d’arc. On peut aussi utiliser le champ mult optionnel pour spécifier un facteur multiplicatif qui sera appliqué à la valeur trouvée dans le fichier de données textuel. Par défaut, ce facteur vaut 1.

minor_axis

Cette commande permet de définir le petit axe d’un objet étendu que l’on peut représenter sous la forme d ’une ellipse (définie par son grand axe, son petit axe et son inclinaison par rapport au Nord en allant ver l’Est).

Les valeurs attendues dans les bases de données à compiler doivent être exprimées en minutes d’arc. On peut aussi utiliser le champ mult optionnel pour spécifier un facteur multiplicatif qui sera appliqué à la valeur trouvée dans le fichier de données textuel. Par défaut, ce facteur vaut 1.

inclination

Cette commande permet de définir l’inclinaison de l’ellipse représentant un objet du ciel profond (elle s’utilise conjointement avec les commandes major_axis et minor_axis). Cette inclinaison doit être comptée à partir du Nord en allant vers l’Est et doit être exprimée en degrés.

size

Cette commande permet de définir la dimension d’un objet étendu que l’on peut représenter sous la forme d ’un cercle.

La commande size ne peut être utilisée que pour les objets des types suivants : amas ouvert, amas globulaire, nébuleuse diffuse, nébuleuse obscure, nébuleuse planétaire, supernova, amas de galaxies et objet (objet utilisateur sans type).

Les valeurs attendues dans les bases de données à compiler doivent être exprimées en minutes d’arc. On peut aussi utiliser le champ mult optionnel pour spécifier un facteur multiplicatif qui sera appliqué à la valeur trouvée dans le fichier de données textuel. Par défaut, ce facteur vaut 1.

comment

Cette commande permet d’associer un commentaire à chaque objet, commentaire qui sera affiché dans la zone de messages en bas de l’écran lors d’une identification. Cette fonctionnalité est utile pour un champ long (en nombre de caractères) qui ne pourrait être défini comme un champ utilisateur (voir la commande suivante). La longueur du champ associé doit être inférieure ou égale à 80 caractères.

Exemple: comment 47 70

user_field

Cette commande permet de définir les champs utilisateur. Outre la définition d’un champ (numéro de colonne et longueur du champ en caractères), un certain nombre d’arguments doivent obligatoirement être fournis. Ce sont :

-   name="<nom du champ>" : <nom du champ> est une chaîne de caractères (encadrée par des caractères "). Ce nom ne doit pas excéder 20 caractères.

-   type=<integer | float | string> : le second membre de cette expression doit être un des mots clé “integer” (entier court de -32768 à +32768), “long” (entier long sur 32 bits), “float” ou “string”. Un champ utilisateur ne peut donc avoir qu’un des types entier, long, flottant ou chaîne de caractères.

Les arguments optionnels sont les suivants :

-   purge_be=<y | n> : cet argument peut prendre la valeur “y” ou “n”. Il permet de spécifier que l’on désire supprimer tous les caractères “espace” au début et à la fin de la chaîne de caractères représentant le champ à analyser (“be” signifie “begin” et “end”).

-   purge_all=<y | n> : cet argument peut prendre la valeur “y” ou “n”. Il permet de spécifier que l’on désire supprimer tous les caractères “espace” dans la chaîne de caractères représentant le champ à analyser (“all” signifie tous les “espaces”).

-   purge_mb peut prendre la valeur “y” ou “n”. Il permet de spécifier que l’on désire supprimer tous les caractères “espace” multiples dans la chaîne de caractères représentant le champ à analyser (“mb” signifie “espaces multiples”). Ainsi 3 caractères “espace” successifs sont transformés en un seul caractère “espace”.

-   search=<y | n> : cet argument permet de définir le champ sur lequel C2A pourra effectuer des recherches. Un seul champ utilisateur peut posséder cet argument avec la valeur “y” dans un fichier utilisateur. Le champ qui possède cet argument search sera aussi celui utilisé pour identifier l'objet par son nom (dans la zone"Nom" de la boîte de dialogue d'information sur les objets).

-   prefix="<chaîne de caractères>" : cet argument ne peut être utilisé que conjointement avec l'argument "search". Il permet de spécifier le préfixe qui sera placé devant la valeur du champ dans la zone"Nom" de la boîte de dialogue d'information sur les objets. Cette chaîne de caractères doit être placée entre guillemets (") et ne peut pas faire plus de 63 caractères.

L’utilisateur a la possibilité de spécifier jusqu’à 64 champs dans un fichier modèle (voir la syntaxe du lancement du compilateur plus bas dans cette section).

Exemple: user_field 1 9 name="UGC number" type=string purge_all=y search=y

ignore_line

Cette commande permet de spécifier une liste de lignes à ignorer dans la base de données textuelle. Elle peut prendre un nombre quelconque d’arguments (les numéros des lignes à ignorer) et elle peut être répétée un nombre quelconque de fois.

Exemple: ignore_line 124 453 765 787 1035

Exemple

Voici un exemple simple de fichier modèle pour le catalogue "QMW IRAS galaxy catalogue" (QIGC):

INPUT_FILE Qigc.txt
OUTPUT_FILE Qigc.ccc
DATABASE_TYPE full
DESCRIPTION "QMW IRAS galaxy catalogue"
EQUINOX 1950 2000
OBJECT_TYPE galaxy
RA 8 2 11 2 14 4
DE 20 3 24 2 27 2
MAGNITUDE 72 5
USER_FIELD 1 5 name="QIGC #" type=integer purge_all=y search=y prefix="QIGC "

On remarque que le préfixe possède un espace en fin de chaîne de manière à ce que les identifiants des objets du catalogue soient donnés sous la forme 'QIGC 5463' dans la zone nom de la boîte de dialogue d'identification des objets.

Voici un extrait du contenu du fichier original contenant les objets du catalogue :

On peut vérifier que les déclarations des champs dans le fichier modèle correspondent bien.

Lancement du compilateur

Le lancement du compilateur se fait selon la syntaxe suivante :

DC [/?] [/check] [/line] [/notmp] [/quiet] [/64] <fichier modèle>

La signification des paramètres est la suivante :

-   /? : affiche un écran d’aide,

-   /check : permet d’opérer seulement la vérification du fichier modèle et de la base de données textuelle,

-   /line : affiche la ligne en cause lors de l’émission d’un avertissement,

-   /notmp : évite la création de fichiers temporaires. Ces fichiers temporaires sont crées pour les bases compilées “par zones”. Ils accélèrent le processus de compilation mais nécessitent plus d’espace disque disponible,

-   /quiet : permet d’éviter le report des messages d’avertissement.

-   /64 : permet d'utiliser jusqu'à 64 champs utilisateur (la valeur par défaut est 16)

Remarque: Un paramètres entre [ ] signifie “argument optionnel”.

Sommaire