Sistema scientifico di gestione del flusso di lavoro


30

Qualcuno può raccomandarmi un buon sistema di gestione del flusso di lavoro (WMS), preferibilmente in Python? Finora ho usato GNU Make, ma introduce un livello di complessità che voglio evitare. Un buon WMS dovrebbe avere le seguenti caratteristiche:

  • si integra facilmente con gli strumenti da riga di comando e gli script Python,
  • semplice da usare e leggero,
  • gestire le dipendenze,
  • fornire un'interfaccia a riga di comando,
  • fornire un meccanismo di registrazione,
  • (facoltativo) fornire la provenienza dei dati.

So che i WMS sono molto popolari in bioinformatica (ad esempio Galaxy ), ma sto cercando qualcosa di più generale.


2
Questa non è una risposta completa, ma dato che hai menzionato GNU Make e Python nella stessa domanda, ho pensato che ti avrei indirizzato verso SCons: scons.org
Reid.Atcheson

Grazie. Conosci qualche esempio che utilizza SCons per flussi di lavoro scientifici?
dal

Ho scoperto che con un po 'di lavoro, puoi far sì che emacs faccia la maggior parte di questo (a volte integrandosi con strumenti esterni). Probabilmente non è quello che stai cercando, tuttavia, poiché trovo che in genere devo ancora usare i makefile per compilare qualcosa di non banale.
Dan

1
Posso scrivere una risposta su SCons e waf, che sono strumenti di sistema di build Python. Ho usato SCons per alcuni mesi e posso darti una prospettiva su cosa c'è di buono e di negativo rispetto a GNU Make. Detto questo, mi chiedevo se potessi approfondire cosa intendi per "fornire il meccanismo di registrazione" e "fornire la provenienza dei dati". In termini di registrazione, vuoi solo un file di registro o stai cercando qualcosa di più simile a un sistema di controllo della versione?
Geoff Oxberry,

1
La registrazione potrebbe essere qualcosa di molto semplice come i file di registro, come suggerisci, con i timestamp di tutte le esecuzioni, il reindirizzamento di stderr e (facoltativamente) stdout. Inoltre, è possibile mantenere i risultati intermedi di ogni passaggio del flusso di lavoro in una directory separata. La provenienza dei dati è qualcosa di più simile a un sistema di versione di controllo che mantiene la cronologia di tutti gli script di calcolo, i file di input e output. Attualmente uso Makefiles + git ma cerco qualcosa di meglio integrato e più facile da usare. Ho sentito parlare di SCons ma non so quale sia il suo vantaggio rispetto a Make.
dal

Risposte:


12

Per la registrazione che consente la piena riproducibilità, consiglio vivamente il pacchetto python di Sumatra . Collega perfettamente il numero di commit del controllo versione, lo stato della macchina e i file di output a ciascuna esecuzione del programma e ha un'interfaccia web di django per interagire con il database delle informazioni sulla corsa. L'API python rende molto facile includere la registrazione nei miei script.


Sumatra sembra davvero interessante; Dovrò provarlo.
Geoff Oxberry,

Non soddisfa tutti i miei requisiti, ma è il più vicino a ciò di cui ho bisogno. Pertanto, ho accettato la risposta. Divulgazione: sono uno degli sviluppatori di Sumatra.
dal

8

Qualche mese fa mi sono imbattuto nel sito web altamente raccomandato di Hans-Martin v. Gaudecker che insegna corsi come "Pratiche di programmazione efficaci per gli economisti". Nel corso dell'autunno 2010 ha introdotto SCons, nel corso dell'autunno 2011 è passato a waf , che dovrebbe essere più veloce di SCons ma ancora basato su Python. Le diapositive per entrambi i corsi sono disponibili per il download e io (come scienziato sociale) le ho trovate molto istruttive e illuminanti.


1
SCons è abbastanza bello. Supporta altrettanto bene schemi molto complicati o molto semplici!
martedì

2
Il compromesso tra SCon e qualsiasi strumento di costruzione più veloce ha generalmente a che fare con il controllo delle dipendenze. Per i linguaggi tradizionali (C, C ++, Fortran, D, Python, Java, ecc.), SCons determinerà automaticamente le dipendenze usando un algoritmo basato su hash MD5, piuttosto che i timestamp, che possono essere fragili quando si tratta di file generati. Tutto il resto batte SCons in termini di prestazioni (tempo necessario per compilare il software) perché non eseguono così tanto il controllo delle dipendenze o scaricano il controllo delle dipendenze su qualche altro strumento (come i compilatori utilizzati).
Geoff Oxberry,

1
Il primo link della tua risposta è 404 ora. Sembra che la sua nuova pagina è a uni-bonn.de/~hmg308/teaching.html
Liori

SCons ha un controllo configurabile di "aggiornamento", in modo da poter scegliere tra data / ora, hash o una combinazione. Detto questo, mi sto disincantando: alcune cose sono molto facili (ad esempio compilare software usando una catena di strumenti per cui SCons ha buoni pacchetti di strumenti) e quasi tutto è possibile, ma diventa brutto abbastanza rapidamente.
Eric Anderson,

4

Dai un'occhiata a VisTrails . Non l'ho usato (solo roba da homebrew in giro make), ma sembra ben pensato, con una buona documentazione, e ha veri utenti alla NASA ecc.
(Stai cercando strumenti per 1-2 persone, 4-5, altro ?)

Aggiunto: non proprio la tua domanda, ma penso che valga la pena ripeterlo:
per esperimenti informatici uniformi e riproducibili è ovviamente necessario

  • strutture di directory uniformi, ad esempio quando-cosa / in / out / scripts / log /
  • impostazione ed eco uniformi di tutti i parametri per una corsa
  • script per riassumere / tracciare / valutare esecuzioni.

Vedi anche software-carpentry.org : "Il problema che stiamo cercando di risolvere è che gli scienziati spesso trascorrono il 40% o più del loro tempo a lottare con il software, ma il 95% o più di essi sono principalmente autodidatti".


4

Tutti i requisiti menzionati nella tua domanda sono soddisfatti dal sistema di scripting parallelo Swift.

Ho trascorso un anno con il gruppo Swift come ricercatore post dottorato (dottorato di ricerca in flussi di lavoro scientifici). Abbiamo aiutato scienziati e ricercatori di diversi settori a soddisfare le loro esigenze computazionali.

Swift è un framework open source per l'esecuzione di flussi di lavoro in modo parallelo. Si chiama scripting parallelo principalmente per evidenziare il fatto che fornisce un'interfaccia di scripting per la creazione di flussi di lavoro rispetto all'interfaccia GUI box-arrow.

Posso aiutarti personalmente ad iniziare ed eseguire l'applicazione con Swift. Per saperne di più su Swift, dai un'occhiata qui .


Benvenuto in scicomp! Ti dispiace espandere la tua risposta un po 'di più (fai clic sul piccolo pulsante di modifica grigio sotto la tua risposta) per modificare. Inoltre, puoi rendere la tua connessione a Swift un po 'più chiara nella tua risposta? Grazie!
Aron Ahmadia,

1

Taverna è un WMS open source, non Python ma Java.


L'hai usato?
Deathbreath,

Grazie per il suggerimento Ho visto il sito web Taverna, ma sembra uno strumento principalmente grafico. Preferisco cercare qualcosa basato sulla riga di comando. Taverna fornisce uno strumento da riga di comando, ma serve solo per eseguire flussi di lavoro, ma non per crearli (è corretto?). Sembra anche molto orientato alla bioinformatica.
dal

Mi sembra, stai più cercando un LIMS adatto per esperimenti numerici, piuttosto che un sistema di build come make o scons?
GertVdE,

Mi dispiace chiedere. Cosa significa esattamente LIMS?
dal

1
Sistema di gestione delle informazioni di laboratorio. È una famiglia di strumenti per tenere traccia degli esperimenti di laboratorio. Ma questi sono in genere, ad esempio, per le analisi chimiche. Potresti voler Google per "esperimenti in silico", ovvero esperimenti che sono simulazioni su un computer e richiedono "registrazione" -> memorizzazione dei dati di input / output, quale versione del software è stata utilizzata, ipotesi, ...
GertVdE


0

Dexy sembra esattamente quello che cerchi dopo. Dal sito:

Dexy è uno strumento di automazione di progetti multiuso con molte funzionalità progettate per lavorare con i documenti. Dexy è scritto in Python e ha un'interfaccia a riga di comando. È un software open source con una licenza MIT.

Cosa fa Dexy?

Dexy semplifica la creazione di documenti tecnici eseguendo le parti ripetitive per te. Dexy fornisce un'interfaccia coerente per strumenti e script, quindi non è necessario eseguirli manualmente. La configurazione dexy del tuo progetto tiene traccia di cosa eseguire, in quale ordine e con quali parametri. In questo modo, l'intero processo viene acquisito in modo che chiunque possa eseguirlo utilizzando un semplice comando e i risultati saranno coerenti.

Vuoi scrivere un post sul blog con esempi che mostrano come utilizzare un'API. Dexy automaticamente:

  • esegui il tuo codice di esempio, salvando i risultati
  • applica l'evidenziazione della sintassi al tuo codice di esempio (usando i pigmenti)
  • inserisci i risultati delle chiamate API e il tuo codice di esempio predefinito nel tuo post (usando jinja)
  • converti il ​​tuo post di blog in formato markdown in HTML (usando python markdown o pandoc).
  • caricare l'HTML nell'API di WordPress in modalità bozza (utilizzando l'API di WordPress)
  • pubblica il tuo post sul blog quando hai finito di modificarlo

Ho seguito Dexy per alcuni anni e le impressioni che ho ottenuto sono che non è stato ampiamente adottato e non è stato sviluppato attivamente. Questi tratti potrebbero essere un problema a base di gallina e uova (una piccola base di utenti significa che non è attivamente sviluppata, non essendo attivamente sviluppata danneggia la crescita della base di utenti). Sembra fantastico, e sulla sua faccia, penso che sia esattamente ciò di cui gli scienziati hanno bisogno per ampliare la riproducibilità al di là di IPython, knitr e script personalizzati, ma per qualche ragione ... sembra proprio che non venga usato. Ana Nelson non ne ha nemmeno un blog, e lo ha scritto.
Geoff Oxberry,

Bene, l'ultimo post BLOB è di gennaio e quest'anno ci sono stati 3 commit. Non super attivo, ma non morto, soprattutto se è uno di quei progetti che diventano stabili e non hanno davvero bisogno di altro lavoro. Ci sono altri progetti che utilizzo con storie di sviluppo recenti molto più mortali. Per quanto riguarda il problema dell'uovo e della gallina, forse un voto qui e dovunque sia menzionato su SE sarebbe di aiuto: P
nought101

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.