EDNA
EDNA est une plate-forme, un framework pour développer des applications massivement parallèles (multi-threadées) pour faire de l'analyse de données en ligne pour les synchrotrons (et autres). Chaque application EDNA est composée de plugins d'exécution (qui font des choses), de plugins de contrôle qui servent à chaîner (en parallèle ou en série) des plugins d'exécution et qui constituent donc la logique de l'application et enfin les lanceurs qui initialisent l'environnement de travail et lancent les plugins.
Lanceurs
EDNA dispose de trois types de lanceurs :
- Ligne de commande tout naturellement, en donnant la structure de donnée en XML sur la ligne de commande
- DeviceServeur Tango qui communique via CORBA avec des interfaces graphiques (par exemple)
- Un lanceur parallèle qui permet de lancer des plugins en parallèle sur un grand nombre de données
Plugins d'exécution
EDNA dispose de près d'une centaine de plugins d'exécution qui, soit appellent un programme externe, soit utilisent une bibliothèque python (Numpy, Scipy, PIL...) pour traiter des données. Ils forment la boîte à outil scientifique de EDNA.
Plugins de contrôle
Ce sont des enchaînements d'autres plugins pour réaliser des tâches plus ou moins complexes.
La robustesse de EDNA est en grande partie due à sa politique de tests très stricte des plugins qui sont mis en commun.
Ceci assure la non régression d'une part et la pérennité des application écrites avec EDNA.
EDNA est écrit en python. Le projet est testé quotidiennement sous linux avec C-Python et occasionnellement avec Jython. Il fonctionne également nativement sous MacOSX avec C-Python.
Le portage sous Windows est une Arlesiène: le noyau EDNA fonctionne sous windows mais en l'absence de demande, de développeurs et de logiciels scientifiques en ligne de commande pour cet environnement, la priorité pour ce portage est minimale.
Nous développons des applications de traitement de données en ligne pour le synchrotron ESRF en utilisant EDNA:
MXv1
Application permettant la caractérisation rapide de cristaux de protéines à partir de quelques clichés de diffraction X. Une stratégie d'acquisition des données est calculée en quelques secondes.
Diffraction Computed Tomography
Application de tomographie à partir d'un micro-faisceau X utilisant le diffraction des cristallites contenus dans le matériau. Elle nécessite une intégration azimutale et l'assemblage d'un grand nombre de données avant la reconstruction tomographique. L'approche multi-threadée de EDNA a permis de passer le temps de calcul de dizaines d'heures à quelques minutes.
BioSaxs
L'application de la diffraction X aux petits angles sur des protéines en solution est en cours de développement entre le Synchrotron Diamond (UK), l'EMBL de Hambourg (D) et l'ESRF (Eu).
Photographie numérique
Le plus gros reproche fait à EDNA c'est qu'il nécessite un très bon niveau tant en science pour comprendre les applications qu'en méthodes de programmation, ce qui limite le nombre de personnes qui peuvent développer avec cet outil. En choisissant un exemple non-scientifique (la dé-RAW-tisation de photos numériques) pour le tutoriel EDNA, nous espérons faciliter l'apprentissage de EDNA pour augmenter la communauté de développeurs autour de cette plate-forme.
EDNA apporte beaucoup d'importance aux méthodes de programmation, à la qualité du code (revue de code croisée), sa maintenabilité tout ceci prime toujours sur les performances brutes ou la vitesse de développement.
Quand j'ai commencé à travailler avec EDNA (avant de travailler pour EDNA), voici les défauts que je lui ai trouvé :
- La modélisation de structures de données (UML) est obligatoire, sans elle rien n'est possible ce qui est frustrant.
- Conventions de code très strictes, souvent empruntées au java (ce qui déstabilise le développeur python)
- Structure des classes assez abstraites et grand nombre de niveau d'héritages (mais cela s'améliore ...)
- Nécessité d'une revue de code pour toute modification du noyau, même pour une seule ligne.
- Perte de temps lié à l'écriture des tests (pourtant on y gagne en maintenabilité).
Commentaires
Formation EDNA
La prochain formation pour les développeurs souhaitant faire des applications parallèles avec EDNA aura lieu à l'ESRF (Grenoble) les 15 et 16 novembre 2010.
Utilisé dans 3 sites
Ce logiciel est utilisé sur au moins 3 sites mais nous n'avons pas trouvé de relecteur parlant français pour relire cette fiche : elle est donc présentée comme logiciel à valider.