Wissenschaftliches Workflow-Management-System


30

Kann mir jemand ein gutes Workflow-Management-System (WMS) empfehlen, vorzugsweise in Python? Bisher habe ich GNU Make verwendet, aber es bringt eine Ebene der Komplexität mit sich, die ich vermeiden möchte. Ein gutes WMS sollte folgende Eigenschaften haben:

  • Einfache Integration in Befehlszeilentools und Python-Skripte
  • einfach zu bedienen und leicht,
  • mit Abhängigkeiten umgehen,
  • Befehlszeilenschnittstelle bereitstellen,
  • Protokollierungsmechanismus bereitstellen,
  • (optional) Datenherkunft angeben.

Ich weiß, dass WMS in der Bioinformatik sehr beliebt sind (zum Beispiel Galaxy ), aber ich suche etwas allgemeineres.


2
Dies ist keine vollständige Antwort, aber da Sie GNU Make und Python in derselben Frage erwähnt haben, dachte ich, ich würde Sie auf SCons hinweisen
Reid.Atcheson

Vielen Dank. Kennen Sie Beispiele für die Verwendung von SCons für wissenschaftliche Workflows?
btel

Ich habe festgestellt, dass man mit ein wenig Arbeit Emacs dazu bringen kann, das meiste zu tun (manchmal durch Integration mit externen Tools). Es ist jedoch wahrscheinlich nicht das, wonach Sie suchen, da ich im Allgemeinen immer noch Makefiles verwenden muss, um alles Nicht-Triviale zu kompilieren.
Dan,

1
Ich kann eine Antwort über SCons und Waf schreiben, die Python Build System Tools sind. Ich benutze SCons jetzt seit ein paar Monaten und kann Ihnen einen Einblick in die Vor- und Nachteile von GNU Make geben. Trotzdem habe ich mich gefragt, ob Sie näher erläutern können, was Sie unter "Protokollierungsmechanismus bereitstellen" und "Datenherkunft bereitstellen" verstehen. Möchten Sie in Bezug auf die Protokollierung nur eine Protokolldatei, oder suchen Sie eher nach einem Versionskontrollsystem?
Geoff Oxberry

1
Wie Sie vorschlagen, kann die Protokollierung sehr einfach sein, wie z. B. Protokolldateien mit Zeitstempeln aller Durchläufe, einer Umleitung von stderr und (optional) stdout. Außerdem könnte man die Zwischenergebnisse von jedem Schritt im Workflow in einem separaten Verzeichnis aufbewahren. Die Datenherkunft ähnelt eher einem Kontrollversionssystem, das den Verlauf aller Berechnungsskripten sowie der Eingabe- und Ausgabedateien speichert. Momentan benutze ich Makefiles + git, aber ich suche nach etwas besser integriertem und einfacher zu verwendendem. Ich habe von SCons gehört, aber ich weiß nicht, was der Vorteil gegenüber Make ist.
btel

Antworten:


12

Für die Protokollierung, die vollständige Reproduzierbarkeit ermöglicht, empfehle ich das Sumatra- Python-Paket. Es verknüpft die Versionskontroll-Festschreibungsnummer, den Computerstatus und die Ausgabedateien mit jedem Programmlauf und verfügt über eine Django-Weboberfläche für die Interaktion mit der Datenbank mit den Laufinformationen. Die Python-API macht es sehr einfach, die Protokollierung in meine Skripte aufzunehmen.


Sumatra sieht wirklich interessant aus; Ich muss es versuchen.
Geoff Oxberry

Es erfüllt nicht alle meine Anforderungen, kommt aber meinen Anforderungen am nächsten. Deshalb habe ich die Antwort akzeptiert. Offenlegung: Ich bin einer der Entwickler von Sumatra.
btel

8

Vor einigen Monaten bin ich auf die sehr empfehlenswerte Website von Hans-Martin v. Gaudecker gestoßen, der Kurse wie "Effektive Programmierpraktiken für Ökonomen" unterrichtet. In seinem Herbstkurs 2010 stellte er SCons vor, in seinem Herbstkurs 2011 wechselte er zu Waf , das schneller sein soll als SCons, aber immer noch auf Python basiert. Die Folien für beide Kurse stehen zum Download zur Verfügung und ich (als Sozialwissenschaftler) fand sie sehr lehrreich und aufschlussreich.


1
SCons ist ziemlich rad. Es unterstützt sehr komplizierte oder sehr einfache Schemata gleichermaßen gut!
Meawoppl

2
Der Kompromiss zwischen SCons und jedem schnelleren Build-Tool hängt im Allgemeinen mit der Abhängigkeitsprüfung zusammen. Für gängige Sprachen (C, C ++, Fortran, D, Python, Java usw.) ermitteln SCons Abhängigkeiten automatisch mithilfe eines MD5-Hash-basierten Algorithmus anstelle von Zeitstempeln, die beim Umgang mit generierten Dateien zerbrechlich sein können. Alles andere übertrifft die Leistung von SCons (für die Erstellung von Software benötigte Zeit), da sie nicht so viele Abhängigkeitsprüfungen durchführen oder die Abhängigkeitsprüfung auf ein anderes Tool (wie die verwendeten Compiler) verlagern.
Geoff Oxberry

1
Der erste Link Ihrer Antwort lautet jetzt 404. Es scheint, dass seine neue Seite bei uni-bonn.de/~hmg308/teaching.html ist
liori 20.08.12

SCons verfügt über konfigurierbare Aktualitätsprüfungen, sodass Sie zwischen Zeitstempel, Hash oder einer Kombination wählen können. Trotzdem bin ich immer enttäuschter: Ein paar Dinge sind sehr einfach (z. B. das Kompilieren von Software mit einer Toolkette, für die SCons gute Toolpakete hat) und fast alles ist möglich, aber es wird ziemlich schnell hässlich.
Eric Anderson

4

Schauen Sie sich VisTrails an . Ich habe es nicht benutzt (es gibt nur Homebrew-Artikel make), aber es sieht gut durchdacht aus, mit einem guten Dokument, und es hat echte Benutzer bei der NASA usw.
(Suchen Sie nach Tools für 1-2 Personen, 4-5, mehr) ?)

Hinzugefügt: nicht ganz Ihre Frage, aber ich denke, es lohnt sich zu wiederholen:
Für einheitliche, reproduzierbare Computerexperimente braucht man offensichtlich

  • Einheitliche Verzeichnisstrukturen, z. B. Wann-Was / In / Out / Scripts / Log /
  • Einheitliche Einstellung und Nachhall aller Parameter für einen Lauf
  • Skripte zum Zusammenfassen / Plotten / Auswerten von Läufen.

Siehe auch software-carpentry.org : "Das Problem, das wir zu lösen versuchen, besteht darin, dass Wissenschaftler häufig 40% oder mehr ihrer Zeit damit verbringen, mit Software zu ringen, aber 95% oder mehr von ihnen sind in erster Linie Autodidakten."


4

Alle Anforderungen, die Sie in Ihrer Frage angesprochen haben, werden vom Swift-Parallel-Scripting-System erfüllt.

Ich habe ein Jahr bei der Swift Group als Postdoktorand (Doktor in wissenschaftlichen Arbeitsabläufen) verbracht. Wir haben Wissenschaftlern und Forschern aus verschiedenen Bereichen dabei geholfen, ihre Rechenanforderungen zu erfüllen.

Swift ist ein Open-Source-Framework für die parallele Ausführung von Workflows. Es wird als paralleles Scripting bezeichnet, um die Tatsache hervorzuheben, dass es eine Scripting-Schnittstelle zum Erstellen von Workflows im Gegensatz zur GUI-Box-Pfeil-Schnittstelle bietet.

Ich kann Ihnen persönlich dabei helfen, mit Swift loszulegen und Ihre Anwendung auszuführen. Um mehr über Swift zu erfahren, schauen Sie bitte hier .


Willkommen bei Scicomp! Stört es Sie, Ihre Antwort etwas weiter zu erweitern (klicken Sie auf die kleine graue Bearbeitungsschaltfläche unter Ihrer Antwort), um sie zu bearbeiten? Können Sie in Ihrer Antwort auch Ihre Verbindung zu Swift etwas klarer machen? Vielen Dank!
Aron Ahmadia

1

Taverna ist ein Open-Source-WMS, nicht Python, sondern Java.


Hast du es benutzt?
Death Breath

Danke für den Vorschlag. Ich habe die Taverna-Website gesehen, aber es sieht aus wie ein hauptsächlich grafisches Tool. Ich suche lieber etwas Kommandozeilenbasiertes. Taverna bietet ein Befehlszeilentool, das jedoch nur zum Ausführen , nicht aber zum Erstellen von Workflows dient (stimmt das?). Es scheint auch sehr bioinformatikorientiert zu sein.
btel

Mir scheint, Sie suchen eher ein für numerische Experimente geeignetes LIMS als ein Build-System wie make oder scons?
GertVdE

Tut mir leid zu fragen. Wofür steht LIMS genau?
btel

1
Laborinformations-Management-System. Es ist eine Familie von Tools, mit denen Laborexperimente protokolliert werden können. Dies sind jedoch typischerweise zum Beispiel für chemische Analysen. Vielleicht möchten Sie nach "in silico experimental" googeln, dh nach Experimenten, die auf einem Computer simuliert wurden und eine "Protokollierung" erfordern -> Speicherung von Eingabe- / Ausgabedaten, welche Version der Software verwendet wurde, Hypothesen, ...
GertVdE


0

Dexy scheint genau das zu sein, wonach Sie suchen. Von der Website:

Dexy ist ein vielseitiges Projektautomatisierungswerkzeug mit vielen Funktionen für die Arbeit mit Dokumenten. Dexy ist in Python geschrieben und verfügt über eine Befehlszeilenschnittstelle. Es ist Open-Source-Software mit einer MIT-Lizenz.

Was macht Dexy?

Mit Dexy ist es einfacher, technische Dokumente zu erstellen, indem die sich wiederholenden Teile für Sie ausgeführt werden. Dexy bietet eine konsistente Schnittstelle zu Tools und Skripten, sodass Sie sie nicht manuell ausführen müssen. Die Dexy-Konfiguration Ihres Projekts verfolgt, was in welcher Reihenfolge und mit welchen Parametern ausgeführt werden soll. Auf diese Weise wird Ihr gesamter Prozess erfasst, sodass jeder ihn mit einem einfachen Befehl ausführen kann und die Ergebnisse konsistent sind.

Sie möchten einen Blog-Beitrag mit Beispielen zur Verwendung einer API verfassen. Dexy wird automatisch:

  • Führen Sie Ihren Beispielcode aus und speichern Sie die Ergebnisse
  • Syntax-Hervorhebung auf Ihren Beispielcode anwenden (mit Hilfe von Pygments)
  • Fügen Sie die Ergebnisse von API-Aufrufen und Ihren hübschen Beispielcode in Ihren Beitrag ein (mit jinja).
  • Konvertieren Sie Ihren markdown-formatierten Blog-Post in HTML (mit Python Markdown oder Pandoc).
  • Laden Sie den HTML-Code im Entwurfsmodus auf die WordPress-API hoch (mithilfe der WordPress-API).
  • Veröffentlichen Sie Ihren Blog-Beitrag, wenn Sie mit dem Bearbeiten fertig sind

Ich habe Dexy ein paar Jahre lang verfolgt, und die Eindrücke, die ich bekommen habe, sind, dass es nicht weit verbreitet ist und nicht aktiv entwickelt wird. Diese Merkmale könnten ein Henne-Ei-Problem sein (eine kleine Nutzerbasis bedeutet, dass sie nicht aktiv entwickelt wird, und eine Nichtentwicklung schadet dem Wachstum der Nutzerbasis). Es sieht super cool aus und auf den ersten Blick ist es genau das, was Wissenschaftler brauchen, um die Reproduzierbarkeit über IPython, Knitr und maßgeschneiderte Skripte hinaus zu erweitern, aber aus irgendeinem Grund scheint es einfach nicht gebraucht zu werden. Ana Nelson bloggt nicht einmal so viel darüber und sie hat es geschrieben.
Geoff Oxberry

Nun, der neueste Blob-Post ist aus dem Januar und es gab 3 Commits in diesem Jahr. Nicht super aktiv, aber nicht tot, besonders wenn es sich um ein Projekt handelt, das gerade erst stabil wird und eigentlich keine Arbeit mehr benötigt. Es gibt andere Projekte, die ich mit viel tauberen jüngsten Entwicklungsverläufen verwende. Was das Henne-Ei-Problem angeht, hilft vielleicht eine Gegenstimme hier und wo auch immer auf SE erwähnt: P
naught101

0

Knime oder Rapidminer könnten wahrscheinlich auch alle Anforderungen erfüllen. Ob sie sollten ist zu gewinnen :)


Vielleicht auch Kepler .
Grimbly

Auch Nifi ist ziemlich geschickt, aber ich denke nicht, dass es alle Anforderungen vollständig abdeckt.
Grimbly
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.