Feuille de route#
Ce document décrit les plans de développement actuels et futurs de DataLab :
Il contient des informations sur les sources de financement et les jalons futurs.
Il fournit également un résumé des jalons passés pour donner un contexte à l’évolution du projet.
📈 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 - Commissariat à l’énergie atomique et aux énergies alternatives : |
|
CODRA, société d’ingénierie en informatique et éditeur de logiciels, soutient le projet open source DataLab depuis sa création : |
|
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) : |
🏗️ 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 |
🛠️ Maintenance |
• Passer à gRPC pour le contrôle à distance |
🧱 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
PlotPyStackest 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 |
• Édition interactive des objets : modifier les paramètres de création/de traitement et recalculer les objets |
0.20 |
• Images ANDOR SIF : ajouter la prise en charge des images de fond |
0.19 |
• Ouvrir tous les signaux ou images d’un dossier (récursivement) |
0.18 |
• Nouveau mode d’opérande par paires (l’opération est effectuée sur chaque paire de signaux/images) |
0.17 |
• Introduire la prise en charge des ROI dans toutes les fonctionnalités de traitement |
0.16 |
• Nouveau processus de validation pour les fonctionnalités de signal et d’image |
0.15 |
• Nouvel installateur MSI pour la version autonome sur Windows |
0.14 |
• Navigateur HDF5 : prise en charge de plusieurs fichiers, informations détaillées sur les groupes et les attributs |
0.12 |
• Ajouter une visite et une fonctionnalité de démonstration |
0.11 |
• Ajouter des fonctionnalités pour réorganiser les signaux et les images (par exemple, glisser-déposer) |
0.10 |
• Développer un plugin DataLab très simple pour démontrer le système de plugins |
0.9 |
• Exécuter des calculs dans un processus séparé |