L'enregistrement des caractéristiques des images Eros 1 CCD a mis en évidence des erreurs tel que des fichiers vides, tronqués ou corrompus. Pour éviter de telles déconvenues, il m'a semblé utile de vérifier les fichiers de suivis avant de lancer leur sauvegarde.
Une telle vérification présente toutefois une sérieuse difficulté faute d'un outil certifié. L'outil utilisé résulte d'interprétations de différentes notes et fragments de code. Il semble donner des résultats cohérents dans la plupart des cas mais comment interpréter les échecs ?
Méthode de vérification
Un fichier de suivi débute par un entête et cet entête débute à un entier de quatre octets donnant la taille du suivi. Ce premier mot est très utile car il permet deux vérifications. Si l'entier lu correspond à la taille du fichier, on sait 1) que le fichier n'est pas tronqué et 2) que l'ordre des octets dans le fichier correspond à l'ordre ‟naturel” de lecture des données. Si ce n'est pas le cas, on peut tenter d'inverser l'ordre des 4 octets et reconstruire un entier. S'il y a correspondance avec la taille du fichier, celui-ci n'est pas tronqué mais les octets doivent être permutés avant d'être utilisés (byte swapping). Et s'il n'y a toujours pas de correspondance le fichier est tronqué. Il n'est donc pas utile de continuer.
L'entête contient deux autres informations utilisables pour une vérification : le nombre d'images analysées et un marqueur qui doit être identique aux nombres d'images. Le programme d'analyse peut utiliser ce marqueur pour indiquer une corruption interne du suivi. Tous les suivis analysés passent avec succès ces deux vérifications.
Cependant, une curiosité est apparue dans un cas : le nombre d'images et le marqueur de validité sont à zéro – donc le fichier est valide - mais la taille du suivi laisse penser que des mesures ont été enregistrées. On peut même déduire le nombre d'images à partir de la taille du fichier. La vérification des Time Infos récupérés donne des résultats corrects.
Ce cas curieux a l'avantage de montrer que la seule vérification de l'entête et de la taille du fichier n'est pas suffisante. Il faut aussi vérifier son contenu. La seule solution pouvant être mise en œuvre consiste à contrôler la cohérence des descripteurs des images analysées (Time Info). Ces descripteurs étant entrelacés avec les mesures effectuées sur les étoiles, des corruptions conduiraient à de sérieuses suspicions quant à la validité des mesures.
La seule référence à laquelle confronter les Time Infos est la liste des images enregistrées dans la base de données. Dans ce contexte, deux entiers sont utilisables : le premier correspond à un encodage de différentes caractéristiques de l'image analysée, le second est la date d'observation obtenue de l'entête FITS de l'image. Si donc on peut reconstruire le nom de l'image à partir de son code photo et vérifier son existence dans la base de données, on peut être raisonnablement sûr que le Time Info est valide. Il y cependant différentes situations où le code photo est incohérent. Mais on peut reconstruire la date d'observation à partir du Time Info et chercher dans la base de données une image correspondant à cette date.
Si rien ne marcher, le Time Info est considéré comme corrompu, ce qui entraine une sérieuse suspicion quant au suivi.
A l'inverse, l'absence de l'image dans la base de données alors que son nom a correctement été reconstruit n'implique pas que le Time Info est invalide mais plutôt que l'image est perdue.
Et si le code photo est incorrect mais que la date permet de trouver l'image, le Time Info n'est pas considéré comme corrompu, mais plutôt qu'il a été victime d'un bug… 220 Time Infos sont dans ce cas. A chaque fois, l'erreur vient de ce que le jour déduit du code photo donne 32, ce qui n'est pas acceptable. Détail amusant, toutes ces erreurs correspondent au 32 Janvier de 1992, une année bissextile…
215 erreurs non récupérables ont été détectées dans 2 suivis différents. Le fait que toutes ces erreurs soient en fin de fichier conduit à soupçonner une sévère corruption. Ou alors l'outil de vérification a perdu ces repères dans les entrelacements des Time Infos et des mesures. Mais alors, pourquoi seulement sur ces deux cas… ?
Résultats
Les archives présentent dans le HPSS contiennent 1601 suivis répartis en 56 répertoires pour les 4 différentes campagnes. Seuls les programmes LMC (code "x") et SMC (code "s") ont été analysés.
- 1575 suivis sont considérés comme valides.
- 23 suivis contiennent des Time Infos bogués mais dont les images existent.
- 2 semblent sévèrement corrompus.
- 1 correspond au cas où aucune image n'est déclarée dans l'entête alors que des mesures existent qui semblent valides.
Au total 244 227 images ont été analysées et sont référencées dans les suivis, dont 98 plusieurs fois.
207 618 images ont été identifiées grâce à la base de données. Et si on force le chargement du fichier sans image déclarée, on peut rajouter 146 images, toutes valides.
36 480 images n'existent pas dans la base de données, mais 5 répertoires contenant des suivis n'ont pas d'équivalent dans l'arborescence des images, qui sont donc bel et bien perdues. Ceci représente 31 553 références dans les suivis. Si on fait abstraction de ces 5 répertoires manquants, près de 5 000 images restent encore absentes.
Mais au moins, grâce aux décodages des suivis, il est possible de connaitre les noms de ces images perdues.
Conclusions
2 fichiers seulement semblent sérieusement compromis et 24 pourraient être considérés comme douteux. Il semblerait donc logique de sauver tous les suivis et d'enregistrer dans la base de données un code donnant le résultat des vérifications effectuées. Il pourrait aussi être utile de conserver dans Irods, peut être dans les répertoires des suivis, les sommaires des vérifications, sous la forme de fichiers CSV.
Le sommaire des vérifications :
Nb Suivis Nb Images Nb Checked Nb Valids Nb Missing Nb Errors Nb Duplicatd ---------- ---------- ---------- ------------ ---------- ---------- ---------- 1601 244325 244314 207618 36480 436 98 Status Count ---------- ---------- CORRUPTED 2 VALID 1575 NO_IMAGE 1 ERRORS 23 Suivi Status Checked Valids Missing Errors Recovered ------------------ ------------ ---------- ---------- ---------- ---------- ---------- s4f244g05R.suivi00 ERRORS 142 141 0 1 s4g064g16B.suivi02 CORRUPTED 126 10 0 116 s4i084i18B.suivi07 CORRUPTED 189 90 0 99 x2a202b03B.suivi00 ERRORS 150 148 2 10 10 x2a202b03B.suivi01 ERRORS 150 146 4 10 10 x2a202b03B.suivi02 ERRORS 149 144 5 10 10 x2a202b03B.suivi03 ERRORS 148 143 5 10 10 x2a202b03B.suivi04 ERRORS 148 143 5 10 10 x2a202b03B.suivi07 ERRORS 148 140 8 10 10 x2a202b03B.suivi08 ERRORS 148 143 5 10 10 x2a202b03B.suivi09 ERRORS 147 142 5 10 10 x2a202b03B.suivi10 ERRORS 148 143 5 10 10 x2a202b03B.suivi11 ERRORS 148 143 5 10 10 x2a202b03B.suivi12 ERRORS 147 142 5 10 10 x2a202b03R.suivi00 ERRORS 163 163 0 10 10 x2a202b03R.suivi01 ERRORS 163 163 0 10 10 x2a202b03R.suivi02 ERRORS 163 163 0 10 10 x2a202b03R.suivi03 ERRORS 163 163 0 10 10 x2a202b03R.suivi04 ERRORS 163 163 0 10 10 x2a202b03R.suivi07 ERRORS 162 162 0 10 10 x2a202b03R.suivi08 ERRORS 162 162 0 10 10 x2a202b03R.suivi09 ERRORS 161 161 0 10 10 x2a202b03R.suivi10 ERRORS 160 160 0 10 10 x2a202b03R.suivi11 ERRORS 160 160 0 10 10 x2a202b03R.suivi12 ERRORS 152 152 0 10 10 x2l233a01B.suivi01 NO_IMAGE 0 0 0