es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo contenerizar un flujo de trabajo que consiste en varios scripts de Python y programas de software?

Se desarrolló un protocolo de bioinformática y nos gustaría contenerizarlo para facilitar su uso a otros. Consiste en 2 softwares y varios scripts de Python para preparar y analizar datos. Localmente, ejecutamos estos módulos en un clúster como varios trabajos dependientes (algunos requieren muchos recursos) con un script de envoltura, de la siguiente manera:
1. Analizar los datos de entrada (python)
2. Ejecutar de 10 a 100 trabajos en un clúster (cada uno con parte de la salida del paso 1). Cada trabajo de cada paso depende de que el anterior termine y se compone de:
a) Software C++ compilado para cada parte del paso 1
b) Script de Python de análisis para cada parte del paso 2a
c) Otro software C++ compilado que utiliza mpirun para distribuir toda la salida del paso 2b y que requiere muchos recursos
3. Finalizar los resultados (script de Python) a partir de todos los resultados del paso 2

La versión contenerizada no necesariamente tiene que estar organizada de la misma manera, pero al menos el paso 2c debe ser distribuido con mpirun porque los usuarios lo ejecutarán en un clúster.

¿Cómo podría organizar esto? ¿Debería tener X contenedores diferentes en un flujo de trabajo? ¿Existe alguna otra posible solución que no involucre múltiples contenedores?

Gracias.

PD: Espero haberlo descrito lo suficientemente claro, pero puedo proporcionar más aclaraciones si es necesario.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Dockerizar un protocolo de bioinformática

    Para dockerizar un protocolo de bioinformática que consta de dos software y varios scripts de Python, necesitamos dividirlo en componentes más pequeños y crear contenedores separados para cada componente que se puedan distribuir en un clúster. Aquí te mostramos cómo podemos organizarlo:

    1. Crear un contenedor para analizar los datos de entrada (Python). Este contenedor se asegurará de que los datos de entrada estén preparados correctamente para el siguiente paso.
    2. Crear un contenedor para cada trabajo que se ejecuta en el clúster (10-100 trabajos por software). Estos contenedores pueden ser software compilado en C++ o scripts de Python para análisis. Cada contenedor tomará la parte de la salida del paso uno y la procesará.
    3. Crear un contenedor para el software compilado en C++ intensivo en recursos. Este contenedor utilizará mpirun para distribuir toda la salida del paso 2b y procesarla.
    4. Crear un contenedor para finalizar los resultados (script Python). Este contenedor procesará todos los resultados del paso 3 y mostrará los resultados finales.

    Cada contenedor se puede crear por separado y distribuir en un clúster. Los usuarios pueden ejecutar los contenedores en un flujo de trabajo donde la salida de un contenedor se convierte en la entrada del siguiente. Esto facilitará a los usuarios utilizar el protocolo de bioinformática sin tener que preocuparse por instalar diferentes software y dependencias.

    Alternativamente, es posible crear un solo contenedor que incluya todos los componentes del protocolo de bioinformática. Sin embargo, esto puede llevar a un tamaño de contenedor más grande y tiempos de implementación más largos.

Comments are closed.