¿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.
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:
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.