Système de gestion du workflow scientifique

30

Quelqu'un peut-il me recommander un bon système de gestion de flux de travail (WMS), de préférence en Python? Jusqu'à présent, j'utilise GNU Make, mais cela introduit une couche de complexité que je veux éviter. Un bon WMS doit avoir les caractéristiques suivantes:

  • s'intègre facilement avec les outils de ligne de commande et les scripts Python,
  • simple à utiliser et léger,
  • gérer les dépendances,
  • fournir une interface de ligne de commande,
  • fournir un mécanisme de journalisation,
  • (facultatif) fournir la provenance des données.

Je sais que les WMS sont très populaires en bioinformatique (par exemple Galaxy ), mais je recherche quelque chose de plus général.

btel
la source
2
Ce n'est pas une réponse complète, mais puisque vous avez mentionné GNU Make et Python dans la même question, j'ai pensé que je vous dirigerais vers SCons: scons.org
Reid.Atcheson
Merci. Connaissez-vous des exemples d'utilisation de SCons pour des workflows scientifiques?
btel
J'ai trouvé qu'avec un peu de travail, vous pouvez demander à emacs de faire la plupart de cela (parfois en l'intégrant avec des outils externes). Ce n'est probablement pas ce que vous recherchez, cependant, car je trouve que je dois généralement utiliser des makefiles pour compiler quelque chose de non trivial.
Dan
1
Je peux écrire une réponse sur SCons et waf, qui sont des outils système de construction Python. J'utilise SCons depuis quelques mois maintenant, et je peux vous donner une idée de ce qui est bon et mauvais à ce sujet par rapport à GNU Make. Cela dit, je me demandais si vous pouviez préciser ce que vous entendez par «fournir un mécanisme de journalisation» et «fournir la provenance des données». En termes de journalisation, voulez-vous simplement un fichier journal, ou cherchez-vous quelque chose de plus comme un système de contrôle de version?
Geoff Oxberry
1
La journalisation peut être quelque chose de très simple comme les fichiers journaux, comme vous le suggérez, avec les horodatages de toutes les exécutions, la redirection de stderr et (facultativement) stdout. De plus, on pouvait conserver les résultats intermédiaires de chaque étape du workflow dans un répertoire séparé. La provenance des données ressemble davantage à un système de versions de contrôle qui conserve l'historique de tous les scripts de calcul, fichiers d'entrée et de sortie. Actuellement, j'utilise Makefiles + git mais je cherche quelque chose de mieux intégré et plus facile à utiliser. J'ai entendu parler de SCons mais je ne sais pas quel est son avantage sur Make.
btel

Réponses:

12

Pour une journalisation qui permet une reproductibilité complète, je recommande fortement le package python Sumatra . Il relie joliment le numéro de validation du contrôle de version, l'état de la machine et les fichiers de sortie à chaque exécution de programme et dispose d'une interface Web Django pour interagir avec la base de données des informations d'exécution. L'API python facilite l'intégration de la journalisation dans mes scripts.

Michael Schneider
la source
Sumatra a l'air vraiment intéressant; Je vais devoir essayer.
Geoff Oxberry
Il ne répond pas à toutes mes exigences, mais il est le plus proche de ce dont j'ai besoin. J'ai donc accepté la réponse. Divulgation: je suis l'un des développeurs de sumatra.
btel
8

Il y a quelques mois, je suis tombé sur le site Web hautement recommandé de Hans-Martin c. Gaudecker qui enseigne des cours comme «Pratiques de programmation efficaces pour les économistes». Dans son cours d'automne 2010, il a introduit les SCons, dans son cours d'automne 2011, il est passé à la waf , qui est censée être plus rapide que les SCons mais toujours basée sur Python. Les diapositives des deux cours peuvent être téléchargées et j'ai (en tant que spécialiste des sciences sociales) les ai trouvées très instructives et instructives.

Bernd Weiss
la source
1
SCons est assez rad. Il supporte tout aussi bien des schémas très compliqués ou très simples!
meawoppl
2
Le compromis entre les SCons et tout outil de construction plus rapide a généralement à voir avec la vérification des dépendances. Pour les langages traditionnels (C, C ++, Fortran, D, Python, Java, etc.), SCons déterminera automatiquement les dépendances en utilisant un algorithme basé sur le hachage MD5, plutôt que des horodatages, qui peuvent être fragiles lors du traitement des fichiers générés. Tout le reste bat les SCons en termes de performances (temps nécessaire pour créer un logiciel) car ils ne font pas autant de vérification des dépendances ou déchargent la vérification des dépendances vers un autre outil (comme les compilateurs utilisés).
Geoff Oxberry
1
Le premier lien de votre réponse est le 404 maintenant. Il semble que sa nouvelle page soit sur uni-bonn.de/~hmg308/teaching.html
liori
SCons propose une vérification de la mise à jour configurable, vous pouvez donc choisir entre l'horodatage, le hachage ou une combinaison. Cela dit, je suis de plus en plus désenchanté: certaines choses sont très faciles (par exemple, la compilation de logiciels à l'aide d'une chaîne d'outils pour laquelle SCons a de bons packages d'outils) et presque tout est possible, mais cela devient très rapidement très laid.
Eric Anderson
4

Jetez un œil à VisTrails . Je ne l'ai pas utilisé (seulement des trucs homebrew autour make), mais il a l'air bien pensé, avec un bon doc, et a de vrais utilisateurs à la NASA etc.
(Cherchez-vous des outils pour 1-2 personnes, 4-5, plus ?)

Ajouté: pas tout à fait votre question, mais je pense qu'il vaut la peine de répéter:
pour des expériences informatiques uniformes et reproductibles, il faut évidemment

  • structures de répertoires uniformes, par exemple quand-quoi / in / out / scripts / log /
  • réglage uniforme et écho de tous les paramètres pour une course
  • scripts pour résumer / tracer / évaluer les séries.

Voir aussi software-carpentry.org : "Le problème que nous essayons de résoudre est que les scientifiques passent souvent 40% ou plus de leur temps à lutter avec des logiciels, mais 95% ou plus d'entre eux sont principalement autodidactes".

denis
la source
4

Toutes les exigences que vous avez mentionnées dans votre question sont remplies par le système de script parallèle Swift.

J'ai passé un an avec le groupe Swift en tant que chercheur postdoctoral (doctorat en workflows scientifiques). Nous avons aidé des scientifiques et des chercheurs de différents domaines à répondre à leurs besoins informatiques.

Swift est un framework open source pour exécuter des workflows en parallèle. Il est appelé script parallèle principalement pour souligner le fait qu'il fournit une interface de script pour créer des flux de travail par opposition à l'interface GUI en forme de flèche.

Je peux personnellement vous aider à démarrer et à exécuter votre application avec Swift. Pour en savoir plus sur Swift, veuillez jeter un œil ici .

mkc
la source
Bienvenue sur scicomp! Cela vous dérange-t-il d'étendre un peu plus votre réponse (cliquez sur le petit bouton gris d'édition sous votre réponse) pour éditer. Pouvez-vous également rendre votre connexion à Swift un peu plus claire dans votre réponse? Merci!
Aron Ahmadia
1

Taverna est un WMS open source, pas Python mais Java.

GertVdE
la source
L'avez-vous utilisé?
Deathbreath
Merci pour la suggestion. J'ai vu le site Web de Taverna, mais il ressemble à un outil principalement graphique. Je recherche plutôt quelque chose basé sur la ligne de commande. Taverna fournit un outil en ligne de commande, mais ce n'est que pour exécuter des workflows, mais pas pour les construire (est-ce correct?). Il semble également très axé sur la bioinformatique.
btel
Il me semble que vous recherchez plus un LIMS adapté aux expériences numériques, plutôt qu'un système de construction comme make ou scons?
GertVdE
Désolé de demander. Que signifie LIMS exactement?
btel
1
Système de gestion des informations de laboratoire. Il s'agit d'une famille d'outils pour garder un journal des expériences de laboratoire. Mais ce sont généralement, par exemple, des analyses chimiques. Vous voudrez peut-être Google pour "des expériences in silico", c'est-à-dire des expériences qui sont des simulations sur un ordinateur et qui nécessitent une "journalisation" -> stockage des données d'entrée / sortie, quelle version du logiciel a été utilisée, hypothèses, ...
GertVdE
0

Dexy sonne comme si c'était exactement ce que vous recherchez après. Depuis le site:

Dexy est un outil d'automatisation de projet polyvalent avec de nombreuses fonctionnalités conçues pour travailler avec des documents. Dexy est écrit en Python et possède une interface de ligne de commande. C'est un logiciel open source avec une licence MIT.

Que fait Dexy?

Dexy facilite la création de documents techniques en effectuant les parties répétitives pour vous. Dexy fournit une interface cohérente aux outils et scripts afin que vous n'ayez pas à les exécuter manuellement. La configuration dexy de votre projet garde une trace de ce qui doit être exécuté, dans quel ordre et avec quels paramètres. De cette façon, tout votre processus est capturé afin que n'importe qui puisse l'exécuter à l'aide d'une simple commande et les résultats seront cohérents.

Vous souhaitez rédiger un article de blog avec des exemples montrant comment utiliser une API. Dexy:

  • exécutez votre exemple de code, en enregistrant les résultats
  • appliquer la coloration syntaxique à votre exemple de code (à l'aide de pygments)
  • insérez les résultats des appels API et votre exemple de code prettifié dans votre message (en utilisant jinja)
  • convertir votre article de blog au format markdown au format HTML (à l'aide de markdown python ou pandoc).
  • télécharger le code HTML vers l'API WordPress en mode brouillon (à l'aide de l'API WordPress)
  • publier votre article de blog lorsque vous avez terminé de le peaufiner
rien101
la source
Je suis Dexy depuis quelques années et j'ai l'impression que ce n'est pas largement adopté et qu'il n'est pas activement développé. Ces traits pourraient être un problème de poule et d'oeuf (une petite base d'utilisateurs signifie qu'il n'est pas développé activement, le fait de ne pas être développé activement nuit à la croissance de la base d'utilisateurs). Cela a l'air super cool, et à première vue, je pense que c'est exactement ce dont les scientifiques ont besoin pour élargir la reproductibilité au-delà d'IPython, de knitr et de scripts sur mesure, mais pour une raison quelconque ... il ne semble tout simplement pas qu'il soit utilisé. Ana Nelson ne blogue même pas beaucoup à ce sujet et elle l'a écrit.
Geoff Oxberry
Eh bien, le dernier blob post date de janvier, et il y a eu 3 commits cette année. Pas super actif, mais pas mort, surtout si c'est un de ces projets qui se stabilise et n'a pas vraiment besoin de plus de travail. Il y a d'autres projets que j'utilise avec des histoires de développement récentes beaucoup plus mortelles. En ce qui concerne le problème des poulets et des œufs, peut-être qu'un vote positif ici et partout où il est mentionné sur SE aiderait: P
naught101
0

Knime ou Rapidminer pourraient également répondre à toutes les exigences. Qu'ils le fassent est à gagner :)

Grimbly
la source
Peut-être aussi Kepler .
Grimbly
De plus, Nifi est assez astucieux, mais je ne pense pas qu'il couvre entièrement toutes les exigences.
Grimbly