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.
Réponses:
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.
la source
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.
la source
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
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".
la source
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 .
la source
Taverna est un WMS open source, pas Python mais Java.
la source
Cette page mentionne certains packages: https://wiki.python.org/moin/FlowBasedProgramming
Un autre package prometteur non mentionné ici est Snakemake.
la source
Dexy sonne comme si c'était exactement ce que vous recherchez après. Depuis le site:
la source
Knime ou Rapidminer pourraient également répondre à toutes les exigences. Qu'ils le fassent est à gagner :)
la source