Un sistema de flujo de trabajo científico es una forma especializada de un sistema de gestión de flujo de trabajo diseñado específicamente para componer y ejecutar una serie de pasos computacionales o de manipulación de datos, o flujo de trabajo , en una aplicación científica. [1]
Los científicos distribuidos pueden colaborar en la realización de experimentos científicos a gran escala y aplicaciones de descubrimiento de conocimientos utilizando sistemas distribuidos de recursos informáticos, conjuntos de datos y dispositivos. Los sistemas de flujo de trabajo científico desempeñan un papel importante a la hora de hacer posible esta visión.
Los sistemas de flujo de trabajo científicos más especializados proporcionan una interfaz de programación visual que permite a los usuarios construir fácilmente sus aplicaciones como un gráfico visual conectando nodos entre sí, y también se han desarrollado herramientas para construir dichas aplicaciones de una manera independiente de la plataforma. [2] Cada borde dirigido en el gráfico de un flujo de trabajo representa típicamente una conexión desde la salida de una aplicación a la entrada de la siguiente. Una secuencia de dichos bordes puede denominarse canalización .
Un sistema de gestión de flujo de trabajo de bioinformática es un sistema de flujo de trabajo científico especializado centrado en la bioinformática .
Los flujos de trabajo científicos computarizados más simples son scripts que invocan datos, programas y otras entradas y producen resultados que pueden incluir visualizaciones y resultados analíticos. Estos pueden implementarse en programas como R o MATLAB , utilizando un lenguaje de scripting como Python con una interfaz de línea de comandos o, más recientemente, utilizando aplicaciones web de código abierto como Jupyter Notebook .
Existen muchos motivos para diferenciar los flujos de trabajo científicos de los flujos de trabajo de los procesos empresariales tradicionales, entre ellos:
Al centrarse en los científicos, el enfoque del diseño del sistema de flujo de trabajo científico se aleja de las actividades de programación del flujo de trabajo, generalmente consideradas por los entornos de computación en red para optimizar la ejecución de cálculos complejos en recursos predefinidos, hacia una visión específica del dominio de qué tipos de datos, herramientas y recursos distribuidos deben estar disponibles para los científicos y cómo se puede hacer que sean fácilmente accesibles y con requisitos específicos de calidad de servicio [3].
Los flujos de trabajo científicos son reconocidos hoy en día [¿ por quién? ] como un elemento crucial de la ciberinfraestructura , que facilita la e-ciencia. Los flujos de trabajo científicos, que suelen estar ubicados sobre una capa intermedia , son un medio por el cual los científicos pueden modelar, diseñar, ejecutar, depurar, reconfigurar y volver a ejecutar sus procesos de análisis y visualización . Parte del método científico establecido es crear un registro de los orígenes de un resultado, cómo se obtuvo, los métodos experimentales utilizados, las calibraciones y parámetros de las máquinas, etc. Lo mismo ocurre en la e-ciencia, excepto que los datos de procedencia son un registro de las actividades del flujo de trabajo invocadas, los servicios y bases de datos a los que se accedió, los conjuntos de datos utilizados, etc. Dicha información es útil para que un científico interprete los resultados de su flujo de trabajo y para que otros científicos establezcan confianza en el resultado experimental. [4]
Se han desarrollado comunidades de redes sociales como myExperiment para facilitar el intercambio y el desarrollo colaborativo de flujos de trabajo científicos. Galaxy proporciona mecanismos colaborativos para editar y publicar definiciones de flujos de trabajo y resultados de flujos de trabajo directamente en la instalación de Galaxy.
Un supuesto clave que subyace a todos los sistemas de flujo de trabajo científicos es que los propios científicos podrán utilizar un sistema de flujo de trabajo para desarrollar sus aplicaciones basándose en diagramas de flujo visuales, diagramas lógicos o, como último recurso, escribiendo código para describir la lógica del flujo de trabajo. Los sistemas de flujo de trabajo potentes facilitan a los no programadores esbozar primero los pasos del flujo de trabajo utilizando herramientas de diagramas de flujo simples y luego conectar varias herramientas de adquisición de datos, análisis y generación de informes. Para una máxima productividad, los detalles del código de programación subyacente normalmente deberían estar ocultos.
Las técnicas de análisis de flujo de trabajo se pueden utilizar para analizar las propiedades de dichos flujos de trabajo y verificar ciertas propiedades antes de ejecutarlos. En el artículo "El diseño y la implementación de una herramienta de análisis de flujo de trabajo" de Curcin et al. [5] se describe un ejemplo de un marco de análisis formal teórico para la verificación y el perfilado de los aspectos de flujo de control de los flujos de trabajo científicos y sus aspectos de flujo de datos para el sistema Discovery Net .
Los autores señalan que la introducción del análisis y la verificación de programas en el mundo del flujo de trabajo requiere una comprensión detallada de la semántica de ejecución del lenguaje del flujo de trabajo, incluidas las propiedades de ejecución de los nodos y arcos en el gráfico del flujo de trabajo, la comprensión de las equivalencias funcionales entre los patrones del flujo de trabajo y muchas otras cuestiones. Realizar dicho análisis es difícil, y abordar estas cuestiones requiere basarse en los métodos formales utilizados en la investigación en ciencias de la computación (por ejemplo, las redes de Petri ) y basarse en estos métodos formales para desarrollar herramientas a nivel de usuario para razonar sobre las propiedades tanto de los flujos de trabajo como de los sistemas de flujo de trabajo. La falta de tales herramientas en el pasado impidió que las soluciones de gestión automatizada del flujo de trabajo maduraran desde juguetes académicos agradables a herramientas a nivel de producción utilizadas fuera del estrecho círculo de los primeros usuarios y los entusiastas del flujo de trabajo.
Los sistemas de flujo de trabajo científicos notables incluyen: [6]
Se han identificado más de 280 sistemas de flujo de trabajo de análisis de datos computacionales, [11] aunque la distinción entre flujos de trabajo de análisis de datos y flujos de trabajo científicos es fluida, ya que no todos los sistemas de flujo de trabajo de análisis se utilizan con fines científicos.