EDNA : environnement pour réaliser des programmes d'analyses de données en ligne

Ce logiciel a été développé (ou est en cours de développement) dans la communauté de l'Enseignement Supérieur et de la Recherche. Son état peut être variable (cf champs ci-dessous) donc sans garantie de bon fonctionnement.
Fiche dév Ens Sup - Recherche
  • Création ou MAJ importante : 27/07/10
  • Correction mineure : 05/10/10
  • Auteur de la fiche : Jérôme Kieffer (ESRF)
  • Responsable thématique : Christelle Dantec (CRBM)
Mots-clés
Fonctionnalités générales du logiciel

EDNA est un framework, un environnement permettant de réaliser des logiciels d'analyse de données en ligne, hautement parallèlisé et met sous contrôle des logiciels scientifiques en les enchaînant à la manière d'un pipe Unix, mais avec un contrôle individualisé de chacun des programmes sous-jacent. En enchaînant les différents programmes ont peut générer des chemins de traitement (workflow) qui sont réalisés en parallèle (multi-thread asynchrone) et obtenir des temps de traitement très courts, les résultats étant obtenus au cours de l'expérience et non pas en post-traitement.

EDNA est écrit en Python pur pour le noyau (kernel) mais certains plugins nécessitent des bibliothèques annexes comme numpy, scipy, PIL, h5py, ... et exploite très bien les capacités multi-core des machines modernes.

EDNA est basé sur 4 piliers :

  • Modularité : chaque plugin est soit un wrapper pour un executable, soit un control plugin pour un ou plusieurs exec plugin(s). Le coté multithread est géré au niveau du noyau, le programmeur de plugin n'a pas à s'en préoccuper en règle génerale.
  • Gestion de projet (visioconf, workshops, ...) : EDNA dispose d'un comité de pilotage pour coordonner ses développements.
  • Modèles de données (datamodels) décrits en UML --> exporté en XSD --> data-binding python pour assurer une sérialisation des données et pouvoir debugger en cas de problème.
  • Environnement de test: EDNA propose un environnement de test poussé, cela permet un déploiement plus rapide et plus sur et assure la non régression de la globalitê du projet.

Les développeurs de EDNA (ESRF, Diamond, ...) organisent régulièrement des "code-camp" de 1 ou 2 jours pour prendre en main la programmation de nouveaux plugins et enrichir la centaine de plugins déjà écrits et documentés.

Contexte d’utilisation du logiciel

Initialement EDNA a été développé pour la communauté de cristallographie des protéines (automatisation de la réduction des données) mais il est aujourd'hui utilisé pour d'autres domaines comme l'imagerie X (ESRF), l'archivage des données (Diamond, UK), les affinements de structures cristallines, ...

L'idée de EDNA est d'offrir un parallélisme de fils (thread) pour des tâches qui durent entre 0.1s et 10s; mais avec beaucoup de tâches, là ou les gestionnaires de queue/batch type PBS sont assez peu performants (initialisation de chaque processus). Il est néanmoins possible d'utiliser EDNA avec un gestionnaire de batch type SGE (Diamond, UK), Condor (à l'ESRF) ou PBS...

Publications liées au logiciel

EDNA: a framework for plugin-based applications applied to X-ray experiment online data analysis
M.-F. Incardona, G. P. Bourenkov, K. Levik, R. A. Pieritz, A. N. Popov and O. Svensson
J. Synchrotron Rad. (2009). 16, 872-879 [ doi:10.1107/S0909049509036681 ]

Abstract: EDNA is a framework for developing plugin-based applications especially for online data analysis in the X-ray experiments field. This article describes the features provided by the EDNA framework to ease the development of extensible scientific applications. This framework includes a plugins class hierarchy, configuration and application facilities, a mechanism to generate data classes and a testing framework. These utilities allow rapid development and integration in which robustness and quality play a fundamental role. A first prototype, designed for macromolecular crystallography experiments and tested at several synchrotrons, is presented.