Experiment Process Management

= Contexte et objectif=

Mener des expériences dans le monde numérique (simulation, étude de système,...) est une tâche de plus en plus complexe. Cela est dû à plusieurs facteurs, dont:
 * complexité croissante des objets d'étude,
 * des méthodes utilisées (calcul parallèle, moteur de workflow...)
 * des plate-formes (cluster, accélérateurs,...)
 * des masses de données
 * des étapes à réalisées

De plus, depuis quelques années de nouveaux besoins sont apparus autour de la réproductibilité, tracabilité, le partage et la collaboration

Dans ce projet on se propose de déveloper un outil pour la gestion et l'aide à la gestion d'expérience. Il s'agit de développer un outil qui permettre de faire le suivi des expériences, ainsi que de réaliser certaines opérations liées à leur exécution.

Parmi les opérations souhaitées:
 * Initialisation d'un dépot git avec template de projet
 * Gestion de métadata
 * Ajout de résultats, et lien divers
 * Autre opération...

Cet outil complétera la tenue de cahier de laboratoire (ou journal de bord) et les outils plus bas niveau comme les moteurs de workflow ou/et outils rattachés à une plateforme.

= Plan de travail =
 * Etude de quelques projets comme
 * Popper
 * Common Workflow Language et cwltool
 * recherche bibliographique sur les cahiers de laboratoire électronique et les outils de conduite d'expérience


 * Proposer un schéma de BD faisant intervernir les notions de
 * experiment
 * job
 * environment

=Utilisation du language Nickel pour les workflows (Optionnel)=
 * Profiter des propriétés du language [Nickel https://github.com/tweag/nickel] afin de exprimer des workflows
 * pratiquement on utilisera le language nickel pour produire des workflows au format cwl (Common Workflow Language)

= Contraintes technologiques =
 * git
 * Python
 * Bibliothéques
 * click
 * sqlalchemy
 * fastapi
 * rich
 * plot.ly et dash (à discuter)