Sistema de gerenciamento de fluxo de trabalho científico


30

Alguém pode me recomendar um bom sistema de gerenciamento de fluxo de trabalho (WMS), preferencialmente em Python? Até agora, tenho usado o GNU Make, mas apresenta uma camada de complexidade que eu quero evitar. Um bom WMS deve ter os seguintes recursos:

  • integre-se facilmente com ferramentas de linha de comando e scripts Python,
  • simples de usar e leve,
  • lidar com dependências,
  • fornecer interface de linha de comando,
  • fornecer mecanismo de registro,
  • (opcional) forneça a proveniência dos dados.

Sei que o WMS é muito popular em bioinformática (por exemplo, Galaxy ), mas estou procurando algo mais geral.


2
Esta não é uma resposta completa, mas já que você mencionou GNU make e Python na mesma pergunta, pensei que eu iria apontá-lo para SCons: scons.org
Reid.Atcheson

Obrigado. Você conhece algum exemplo usando SCons para fluxos de trabalho científicos?
btel

Descobri que, com um pouco de trabalho, você pode obter o emacs para fazer a maior parte disso (algumas vezes, integrando-se a ferramentas externas). Provavelmente não é o que você está procurando, pois acho que geralmente ainda preciso usar makefiles para compilar qualquer coisa que não seja trivial.
Dan

11
Posso escrever uma resposta sobre SCons e waf, que são ferramentas de sistema de compilação do Python. Eu uso SCons há alguns meses e posso dar uma perspectiva sobre o que há de bom e ruim em relação ao GNU Make. Dito isto, fiquei pensando se você poderia elaborar o que você quer dizer com "fornecer mecanismo de log" e "fornecer proveniência de dados". Em termos de log, você deseja apenas um arquivo de log ou procura algo mais parecido com um sistema de controle de versão?
Geoff Oxberry

11
O log pode ser algo muito simples, como arquivos de log, como você sugere, com registros de data e hora de todas as execuções, redirecionamento do stderr e (opcionalmente) stdout. Além disso, é possível manter os resultados intermediários de cada etapa do fluxo de trabalho em um diretório separado. A proveniência de dados é algo como um sistema de versão de controle que mantém o histórico de todos os scripts de computação, arquivos de entrada e saída. Atualmente, uso Makefiles + git, mas procuro algo melhor integrado e mais fácil de usar. Ouvi falar de SCons, mas não sei qual é a sua vantagem sobre o Make.
btel

Respostas:


12

Para registros que permitam reprodutibilidade total, recomendo o pacote python Sumatra . Ele vincula muito bem o número de confirmação do controle de versão, o estado da máquina e os arquivos de saída a cada programa executado e possui uma interface da web do django para interagir com o banco de dados de informações de execução. A API python facilita muito a inclusão do logon nos meus scripts.


Sumatra parece realmente interessante; Vou ter que tentar.
amigos estão dizendo sobre geoff

Ele não atende a todos os meus requisitos, mas é o mais próximo do que eu preciso. Portanto, aceitei a resposta. Divulgação: Sou um dos desenvolvedores do sumatra.
amigos estão dizendo sobre btel

8

Há um mês, deparei-me com o site altamente recomendado de Hans-Martin v. Gaudecker, que ministra cursos como "Práticas eficazes de programação para economistas". Em seu curso de outono de 2010, ele introduziu SCons, em seu curso de outono de 2011 ele mudou para o waf , que deveria ser mais rápido que os SCons, mas ainda baseado em Python. Os slides dos dois cursos estão disponíveis para download e eu (como cientista social) os achei muito instrutivos e esclarecedores.


11
SCons é muito legal. Ele suporta esquemas muito complicados ou muito simples igualmente bem!
22812 Marcel

2
A troca entre SCons e qualquer ferramenta de construção mais rápida geralmente tem a ver com verificação de dependência. Para linguagens mainstream (C, C ++, Fortran, D, Python, Java etc.), os SCons determinarão automaticamente as dependências usando um algoritmo baseado em hash MD5, em vez de carimbos de data e hora, que podem ser frágeis ao lidar com arquivos gerados. Todo o resto supera os SCons em desempenho (tempo necessário para criar software) porque eles não realizam tanta verificação de dependência ou transferem a verificação de dependência para outra ferramenta (como os compiladores usados).
Geoff Oxberry

11
O primeiro link da sua resposta é 404 agora. Parece que a sua nova página está em uni-bonn.de/~hmg308/teaching.html
Liori

Os SCons possuem verificação configurável de "atualização", para que você possa escolher entre carimbo de data / hora, hash ou alguma combinação. Dito isso, estou ficando desencantado com isso: algumas coisas são muito fáceis (por exemplo, compilar software usando uma cadeia de ferramentas para a qual o SCons possui bons pacotes de ferramentas) e quase tudo é possível, mas fica feio rapidamente.
Eric Anderson

4

Dê uma olhada no VisTrails . Eu não o usei (apenas coisas homebrew por aí make), mas parece bem pensado, com bons documentos e tem usuários reais da NASA etc.
(você está procurando ferramentas para 1-2 pessoas, 4-5 e mais ?)

Adicionado: não é bem a sua pergunta, mas acho que vale a pena repetir:
para experimentos uniformes e reprodutíveis em computador, obviamente, é necessário

  • estruturas de diretório uniformes, por exemplo, quando o que / in / out / scripts / log /
  • configuração uniforme e eco de todos os parâmetros para uma corrida
  • scripts para resumir / traçar / avaliar execuções.

Veja também software-carpentry.org : "O problema que estamos tentando resolver é que os cientistas costumam passar 40% ou mais do seu tempo lutando com o software, mas 95% ou mais deles são basicamente autodidatas".


4

Todos os requisitos mencionados na sua pergunta são atendidos pelo sistema de script paralelo Swift.

Passei um ano no grupo Swift como pesquisador de pós-doutorado (PhD em fluxos de trabalho científicos). Temos ajudado cientistas e pesquisadores de diferentes domínios a atender suas necessidades computacionais.

O Swift é uma estrutura de código aberto para executar fluxos de trabalho de maneira paralela. Ele é chamado de script paralelo, principalmente para destacar o fato de fornecer uma interface de script para criar fluxos de trabalho em oposição à interface de seta de caixa da GUI.

Pessoalmente, posso ajudá-lo a começar e executar seu aplicativo com o Swift. Para saber mais sobre a Swift, dê uma olhada aqui .


Bem-vindo ao scicomp! Você se importa de expandir sua resposta um pouco mais (clique no pequeno botão de edição cinza abaixo da sua resposta) para editar. Além disso, você pode tornar sua conexão com o Swift um pouco mais clara em sua resposta? Obrigado!
Aron Ahmadia

1

O Taverna é um WMS de código aberto, não Python, mas Java.


Você já usou?
Death Breath

Obrigado pela sugestão. Vi o site da Taverna, mas parece uma ferramenta principalmente gráfica. Prefiro procurar algo baseado em linha de comando. O Taverna fornece uma ferramenta de linha de comando, mas é apenas para executar fluxos de trabalho, mas não para construí-los (está correto?). Também parece muito orientado para a bioinformática.
btel

Parece-me que você está mais procurando um LIMS adequado para experimentos numéricos, em vez de um sistema de construção como make ou scons?
precisa saber é o seguinte

Desculpe por perguntar. O que LIMS representa exatamente?
btel

11
Sistema de Gerenciamento de Informações Laboratoriais. É uma família de ferramentas para manter o registro de experimentos de laboratório. Mas estes são tipicamente, por exemplo, para análises químicas. Você pode querer pesquisar no Google "experimentos in silico", ou seja, experimentos que são simulações em um computador e exigem "registro" -> armazenamento de dados de entrada / saída, qual versão do software foi usada, hipóteses, ...
GertVdE


0

Dexy parece que é exatamente o que você procura . Do site:

O Dexy é uma ferramenta de automação de projetos multifuncional com muitos recursos projetados para trabalhar com documentos. O Dexy é escrito em Python e possui uma interface de linha de comando. É um software de código aberto com uma licença MIT.

O que Dexy faz?

O Dexy facilita a criação de documentos técnicos, fazendo as partes repetitivas para você. O Dexy fornece uma interface consistente para ferramentas e scripts, para que você não precise executá-los manualmente. A configuração de dexy do seu projeto acompanha o que executar, em que ordem e com quais parâmetros. Dessa forma, todo o processo é capturado para que qualquer pessoa possa executá-lo usando um comando simples e os resultados serão consistentes.

Você deseja escrever uma postagem no blog com exemplos mostrando como usar uma API. Dexy automaticamente:

  • execute seu código de exemplo, salvando os resultados
  • aplique o destaque da sintaxe ao seu código de exemplo (usando pigmentos)
  • insira os resultados das chamadas de API e seu código de exemplo pretendido na sua postagem (usando jinja)
  • converta sua postagem no blog com formato de remarcação para HTML (usando remarcação python ou pandoc).
  • faça o upload do HTML para a API do WordPress no modo de rascunho (usando a API do WordPress)
  • publique sua postagem no blog quando terminar de ajustá-la

Eu acompanho o Dexy há alguns anos, e as impressões que recebi são de que ele não é amplamente adotado e não é desenvolvido ativamente. Essas características podem ser um problema de galinha e ovo (uma pequena base de usuários significa que não é desenvolvido ativamente, não ser desenvolvido ativamente prejudica o crescimento da base de usuários). Parece super legal e, na sua cara, acho que é exatamente o que os cientistas precisam para ampliar a reprodutibilidade além dos scripts IPython, knitr e sob medida, mas por alguma razão ... simplesmente não parece que é usado. Ana Nelson nem escreve muito sobre isso, e ela escreveu.
precisa saber é o seguinte

Bem, a última publicação de blob é de janeiro e houve três confirmações este ano. Não é super ativo, mas não está morto, especialmente se for um daqueles projetos que ficam estáveis ​​e realmente não precisam de mais trabalho. Existem outros projetos que utilizo com muito mais recentes histórias de desenvolvimento. Quanto ao problema da galinha e do ovo, talvez uma upvote aqui e em qualquer outro lugar é mencionado em SE ajudaria: P
naught101

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.