Naukowy system zarządzania przepływem pracy

30

Czy ktoś może mi polecić dobry system zarządzania przepływem pracy (WMS), najlepiej w języku Python? Do tej pory korzystałem z GNU Make, ale wprowadza warstwę złożoności, której chcę uniknąć. Dobry WMS powinien mieć następujące funkcje:

  • łatwa integracja z narzędziami wiersza poleceń i skryptami Python,
  • prosty w użyciu i lekki,
  • radzić sobie z zależnościami,
  • zapewnić interfejs wiersza poleceń,
  • zapewnić mechanizm rejestrowania,
  • (opcjonalnie) podaj źródło danych.

Wiem, że WMS są bardzo popularne w bioinformatyce (na przykład Galaxy ), ale szukam czegoś bardziej ogólnego.

btel
źródło
2
To nie jest pełna odpowiedź, ale skoro wspomniałeś o GNU Make i Python w tym samym pytaniu, pomyślałem, że skieruję
Reid.Atcheson
Dzięki. Czy znasz jakieś przykłady użycia SCons do naukowych przepływów pracy?
btel
Przekonałem się, że przy odrobinie pracy możesz uzyskać emacs, który wykona większość z nich (czasami poprzez integrację z narzędziami zewnętrznymi). Prawdopodobnie nie jest to jednak to, czego szukasz, ponieważ generalnie nadal muszę korzystać z plików makefile, aby skompilować wszystko, co nie jest łatwe.
Dan
1
Potrafię napisać odpowiedź na temat SCons i WAF, które są narzędziami systemowymi do budowania Pythona. Używam SCons od kilku miesięcy i mogę dać ci pewne spojrzenie na to, co jest dobre i złe w stosunku do GNU Make. To powiedziawszy, zastanawiałem się, czy mógłbyś wyjaśnić, co rozumiesz przez „zapewnienie mechanizmu rejestrowania” i „dostarczenie danych”. Jeśli chodzi o rejestrowanie, czy chcesz tylko plik dziennika, czy szukasz czegoś więcej jak systemu kontroli wersji?
Geoff Oxberry
1
Rejestrowanie może być czymś bardzo prostym, jak pliki logów, jak sugerujesz, ze znacznikami czasu wszystkich uruchomień, przekierowaniem stderr i (opcjonalnie) standardowym wyjściem. Ponadto można przechowywać wyniki pośrednie z każdego kroku w przepływie pracy w osobnym katalogu. Pochodzenie danych to coś więcej niż system wersji kontrolnej, który przechowuje historię wszystkich skryptów obliczeniowych, plików wejściowych i wyjściowych. Obecnie używam Makefiles + git, ale szukam czegoś lepiej zintegrowanego i łatwiejszego w użyciu. Słyszałem o SCons, ale nie wiem, jaka jest jego przewaga nad Make.
btel

Odpowiedzi:

12

Do rejestrowania, które pozwala na pełną odtwarzalność, bardzo polecam pakiet pytatowy Sumatra . Ładnie łączy numer zatwierdzenia kontroli wersji, stan komputera i pliki wyjściowe z każdym uruchomionym programem oraz ma interfejs sieciowy django do interakcji z bazą danych informacji o uruchomieniu. Interfejs API Pythona ułatwia włączenie logowania do moich skryptów.

Michael Schneider
źródło
Sumatra wygląda naprawdę interesująco; Będę musiał spróbować.
Geoff Oxberry
Nie spełnia wszystkich moich wymagań, ale jest najbliżej tego, czego potrzebuję. Dlatego przyjąłem odpowiedź. Ujawnienie: Jestem jednym z twórców sumatry.
btel,
8

Jakiś miesiąc temu natknąłem się na wysoce polecaną stronę internetową Hansa-Martina przeciwko Gaudeckerowi, który prowadzi takie kursy jak „Skuteczne praktyki programowania dla ekonomistów”. Na swoim kursie z jesieni 2010 roku przedstawił SCons, na kursie z jesieni 2011 przeszedł na waf , który ma być szybszy niż SCons, ale nadal oparty na Pythonie. Slajdy z obu kursów są dostępne do pobrania, a ja (jako socjolog) uznałem je za bardzo pouczające i pouczające.

Bernd Weiss
źródło
1
SCons jest całkiem niezły. Równie dobrze obsługuje bardzo skomplikowane lub bardzo proste schematy!
meawoppl
2
Kompromis między SCons a dowolnym szybszym narzędziem do budowania ma na ogół związek ze sprawdzaniem zależności. W przypadku języków głównego nurtu (C, C ++, Fortran, D, Python, Java itp.) SCons automatycznie określa zależności za pomocą algorytmu opartego na haszu MD5, a nie znaczników czasu, które mogą być kruche w przypadku generowanych plików. Cała reszta przewyższa SCony pod względem wydajności (czas potrzebny na zbudowanie oprogramowania), ponieważ nie sprawdzają one zbyt wiele zależności lub przenoszą kontrolę zależności na inne narzędzie (np. Używane kompilatory).
Geoff Oxberry
1
Pierwszy link do Twojej odpowiedzi to teraz 404. Wygląda na to, że jego nowa strona znajduje się na uni-bonn.de/~hmg308/teaching.html
liori
SCons ma konfigurowalne sprawdzanie „aktualności”, dzięki czemu możesz wybierać pomiędzy datownikiem, skrótem lub jakąś kombinacją. Powiedziałem, że odczuwam rozczarowanie: kilka rzeczy jest bardzo łatwych (np. Kompilowanie oprogramowania przy użyciu łańcucha narzędzi, dla którego SCons ma dobre pakiety narzędzi) i prawie wszystko jest możliwe, ale robi się brzydko dość szybko.
Eric Anderson
4

Spójrz na VisTrails . Nie korzystałem z niego (tylko w domu make), ale wygląda dobrze przemyślany, z dobrym dokumentem i ma prawdziwych użytkowników w NASA itp.
(Czy szukasz narzędzi dla 1-2 osób, 4-5, więcej ?)

Dodano: niezupełnie twoje pytanie, ale myślę, że warto je powtórzyć:
do jednolitych, powtarzalnych eksperymentów komputerowych oczywiście trzeba

  • jednolite struktury katalogów, np. when-what / in / out / scripts / log /
  • jednolite ustawienie i echo wszystkich parametrów dla przebiegu
  • skrypty podsumowujące / kreślące / oceniające przebiegi.

Zobacz także software-carpentry.org : „Problem, który próbujemy rozwiązać, polega na tym, że naukowcy często spędzają 40% lub więcej czasu na zmaganiach z oprogramowaniem, ale 95% lub więcej z nich jest samoukami”.

denis
źródło
4

Wszystkie wymagania wymienione w pytaniu są spełnione przez system równoległych skryptów Swift.

Spędziłem rok w grupie Swift jako badacz z tytułem doktora (doktor naukowego przepływu pracy). Pomagamy naukowcom i badaczom z różnych dziedzin w zaspokajaniu ich potrzeb obliczeniowych.

Swift to platforma typu open source do równoległego uruchamiania przepływów pracy. Nazywa się to skryptami równoległymi, głównie w celu podkreślenia faktu, że zapewnia interfejs skryptowy do tworzenia przepływów pracy, w przeciwieństwie do interfejsu GUI ze strzałką.

Mogę osobiście pomóc w rozpoczęciu pracy z aplikacją Swift. Aby dowiedzieć się więcej o Swift, zajrzyj tutaj .

mkc
źródło
Witamy w scicomp! Czy możesz jeszcze bardziej rozszerzyć swoją odpowiedź (kliknij mały szary przycisk edycji poniżej odpowiedzi), aby edytować. Czy w swojej odpowiedzi możesz nieco wyjaśnić połączenie ze Swift? Dzięki!
Aron Ahmadia,
1

Taverna to open source WMS, nie Python, ale Java.

GertVdE
źródło
Użyłeś go?
Deathbreath
Dzieki za sugestie. Widziałem stronę Taverna, ale wygląda to głównie na narzędzie graficzne. Raczej szukam czegoś opartego na linii poleceń. Taverna udostępnia narzędzie wiersza polecenia, ale służy tylko do wykonywania przepływów pracy, ale ich nie buduje (czy to prawda?). Wydaje się również, że jest bardzo zorientowana na bioinformatykę.
btel
Wydaje mi się, że bardziej szukasz LIMS odpowiedniego do eksperymentów numerycznych niż systemu budowania takiego jak make lub scons?
GertVdE
Przepraszam, że pytam. Co dokładnie oznacza LIMS?
btel
1
System zarządzania informacjami laboratoryjnymi. Jest to rodzina narzędzi do prowadzenia dziennika eksperymentów laboratoryjnych. Ale zwykle są to na przykład analizy chemiczne. Możesz chcieć Google dla „eksperymentów in silico”, tj. Eksperymentów, które są symulacjami na komputerze i wymagają „rejestrowania” -> przechowywania danych wejściowych / wyjściowych, jakiej wersji oprogramowania użyto, hipotez, ...
GertVdE
0

Dexy brzmi, jakby to było dokładnie to, po czym się znajdujesz. Ze strony:

Dexy to wielofunkcyjne narzędzie do automatyzacji projektów z wieloma funkcjami przeznaczonymi do pracy z dokumentami. Dexy jest napisany w Pythonie i ma interfejs wiersza poleceń. To oprogramowanie typu open source z licencją MIT.

Czym zajmuje się Dexy?

Dexy ułatwia tworzenie dokumentów technicznych, wykonując dla Ciebie powtarzalne części. Dexy zapewnia spójny interfejs do narzędzi i skryptów, więc nie musisz uruchamiać ich ręcznie. Konfiguracja dexy twojego projektu śledzi, co uruchomić, w jakiej kolejności i przy jakich parametrach. W ten sposób cały proces jest przechwytywany, dzięki czemu każdy może go uruchomić za pomocą jednego prostego polecenia, a wyniki będą spójne.

Chcesz napisać post na blogu z przykładami pokazującymi, jak korzystać z interfejsu API. Dexy automatycznie:

  • uruchom swój przykładowy kod, zapisując wyniki
  • zastosuj podświetlanie składni w swoim przykładowym kodzie (używając pigmetów)
  • wstaw wyniki wywołań interfejsu API i kod przykładowego kodu do posta (używając jinja)
  • przekonwertuj swój post w blogu w formacie Markdown na HTML (używając Markdown Pythona lub pandoc).
  • prześlij HTML do WordPress API w trybie roboczym (używając WordPress API)
  • opublikuj swój post na blogu, gdy skończysz go poprawiać
naught101
źródło
Śledzę Dexy od kilku lat i mam wrażenie, że nie jest on powszechnie stosowany i nie jest aktywnie rozwijany. Te cechy mogą stanowić problem z kurczakiem i jajami (mała baza użytkowników oznacza, że ​​nie jest aktywnie rozwijana, brak aktywnej rozbudowy szkodzi rozwojowi bazy użytkowników). Wygląda super, i na pierwszy rzut oka wydaje mi się, że naukowcy dokładnie tego potrzebują, aby rozszerzyć odtwarzalność poza IPython, knitr i skrypty na zamówienie, ale z jakiegoś powodu ... po prostu nie wydaje się, żeby się przyzwyczaił. Ana Nelson nawet nie pisze o tym zbyt wiele na blogu, a ona to napisała.
Geoff Oxberry
Cóż, najnowszy post blob pochodzi ze stycznia, aw tym roku były 3 zmiany. Niezbyt aktywny, ale nie martwy, zwłaszcza jeśli jest to jeden z tych projektów, który po prostu staje się stabilny i naprawdę nie potrzebuje więcej pracy. Są inne projekty, z których korzystam z dużo bardziej śmiercionośnymi najnowszymi historiami rozwoju. Jeśli chodzi o problem z jajami kurzymi, być może głosowanie tutaj i gdziekolwiek indziej wspomniane w SE pomogłoby: P
naught101
0

Knime lub Rapidminer prawdopodobnie poradzą sobie również ze wszystkimi wymaganiami. Czy powinni wziąć udział w grze :)

Grimly
źródło
Może też Kepler .
Grimbly,
Ponadto Nifi jest całkiem sprytny , ale nie sądzę, aby w pełni spełniał wszystkie wymagania.
Grimbly,