Feuille de route#
Jalons futurs#
Fonctionnalités ou améliorations#
Ajouter la prise en charge de l’acquisition de données :
Il serait intéressant de pouvoir acquérir des données de diverses sources (par exemple, une caméra, un numériseur, un spectromètre, etc.) directement depuis DataLab
Cela permettrait d’utiliser DataLab comme logiciel d’acquisition de données, et de traiter les données acquises immédiatement après
Bien qu’il n’y ait actuellement pas de conception pour cette fonctionnalité, elle pourrait être implémentée en créant une nouvelle famille de plugins, et en définissant une API commune pour les plugins d’acquisition de données
Une des solutions techniques possibles pourrait être de s’appuyer sur PyMoDAQ, un paquet Python pour l’acquisition de données, qui est déjà compatible avec divers dispositifs matériels - et si on collaborait avec les développeurs de PyMoDAQ ?
Créer une bibliothèque mathématique DataLab :
Cette bibliothèque serait un paquet Python, et contiendrait toutes les fonctions et algorithmes mathématiques utilisés dans DataLab : - Une API d’algorithmes de bas niveau opérant sur des tableaux NumPy - Le modèle de données non-GUI de base de DataLab (par exemple, signaux, images) - Une API de calcul de haut niveau opérant sur les objets DataLab (par exemple, signaux, images)
Elle serait utilisée par DataLab lui-même, mais pourrait également être utilisée par des logiciels tiers (par exemple, des notebooks Jupyter, Spyder, Visual Studio Code, etc.)
Enfin, cette bibliothèque serait un bon moyen de partager les fonctionnalités mathématiques de DataLab avec la communauté scientifique : une collection d’algorithmes et de fonctions bien testés, bien documentés et faciles à utiliser
Remarque : il est déjà possible d’utiliser les fonctionnalités de traitement de DataLab depuis l’extérieur de DataLab en important le paquet cdl, mais ce paquet contient également le code GUI, qui n’est pas toujours nécessaire (par exemple, lors de l’utilisation de DataLab à partir d’un notebook Jupyter). L’idée ici est de créer un nouveau paquet qui ne contiendrait que les fonctionnalités mathématiques de DataLab, sans le code GUI.
Note
La bibliothèque mathématique DataLab pourrait être l’occasion de reconsidérer la conception des fonctions de traitement de DataLab. Actuellement, les fonctions de traitement travaillant sur des objets de signaux et d’images reposent sur des objets guidata.dataset.DataSet pour les paramètres d’entrée. C’est très pratique pour le développeur car cela permet de créer automatiquement une interface graphique pour les fonctions de traitement, mais ce n’est pas très flexible pour l’utilisateur car cela oblige à instancier un objet DataSet avec les bons paramètres avant d’appeler la fonction de traitement (ce qui peut être fastidieux surtout lorsqu’il s’agit de fonctions de traitement simples nécessitant seulement quelques paramètres). Ainsi, il pourrait être intéressant de considérer une conception plus flexible et simple, où les paramètres de traitement seraient passés en tant qu’arguments de mot-clé aux fonctions de traitement. Les objets DataSet pourraient être gérés en interne par les fonctions de traitement (par exemple, en appelant la méthode DataSet.create avec les arguments de mot-clé passés par l’utilisateur). Cela permettrait de conserver la fonctionnalité de génération automatique de l’interface graphique pour les fonctions de traitement, mais permettrait également d’appeler directement les fonctions de traitement avec des arguments de mot-clé, sans avoir à créer d’objet DataSet au préalable.
Créer un plugin Jupyter pour l’analyse de données interactive avec DataLab :
Il est déjà possible d’utiliser DataLab à partir d’un notebook Jupyter, grâce aux fonctionnalités de contrôle à distance (voir Contrôle à distance), mais il serait utile d’avoir un plugin dédié
Ce plugin permettrait d’utiliser DataLab comme noyau Jupyter, et d’afficher les résultats numériques de DataLab dans des notebooks Jupyter ou vice versa (par exemple, afficher les résultats de Jupyter dans DataLab)
Ce plugin permettrait également d’utiliser les fonctionnalités de traitement de DataLab à partir de notebooks Jupyter
Un cas d’utilisation typique pourrait également consister à utiliser DataLab pour manipuler des signaux ou des images de manière efficace, et à utiliser Jupyter pour l’analyse de données personnalisée basée sur des algorithmes spécifiques / faits maison
Ce plugin pourrait être implémenté en utilisant l’interface du noyau Jupyter (voir ci-dessus)
Créer un plugin Spyder pour l’analyse de données interactive connectée à DataLab :
Il s’agit exactement du même cas d’utilisation que pour le plugin Jupyter, mais pour Spyder
Ce plugin pourrait également être implémenté en utilisant l’interface du noyau Jupyter (voir ci-dessus)
Ajouter la prise en charge des séries temporelles (voir Issue #27)
Ajouter une interface de noyau Jupyter à DataLab :
Cela permettrait d’utiliser DataLab à partir d’autres logiciels, tels que des notebooks Jupyter, Spyder ou Visual Studio Code
Cela permettrait également de partager des données entre DataLab et d’autres logiciels (par exemple, afficher les résultats numériques de DataLab dans des notebooks Jupyter ou vice versa, afficher les résultats de Jupyter dans DataLab, etc.)
Après un premier examen rapide, il semble que l’interface du noyau Jupyter ne soit pas simple à implémenter, de sorte qu’il peut ne pas être utile de s’y atteler (la communication entre DataLab et Jupyter est actuellement déjà possible grâce aux fonctionnalités de contrôle à distance)
Maintenance#
2024 : passer à gRPC pour le contrôle à distance (au lieu de XML-RPC), s’il y a besoin d’un protocole de communication plus efficace (voir Issue #18)
2025 : abandonner le support de PyQt5 (fin de vie : mi-2025), et passer à PyQt6 ; cela devrait être simple, grâce à la couche de compatibilité qtpy et au fait que PlotPyStack est déjà compatible avec PyQt6)
Autres tâches#
Créer un modèle de plugin DataLab (voir Issue #26)
Jalons passés#
DataLab 0.11#
Ajouter une fonctionnalité de glisser-déposer aux panneaux de signaux et d’images, pour permettre de réorganiser les signaux et les images (voir Issue #17)
Ajouter des boutons « Monter » et « Descendre » aux panneaux de signaux et d’images, pour permettre de réorganiser les signaux et les images (voir Issue #22)
Ajouter des fonctionnalités de convolution 1D, d’interpolation, de rééchantillonnage et d’élimination des tendances
DataLab 0.10#
Développer un plugin DataLab très simple pour démontrer le système de plugins
Sérialiser les styles de courbes et d’images dans les fichiers HDF5
Ajouter une option globale « Rafraîchissement automatique », pour pouvoir désactiver le rafraîchissement automatique de la fenêtre principale lors de l’exécution de plusieurs étapes de traitement, améliorant ainsi les performances
Améliorer la lisibilité des courbes (par exemple, éviter les lignes en pointillés, utiliser des couleurs contrastées et utiliser l’anti-crénelage)
DataLab 0.9#
Python 3.11 est la nouvelle référence
Exécuter les calculs dans un processus séparé :
Exécuter un « serveur de calcul » en arrière-plan, dans un autre processus
Pour chaque calcul, envoyer les données sérialisées et la fonction de calcul au serveur et attendre le résultat
Il est alors possible d’arrêter n’importe quel calcul à tout moment en tuant le processus du serveur et en le redémarrant (éventuellement après avoir incrémenté le numéro de port de communication)
Optimiser les performances d’affichage des images
Ajouter une boîte de dialogue de préférences
Ajouter de nouvelles fonctionnalités de traitement d’images : débruitage, …
Résultats du traitement d’images : ajout de la prise en charge des formes polygonales (par exemple, pour la détection des contours)
Nouveau système de plugins : API pour les extensions tierces
Objectif n°1 : un plugin doit être gérable à l’aide d’un seul script Python, qui inclut une extension de ImageProcessor, ActionHandler et une nouvelle prise en charge du format de fichier
Objectif n°2 : les plugins doivent simplement être stockés dans un dossier qui est par défaut le répertoire de l’utilisateur (même dossier que le fichier de configuration « .DataLab.ini »)
Ajouter un système de macro-commandes :
Nouvel éditeur Python intégré
Scripts utilisant la même API que les scénarios de test applicatifs de haut niveau
Prise en charge de l’enregistrement de macro
Ajouter un serveur xmlrpc pour permettre le contrôle à distance de DataLab :
Contrôle des principales fonctionnalités de DataLab (ouvrir un signal ou une image, ouvrir un fichier HDF5, etc.) et des fonctionnalités de traitement (exécuter un calcul, etc.)
Prendre le contrôle de DataLab à partir d’un logiciel tiers
Exécuter des calculs interactifs à partir d’un IDE (par exemple Spyder ou Visual Studio Code)