Version 1.0#

DataLab Version 1.0.3 (19/12/2025)#

🛠️ Correctifs depuis la version 1.0.2#

Le chargement des images avec une seule ligne ou colonne échoue :

  • Correction du chargement des fichiers d’images avec une seule ligne ou colonne (par exemple, certains fichiers de spectroscopie SIF avec une forme (1, N)) provoquant une IndexError et empêchant l’affichage de l’image

  • Le problème sous-jacent se trouvait dans la fonction de conversion des coordonnées en bacs de PlotPy qui supposait au moins 2 points

  • Ce correctif est inclus dans PlotPy 2.8.3

Plage LUT copiée incorrectement lors du traitement des images :

  • Correction des images traitées héritant de la plage LUT (paramètres de contraste d’affichage) de l’image source, ce qui entraîne une visualisation incorrecte lorsque les valeurs de données changent de manière significative

  • Lors de l’application d’opérations telles que la correction de l’offset, l’image résultante ajuste désormais automatiquement sa plage d’affichage pour s’adapter aux nouvelles valeurs de données au lieu d’utiliser la plage LUT de l’image originale

  • Auparavant, les utilisateurs devaient ajuster manuellement la LUT pour voir correctement les images traitées (elles pouvaient apparaître complètement noires ou avec un contraste incorrect)

  • Ceci clôture Issue #288 - Plage LUT copiée incorrectement lors du traitement des images

  • Ce correctif est inclus dans Sigima 1.0.4

Fenêtres de tracé séparées - Rapport d’aspect incorrect pour les coordonnées non uniformes :

  • Correction des fenêtres de tracé séparées (par ex. « Voir dans une nouvelle fenêtre », éditeurs de ROI, dialogues de profil) qui n’utilisaient pas la même configuration de rapport d’aspect que le gestionnaire de tracé intégré

  • Lors de l’affichage d’images avec des coordonnées non uniformes, le tracé principal déverrouille correctement le rapport d’aspect pour un affichage approprié, mais les fenêtres séparées n’héritaient pas de ce paramètre

  • Toutes les boîtes de dialogue d’image héritent désormais correctement des paramètres de rapport d’aspect, assurant un comportement d’affichage cohérent sur toutes les fenêtres de tracé

  • Ceci clôture Issue #287 - Les fenêtres de graphique séparées n’utilisent pas la même configuration de rapport d’aspect que le graphique intégré

Supprimer tous les résultats - AttributeError lorsque la ROI a été supprimée :

  • Correction de l’action « Supprimer tous les résultats » qui échouait avec AttributeError: 'NoneType' object has no attribute 'get_single_roi_title' lorsque les résultats contiennent des informations de ROI mais que la ROI a été ensuite supprimée de l’objet

  • Le problème se produisait lorsque :

    1. Exécution d’une analyse avec une ROI (par ex. Centroïde sur une image avec ROI rectangulaire)

    2. Suppression de la ROI de l’objet

    3. Tentative de suppression de tous les résultats via « Analyse > Supprimer les résultats > Supprimer tous les résultats »

  • Le correctif ajoute une vérification de valeur None appropriée avant d’accéder au titre de la ROI

  • Ceci clôture Issue #286 - « Supprimer tous les résultats » échoue avec AttributeError lorsque la ROI a été supprimée

Recalcul automatique de l’analyse - Paramètres obsolètes après suppression des résultats :

  • Correction des paramètres d’analyse qui n’étaient pas effacés lors de la suppression des résultats, ce qui pouvait provoquer un comportement de recalcul automatique inattendu lors de la modification des ROI

  • Après la suppression des résultats (via « Supprimer tous les résultats » ou suppression individuelle), la modification de la ROI déclenchait le recalcul de l’analyse supprimée car les paramètres restaient dans les métadonnées de l’objet

  • Le correctif assure que les paramètres d’analyse sont correctement effacés avec les résultats, empêchant le recalcul automatique indésirable

  • Ceci clôture Issue #285 - Les paramètres d’analyse ne sont pas effacés après la suppression des résultats

ROI rectangulaire dessinée à l’envers cause des statistiques NaN :

  • Correction des statistiques de ROI rectangulaire retournant des valeurs NaN lorsque la ROI était dessinée « à l’envers » (du coin inférieur droit vers le coin supérieur gauche au lieu du coin supérieur gauche vers le coin inférieur droit)

  • Le problème est survenu parce que la conversion des coordonnées de la ROI produisait des valeurs de largeur/hauteur négatives, provoquant l’échec de la génération du masque

  • La génération du masque de ROI fonctionne désormais correctement quelle que soit la direction dans laquelle le rectangle a été dessiné

  • Ceci clôture Issue #284 - ROI rectangulaire dessinée à l’envers cause des statistiques NaN

  • Ce correctif est inclus dans Sigima 1.0.4

Rafraîchissement du graphique - Les ROI et annotations persistent après « Tout supprimer » :

  • Correction des ROI et annotations restant occasionnellement visibles après l’exécution de l’action « Tout supprimer » depuis le menu Édition

  • Le problème est survenu parce que le widget de tracé n’était pas explicitement invité à se redessiner après la suppression de tous les éléments de tracé et des éléments de forme

  • Le graphique se rafraîchit désormais correctement après la suppression de tous les objets, garantissant une vue propre sans nécessiter de changement de panneau

  • Le bug était intermittent et difficile à reproduire systématiquement, donnant l’impression que les objets étaient « coincés » sur le graphique

Étiquettes de résultats - Faux message « omis » pour les résultats à une seule ligne :

  • Correction des étiquettes de résultats (par exemple, les caractéristiques des impulsions) affichant incorrectement le message « X lignes supplémentaires omises » lors de l’affichage de résultats à une seule ligne sans troncature réelle

  • L’anomalie s’est produite parce que len(adapter.result) était utilisé pour obtenir le nombre de lignes, mais cela renvoie en fait le nombre d’en-têtes de colonnes, pas les lignes de données

  • Pour les caractéristiques des impulsions avec 13 colonnes, cela a amené l’étiquette à penser qu’il y avait 13 lignes alors qu’il n’y en avait qu’une seule, ce qui a conduit à un faux message « 12 lignes supplémentaires omises »

  • Le correctif garantit un comptage précis des lignes en utilisant len(df) à la place, évitant ainsi les fausses notifications de troncature

  • Ceci clôture Issue #281 - Faux message « omis » des étiquettes de résultats

Vue des signaux - Les éléments XRangeSelection persistent après la suppression des signaux :

  • Correction des éléments XRangeSelection et DataInfoLabel (créés par les outils de statistiques de courbes de PlotPy) restant visibles sur le graphique après la suppression de tous les signaux

  • Lors de l’activation de l’outil XRangeSelection depuis la barre d’outils PlotPy, puis de la suppression du ou des signaux, ces objets graphiques créés par l’outil n’étaient pas nettoyés

  • La logique de nettoyage se déclenche désormais correctement lorsqu’il n’y a aucun objet sélectionné (après la suppression du dernier), et pas seulement lorsqu’un seul objet est sélectionné

  • Ceci clôture Issue #280 - Les éléments XRangeSelection persistent après la suppression de tous les signaux

Contrôle distant - Plantage lors de l’ajout d’un objet via le proxy :

  • Correction du plantage AttributeError: 'NoneType' object has no attribute 'setText' lors de l’ajout d’objets via RemoteProxy.add_object() dans les macros

  • Le plantage se produisait dans update_tree() lorsque la vue arborescente se désynchronisait temporairement avec le modèle d’objets (par exemple, lors de l’ajout d’objets avec des configurations de métadonnées spécifiques ou des ROIs via le proxy distant)

  • La vue arborescente se reconstruit désormais automatiquement si des incohérences sont détectées, assurant un ajout d’objets robuste dans tous les scénarios

  • Ceci clôture Issue #279 - AttributeError dans update_tree() lors de l’ajout d’un objet via RemoteProxy

Icônes - Avertissements Qt SVG sous Linux :

  • Correction des avertissements « qt.svg: Invalid path data; path truncated » apparaissant 4 fois au démarrage sous Linux/Ubuntu

  • Nettoyage des fichiers d’icônes SVG pour supprimer les métadonnées Inkscape/Sodipodi et correction de la syntaxe des chemins dans deux fichiers d’icônes qui utilisaient une continuation implicite de commande de courbe de Bézier cubique (non prise en charge par le moteur de rendu SVG de Qt sous Linux)

  • Ceci clôture Issue #278 - Correction des avertissements « qt.svg: Invalid path data; path truncated » sous Linux

Extraction de ROI - KeyError lors de l’extraction des ROI :

  • Correction de l’erreur KeyError lors de l’extraction des ROI à partir d’images avec des ROI générées par la détection de blobs ou d’autres fonctions d’analyse

  • Le problème est survenu parce que l’éditeur de ROI essayait d’accéder à des éléments de tracé qui n’avaient pas encore été créés (par exemple, lorsque le « rafraîchissement automatique » était désactivé ou dans certains scénarios de sélection)

  • La boîte de dialogue d’extraction de ROI gère désormais correctement les éléments de tracé manquants

  • Ceci clôture Issue #276 - KeyError lors de l’extraction des ROI à partir d’images avec des résultats de détection de blobs

Développement de plugins - Boucle infinie lors de l’itération sur les objets d’un groupe :

  • Correction de la boucle infinie se produisant dans les plugins lors de l’itération sur les identifiants d’objets retournés par ObjectGroup.get_object_ids() tout en ajoutant simultanément de nouveaux objets au même groupe

  • La méthode retournait une référence directe à la liste interne au lieu d’une copie, ce qui faisait que l’itération incluait les objets nouvellement ajoutés et bouclait indéfiniment

  • Cela affectait particulièrement les flux de travail des plugins qui bouclent sur les signaux/images d’un groupe et ajoutent des résultats au même groupe ou à un autre groupe

  • Le correctif garantit que get_object_ids() retourne désormais une copie de la liste, rendant l’itération sûre même lors de la modification du groupe

  • Ceci clôture Issue #274 - Boucle infinie lors de l’itération sur les objets d’un groupe tout en ajoutant de nouveaux objets

Visibilité des marqueurs :

  • Correction des couleurs du marqueur en croix (affiché en appuyant sur la touche Alt sur le graphique) héritées de PlotPy étant trop pâles sur fond blanc, et d’autres propriétés de marqueurs explicitement configurées pour un meilleur contraste

  • Correction des couleurs d’annotation par défaut héritées de PlotPy étant trop pâles sur fond blanc - les annotations de segments et de formes glissées utilisent désormais un vert plus vif (#00ff55) pour une meilleure visibilité

Disposition du panneau des macros :

  • Correction du panneau de la console des macros prenant un espace vertical excessif à la première ouverture - l’éditeur de scripts obtient désormais correctement 70 % de l’espace et la console 30 % par défaut, garantissant une édition confortable sans redimensionnement manuel

Nommage des macros :

  • Correction du nommage automatique des macros générant des noms en double après le rechargement de l’espace de travail à partir de fichiers HDF5

  • Lorsque les macros étaient désérialisées à partir d’espaces de travail enregistrés ou importées à partir de fichiers, le compteur interne utilisé pour générer des noms par défaut (par exemple, « macro_01 », « macro_02 ») n’était pas mis à jour, ce qui pouvait entraîner la réutilisation d’un nom existant pour la prochaine nouvelle macro

  • Le compteur se synchronise désormais avec les noms de macros existants après le chargement, garantissant un nommage séquentiel unique

  • Les noms de macros par défaut ont été simplifiés du format traduit « Sans titre XX » au format neutre en termes de langue « macro_XX » pour une meilleure cohérence entre les locales

Exécution des macros :

  • Correction des erreurs de syntaxe lors de l’utilisation de f-strings avec des guillemets imbriqués dans les macros (par exemple, f'text {func("arg")}' fonctionne désormais correctement)

  • Correction des caractères Unicode corrompus dans la sortie de la console des macros sous Windows - les caractères spéciaux comme ✅, 💡 et → s’affichent désormais correctement au lieu d’afficher du texte illisible

Console interne - Opérations sur l’espace de travail HDF5 :

  • Correction du blocage de l’application lors de l’appel de open_h5_files() depuis la console interne - la console s’exécute dans un thread séparé et la création d’éléments d’interface Qt (boîtes de dialogue de progression) depuis des threads non principaux provoque des blocages

  • Ajout de nouvelles méthodes d’API sans interface graphique load_h5_workspace() et save_h5_workspace() qui peuvent être appelées en toute sécurité depuis la console interne ou tout contexte de script sans dépendances à l’interface graphique

  • Ces méthodes sont également disponibles via l’API de contrôle distant pour plus de cohérence

  • Note : load_h5_workspace() ne prend en charge que les fichiers HDF5 natifs de DataLab ; pour importer des fichiers HDF5 arbitraires, utilisez des macros avec RemoteProxy

  • Ceci clôture Issue #275 - Blocage de la console lors de l’appel de open_h5_files() depuis la console interne

Boîtes de dialogue de curseur de signal - Saisie décimale avec les paramètres régionaux :

  • Correction de l’échec de la saisie de valeurs décimales dans les boîtes de dialogue de curseur de signal lors de l’utilisation de paramètres régionaux avec la virgule comme séparateur décimal (par exemple, locales française, allemande)

  • Le champ de saisie Y dans les boîtes de dialogue « Première abscisse à y=… », « Ordonnée à x=… » et « Largeur totale à y=… » accepte désormais systématiquement le point comme séparateur décimal, quelle que soit la locale du système

  • Ceci clôture Issue #276 - Échec de la saisie décimale avec les paramètres régionaux utilisant la virgule comme séparateur décimal

Titre du profil radial :

  • Correction du suffixe en double dans le titre de l’image résultante lors de l’extraction du profil radial d’une image (par exemple, radial_profile(i019)|center=(192.500, 192.500)|center=(192.500, 192.500) au lieu de radial_profile(i019)|center=(192.500, 192.500))

  • Ce correctif est fourni par Sigima 1.0.4

ROI de grille - Paramètres d’espacement manquants pour les grilles non uniformes :

  • Correction de la fonctionnalité ROI de grille ne fonctionnant pas correctement pour les images où les sous-images ne remplissent pas toute la zone de l’image (par exemple, les réseaux de points laser avec des espaces entre les points)

  • Ajout des paramètres manquants xstep et ystep pour contrôler l’espacement horizontal et vertical entre les centres des ROI, en pourcentage de la largeur/hauteur de cellule calculée automatiquement (par défaut 100 % = grille uniformément répartie)

  • Auparavant, la grille était toujours supposée être uniformément répartie sur toute l’image, ce qui échouait lorsqu’il y avait un décalage ou des espaces importants entre les caractéristiques

  • Les utilisateurs peuvent désormais ajuster l’espacement des ROI indépendamment de la taille des ROI pour extraire avec précision des grilles à partir de données réelles telles que des réseaux de points laser, des motifs de diffraction ou toute caractéristique régulièrement espacée avec des espaces

  • Ce correctif est fourni par Sigima 1.0.4

  • Ceci clôture Issue #282 - Paramètres d’espacement manquants pour la ROI de grille

Recalcul automatique de l’analyse - Calculs redondants O(n²) lors de l’ajout de ROI :

  • Correction d’un problème de performance sévère où l’ajout d’une ROI à N images sélectionnées avec des résultats d’analyse (p. ex. Statistiques, Centroïde) déclenchait N² calculs au lieu de N

  • Lorsque 10 images étaient sélectionnées avec des statistiques pré-calculées, l’ajout d’une ROI affichait 10 barres de progression de 10 calculs chacune (100 au total) au lieu d’une seule barre de progression avec 10 calculs

  • Le problème se produisait car auto_recompute_analysis() appelait compute_1_to_0() qui, par défaut, traite tous les objets sélectionnés, pas seulement l’objet spécifique en cours de recalcul

  • Ajout du paramètre target_objs à compute_1_to_0() pour permettre de spécifier quels objets traiter, et mise à jour de auto_recompute_analysis() pour l’utiliser

  • Ceci clôture Issue #283 - Calculs redondants O(n²) lors de l’ajout de ROI à plusieurs images avec des résultats d’analyse

Visualisation des résultats - Segments de résultats d’analyse difficiles à voir :

  • Correction des marqueurs de résultats d’analyse (FWHM, caractéristiques des impulsions, etc.) difficiles ou impossibles à voir sur les graphiques de signaux

  • Ces indicateurs de mesure apparaissaient en noir sur des fonds blancs ou en blanc sur des fonds sombres, les faisant se fondre dans le graphique

  • Ils s’affichent désormais en vert vif avec des lignes plus épaisses, les rendant clairement visibles dans tous les thèmes de couleur

  • Suppression également de la zone remplie qui obscurcissait les données de signal sous-jacentes - les marqueurs affichent désormais uniquement les lignes de délimitation indiquant la région mesurée

DataLab Version 1.0.2 (03/12/2025)#

🛠️ Correctifs depuis la version 1.0.1#

Calibration de l’axe des signaux - Remplacer X par le Y d’un autre signal :

  • Ajout de la nouvelle opération « Remplacer X par le Y d’un autre signal » dans le menu Traitement > Transformation d’axe pour les flux de travail de calibration des signaux

  • Répond à une fonctionnalité critique manquante signalée par les utilisateurs qui avaient besoin d’appliquer une calibration en longueur d’onde ou des transformations similaires aux données de spectroscopie

  • L’opération combine deux signaux : elle utilise les valeurs Y d’un signal comme nouvelles coordonnées X pour les valeurs Y d’un autre signal

  • Contrairement au mode X-Y (qui rééchantillonne et interpole), cette opération utilise directement les tableaux Y sans interpolation, préservant ainsi les valeurs de calibration exactes

  • Nécessite que les deux signaux aient le même nombre de points - affiche un message d’erreur clair si les tailles ne correspondent pas

  • Transfert automatique des métadonnées : l’étiquette/unité de l’axe X est prise à partir de l’étiquette/unité Y du signal de calibration

  • Emplacement dans le menu : Traitement > Transformation d’axe > « Remplacer X par le Y d’un autre signal »

  • Ceci clôture Issue #273 - Calibration de l’axe des signaux manquante : aucun moyen de remplacer X par Y d’un autre signal

Mode X-Y :

  • Le traitement Mode X-Y pour les signaux a été déplacé vers Traitement > Transformation des axes > « Mode X-Y » pour une meilleure découvrabilité

  • La nuance entre le mode X-Y (qui rééchantillonne/interpole) et la nouvelle opération « Remplacer X par le Y d’un autre signal » a été clarifiée dans la documentation

Persistance du paramètre de verrouillage de la LUT :

  • Correction du paramètre « Verrouiller la LUT lors de la mise à jour des données » ne persistant pas dans Paramètres > Visualisation > Images > Paramètres de visualisation d’image par défaut

  • Le paramètre keep_lut_range n’était pas enregistré dans la configuration, ce qui faisait que la case à cocher se décochait systématiquement après validation (ajout de l’option manquante ima_def_keep_lut_range dans la configuration)

  • Ceci clôture Issue #270 - Persistance du paramètre de verrouillage de la LUT dans les paramètres de visualisation d’image par défaut

Création de signaux personnalisés :

  • Correction de l’erreur AttributeError: 'NoneType' object has no attribute 'T' lors de la création d’un signal personnalisé à partir du menu

  • Ceci clôture Issue #269 - Création de signaux personnalisés : AttributeError lors de la création d’un signal à partir du menu

Exécution des macros :

  • Correction de l’erreur UnicodeEncodeError lors de l’exécution de macros qui impriment des caractères Unicode (par exemple, des flèches ) sur les systèmes Windows avec certaines locales, par exemple cp1252 (ceci clôture Issue #263)

  • Le sous-processus de la macro utilise désormais automatiquement l’encodage UTF-8 pour stdout et stderr, éliminant ainsi la nécessité d’ajouter manuellement sys.stdout.reconfigure(encoding='utf-8') au début de chaque macro.

Prise en charge des coordonnées non uniformes :

  • Les coordonnées des ROI sont désormais automatiquement arrondies à une précision appropriée lors de la définition interactive des ROI à partir de formes géométriques, évitant ainsi des décimales excessives tout en maintenant une précision raisonnable par rapport à l’échantillonnage des données (1/10e de la période d’échantillonnage pour les signaux, 1/10e de l’espacement des pixels pour les images)

  • Les coordonnées des ROI sont également arrondies lors de leur affichage dans la boîte de dialogue « Éditer numériquement », empêchant les erreurs d’arithmétique en virgule flottante d’afficher des décimales excessives (par exemple, 172.29999999999995 est désormais affiché sous forme de 172.3)

  • Ceci clôture Issue #266 - Décimales excessives dans les coordonnées des ROI

Gestion des ROI polygonales :

  • Correction de l’erreur ValueError: Buffer has wrong number of dimensions lors de la création de masques à partir de ROI polygonales dans l’éditeur de ROI

  • Le PolygonalTool initialisait incorrectement les coordonnées des ROI sous forme de liste imbriquée au lieu d’une liste plate, ce qui provoquait l’échec du calcul du masque

Boîte de dialogue d’ouverture de fichiers HDF5 :

  • Correction du bug où le choix de l’utilisateur dans la boîte de dialogue de confirmation « effacer l’espace de travail » était ignoré lors de l’ouverture de fichiers HDF5

  • Lorsque l’utilisateur cliquait sur « Non » dans la boîte de dialogue, le paramètre de configuration par défaut était appliqué au lieu de respecter le choix de l’utilisateur

  • Ceci clôture Issue #267 - La boîte de dialogue d’ouverture de fichiers HDF5 ignore le choix de l’utilisateur

Mise à jour de l’axe dans l’onglet Création :

  • Correction du graphique ne se mettant pas à jour lors de la modification uniquement des paramètres xmin/xmax pour les signaux de distribution (Zéro, Normal, Poisson, Uniforme) dans l’onglet Création

  • Le problème est survenu parce que le calcul du hash des données ne prenait en compte que les valeurs Y, de sorte que les modifications des limites de l’axe X n’étaient pas détectées

  • Le graphique se rafraîchit désormais correctement lorsque n’importe quel paramètre d’axe change, même si les valeurs Y restent identiques

  • Ceci clôture Issue #268 - L’axe de l’onglet Création ne se met pas à jour pour les signaux de distribution

Statistiques ROI avec ROI hors limites :

  • Correction de l’erreur ValueError: zero-size array to reduction operation minimum which has no identity lors du calcul des statistiques sur des images avec ROI s’étendant au-delà des limites de la zone de dessin

  • Le problème est survenu lorsqu’un ROI s’étendait partiellement ou complètement en dehors des limites de l’image, ce qui entraînait des tranches de tableau vides lors du calcul des statistiques

  • Les boîtes englobantes des ROI sont désormais correctement limitées aux limites de l’image, et les ROI complètement hors limites renvoient des valeurs statistiques NaN

  • Cette correction est implémentée dans la bibliothèque Sigima (voir Issue #1 - ValueError lors du calcul des statistiques sur ROI s’étendant au-delà des limites de l’image)

Sélection des onglets du panneau des propriétés des objets :

  • Correction du comportement de sélection des onglets dans le panneau des propriétés des objets pour le rendre plus prévisible et convivial

  • L’onglet Propriétés est désormais toujours affiché par défaut lors du changement d’objet, offrant une navigation cohérente

  • Les onglets Création, Traitement et Analyse apparaissent désormais automatiquement une seule fois après leurs événements déclencheurs respectifs (création d’objet, traitement 1-vers-1 ou calcul d’analyse), puis reviennent à l’onglet Propriétés pour les sélections ultérieures

  • Cela élimine le comportement déroutant où l’onglet persistait ou changeait arbitrairement en fonction des sélections précédentes

  • Ceci clôture Issue #271 - Amélioration du comportement de sélection des onglets du panneau des propriétés des objets

DataLab Version 1.0.1 (18/11/2025)#

Cette version majeure représente une étape importante pour DataLab avec de nombreuses améliorations dans tous les domaines. Les changements sont organisés par catégorie pour une navigation plus facile.

Note : La version 1.0.1 est une version corrective qui résout les limitations de l’installateur Windows de la version 1.0.0 (publiée le 16/11/2025), où il n’était pas possible d’installer DataLab V1.0 aux côtés des versions majeures antérieures (V0.20 et antérieures) malgré le support de coexistence prévu. Cette version ne contient aucune nouvelle fonctionnalité ni modification fonctionnelle.

🎨 Interface utilisateur et flux de travail#

Réorganisation des menus :

  • Nouveau menu « Création » : La fonctionnalité de création d’objets a été séparée du menu « Fichier » et placée entre les menus « Fichier » et « Édition » pour une organisation plus claire

    • Toutes les actions « Fichier > Nouveau […] » ont été déplacées vers le menu « Création »

    • Note de migration : Les actions de création de signaux/images se trouvent désormais dans le nouveau menu « Création »

  • Nouveau menu « ROI » : Menu dédié à la gestion des régions d’intérêt, placé entre les menus « Édition » et « Opérations »

  • Nouveau sous-menu « Annotations » : Regroupement des opérations d’annotation dans le menu « Édition »

  • Nouveau sous-menu « Métadonnées » : Regroupement de toutes les opérations de métadonnées dans le menu « Édition »

Édition interactive d’objets :

  • Création interactive d’objets : Les paramètres de création peuvent être modifiés après la création de l’objet via le nouvel onglet « Création » dans le panneau des propriétés

    • Appliquer les modifications sans créer de nouveaux objets, en préservant le traitement ultérieur

    • Disponible pour les générateurs paramétriques (Gaussien, sinusoïdal, etc.)

  • Traitement interactif 1-vers-1 : Les paramètres de traitement peuvent être ajustés et réappliqués après le traitement initial

    • Mise à jour sur place des objets résultats avec les paramètres modifiés

    • Uniquement pour les opérations paramétriques (filtres, morphologie, etc.)

  • Fonction de recalcul : Nouvelle action « Recalculer » (Ctrl+R) pour retraiter rapidement les objets avec les paramètres stockés

    • Fonctionne avec un ou plusieurs objets

    • Met à jour automatiquement les résultats lorsque les données sources changent

  • Mise à jour automatique de l’analyse ROI : Les résultats d’analyse sont automatiquement recalculés lorsque le ROI est modifié

    • Fonctionne pour toutes les opérations d’analyse (statistiques, centroïde, etc.)

    • Recalcul silencieux en arrière-plan pour un retour immédiat

  • Sélectionner les objets source : Naviguer vers les objets source utilisés dans le traitement via une nouvelle action du menu « Édition »

    • Gère tous les modèles de traitement (1-vers-1, 2-vers-1, n-vers-1)

    • Affiche des messages informatifs si les sources n’existent plus

  • Historique de traitement : Nouvel onglet « Historique » affichant la lignée de traitement des objets

    • Affiche la chaîne de traitement complète depuis la création jusqu’à l’état actuel

    • Texte sélectionnable à des fins de documentation

Édition des propriétés de plusieurs objets :

  • Appliquer les modifications de propriétés à plusieurs objets sélectionnés simultanément

  • Seules les propriétés modifiées sont appliquées, préservant les paramètres individuels inchangés

  • Cas d’utilisation typique : modification des limites de la LUT (bornes de l’échelle Z) ou de la carte des couleurs de plusieurs images à la fois, ou ajustement des propriétés d’affichage d’un groupe de signaux.

Améliorations de la taille des boîtes de dialogue :

  • Les boîtes de dialogue de traitement se redimensionnent désormais intelligemment en fonction de la taille de la fenêtre principale

  • Ne dépasse jamais les dimensions de la fenêtre principale pour une meilleure expérience utilisateur

Indicateur de la console interne :

  • L’indicateur de la barre d’état affiche l’état de la console lorsqu’elle est masquée

  • Devient rouge en cas d’erreurs/avertissements pour alerter les utilisateurs

  • Cliquer pour ouvrir la console

🎬 Nouvelles fonctionnalités de création d’objets#

Générateurs de signaux paramétriques :

  • Chirp linéaire, fonction logistique, fonction de Planck

  • Générer des signaux avec bruit de Poisson

Générateurs d’images paramétriques :

  • Damier : Motif de calibration avec taille de carrés et valeurs claires/sombres configurables

  • Réseau sinusoïdal : Test de réponse en fréquence avec fréquences spatiales X/Y indépendantes

  • Motif en anneau : Anneaux circulaires concentriques pour l’analyse radiale et les tests PSF. Période d’anneau, largeur, position centrale et plage d’amplitude réglables.

  • Étoile de Siemens : Test de résolution avec rayons radiaux et rayon configurable

  • Sinc 2D : Fonction sinus cardinal pour la modélisation de la PSF et la simulation de motifs de diffraction. Les paramètres incluent l’amplitude, la position centrale, le facteur d’échelle (sigma) et le décalage DC.

  • Rampe 2D : Nouveau générateur d’image de rampe

  • Bruit de Poisson : Générer des images avec distribution de bruit de Poisson

Création de signaux/images à partir d’opérations :

  • Créer un signal/image à valeurs complexes à partir des parties réelle et imaginaire

  • Créer un signal/image à valeurs complexes à partir de la magnitude et de la phase (ceci clôture Issue #216)

  • Extraire l’information de phase (argument) des signaux ou images complexes

🔬 Traitement et analyse de données#

Traitement du signal :

  • Ajustement de courbes amélioré : Estimation des paramètres considérablement améliorée pour tous les types de courbes (Gaussienne, Lorentzienne, Voigt, exponentielle, sinusoïdale, Planckienne, pics asymétriques, CDF)

    • Estimations initiales des paramètres plus intelligentes pour une convergence robuste

    • Prise en charge des paramètres verrouillés (nécessite PlotPy v2.8.0) :

  • Vérification de la compatibilité des tableaux X pour les calculs multi-signaux :

    • Nouveau paramètre de configuration : Demander à l’utilisateur ou interpoler automatiquement

    • Empêche les résultats inattendus dus à des tableaux de signaux incompatibles

  • Améliorations du zero padding : Prise en charge de l’ajout de zéros au début et à la fin, stratégie par défaut désormais « Prochaine puissance de 2 »

  • Filtre idéal dans le domaine fréquentiel : « Filtre en brique » pour les signaux (ceci clôture Issue #215)

  • Bande passante à -3dB : Améliorée pour prendre en charge la bande passante

  • Extraction des caractéristiques des impulsions : Nouvelle fonctionnalité complète d’analyse des impulsions pour les signaux en escalier et carrés :

    • Reconnaissance automatique de la forme et détection de la polarité

    • Mesure l’amplitude, le temps de montée/descente, la FWHM, les paramètres temporels, les plages de référence

  • Filtres dans le domaine fréquentiel : Déconvolution et filtre Gaussien (ceci clôture Issue #189, Issue #205)

  • Transformations de coordonnées : Conversion en coordonnées cartésiennes/polaires

  • Mode X-Y : Simule le mode X-Y d’un oscilloscope (trace un signal par rapport à un autre)

  • Opérations de recherche : Première abscisse à y=…, ordonnée à x=…, largeur totale à y=…

  • Opération 1/x : Opération réciproque avec gestion des NaN pour les dénominateurs nuls

Traitement d’images :

  • Rééchantillonnage 2D : Rééchantillonner les images vers de nouvelles grilles de coordonnées avec plusieurs méthodes d’interpolation (ceci clôture Issue #208)

  • Convolution : Opération de convolution 2D

  • Effacer une zone : Effacer les zones d’image définies par ROI (ceci clôture Issue #204)

  • Projections horizontales/verticales : Somme des pixels le long des axes (ceci clôture Issue #209)

  • Calcul du centroïde amélioré : Plus précis dans les cas difficiles (images tronquées/asymétriques) (voir Issue #251)

  • Retourner en diagonale : Nouvelle transformation géométrique

  • Opération 1/x : Opération réciproque pour les images

Opérations inter-panneaux :

  • Conversion signaux vers image : Combiner plusieurs signaux en images 2D

    • Deux modes d’orientation : en lignes (spectrogrammes) ou en colonnes (affichages en cascade)

    • Normalisation optionnelle (Z-score, Min-Max, Maximum)

    • Cas d’utilisation typiques : cartes de chaleur, spectrogrammes, visualisation de données multi-canaux

Fonctionnalités communes :

  • Écart-type : Calculer sur plusieurs signaux/images (ceci clôture Issue #196)

  • Ajouter du bruit : Ajouter du bruit gaussien, de Poisson ou uniforme (ceci clôture Issue #201)

  • Ajouter des métadonnées : Ajouter des métadonnées personnalisées avec prise en charge des motifs ({title}, {index}, etc.) et conversion de type

📐 Gestion des ROI et annotations#

Fonctionnalités ROI :

  • Opérations de presse-papiers ROI : Copier/coller les ROI entre objets

  • Importer/exporter des ROI : Enregistrer/charger les ROI au format JSON

  • Suppression individuelle de ROI : Supprimer les ROI sélectivement via le sous-menu « Supprimer »

  • Édition des titres de ROI : Définir les titres pendant la création interactive et dans la boîte de dialogue de confirmation

  • Créer une grille de ROI : Générer une grille de ROI avec lignes, colonnes et espacement configurables

    • Importer/exporter les configurations de grille

    • Aperçu avant création

  • Logique ROI inverse : Sélectionner la zone en dehors des formes définies (images uniquement)

  • Création de ROI par coordonnées : Saisie manuelle des coordonnées pour les ROI rectangulaires et circulaires

  • Édition de ROI multi-objets : Éditer les ROI sur plusieurs objets simultanément

Fonctionnalités d’annotation :

  • Coller les annotations : Coller les annotations du presse-papiers sur l’objet (ou les objets) sélectionné(s)

  • Éditer les annotations : Boîte de dialogue d’éditeur interactif avec outils PlotPy

  • Exporter les annotations : Enregistrer les annotations dans des fichiers JSON .dlabann

  • Supprimer les annotations : Supprimer toutes les annotations de l’objet (ou des objets) sélectionné(s)

  • Annotations indépendantes des ROI : Peuvent coexister sur le même objet

Détection avec création de ROI :

  • Les 7 algorithmes de détection prennent désormais en charge la création automatique de ROI :

    • Détection de pics, forme de contour, détection de blobs (DOG/DOH/LOG/OpenCV), cercle de Hough

  • Choix de géométrie de ROI : ROI rectangulaires ou circulaires

  • Détection de pics 2D : Option pour choisir la géométrie de ROI (ceci clôture les exigences associées)

📊 Visualisation et affichage#

Performances et limites d’affichage :

  • Optimisations des performances pour les grands ensembles de résultats : Ajout de limites d’affichage configurables pour éviter le gel de l’interface utilisateur avec de grands résultats d’analyse

    • max_shapes_to_draw (par défaut : 1 000), max_cells_in_label (par défaut : 100), max_cols_in_label (par défaut : 15)

    • Paramètres documentés avec implications sur les performances

  • Rendu de contours plus rapide : Amélioration des performances de plus de 5x pour l’affichage des contours

  • Optimisation des performances de rendu des signaux : Ajout d’un plafonnement intelligent de l’épaisseur de trait pour les grands ensembles de données

    • Nouveau paramètre : « Seuil de performance de l’épaisseur de trait » (par défaut : 1 000 points) dans les paramètres de visualisation des signaux

    • Empêche un ralentissement de 10x dû à la limitation du moteur raster de Qt

Visualisation des résultats :

  • Étiquettes de résultats fusionnées : Tous les résultats d’analyse pour un signal ou une image sont désormais affichés dans une seule étiquette consolidée en lecture seule

    • Réduit l’encombrement visuel, mises à jour automatiques, résultats divisés horizontalement

  • Contrôle de visibilité de l’étiquette de résultats : Basculer la visibilité via la case à cocher du panneau de propriétés

    • Visibilité par défaut configurable dans les paramètres

  • Création de groupe de résultats : Toutes les opérations de tracé des résultats organisent désormais automatiquement les résultats dans un groupe « Résultats » dédié

  • Titres de résultats complets : Les titres des signaux de résultats incluent désormais les identifiants des objets source

  • Suppression individuelle de résultats : Supprimer les résultats sélectivement via le menu Analyse

  • Styles de formes/marqueurs personnalisables : Quatre nouveaux boutons de configuration de style dans les paramètres

    • Fonctionnalités communes aux signaux et aux images :

    • Éditeur interactif avec options complètes

    • Configuration persistante avec rafraîchissement au changement

Fonctionnalité d’extraction de profil d’intensité :

  • Cliquer directement sur les tracés de profils X/Y pour changer la direction d’extraction

  • Pas besoin d’ouvrir la boîte de dialogue des paramètres pour les changements de direction

  • Améliore l’efficacité du flux de travail (ceci clôture Issue #156)

Prise en charge des signaux DateTime :

  • Détection automatique des dates dans les fichiers CSV

  • Formatage de l’axe datetime : Horodatages lisibles sur l’axe X

  • Formats configurables : Formats séparés pour les unités standard et sub-secondes

  • Prend en charge diverses unités de temps (secondes, millisecondes, microsecondes, minutes, heures)

  • Ceci clôture Issue #258

Paramètres :

  • Marges d’auto-échelle : Marges configurables (0-50%) pour les tracés de signaux/images

  • Verrouiller le rapport d’aspect de l’image : Option pour un rapport d’aspect 1:1 (par défaut : utiliser la taille de pixel physique) (ceci clôture Issue #244)

  • Afficher la console en cas d’erreur : Comportement configurable (par défaut : désactivé)

Paramètres d’étendue de l’image :

  • Nouvelle boîte de groupe « Étendue » affichant les Xmin, Xmax, Ymin, Ymax calculés

  • Calculé automatiquement à partir de l’origine, de l’espacement des pixels et des dimensions

📁 Import/Export et gestion des fichiers#

Prise en charge de nouveaux formats de fichiers :

  • Signaux et images FT-Lab : Formats binaires CEA (.sig, .ima) (ceci clôture Issue #211)

  • Fichiers texte coordonnés : Images à valeurs réelles et complexes avec images d’erreur (similaire au format Matris)

    • Gestion automatique des NaN, métadonnées avec unités et étiquettes

Prise en charge HDF5 améliorée :

  • Extensions de fichiers personnalisées : Détection intelligente HDF5 par contenu (pas seulement l’extension)

    • Détection basée sur l’extension pour les boîtes de dialogue, basée sur le contenu pour le glisser-déposer

    • Option « Tous les fichiers (*) » dans les boîtes de dialogue de fichiers

  • Améliorations du navigateur HDF5 : Vue arboresc ente réduite par défaut pour une meilleure navigation

  • Options de nettoyage de l’espace de travail : Comportement configurable avec option « Ignorer » (ceci clôture Issue #146).

Améliorations des fichiers texte :

  • Amélioration de la gestion des délimiteurs dans la lecture CSV (signaux) pour mieux prendre en charge les fichiers avec divers séparateurs d’espaces.

  • Séparateur décimal local : Prise en charge de la virgule comme séparateur décimal (ceci clôture Issue #124)

  • Tolérance aux erreurs d’encodage : Ignorer les erreurs pour les fichiers avec des caractères spéciaux

  • Détection d’en-tête : Détection et saut automatiques des en-têtes de données

Autres fonctionnalités d’E/S :

  • Enregistrer dans un répertoire : Nouvelle fonctionnalité (ceci clôture Issue #227)

  • Ouvrir depuis un répertoire : Ouvrir récursivement plusieurs fichiers avec prise en charge du glisser-déposer de dossiers

  • Ordre d’importation des fichiers : Correction de l’ordre incohérent des fichiers entre les plateformes lors de l’importation d’images/signaux

🔧 Fonctionnalités avancées#

Prise en charge des coordonnées non uniformes :

  • Les images prennent désormais en charge l’espacement de pixels non uniforme

  • Nouvelle fonctionnalité « Définir les coordonnées uniformes » dans le menu Traitement > Transformation des axes :

  • Prend désormais en charge l’étalonnage polynomial jusqu’à l’ordre cubique pour tous les axes (X, Y, Z)

    • Pour les axes X et Y : Crée des coordonnées non uniformes pour représenter les transformations polynomiales

  • Le format HDF5 préserve les informations de coordonnées non uniformes

Gestion des groupes :

  • ID courts spécifiques au panneau : Préfixe gs pour les signaux, préfixe gi pour les images

    • Évite l’ambiguïté dans les opérations inter-panneaux

  • Numérotation de groupe fixe pour les nouveaux groupes

Réinitialisation de la configuration de DataLab :

  • Dossiers spécifiques à la version : Coexistence des versions majeures (.DataLab_v1, .DataLab_v2, etc.)

    • Permet à v0.x et v1.x de s’exécuter simultanément

API publique (locale ou distante) :

  • Amélioration de la gestion des métadonnées en ajoutant le contexte du nom de la fonction aux résultats :

  • Méthodes add_group, add_signal, add_image avec arguments group_id et set_current

  • get_object_uuids avec filtre group optionnel

  • Plusieurs améliorations de l’API pour une meilleure programmabilité

Infrastructure de traitement (pour les développeurs) :

  • Ajout d’un nouveau décorateur @computation_function pour marquer et enregistrer les fonctions de calcul

  • Renommé les fonctions de calcul pour supprimer le préfixe redondant « compute_ » (par exemple, compute_fftfft)

  • Méthodes BaseProcessor refactorisées avec des noms clairs :

    • compute_1_to_1, compute_1_to_0, compute_1_to_n, compute_n_to_1, compute_2_to_1

  • Aucune compatibilité ascendante n’est maintenue pour ces modifications internes (ceci clôture Issue #180)

🛠️ Correctifs depuis la version 0.20#

Corrections de performances :

  • Passage entre images avec de nombreux résultats : Amélioration spectaculaire (66s → <1ms) lors de la navigation entre des images avec des centaines de formes

  • Robustesse du nettoyage des graphiques : Correction d’erreurs occasionnelles lors de la suppression des résultats d’analyse des graphiques

  • Correction critique : Les éléments d’étiquette de résultat sont désormais correctement exclus du nettoyage pour éviter une suppression accidentelle

Gestion inter-panneaux et des groupes :

  • Groupes de calculs inter-panneaux : Correction de l’organisation incohérente des groupes pour les opérations image vers signal

  • Ordre d’importation des fichiers : Correction de l’ordre incohérent des fichiers entre les plateformes lors de l’importation d’images/signaux

Mises à jour de l’état des actions :

  • Correction des états d’activation des actions ne se mettant pas à jour après les opérations d’annotation/métadonnées

  • L’interface utilisateur reflète désormais immédiatement l’état actuel de l’objet

Gestion des résultats :

  • Correction de la suppression des étiquettes de résultats pour supprimer définitivement les métadonnées associées

  • Correction du nettoyage des métadonnées de paramètres de résultats en double

  • Corrections des coordonnées des résultats : Correction des résultats décalés sur les images avec des ROI et une origine décalée (Issue #106)

  • Indices d’extraction de profil : Correction des indices erronés avec ROI (Issue #107)

Corrections liées aux ROI :

  • Correction de l’extraction de ROI multi-image ne sauvegardant pas la ROI dans le premier objet (Issue #120)

  • Correction de l’AttributeError lors de l’extraction de plusieurs ROI sur une seule image avec plusieurs sélections (Issue #121)

  • Correction des problèmes de rafraîchissement du masque (Issue #122, Issue #123)

  • Correction de l’éditeur de ROI sur plusieurs signaux/images (Issue #135)

  • Correction de l’effacement des ROI n’affectant que la première image (Issue #160)

  • Correction de l’éditeur de ROI affichant la première au lieu de la dernière image (Issue #158)

Assistant d’importation de texte :

  • Correction de la préservation des titres et unités définis par l’utilisateur (Issue #239)

  • Correction de la préservation des types de données (Issue #240)

  • Correction de la prise en charge du séparateur décimal virgule (Issue #186)

  • Correction du problème de délimiteur final (Issue #238)

Ajustement amélioré pour tous les types de courbes :

  • Amélioration de l’estimation initiale de la fréquence pour l’ajustement de courbe sinusoïdale.

  • Correction du formatage d’affichage des paramètres pour les valeurs extrêmes

  • Correction de la gestion des exceptions de calcul FWHM

  • Correction du changement inattendu du style de marqueur de courbe (Issue #184)

  • Correction du plantage brutal sur un signal nul avec l’outil de statistiques de courbe (Issue #233)

Gestion des images :

  • Correction du rapport d’aspect ne se mettant pas à jour lors du changement d’images

  • Correction des problèmes de dépaquetage des formes (Issue #246, Issue #247)

  • Correction des colormaps non stockées dans les métadonnées (problème PlotPy v2.6.3+) (Issue #138)

  • Correction du calcul de l’amplitude pour les types de données non entiers

Traitement du signal :

  • Correction du calcul de l’axe x pour ifft1d lorsque shift=False (Issue #241)

  • Correction du plantage du médian mobile sur Linux avec le mode miroir (Issue #117) - bug SciPy

  • Correction du spectre de magnitude avec échelle logarithmique (Issue #169)

  • Correction du mode d’opération par paires pour les fonctions asymétriques (Issue #157)

Analyse et résultats :

  • Correction de la gestion des valeurs NaN dans les statistiques et la normalisation (Issue #141, Issue #152, Issue #153)

  • Correction des résultats d’analyse conservés de l’original après le traitement (Issue #136)

  • Correction des résultats en double lorsqu’aucune ROI n’est définie

  • Correction du mode « Une courbe par titre de résultat » ignorant les ROI (Issue #132)

  • Ajout de la validation des résultats pour les résultats de type tableau

Graphique et visualisation :

  • Correction des tracés de profils ne se rafraîchissant pas lors du déplacement/redimensionnement (Issue #172) - correction PlotPy

  • Correction de l’affichage du profil moyen vide en dehors de la zone de l’image (Issue #168) - correction PlotPy

  • Correction de la ValueError d’extraction de profil moyen avec un rectangle surdimensionné (Issue #144)

  • Désactivation de l’onglet générique « Axes » dans les boîtes de dialogue des paramètres

Autres corrections :

  • Correction de la méthode proxy add_object ne prenant pas en charge les métadonnées (Issue #111)

  • Correction des appels de méthode RemoteClient sans arguments optionnels (Issue #113)

  • Correction du KeyError lors de la suppression d’un groupe après l’ouverture d’un HDF5 (Issue #116)

  • Correction du KeyError dans « Afficher dans une nouvelle fenêtre » avec plusieurs images après l’ouverture d’un HDF5 (Issue #159)

  • Correction de l’affichage des titres d’objets longs (Issue #128)

  • Correction des titres de noms de fichiers affichant des chemins relatifs (Issue #165)

  • Correction des noms de groupe inattendus dans « Ouvrir depuis un répertoire » (Issue #177)

  • Correction de l’attente d’un groupe par dossier (Issue #163)

  • Correction des fichiers non pris en charge dans le chargement récursif (Issue #164)

Fonctionnalités supprimées :

  • Suppression de l’option « Utiliser la plage de LUT de l’image de référence » :

    • Stratégie de migration : Utilisez plutôt le nouvel éditeur de propriétés de sélection multiple :

🔒 Corrections de sécurité :#

  • Correction de vulnérabilité de dépendance : Correction de la vulnérabilité CVE-2023-4863 dans opencv-python-headless

ℹ️ Autres changements :#

  • Dépendance plotpy mise à jour vers V2.8.0

  • Dépendance guidata mise à jour vers V3.13.0

  • Utilisation du nouvel utilitaire de traduction guidata basé sur babel

  • Python 3.13 désormais pris en charge (via scikit-image V0.25)