Feuille de route#

Ce document décrit les plans de développement actuels et futurs de DataLab :

📈 Financement#

ℹ️ En tant que projet open-source, DataLab s’appuie sur le soutien de diverses organisations et subventions pour financer son développement et sa maintenance. La feuille de route du projet est façonnée par les besoins et les priorités de ses utilisateurs, ainsi que par la disponibilité des ressources. Le travail financé est priorisé et programmé en conséquence, tandis que les contributions de la communauté sont les bienvenues et encouragées.

Depuis le début du projet en 2023, le développement de DataLab a été financé par les subventions et organisations suivantes :

Financement

Description

CEA

CEA - Commissariat à l’énergie atomique et aux énergies alternatives :
• DataLab a été initialement créé pour analyser les données de la structure Laser Mégajoule (LMJ) du CEA
• Interfacé avec le système de contrôle du LMJ, DataLab est utilisé pour traiter et visualiser les signaux et images acquis avec des diagnostics plasmas (appareils tels que caméras, numériseurs, spectromètres, etc.)
• Il est également utilisé pour des activités de R&D autour de l’installation LMJ (métrologie, analyse de données, etc.)
• Le CEA est le principal investisseur dans DataLab et le principal contributeur au projet : les ingénieurs du CEA participent activement à la feuille de route

CODRA

CODRA, société d’ingénierie en informatique et éditeur de logiciels, soutient le projet open source DataLab depuis sa création :
• Gestion de projet open source et communication (réseaux sociaux, site web, etc.)
• Conférences et événements : SciPy 2024, PyData Paris 2024, Open Source Experience 2024, etc.
• Documentation : tutoriels, vidéos, et bien plus

NLnet

La Fondation NLnet, dans le cadre du NGI0 Commons Fund soutenu par la Commission européenne, a financé la refonte de l’architecture de base de DataLab - une refonte majeure intégrée à la version 1.0 (novembre 2025) :
• L’objectif était de découpler le modèle de données, le calcul et l’E/S de l’interface utilisateur
• Cela a conduit à la création de la bibliothèque Sigima, qui gère désormais le traitement des données indépendamment de l’interface graphique de DataLab
• Cette refonte améliore la maintenabilité, la testabilité et l’extensibilité de la base de code
• Cela permet également à DataLab d’être utilisé comme une bibliothèque (via Sigima) dans d’autres projets logiciels, favorisant l’intégration et la réutilisation

🏗️ Jalons futurs#

ℹ️ Les tâches suivantes sont des objectifs à long terme pour DataLab. Elles ne sont pas programmées pour une version spécifique et peuvent évoluer au fil du temps en fonction des besoins des utilisateurs et de l’orientation du projet.

Le tableau suivant résume les évolutions futures et les plans de maintenance de DataLab qui sont détaillés dans les sections ci-dessous.

Type de jalon

Description

🔄 Evolutions futures

• Prise en charge de l’acquisition de données
• Interface Web
• Prise en charge des séries temporelles
• Connecteurs de base de données
• Plugin Jupyter pour l’analyse de données interactive
• Plugin Spyder pour l’analyse de données interactive
• Interface de noyau Jupyter pour DataLab

🛠️ Maintenance

• Passer à gRPC pour le contrôle à distance
• Abandonner la prise en charge de Qt5 et migrer vers Qt6

🧱 Autres tâches

• Créer un modèle de plugin DataLab

🔄 Prise en charge de l’acquisition de données#

Ajouter la prise en charge de l’acquisition de données serait une avancée majeure pour faire de DataLab non seulement une plateforme de traitement des signaux et des images, mais aussi un outil polyvalent pour les flux de travail expérimentaux en temps réel. L’idée serait de permettre aux utilisateurs d’acquérir des données directement à partir de divers appareils matériels (caméras, numériseurs, spectromètres, etc.) au sein même de DataLab.

Une telle fonctionnalité permettrait une intégration transparente entre l’acquisition et l’analyse, permettant aux utilisateurs de traiter et de visualiser les données immédiatement après leur capture, sans avoir à changer d’outil ou à exporter/importer des fichiers.

Bien qu’aucun travail de conception formel n’ait encore été établi, une approche viable pourrait être de :

  • Introduire une nouvelle famille de plugins dédiée à l’acquisition de données, suivant l’architecture modulaire de DataLab ;

  • Définir une API générique pour les plugins d’acquisition, garantissant flexibilité et compatibilité entre les types de dispositifs ;

  • Tirer parti des solutions existantes telles que PyMoDAQ, un cadre d’acquisition de données basé sur Python déjà compatible avec un large éventail d’instruments de laboratoire.

Une collaboration potentielle avec l’équipe de développement de PyMoDAQ pourrait être envisagée, pour bénéficier de leur écosystème et éviter de dupliquer les efforts. Cela aiderait également à favoriser l’interopérabilité et à promouvoir des normes ouvertes dans la communauté d’instrumentation scientifique Python.

🌐 Interface Web#

À mesure que l’architecture modulaire de DataLab évolue, une étape naturelle consiste à fournir une interface Web pour compléter l’application de bureau existante.

Une interface Web permettrait aux utilisateurs de :

  • Exécuter DataLab à distance (par exemple depuis un serveur) et y accéder via un navigateur ;

  • Effectuer des tâches de traitement et de visualisation sans avoir besoin d’un environnement Python local ;

  • Faciliter l”analyse de données collaborative, le partage de sessions ou de résultats avec des collègues ;

  • Intégrer JupyterHub, des tableaux de bord ou des outils de gestion de laboratoire pour une utilisation centralisée.

Cette interface pourrait être construite sur la base de la bibliothèque Sigima (qui a été récemment créée à partir de l’externalisation des fonctionnalités de traitement de DataLab), exposant ses fonctionnalités via une interface Web - en utilisant éventuellement des outils tels que JupyterLab extensions, Panel ou Dash, en fonction de la pile choisie.

Bien que toujours exploratoire, cette direction augmenterait l”accessibilité et la portabilité de DataLab, en particulier dans les environnements académiques et industriels.

ℹ️ L’interface Web ne doit pas remplacer l’application de bureau, mais plutôt la compléter en fournissant un mode d’accès différent. La philosophie de DataLab est de rester une application locale qui ne nécessite pas de serveur pour fonctionner, garantissant la confidentialité et la sécurité des données. Plus précisément, l’interface Web permettra aux utilisateurs d’exécuter DataLab sur un serveur et d’y accéder à distance - généralement sur un réseau local, mais ce ne sera pas une solution basée sur le cloud ou une première étape vers une application entièrement basée sur le cloud, ce qui irait à l’encontre de la philosophie du projet.

⏱️ Prise en charge des séries temporelles#

DataLab se concentre actuellement sur le traitement générique des signaux et des images, mais de nombreux cas d’utilisation - en particulier dans l’instrumentation scientifique et la physique expérimentale - impliquent des données de séries temporelles.

Ajouter une prise en charge dédiée des séries temporelles faciliterait :

  • Prendre en charge des signaux avec des horodatages associés ou un échantillonnage non uniforme ;

  • Effectuer un traitement et une visualisation sensibles au temps (alignement d’événements, filtrage basé sur le temps, rééchantillonnage) ;

  • Intégrer des systèmes externes générant des données indexées dans le temps.

Cette fonctionnalité est tracée par l”Issue #27, où les cas d’utilisation potentiels et les considérations de conception sont discutés.

Introduire une gestion robuste des séries temporelles élargirait l’applicabilité de DataLab dans des domaines tels que l’enregistrement de données, le contrôle lent et la surveillance en temps réel.

🗃️ Connecteurs de base de données#

Actuellement, DataLab fonctionne principalement sur des fichiers et des structures de données en mémoire. L’ajout de connecteurs aux bases de données étendrait considérablement ses capacités, en particulier pour les utilisateurs traitant de grands ensembles de données structurées ou historiques.

Cette fonctionnalité permettrait à DataLab de :

  • Interroger et charger des données à partir de bases de données SQL ou NoSQL (PostgreSQL, SQLite, MongoDB, etc.) ;

  • Prendre en charge des flux de travail pilotés par les métadonnées, où les expériences ou ensembles de données sont référencés à partir d’une base de données ;

  • Stocker les résultats d’analyse ou les annotations dans une base de données pour la traçabilité et la reproductibilité ;

  • Faciliter l’intégration dans les systèmes de gestion de l’information de laboratoire (LIMS) ou les infrastructures de données d’entreprise.

Le design pourrait inclure :

  • Un système basé sur des plugins pour prendre en charge divers backends de base de données ;

  • Une interface de configuration simple pour les paramètres de connexion et la gestion des requêtes ;

  • Intégration avec pandas ou SQLAlchemy pour un échange de données flexible.

Cette évolution aiderait à combler le fossé entre l’acquisition de données, l’analyse et le stockage à long terme, permettant des flux de travail scientifiques plus robustes.

📓 Plugin Jupyter pour l’analyse de données interactive#

Bien que DataLab puisse déjà être contrôlé à distance depuis un notebook Jupyter - grâce à ses capacités de contrôle à distance existantes (voir Contrôle à distance) - l’expérience utilisateur pourrait être considérablement améliorée en développant un plugin Jupyter dédié.

Ce plugin offrirait une intégration plus étroite entre Jupyter et DataLab, offrant les fonctionnalités suivantes :

  • Utiliser DataLab comme un noyau Jupyter, permettant un accès direct à ses capacités de traitement depuis un notebook ;

  • Afficher les résultats numériques de DataLab dans Jupyter, et vice versa - par exemple, importer des résultats calculés dans un notebook Jupyter dans l’interface DataLab ;

  • Autoriser la manipulation interactive des données : utiliser DataLab pour des opérations efficaces sur les signaux et les images, et Jupyter pour des routines d’analyse de données personnalisées ou faites maison ;

  • Créer un pont entre les flux de travail de script et d’interface graphique, rendant DataLab plus attrayant pour les utilisateurs scientifiques familiers avec les environnements Jupyter.

Techniquement, ce plugin pourrait s’appuyer sur l”interface de noyau Jupyter pour exposer les capacités de DataLab dans un contexte de programmation interactive.

Une telle intégration renforcerait le rôle de DataLab dans l’écosystème scientifique Python et faciliterait les flux de travail d’analyse pilotés par des notebooks reproductibles.

🧩 Plugin Spyder pour l’analyse de données interactive#

Un plugin pour l”IDE Spyder répondrait aux mêmes cas d’utilisation que le plugin Jupyter, offrant une intégration transparente entre DataLab et l’environnement interactif de Spyder.

Ce plugin permettrait aux utilisateurs de :

  • Interagir avec DataLab directement depuis Spyder ;

  • Visualiser ou envoyer des données entre l’interface DataLab et la console Spyder ;

  • Utiliser les capacités de traitement de DataLab en temps réel tout en scriptant des flux de travail d’analyse personnalisés dans Spyder.

Comme pour l’intégration Jupyter, ce plugin pourrait être mis en œuvre en s’appuyant sur l”interface de noyau Jupyter (voir Contrôle à distance), que Spyder prend déjà en charge en interne.

Un tel plugin améliorerait l’utilisabilité de DataLab pour les scientifiques et les ingénieurs qui préfèrent l’environnement de développement intégré de Spyder pour l’analyse exploratoire.

🧠 Interface de noyau Jupyter pour DataLab#

Mettre en œuvre une interface de noyau Jupyter native pour DataLab fournirait un moyen plus intégré de l’utiliser à partir d’autres environnements tels que Jupyter notebooks, Spyder ou Visual Studio Code.

Cette interface permettrait :

  • Contrôle direct de DataLab à partir d’outils tiers qui prennent en charge les noyaux Jupyter ;

  • Échange de données bidirectionnel : par exemple, afficher les résultats de DataLab dans un notebook, ou visualiser les données générées par Jupyter dans l’interface DataLab ;

  • Intégration plus étroite dans les flux de travail de script et les IDE au-delà d’un simple contrôle à distance.

Cependant, sur la base d’explorations initiales, la mise en œuvre d’un noyau Jupyter complet peut être non triviale et potentiellement chronophage. Étant donné que le contrôle à distance permet déjà la communication entre DataLab et Jupyter (voir Contrôle à distance), la valeur ajoutée d’une intégration complète du noyau doit être soigneusement évaluée par rapport à sa complexité et à son coût de maintenance.

Cette option reste ouverte à la discussion en fonction de la demande des utilisateurs et des ressources de développement.

🛠️ Plan de maintenance#

🔄 2026 : Passer à gRPC pour le contrôle à distance#

DataLab s’appuie actuellement sur XML-RPC pour le contrôle à distance, ce qui peut devenir une limitation pour des cas d’utilisation plus avancés ou haute performance. Si le besoin se fait sentir pour un protocole de communication plus efficace, robuste et extensible, un passage à gRPC est envisagé.

Cette amélioration est tracée par l”Issue #18.

🚫 2025 : Abandonner la prise en charge de Qt5 et migrer vers Qt6#

Avec la fin de vie de Qt5 prévue pour mi-2025, DataLab migrera entièrement vers Qt6. Cette transition devrait être simple, grâce à :

  • L’utilisation de la couche d’abstraction qtpy ;

  • La bibliothèque PlotPyStack est déjà compatible avec Qt6.

Ce changement garantira la compatibilité avec les futures versions de Qt et les environnements Python modernes.

🧱 Autres tâches#

🧩 Créer un modèle de plugin DataLab#

Pour encourager les contributions de la communauté et faciliter le développement d’extensions, un modèle pour créer des plugins DataLab est prévu.

Ce modèle permettrait :

  • Fournir une structure prête à l’emploi avec les meilleures pratiques ;

  • Aider les nouveaux développeurs à comprendre rapidement l’architecture des plugins ;

  • Promouvoir la cohérence et la modularité entre les plugins tiers.

Cette tâche est tracée par l”Issue #26.

🏆 Jalons passés#

De la version 0.9 à 1.0, DataLab a connu un développement et des améliorations significatifs. Le projet a évolué d’un simple outil d’analyse de données à une plateforme puissante pour le traitement et la visualisation des signaux et des images.

Ces améliorations ont été rendues possibles grâce au soutien des organisations suivantes (voir Financement pour plus de détails) :

  • CEA: Commissariat à l’énergie atomique et aux énergies alternatives

  • CODRA: société d’ingénierie en informatique et éditeur de logiciels

  • NLnet: Fondation NLnet, dans le cadre du NGI0 Commons Fund

Le tableau suivant résume les principaux jalons passés de DataLab, y compris les dates de publication et une brève description des fonctionnalités ou améliorations introduites dans chaque version.

Jalon

Description

1.0
2025/11

• Édition interactive des objets : modifier les paramètres de création/de traitement et recalculer les objets
• Nouvelle création d’objets : générateurs de signaux/images paramétriques, bruit de Poisson, objets à valeurs complexes
• Traitement amélioré : fonctionnalités d’impulsion, filtres idéaux, rééchantillonnage 2D, convolution, projections
• ROI et annotations : copier/coller, importer/exporter, création de grille, logique ROI inverse
• Visualisation : étiquettes de résultats fusionnées, prise en charge des dates et heures, optimisations des performances
• Formats de fichiers : FT-Lab (.sig, .ima), fichiers texte coordonnés, prise en charge améliorée de HDF5
• Coordonnées non uniformes et étalonnage polynomial
• Améliorations de l’API publique pour la programmabilité

0.20
2025/04

• Images ANDOR SIF : ajouter la prise en charge des images de fond
• Éditeur de tableau : nouvelles fonctionnalités de copie, d’exportation et de collage
• Analyse de Fourier : nouvelle fonctionnalité de remplissage nul pour les signaux et les images
• Éditeur de ROI : l’outil de sélection de ROI est désormais actif par défaut
• Traitement du signal : mode X-Y, fonctionnalités de recherche d’abscisse/ordonnée, largeur complète à y=…
• API publique : ajouter les arguments group_id et set_current aux méthodes d’ajout

0.19
2025/04

• Ouvrir tous les signaux ou images d’un dossier (récursivement)
• Éditeur de ROI : ajouter des options pour créer des ROI à partir de coordonnées

0.18
2024/11

• Nouveau mode d’opérande par paires (l’opération est effectuée sur chaque paire de signaux/images)
• Nouvelle fonctionnalité de ROI polygonal
• Prise en charge de Windows 7 SP1 à Windows 11 avec un seul installateur

0.17
2024/08

• Introduire la prise en charge des ROI dans toutes les fonctionnalités de traitement
• Ajouter des opérations arithmétiques sur les signaux et les images
• Nouveau package Ubuntu pour une installation native sur Linux
• Nouveau package Conda pour toutes les plateformes (Windows, Linux, MacOS)

0.16
2024/06

• Nouveau processus de validation pour les fonctionnalités de signal et d’image
• Ajouter la prise en charge des images binaires (déverrouillage de nouvelles fonctionnalités de traitement)

0.15
2024/04

• Nouvel installateur MSI pour la version autonome sur Windows
• Ajouter la prise en charge de fichiers texte/CSV volumineux (> 1 Go)
• Ajouter une fonctionnalité de sous-échantillonnage automatique

0.14
2024/03

• Navigateur HDF5 : prise en charge de plusieurs fichiers, informations détaillées sur les groupes et les attributs
• Nouveau package Debian pour une installation native sur Linux

0.12
2024/02

• Ajouter une visite et une fonctionnalité de démonstration
• Ajouter des tutoriels à la documentation
• Ajouter un assistant d’importation de fichiers texte

0.11
2024/01

• Ajouter des fonctionnalités pour réorganiser les signaux et les images (par exemple, glisser-déposer)
• Ajouter des fonctionnalités de convolution 1D, d’interpolation, de rééchantillonnage et de désajustement

0.10
2023-12

• Développer un plugin DataLab très simple pour démontrer le système de plugins
• Permettre de désactiver le rafraîchissement automatique lors de plusieurs étapes de traitement
• Sérialiser les styles de courbe et d’image dans des fichiers HDF5
• Améliorer la lisibilité des courbes

0.9
2023-11

• Exécuter des calculs dans un processus séparé
• Ajouter un système de plugin : API pour les extensions tierces
• Ajouter un système de macro-commande
• Ajouter un serveur XML-RPC pour permettre le contrôle à distance de DataLab