Sistema de gestión de flujo de trabajo científico.

30

¿Alguien me puede recomendar un buen sistema de gestión de flujo de trabajo (WMS), preferiblemente en Python? Hasta ahora he estado usando GNU Make, pero introduce una capa de complejidad que quiero evitar. Un buen WMS debe tener las siguientes características:

  • integrarse fácilmente con herramientas de línea de comandos y scripts Python,
  • fácil de usar y ligero,
  • manejar dependencias,
  • proporcionar interfaz de línea de comando,
  • proporcionar un mecanismo de registro,
  • (opcional) proporcionar procedencia de datos.

Sé que los WMS son muy populares en bioinformática (por ejemplo, Galaxy ), pero estoy buscando algo más general.

btel
fuente
2
Esta no es una respuesta completa, pero como mencionó GNU Make y Python en la misma pregunta, pensé que lo señalaría a SCons: scons.org
Reid.Atcheson
Gracias. ¿Conoces algún ejemplo que use SCons para flujos de trabajo científicos?
btel
Descubrí que con un poco de trabajo, puede hacer que emacs haga la mayor parte de eso (a veces al integrarse con herramientas externas). Sin embargo, probablemente no sea lo que estás buscando, ya que descubro que generalmente todavía tengo que usar makefiles para compilar cualquier cosa que no sea trivial.
Dan
1
Puedo escribir una respuesta sobre SCons y waf, que son herramientas del sistema de compilación de Python. He usado SCons durante unos meses y puedo darle una perspectiva de lo que es bueno y malo en relación con GNU Make. Dicho esto, me preguntaba si podría explicar qué quiere decir con "proporcionar mecanismo de registro" y "proporcionar procedencia de datos". En términos de registro, ¿solo desea un archivo de registro o está buscando algo más como un sistema de control de versiones?
Geoff Oxberry
1
El registro puede ser algo muy simple como los archivos de registro, como sugiere, con marcas de tiempo de todas las ejecuciones, redirección de stderr y (opcionalmente) stdout. Además, uno podría mantener los resultados intermedios de cada paso en el flujo de trabajo en un directorio separado. La procedencia de datos es algo más como un sistema de versión de control que mantiene el historial de todos los scripts de cómputo, archivos de entrada y salida. Actualmente, uso Makefiles + git pero busco algo mejor integrado y más fácil de usar. He oído hablar de SCons pero no sé cuál es su ventaja sobre Make.
btel

Respuestas:

12

Para el registro que permite la reproducibilidad total, recomiendo encarecidamente el paquete de Python de Sumatra . Vincula muy bien el número de confirmación de control de versión, el estado de la máquina y los archivos de salida a cada ejecución del programa y tiene una interfaz web django para interactuar con la base de datos de información de ejecución. La API de Python hace que sea muy fácil incluir el registro en mis scripts.

Michael Schneider
fuente
Sumatra se ve realmente interesante; Tendré que intentarlo.
Geoff Oxberry
No cumple con todos mis requisitos, pero está más cerca de lo que necesito. Por lo tanto, acepté la respuesta. Divulgación: Soy uno de los desarrolladores de sumatra.
btel
8

Hace un mes, me topé con el sitio web altamente recomendado de Hans-Martin v. Gaudecker que imparte cursos como "Prácticas de programación efectivas para economistas". En su curso de otoño de 2010 introdujo SCons, en su curso de otoño de 2011 cambió a waf , que se supone que es más rápido que SCons pero que aún está basado en Python. Las diapositivas de ambos cursos están disponibles para descargar y yo (como científico social) las encontré muy instructivas e ilustrativas.

Bernd Weiss
fuente
1
SCons es bastante rad. ¡Admite esquemas muy complicados o muy simples igualmente bien!
meawoppl
2
La compensación entre SCons y cualquier herramienta de construcción más rápida generalmente tiene que ver con la verificación de dependencia. Para los lenguajes principales (C, C ++, Fortran, D, Python, Java, etc.), SCons determinará automáticamente las dependencias utilizando un algoritmo basado en hash MD5, en lugar de marcas de tiempo, que pueden ser frágiles cuando se trata de archivos generados. Todo lo demás supera a SCons en rendimiento (tiempo necesario para construir software) porque no realizan tanta verificación de dependencia o descargan la verificación de dependencia a alguna otra herramienta (como los compiladores utilizados).
Geoff Oxberry
1
El primer enlace de su respuesta es 404 ahora. Parece que su nueva página está en uni-bonn.de/~hmg308/teaching.html
liori
SCons tiene una comprobación de "actualización" configurable, por lo que puede elegir entre marca de tiempo, hash o alguna combinación. Dicho esto, estoy cada vez más desencantado con él: algunas cosas son muy fáciles (por ejemplo, compilar software usando una cadena de herramientas para la cual SCons tiene buenos paquetes de herramientas) y casi todo es posible, pero se pone feo con bastante rapidez.
Eric Anderson
4

Echa un vistazo a VisTrails . No lo he usado (solo cosas caseras make), pero se ve bien pensado, con buen documento y tiene usuarios reales en la NASA, etc.
(¿Está buscando herramientas para 1-2 personas, 4-5, más ?)

Agregado: no es exactamente su pregunta, pero creo que vale la pena repetirla:
para experimentos informáticos uniformes y reproducibles, obviamente, uno necesita

  • estructuras de directorio uniformes, por ejemplo, cuándo-qué / entrar / salir / scripts / log /
  • ajuste uniforme y eco de todos los parámetros para una carrera
  • guiones para resumir / trazar / evaluar ejecuciones.

Ver también software-carpentry.org : "El problema que estamos tratando de resolver es que los científicos a menudo pasan el 40% o más de su tiempo luchando con el software, pero el 95% o más de ellos son principalmente autodidactas".

denis
fuente
4

Todos los requisitos que mencionó en su pregunta son cumplidos por el sistema de scripting paralelo Swift.

He pasado un año con el grupo Swift como investigador postdoctoral (doctorado en flujos de trabajo científicos). Hemos estado ayudando a científicos e investigadores de diferentes dominios a abordar sus necesidades computacionales.

Swift es un marco de código abierto para ejecutar flujos de trabajo de manera paralela. Se llama secuencia de comandos paralela principalmente para resaltar el hecho de que proporciona una interfaz de secuencia de comandos para crear flujos de trabajo en lugar de la interfaz de cuadro de flecha GUI.

Puedo ayudarlo personalmente a comenzar y ejecutar su aplicación con Swift. Para saber más sobre Swift, eche un vistazo aquí .

mkc
fuente
¡Bienvenido a scicomp! ¿Le importaría ampliar su respuesta un poco más (haga clic en el pequeño botón de edición gris debajo de su respuesta) para editar. Además, ¿puede hacer que su conexión con Swift sea un poco más clara en su respuesta? ¡Gracias!
Aron Ahmadia
1

Taverna es un WMS de código abierto, no Python sino Java.

GertVdE
fuente
¿Lo has usado?
Deathbreath
Gracias por la sugerencia. Vi el sitio web de Taverna, pero parece una herramienta principalmente gráfica. Prefiero buscar algo basado en la línea de comandos. Taverna proporciona una herramienta de línea de comandos, pero es solo para ejecutar flujos de trabajo, pero no para construirlos (¿es correcto?). También parece muy orientado a la bioinformática.
btel
Me parece que estás buscando un LIMS adecuado para experimentos numéricos, en lugar de un sistema de construcción como make o scons.
GertVdE
Perdón por preguntar. ¿Qué significa LIMS exactamente?
btel
1
Sistema de gestión de información de laboratorio. Es una familia de herramientas para mantener un registro de los experimentos de laboratorio. Pero estos son típicamente, por ejemplo, para análisis químicos. Es posible que desee buscar en Google "experimentos in silico", es decir, experimentos que son simulaciones en una computadora y requieren "registro" -> almacenar datos de entrada / salida, qué versión del software se utilizó, hipótesis, ...
GertVdE
0

Dexy parece que es exactamente lo que haces después. Desde el sitio:

Dexy es una herramienta de automatización de proyectos multipropósito con muchas características diseñadas para trabajar con documentos. Dexy está escrito en Python y tiene una interfaz de línea de comandos. Es un software de código abierto con una licencia MIT.

¿Qué hace Dexy?

Dexy facilita la creación de documentos técnicos haciendo las partes repetitivas por usted. Dexy proporciona una interfaz consistente para herramientas y scripts para que no tenga que ejecutarlos manualmente. La configuración dexy de su proyecto realiza un seguimiento de qué ejecutar, en qué orden y con qué parámetros. De esta forma, se captura todo el proceso para que cualquiera pueda ejecutarlo con un simple comando y los resultados serán consistentes.

Desea escribir una publicación de blog con ejemplos que muestren cómo usar una API. Dexy automáticamente:

  • ejecuta tu código de ejemplo, guardando los resultados
  • aplicar resaltado de sintaxis a su código de ejemplo (usando pigmentos)
  • inserte los resultados de las llamadas a la API y su código de ejemplo prettified en su publicación (usando jinja)
  • Convierta su publicación de blog con formato Markdown a HTML (utilizando Python Markdown o Pandoc).
  • cargar el HTML a la API de WordPress en modo borrador (usando la API de WordPress)
  • publique su publicación de blog cuando haya terminado de modificarla
nada101
fuente
He seguido a Dexy durante algunos años, y las impresiones que tengo son que no está ampliamente adoptado y no está desarrollado activamente. Estos rasgos podrían ser un problema de huevo y gallina (una pequeña base de usuarios significa que no está desarrollado activamente, no estar desarrollado activamente perjudica el crecimiento de la base de usuarios). Se ve súper genial, y en apariencia, creo que es exactamente lo que los científicos necesitan para ampliar la reproducibilidad más allá de IPython, knitr y scripts a medida, pero por alguna razón ... simplemente no parece que se use. Ana Nelson ni siquiera escribe mucho sobre eso, y lo escribió.
Geoff Oxberry
Bueno, la última publicación de blob es de enero, y ha habido 3 confirmaciones este año. No es súper activo, pero no está muerto, especialmente si es uno de esos proyectos que simplemente se estabiliza y realmente no necesita más trabajo. Hay otros proyectos que uso con historias de desarrollo recientes mucho más lentas. En cuanto al problema del huevo y la gallina, tal vez un voto positivo aquí y en cualquier otro lugar que se mencione en SE ayudaría: P
nada101
0

KNIME o RapidMiner probable que podían manejar todos los requisitos también. Si deberían estar en juego :)

Sombríamente
fuente
Quizás Kepler también.
Grimbly
Además, Nifi es bastante ingenioso, pero no creo que cubra completamente todos los requisitos.
Grimbly