Version 1.3#

DataLab Version 1.3.0#

✨ Nouvelles fonctionnalités#

Panneau d’historique :

DataLab enregistre désormais vos actions et vous permet de les rejouer. Un nouveau panneau Historique suit chaque action appliquée aux signaux et aux images, de la création d’objets et du chargement de fichiers au traitement, à l’analyse et aux modifications des régions d’intérêt (implémente Issue #90).

  • Sessions d’enregistrement : les actions sont regroupées en sessions, une session active par panneau. L’enregistrement est désactivé par défaut et est proposé lors de la création ou du chargement d’un objet ; les politiques de session configurables contrôlent la manière dont les objets plugin et macro sont attachés aux sessions

  • Chaînes de traitement : chaque session est présentée comme une chaîne de traitement linéaire, rendant immédiatement lisible la filiation d’un résultat

  • Relecture : relire une session entière, ou la parcourir action par action, pour reproduire un flux de travail sur de nouvelles données. Les ajustements de courbes interactifs et les profils d’intensité sont enregistrés comme des actions déterministes et rejoués sans rouvrir leurs boîtes de dialogue

  • Édition sur place : les paramètres de traitement, d’analyse et de création d’objets peuvent être modifiés directement depuis l’historique, et les étapes en aval sont recalculées en cascade

  • Duplication : dupliquer une chaîne pour explorer une variante sans toucher à l’originale

  • Persistance : les historiques sont stockés dans l’espace de travail HDF5 et peuvent également être exportés et importés en tant que fichiers .dlhist autonomes

  • Vérifications de compatibilité : avant la relecture, DataLab valide les actions enregistrées par rapport à l’état actuel de l’espace de travail et signale ce qui peut ou ne peut pas être appliqué

  • La touche Suppr supprime les entrées sélectionnées dans le panneau Historique (même comportement que dans les panneaux Signal et Image), et ne s’applique que lorsque l’arborescence de l’historique a le focus

  • Une boîte de dialogue de résolution s’affiche lors de la relecture d’une chaîne de traitement interrompue par des objets supprimés : choisissez « Réparer et continuer » pour élaguer les étapes cassées et rejouer les étapes valides restantes, ou annulez sans rien modifier

  • Une page de documentation dédiée et un tutoriel pas à pas sont disponibles

Assistant IA intégré :

DataLab est désormais livré avec un panneau d’ancrage optionnel Assistant IA qui peut converser avec vous, inspecter l’espace de travail, créer et traiter des signaux et des images, et écrire et exécuter des macros Python (implémente Issue #316).

  • Fonctionne avec n’importe quel endpoint compatible OpenAI : OpenAI, GitHub Models, Azure OpenAI, Ollama, LM Studio, etc. Un fournisseur factice est disponible pour essayer l’assistant hors ligne, sans clé API

  • L’assistant peut appeler un ensemble d”outils intégrés : lister et inspecter les objets, introspecter les opérations disponibles, créer des signaux et des images synthétiques, charger des fichiers, appliquer tout traitement enregistré, déclencher des actions de plugins, et créer et exécuter des macros

  • Chaque action modifiant l’espace de travail nécessite une confirmation explicite, avec un aperçu des paramètres et un aperçu du code source de la macro avec coloration syntaxique lorsque une macro est proposée. Les outils en lecture seule peuvent être approuvés automatiquement

  • Les conversations sont conservées, peuvent être consultées et rechargées, et exportées en Markdown ; l’utilisation des jetons et la taille du contexte sont affichées

  • Les paramètres (fournisseur, modèle, clé API, URL de base, température, délai d’attente, limite d’itérations, approbation automatique) sont regroupés dans un onglet dédié Assistant IA de la boîte de dialogue des préférences, avec un bouton de test de connexion

  • La clé API est stockée en clair dans le fichier de configuration de DataLab, et la boîte de dialogue des paramètres l’indique explicitement

Palette de commandes :

  • Une palette de commandes de style VSCode vous permet de rechercher et d’exécuter n’importe quelle commande de menu en tapant une partie de son nom ou de son chemin de menu, par exemple « Traitement ‣ Analyse de Fourier ‣ FFT » (implémente Issue #337)

  • Trois points d’entrée : une zone de recherche dans le coin supérieur droit de la barre de menu, une entrée « Palette de commandes… » en haut du menu Aide, et le raccourci clavier Ctrl+Shift+P

  • La correspondance approximative classe les résultats, donc quelques caractères suffisent pour atteindre la bonne commande, avec une navigation complète au clavier

Support de l’analyse spectrale :

Suite au travail d’analyse spectrale réalisé dans Sigima, DataLab bénéficie de l’interface correspondante (implémente Issue #309).

  • Nouvelle fonctionnalité Analyse > Extraire les positions des pics, stockant les pics détectés sous forme de tableau de marqueurs XY rendu sous forme de croix sur le graphique

  • Nouvelle boîte de dialogue interactive Analyse > Détection de pics…, pour ajuster visuellement le seuil et la distance minimale avant de stocker le résultat

  • Nouvelle fonctionnalité Opérations > Créer un signal à partir d’un tableau de marqueurs…, construisant un signal en bâtons à partir d’un tableau de marqueurs XY — pratique pour superposer des lignes de référence sur un spectre

  • Les résultats des marqueurs peuvent être étiquetés dans les tableaux de résultats (#1, #2, … pour les marqueurs XY, a, b, c, … pour les marqueurs d’axe), de sorte que chaque ligne peut être associée au marqueur correspondant tracé sur le graphique. Cela est contrôlé par une nouvelle option « Afficher les étiquettes des marqueurs dans les tableaux de résultats » dans les paramètres

  • Les étiquettes de résultat prennent désormais en charge une position et un décalage personnalisables

Régions d’intérêt du signal tracées le long de la courbe :

  • Les ROI du signal ne sont plus tracées sous forme d’un seul rectangle jaune pleine hauteur : le remplissage translucide est désormais découpé selon la courbe du signal avec une ligne de base à y = 0, et chaque ROI utilise une couleur différente tirée d’une palette cyclique de dix couleurs (implémente Issue #314)

  • Les couleurs sont dérivées de l’indice de la ROI, de sorte qu’une ROI donnée conserve la même couleur malgré les suppressions, les réorganisations et la réouverture de l’éditeur

  • Les échantillons non finis sont filtrés avant le tracé, de sorte que les signaux avec des lacunes sont rendus proprement ; sur un axe Y logarithmique, la ligne de base revient au bas de la zone de dessin

  • La persistance des ROI reste inchangée : seules les coordonnées sont stockées, les propriétés visuelles sont recalculées au moment du rendu

Régions d’intérêt issues de la détection (masque automatique) :

  • La détection de contours, de blobs, de pics et de cercles de Hough peut créer des régions d’intérêt directement à partir des caractéristiques détectées, transformant les contours d’intensité en ROI polygonales éditables utilisables par toutes les fonctionnalités de traitement prenant en charge les ROI (implémente Issue #294)

Découverte des plugins tiers via une variable d’environnement :

  • Ajout de la prise en charge de la variable d’environnement DATALAB_PLUGINS, permettant de spécifier un ou plusieurs répertoires comme chemins de recherche supplémentaires pour les plugins

  • Plusieurs répertoires peuvent être listés en utilisant le séparateur de chemin du système d’exploitation (; sous Windows, : sous Linux/macOS), selon la même convention que PYTHONPATH

  • Les répertoires listés sont ajoutés aux chemins de recherche existants au démarrage et sont automatiquement pris en compte par le mécanisme de découverte des plugins

  • Les répertoires inexistants sont ignorés silencieusement (un avertissement est consigné dans le fichier journal), ainsi une variable d’environnement obsolète sur une autre machine n’empêchera pas le démarrage de DataLab

Expérience utilisateur de gestion des plugins :

La boîte de dialogue de configuration des plugins a été repensée pour faciliter l’installation, l’inspection et le dépannage des plugins tiers (implémente Issue #302).

  • Répertoires de plugins supplémentaires persistants : plusieurs répertoires supplémentaires peuvent être ajoutés, modifiés et supprimés depuis la boîte de dialogue et sont enregistrés dans la configuration de DataLab, à côté de la liste en lecture seule des répertoires par défaut

  • Boutons Ouvrir le fichier et Afficher dans le dossier par plugin, pour inspecter ou modifier un script de plugin sans parcourir le système de fichiers

  • Un bouton « Appliquer et recharger les plugins » et une entrée de menu Plugins > Recharger les plugins, pour prendre en compte les modifications des plugins sans redémarrer DataLab

  • Un horodatage de dernier chargement affiché pour la session en cours, pour confirmer que les modifications ont été prises en compte

  • Filtrage de la liste des plugins (tous / activés / désactivés / avec erreurs), un interrupteur global activer/désactiver, et une option pour masquer les avertissements de compatibilité pour les plugins hérités v0.20

  • Une action Afficher dans le dossier est désormais disponible pour le fichier de configuration de DataLab, depuis le visualiseur d’installation et de configuration

Éditeur de macros :

  • Récupération après plantage : les macros non enregistrées sont automatiquement sauvegardées, et DataLab propose de les récupérer au prochain démarrage

  • Boîte de dialogue Macros récentes, listant les macros utilisées lors des sessions précédentes et permettant d’en rouvrir une en un seul clic

  • Modèles de macros, pour commencer à partir d’un squelette fonctionnel (macro simple, traitement d’image, appel de méthode générique)

  • Complétion de code et un widget chercher & remplacer dans l’éditeur de macros

Titres d’objets :

  • Les identifiants courts intégrés dans les titres d’objets (par ex. s001, i012) sont désormais rendus comme des liens cliquables dans les arbres de signaux et d’images, de sorte que les objets sources d’un calcul peuvent être sélectionnés en un seul clic

Traitement de remplacement des valeurs spéciales (signal et image) :

DataLab fournit désormais une fonction de traitement dédiée « Remplacer les valeurs spéciales » qui détecte et remplace les valeurs NaN, +Inf et -Inf dans les signaux et les images. La fonctionnalité est disponible sous Traitement → Ajustement des niveaux → Remplacer les valeurs spéciales dans les panneaux Signal et Image.

  • Chaque cible (NaN, +Inf, -Inf) peut être traitée indépendamment avec sa propre stratégie

  • Stratégies pour les signaux : ne rien faire, remplacer par zéro / constante / minimum / maximum / moyenne / médiane, supprimer les points affectés, remplissage avant, remplissage arrière, interpolation (linéaire, spline, quadratique, cubique, PCHIP), minimum / maximum / moyenne / médiane des N voisins

  • Stratégies pour les images : ne rien faire, remplacer par zéro / constante / minimum / maximum / moyenne / médiane, minimum / maximum / moyenne / médiane des N voisins

  • La boîte de dialogue des paramètres affiche des badges colorés indiquant le nombre (et le pourcentage) d’échantillons NaN, +Inf et -Inf trouvés dans l’objet source, offrant une visibilité immédiate sur ce qui sera modifié

  • Lorsqu’une stratégie de voisinage est sélectionnée, un aperçu en direct du noyau montre la forme du voisinage qui sera utilisé pour le remplacement

  • Les images entières sont traitées explicitement : comme les valeurs NaN et infinies ne peuvent pas exister dans les données entières, la boîte de dialogue explique que l’opération n’est pas applicable et empêche un traitement accidentel, tout en préservant le type de données d’image d’origine sans conversion inutile en flottant

🔄 Modifications#

DataLab repose désormais sur SigimaX :

  • Toutes les parties génériques et au niveau de l’application de DataLab (squelette de la fenêtre principale, système de configuration, widgets de tracé amovibles, espace de travail et navigateur HDF5, visualiseur de journal, écran de démarrage, barre d’état, boîtes de dialogue scientifiques et adaptateurs PlotPy) ont été extraites dans une nouvelle bibliothèque réutilisable, SigimaX, et DataLab en dérive désormais au lieu de maintenir ses propres copies (implémente Issue #182)

  • Il s’agit d’un refactoring interne : les flux de travail, les paramètres et les fichiers existants ne sont pas modifiés, mais cela réduit considérablement le code dupliqué et permet de créer d’autres applications scientifiques Qt sur la même base

  • Par conséquent, DataLab nécessite désormais SigimaX ≥ 1.0.1, et ses versions minimales sont alignées sur celles qu’impose SigimaX : Sigima ≥ 1.2.0, guidata ≥ 3.15.0 et PlotPy ≥ 2.11.0

Système de configuration :

  • La configuration de DataLab a été migrée vers le système d’options typées fourni par SigimaX : les options ont désormais un type explicite, une valeur par défaut et une description, et sont validées lors de la lecture ou de l’écriture

  • Les paramètres enregistrés par les versions précédentes sont migrés automatiquement au premier démarrage ; la disposition du fichier de configuration est sinon préservée

Package cdlclient archivé :

  • Le package autonome cdlclient est obsolète et archivé. Son client XML-RPC léger est désormais fourni par Sigima, sous la forme de sigima.client.SimpleRemoteProxy (implémente Issue #183)

  • Ses widgets Qt compagnons ont été repris par SigimaX : la boîte de dialogue de progression de connexion est désormais sigimax.widgets.connection.ConnectionDialog, utilisable avec tout proxy distant exposant une méthode connect() bloquante

  • La documentation ne fait plus référence à cdlclient

Les outils de détection préservent désormais les régions d’intérêt existantes :

  • Les régions d’intérêt créées par la détection de pics, de blobs, de cercles de Hough et de contours sont désormais ajoutées aux ROI existantes au lieu de les remplacer, sans afficher de boîte de dialogue de confirmation destructive

Les résultats d’analyse sont désormais actualisés à la demande plutôt qu’automatiquement :

  • Les résultats d’analyse (statistiques, FWHM, centroïde, détection de pics/contours/blobs, etc.) ne sont plus recalculés automatiquement lorsque vous modifiez une région d’intérêt, transformez les données ou modifiez les propriétés de l’objet

  • Les résultats d’analyse existants sont désormais laissés intacts après de telles modifications, évitant des effets de bord inattendus et des résultats susceptibles de devenir trompeurs lorsque les données ne correspondent plus aux paramètres d’analyse enregistrés

  • La relecture ordinaire et les mutations ordinaires ne recalculent pas les analyses ; toutefois, en mode d’édition de l’historique, la modification de paramètres en amont recalcule les actions d’analyse en aval par propagation en cascade

  • L’action familière « Recalculer » (menu Édition, Ctrl+R) actualise désormais à la fois les résultats de traitement et d’analyse, vous permettant de maîtriser pleinement le moment où les analyses sont mises à jour

  • Pour les développeurs, l’ancien point d’entrée recompute_analysis au niveau du panneau a été renommé recompute_selected ; recompute_analysis désigne désormais une autre fonction auxiliaire au niveau du processeur, dédiée à l’actualisation explicite des analyses 1-vers-0

🛠️ Corrections de bugs#

Régions d’intérêt :

  • Les régions d’intérêt créées par une fonction de détection (blob, contour, pic ou détection de cercle de Hough) réapparaissant immédiatement après avoir été supprimées ou modifiées — les ROI de détection sont désormais des ROI ordinaires, entièrement modifiables (corrige Issue #329)

  • Les régions d’intérêt supprimées réapparaissant après un recalcul automatique en post-traitement

  • Correction d’un plantage lorsque l’index de la région d’intérêt était hors limites lors de la création d’un titre de ROI

Profils d’intensité :

  • Correction du bouton « Réinitialiser la sélection » des dialogues de profil d’intensité ne supprimant pas la sélection précédente : après réinitialisation et dessin d’une nouvelle région, le profil extrait correspondait toujours à la première sélection (corrige Issue #322)

  • Correction du recalcul du profil utilisant les paramètres d’un autre objet lorsque plusieurs objets étaient sélectionnés

Palette de commandes :

  • Correction des résultats de recherche étant non pertinents pour les requêtes courtes — taper « rota » ne renvoie plus de commandes non liées avant les entrées de rotation (corrige Issue #345)

Largeur à mi-hauteur :

  • Une régression FWHM signalée par un utilisateur et observée dans DataLab v0.20.1 (une largeur aberrante, beaucoup trop petite) a été identifiée grâce à un test de non-régression basé sur le signal original, désormais inclus dans les données de test de Sigima. Le calcul était déjà correct dans la v1.2.x et reste correct dans cette version (corrige Issue #356)

Plugins :

  • Correction des fonctions de traitement des plugins échouant dans les processus workers générés après un rechargement de plugin

Fenêtre principale :

  • Correction du dock de tracé visible ne suivant pas l’onglet du panneau actuel dans certaines situations, en particulier lorsqu’une disposition persistante laissait le dock Macro, Historique ou Assistant IA levé au démarrage

Enregistrement de fichiers :

  • Correction d’une erreur levée lors de l’enregistrement d’un signal dans un fichier dans certaines situations

Panneau d’historique :

  • Correction de la lecture des actions de chargement ne faisant rien lorsque les objets chargés avaient été supprimés alors que l’enregistrement était actif — les objets sont maintenant rechargés à partir de leurs fichiers

  • Correction des chaînes de traitement dupliquées interférant avec leur chaîne source : la lecture de session n’affecte désormais que ses propres objets

  • Correction de l’abandon de la lecture de session lorsque la session contenait une suppression d’objet enregistrée — les suppressions enregistrées qui ne peuvent plus être appliquées en toute sécurité (incohérence de l’état capturé, cibles recréées plus tôt dans la même lecture, ou cibles appartenant à une autre session) sont maintenant ignorées avec un avertissement

  • Suppression de la mise en évidence jaune pouvant persister sur les entrées de l’historique après une lecture échouée

  • Correction des étapes obsolètes n’ayant aucune indication visuelle dans l’arborescence de l’historique — les actions laissées obsolètes par un recalcul échoué ou interrompu, ou par des modifications de paramètres en attente de propagation, sont maintenant mises en évidence avec un arrière-plan ambre et une info-bulle suggérant de les relire

  • Correction des plantages potentiels ou des historiques corrompus lors du clic sur les commandes du panneau Historique (Rejouer, Supprimer, Dupliquer, …) alors qu’une longue lecture ou un recalcul était encore en cours — les commandes sont maintenant indisponibles jusqu’à la fin de l’exécution

  • Correction d’une seule entrée d’historique corrompue (par exemple, une ROI enregistrée par une version incompatible) empêchant le chargement d’un fichier .dlhist entier ou de l’historique d’un espace de travail HDF5 — l’action affectée se charge maintenant comme incompatible tandis que le reste de l’historique se charge normalement

  • Correction de l’arrêt de l’enregistrement de l’opération de l’utilisateur lorsqu’un objet sélectionné n’avait pas de données

  • Correction du maintien en surbrillance de la session active après le chargement d’un fichier HDF5

  • Correction du changement vers le panneau Signal lors de la suppression d’une action d’historique d’image

  • Correction d’une erreur de génération de macro (object has no attribute uuid) pour les chaînes de traitement 2-à-1

  • Amélioration des performances : l’ouverture de nombreux fichiers ou la relecture de longues chaînes de traitement ne bloque plus l’interface pendant que le panneau Historique vérifie à plusieurs reprises la compatibilité des actions

📖 Documentation#

  • Ajout d’une page complète sur la panneau Historique et d’un tutoriel étape par étape couvrant l’enregistrement, la relecture, la modification des paramètres et l’import/export de session

  • Ajout de pages cas d’utilisation illustrant DataLab en photonique, spectroscopie et contrôle non destructif

  • Documentation de l’ancien syntaxe du sélecteur de jeux de données HDF5

  • Refonte de la mise en page de la documentation : barre de navigation plus compacte, métadonnées Open Graph et métadonnées de citation logicielle

  • Ajout d’un exemple de plugin montrant des lignes de contour iso-niveau sur une image

  • Mise à jour des traductions françaises sur toutes les nouvelles pages de documentation et celles modifiées