15. Les graphiques configurables (page Plots)
Vue Sources et acquisition, page Plots (entre Acquisition et WebSocket).
Ici tu construis tes propres graphiques, à la souris, sans écrire de script ni de formule : tu choisis une disposition, puis les champs à tracer dans chaque panneau. Chaque graphique enregistré s'appelle une configuration. Tu en lances jusqu'à quatre pendant une acquisition, chacun dans sa fenêtre, qui suit la séance en direct.
Un panneau trace ses courbes en fonction du temps (série temporelle), ou, depuis la version 0.8 (incrément 4.2), en fonction d'un champ : c'est le nuage de points, par exemple le HFR en fonction de la température (section 15.10).
[Capture 15-1 : la page Plots, trois configurations (Vert, Orange, Rouge), une ouverte, le compteur « Fenêtres graphiques ouvertes : 1 / 4 »] : à venir avec la V1 Beta.
15.1 La page Plots
| Élément | Rôle |
|---|---|
| Nouvelle configuration… | ouvre l'éditeur sur une configuration vide (section 15.2) |
| Paramètres graphiques… | ouvre config.ini dans le Bloc-notes, à la section [Graphiques] : tailles de texte, épaisseur des traits, grille, place de la légende (section 15.7) |
| Fenêtres graphiques ouvertes : n / 4 | les fenêtres des configurations et les graphiques 1 et 2 de la page Acquisition comptent ensemble ; quatre au plus |
| la ligne grise sous les boutons | dit où en est l'acquisition (jamais démarrée, en cours, en pause, arrêtée) et ce que cela permet |
| la liste | une ligne par configuration, dans l'ordre alphabétique des noms, sans tenir compte des majuscules (« Test Temp » vient avant « test températures ») ; pour placer un graphique en tête, commencez son nom par un chiffre (« 1 Météo ») |
Chaque ligne montre :
- une pastille et son mot : Vert, Orange ou Rouge (section 15.4) ;
- le nom, suivi en gris de son numéro (« (g-0003) ») : le même que dans les fichiers du dossier de la nuit (
session_g-0003.png…), et dessous, en couleur d'avertissement, la raison d'un orange ou d'un rouge ; pour une configuration ouverte, une ligne grise sur les données (« En attente des premières mesures. ») ; - un petit dessin de la disposition et le nombre de courbes ;
- les boutons Start, Close, Edit, Dupliquer, Delete.
Un bouton grisé dit toujours pourquoi dans son infobulle.
| Bouton | Quand il est actif |
|---|---|
| Start | configuration fermée, verte ou orange, acquisition en cours ou en pause, moins de 4 fenêtres ouvertes, axe X = temps partout |
| Close | la configuration est ouverte. Fermer la fenêtre par sa croix fait exactement la même chose |
| Edit, Delete | la configuration est fermée (on ne modifie pas un graphique ouvert). Permis pendant l'acquisition : ils ne touchent ni aux sources ni aux données |
| Dupliquer | toujours : crée une copie fermée nommée « nom (copie) », puis « nom (copie 2) »… |
Delete demande confirmation, puis supprime la configuration définitivement (il n'y a pas de corbeille). Seule la configuration disparaît : tes données d'acquisition et tes images ne sont jamais touchées.
15.2 L'éditeur
Nouvelle configuration… ou Edit ouvrent l'éditeur. À gauche, ce qui concerne toute la configuration ; à droite, le panneau choisi.
[Capture 15-2 : l'éditeur, disposition « 1 en haut, 2 en bas », panneau 2 choisi, HFR en Y1, case « une courbe par filtre » cochée] : à venir avec la V1 Beta.
- Nom : obligatoire, 60 caractères au plus, différent des autres configurations (majuscules et minuscules comptent pareil).
- Disposition : clique un des cinq dessins.
| Dessin | Panneaux |
|---|---|
| 1 | un seul panneau |
| 2 | deux, l'un au-dessus de l'autre |
| 1 + 2 | un en haut (toute la largeur), deux en bas |
| 2 + 1 | deux en haut, un en bas (toute la largeur) |
| 2 × 2 | une grille de quatre |
Passer à une disposition plus petite retire les derniers panneaux et leurs courbes ; si elles en ont, AstroTools le demande avant.
3. Panneau : clique une case du grand dessin pour régler ce panneau. Chaque case affiche son numéro et son nombre de courbes.
4. Règle le panneau (section 15.3).
5. Enregistrer, ou Annuler (rien n'est changé).
Enregistrer refuse, avec un message en bas de l'éditeur : un nom vide, un nom déjà pris, ou un panneau sans aucune courbe (ce panneau est alors sélectionné). Une configuration peut être enregistrée avec des courbes marquées ⚠ : sa couleur le dira.
15.3 Régler un panneau
- Titre :
- Automatique (par défaut) : les noms des courbes de Y1 puis « = f(t) », par exemple « Température, Humidité = f(t) » ;
- Personnalisé : le texte que tu tapes ;
- Aucun : pas de titre, le tracé gagne la place.
Avec un titre, deux cases ajoutent à chaque rafraîchissement « — 03:41:12 » (l'heure de la dernière donnée du panneau) et « — M31_Lumin_0142.fits » (le nom de la dernière image LIGHT tracée).
- Axe X : Temps par défaut, ou un champ (nombre ou oui/non) : le panneau devient un nuage de points (section 15.10). Le titre automatique devient alors « HFR = f(Température) ».
- Mode de tracé : la ligne grise sous l'axe X le rappelle (« série temporelle » ou « nuage de points »).
- Y1 (axe de gauche) et Y2 (axe de droite) : deux listes de courbes.
- + (ou un double-clic dans la liste) ouvre le sélecteur de champs (section 15.5) ;
- − retire la courbe sélectionnée, ▲ et ▼ changent son ordre (celui de la légende) ;
- → Y2 (sous Y1) et → Y1 (sous Y2) envoient la courbe sélectionnée à la fin de l'autre liste, sans toucher aux autres ;
- ces boutons restent grisés tant qu'aucune courbe n'est sélectionnée : clique d'abord une courbe.
- une courbe par filtre : seulement quand le panneau contient un champ d'image (HFR, étoiles…), en Y ou en X. Chaque champ d'image devient alors une courbe par filtre (« HFR · L », « HFR · R »…, et « HFR · sans filtre » pour une image sans filtre), en Y1 comme en Y2. Un champ garde sa couleur, et chaque filtre a sa forme de point, la même dans les trois thèmes : L rond, R carré, G triangle, B losange, sans filtre croix ; Ha triangle pointe en bas, OIII pentagone, SII étoile ; un autre filtre, une forme creuse. Décochée par défaut. En nuage de points, quand chaque point est une image (un champ d'image en X ou en Y), toutes les courbes du panneau sont découpées par filtre, mesures comprises (« Température · L »…).
- Une ligne grise te prévient quand un axe mélange des unités : « Y1 mélange °C et % : pensez à Y2. » Elle n'empêche rien.
Une courbe dont le champ n'existe plus, ou n'est plus enregistré, reste dans sa liste avec un ⚠ (« champ disparu », « non enregistré dans cette session », « plus traçable ») : AstroTools ne la remplace jamais tout seul. Tu la retires avec −.
Le nombre de courbes n'est pas limité.
15.4 Vert, orange, rouge
La couleur dit si la configuration peut être tracée avec les champs disponibles. Elle est calculée au démarrage d'AstroTools et à chaque Enregistrer (sur sources.json), puis au démarrage de chaque acquisition (sur les sources de la séance, figées à ce moment). Elle ne change plus pendant la séance.
| Couleur | Ce que ça veut dire | Start |
|---|---|---|
| Vert | tous les champs sont utilisables | oui |
| Orange | au moins un champ manque, mais au moins un panneau reste traçable. Les courbes manquantes sont omises et nommées, dans la liste et en haut de la fenêtre : « Tracé partiel : non enregistré dans cette session : Qualité du ciel. Ces courbes sont omises. » | oui |
| Rouge | plus aucun panneau traçable, ou fichier illisible, ou créé par une version plus récente d'AstroTools | non, l'infobulle dit pourquoi |
Un champ manque quand :
- il n'est pas enregistré dans la séance (case Enreg. décochée, appareil décoché, source désactivée, ou case Images non cochée pour un champ d'image) ;
- il a disparu des sources (appareil supprimé, alias renommé) : « Le champ « nina.focuser.TempComp » n'existe plus dans les sources… » ;
- il n'est plus traçable (devenu texte ou date, ou case « pas sur un graphique » cochée dans la page Champs).
AstroTools ne corrige ni ne supprime jamais une configuration orange ou rouge : c'est toi qui décides (Edit, ou rétablir la source).
La couleur parle de la définition, pas des données. Les messages sur les données sont à part, dans la fenêtre et sous le nom :
- « En attente des premières mesures. » tant qu'aucune courbe n'a de point ;
- « Aucune valeur valide reçue pour : Sonde extérieure. » pour une courbe dont toutes les valeurs reçues sont invalides (hors bornes, sentinelle, remplacement, NaN). Elle apparaît dès son premier point valide.
15.5 Le sélecteur de champs
Une liste filtrable : tape un morceau du nom, de l'identifiant ou de la source. Chaque ligne dit « Nom (unité) — Source · appareil · identifiant ». Tu peux en choisir plusieurs (Ctrl+clic ou Maj+clic), puis Ajouter ou double-clic.
Il ne propose que :
- les champs cochés Enreg. (appareil coché, source active) ;
- les champs d'image (HFR, Étoiles, Temp. capteur, Durée de pose…), toujours, puisqu'ils sont enregistrés avec chaque pose dès que la case Images est cochée. Ils ne dépendent d'aucune source : ils s'appellent
images.HFR,images.Stars…, et tracent les poses de la séance quelle que soit la source NINA qui les fournit (ton PC, le simulateur, le PC d'un ami). Ils sont proposés sans Interroger, même avant la première pose, avec leur libellé intégré.
Et seulement des nombres ou des oui/non : pas de date, pas de texte, rien de marqué « pas sur un graphique ». Un champ déjà dans le panneau n'est pas reproposé.
Une configuration écrite avant la version 0.7.1 avec nina.images.HFR ou nina2.images.HFR est convertie toute seule en images.HFR à la lecture, sans rien perdre d'autre ; deux anciennes courbes du même champ sur le même axe n'en font plus qu'une. Le fichier est réécrit au prochain Enregistrer.
Pendant une acquisition, la liste vient des sources figées de la séance ; sinon, de sources.json tel qu'enregistré. Pour tracer un champ qui n'est pas proposé : arrête l'acquisition, coche-le Enreg. dans la page Champs, Enregistrer, puis démarre une nouvelle séance.
15.6 La fenêtre d'un graphique
Start ouvre une fenêtre « Plot — configuration (numéro) — séance », que tu peux mettre sur un autre écran. Elle retrouve à la réouverture la taille et la place qu'elle avait pour cette configuration (sur l'écran principal si cet écran n'est plus branché).
[Capture 15-3 : une fenêtre en grille 2 × 2, thème Jour : températures (Y1) et humidité (Y2), HFR par filtre, chauffage en marches, ligne d'état en bas] : à venir avec la V1 Beta.
Ce qu'elle montre :
- l'axe du temps en heure locale de ton PC, avec le décalage UTC du début de la séance : « Heure locale (UTC+1, début de la session) ». Ce décalage ne change pas pendant la séance : la nuit du changement d'heure, l'axe reste continu (aucune courbe ne revient en arrière), et les points d'après 3 h s'affichent une heure plus tard que la pendule ;
- toute la séance, du début à maintenant ;
- les mesures en lignes, les oui/non en marches 0 / 1, les champs d'image en points, à l'heure du milieu de la pose ;
- les couleurs du thème, une couleur par champ ; en thème Nuit, le type de trait (plein, tirets, pointillés) et la forme des points changent aussi d'un champ à l'autre ;
- des graduations du temps espacées selon la durée affichée et la largeur du panneau (1, 2, 5, 10, 15, 30 min, 1 h, 2 h…) : les heures ne se chevauchent jamais ;
- Y2 à droite dès qu'il a une courbe ; chaque axe porte ses unités ;
- en haut, s'il y a lieu : la raison d'un orange, et « Seules les poses LIGHT sont prises en compte » dès qu'un panneau trace un champ d'image ;
- en bas, la ligne d'état : l'heure du dernier rendu, les messages sur les données, une erreur, ou « Acquisition arrêtée. ».
Ce qu'elle trace, et ce qu'elle ne trace pas :
- seulement les mesures valides : jamais un remplacement (valeur par défaut), jamais une valeur hors bornes ou sentinelle ;
- seulement les poses LIGHT ; une image sans date n'est pas tracée ;
- pour les champs d'image, des règles intégrées, les mêmes pour tous, sans bornes à régler : un HFR doit être plus grand que 0 (NINA donne 0 quand il ne trouve pas d'étoile), un nombre d'étoiles 0 ou plus (NINA donne −1 pour une DARK, une BIAS ou une FLAT), un gain ou un offset 0 ou plus (−1 = non géré par la caméra) ; une valeur absente, un texte (« NaN ») ou une valeur infinie n'est jamais tracée. Il n'y a pas de maximum : un HFR à 25 est une vraie (mauvaise) mesure, et il est tracé ;
- le trait est coupé quand deux relevés de la même source sont séparés de plus de deux fois la cadence (pause, coupure, plantage), et autour d'un relevé où la valeur est invalide.
Rafraîchissement : le premier dessin est immédiat. Ensuite, une nouvelle mesure ou une nouvelle image redessine au plus une fois par cadence, et jamais plus d'une fois toutes les 10 s ; sans nouvelle donnée, rien ne se redessine. Un changement de taille, de thème, ou la reprise après une pause redessinent tout de suite.
Clic droit sur l'image : Copier l'image (à coller dans un message ou un document) et Ouvrir le dossier (le dossier de la nuit).
Les fichiers du dernier dessin restent dans le dossier de la nuit, à côté des fichiers de la séance : <préfixe>_g-0001.png (l'image), .dat (les points) et .plt (le script gnuplot). Ils sont réécrits à chaque dessin et gardés après la fermeture.
Si gnuplot échoue (absent, trop lent : arrêté après 10 s), l'erreur s'affiche dans la fenêtre et une seule fois dans le journal. L'acquisition n'en sait rien : elle continue sans perdre un relevé.
15.7 Pendant la nuit
| Moment | Ce qui se passe |
|---|---|
| Aucune acquisition depuis le lancement | la liste est là, les couleurs viennent de sources.json, Start est grisé |
| Démarrer une acquisition | toutes les fenêtres graphiques se ferment, graphiques 1 et 2 compris ; les couleurs sont recalculées sur la nouvelle séance |
| En cours | les fenêtres suivent les nouvelles données |
| Pause | les fenêtres restent ouvertes, sans se redessiner ; Start reste possible (il trace la séance jusque-là) |
| Reprendre | la première nouvelle donnée redessine tout de suite |
| Arrêter | les fenêtres restent ouvertes sur leur dernier dessin, avec « Acquisition arrêtée. » ; Start est grisé : relire une séance terminée, c'est pour la V2 |
| Quitter AstroTools | toutes les fenêtres se ferment proprement |
Les graphiques 1 et 2 de la page Acquisition restent disponibles, comme avant, jusqu'à la V1 Beta au plus tard ; ils comptent dans les quatre fenêtres.
Horloges : à la première image que NINA annonce en direct, AstroTools compare son heure à celle de l'image. Au-delà de 30 s d'écart, il écrit une fois dans la console : « NINA and AstroTools clocks differ by 4 min 12 s: synchronise Windows time on both PCs. » Il ne corrige rien : synchronise l'heure de Windows sur les deux PC (Paramètres > Heure et langue > Synchroniser maintenant).
15.8 Les styles : [Graphiques] de config.ini
Paramètres graphiques… ouvre config.ini dans le Bloc-notes. Si ton config.ini date d'avant la version 0.7, la section [Graphiques] y est ajoutée à la fin, avec ses valeurs par défaut.
| Clé | Rôle | Défaut |
|---|---|---|
TitleFontSize |
taille des titres des panneaux (6 à 40) | 11 |
FontSize |
taille des autres textes : axes, légende (6 à 30) | 9 |
LineWidth |
épaisseur des traits (0.5 à 10) | 1.5 |
PointSize |
taille des points des images (0.2 à 5) | 1 |
Grid |
grille derrière les courbes : true ou false |
true |
LegendPosition |
place de la légende : top left, top right, bottom left ou bottom right |
top left |
Enregistre le fichier, puis Close et Start sur le graphique : ces réglages sont relus à chaque Start, sans redémarrer AstroTools (contrairement au reste de config.ini). Ils valent pour tous les panneaux de toutes les fenêtres. Une valeur absente ou fausse donne la valeur par défaut, avec une ligne dans le journal. Les couleurs viennent du thème.
15.9 Où sont tes configurations
Dans %LocalAppData%\AstroTools\Graphs\, un fichier par configuration : g-0001.json, g-0002.json… (un numéro, jamais le nom que tu as tapé). À chaque Enregistrer, la version d'avant est gardée en g-0001.json.bak. La taille et la place de chaque fenêtre sont dans tes préférences (prefs.dat).
Sur un autre PC : AstroTools fermé, copie les fichiers g-*.json dans le dossier Graphs de l'autre PC. Les champs y sont cités par leur identifiant (pegasus.uranus.temperature…) : si l'autre PC a les mêmes sources avec les mêmes alias, les configurations y sont vertes ; sinon elles seront orange ou rouges, et tu les refais avec Edit.
Un fichier abîmé ou venant d'une version plus récente d'AstroTools est listé en Rouge et n'est jamais modifié ni supprimé par AstroTools.
15.10 Les nuages de points (X = un champ)
Choisis un champ dans Axe X : chaque courbe de Y1 et Y2 est tracée en fonction de ce champ, en points non reliés (relier des points pris à des moments différents inventerait une continuité qui n'existe pas). Exemples : HFR = f(Température), Étoiles = f(HFR), Température = f(Chauffage).
[Capture 15-4 : un nuage HFR = f(Température), une courbe par filtre, ligne d'état avec un compte de points] : à venir avec la V1 Beta.
Quel moment pour chaque point ? Chaque courbe est appariée à X séparément :
- si X ou la courbe est un champ d'image, le point est une pose LIGHT, à son milieu de pose ; le champ de mesure (la température, par exemple) est pris dans le relevé le plus proche de ce moment, avant ou après ;
- si X et la courbe sont deux mesures, le point est un relevé de X ; l'autre mesure est prise dans le relevé le plus proche de sa source. Deux champs du même relevé (température et humidité de l'Uranus) ou de la même image (HFR et étoiles) vont ensemble, sans écart ;
- jamais d'interpolation : une valeur réellement mesurée, ou rien.
Les seuils, fixes :
| Écart entre le point et le relevé le plus proche | Ce qui se passe |
|---|---|
| jusqu'à 5 min | point normal |
| de 5 à 15 min | point tracé, avertissement dans la console |
| plus de 15 min, ou aucun relevé | point omis, erreur dans la console |
Avec une cadence de quelques secondes, l'écart reste de quelques secondes : les seuils ne servent qu'en cas de coupure d'une source (câble, Unity arrêté) ou de cadence très lente.
Les messages (console, en anglais comme tout le journal), une seule fois par fenêtre, même si le graphique se redessine cent fois :
- avec une image : « Plot "HFR vs température": image M31_Lumin_0142.fits paired with a Pegasus reading 7 min away (warning, threshold 5 min). » ou « … image … ignored, no Pegasus reading within 15 min. » ;
- avec deux mesures : un message au début d'une interruption, qui dit ce qui se passe vraiment (« no Pegasus reading within 5 min from 03:12:05 (warning, points kept up to 15 min). », puis, si elle dure, « no Pegasus reading within 15 min from 03:22:05, points ignored. »), et un message à la reprise (« Pegasus readings back at 03:41:10. »).
La ligne d'état de la fenêtre compte, pour toute la séance : « 3 points omis : aucune mesure à moins de 15 min ; 2 points à plus de 5 min. »
Un point dont le relevé le plus proche n'est pas encore arrivé (le prochain relevé peut être plus près) est tracé s'il est à moins de 15 min, mais il n'est ni compté ni signalé tant que ce n'est pas tranché : tu ne vois jamais « ignoré » puis, deux minutes plus tard, le point apparier normalement.
Cadence lente : quand la cadence de la séance dépasse 10 min et qu'un panneau doit apparier une mesure, l'éditeur et la fenêtre affichent « Cadence de 30 min : beaucoup de points risquent d'être omis (seuil de 15 min). » Les seuils ne changent pas. Un nuage fait seulement de champs d'image (Étoiles = f(HFR)) n'a pas cette remarque.
Un oui/non en X (le chauffage, par exemple) : l'axe X n'a que deux graduations, 0 et 1 ; les points forment deux colonnes.
Horloges : avec une image, l'heure vient du PC de NINA, celle du relevé du PC d'AstroTools. Un écart d'horloge décale l'appariement d'autant : sans effet pour une température, qui varie lentement. Le contrôle d'horloge (section 15.7) te prévient au-delà de 30 s.