¿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.
Respuestas:
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.
fuente
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.
fuente
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
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".
fuente
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í .
fuente
Taverna es un WMS de código abierto, no Python sino Java.
fuente
Esta página menciona algunos paquetes: https://wiki.python.org/moin/FlowBasedProgramming
Otro paquete prometedor que no se menciona aquí es Snakemake.
fuente
Dexy parece que es exactamente lo que haces después. Desde el sitio:
fuente
KNIME o RapidMiner probable que podían manejar todos los requisitos también. Si deberían estar en juego :)
fuente