Máster En Bioinformática Y Biología Computacional Trabajo Fin De
Total Page:16
File Type:pdf, Size:1020Kb
Universidad Autónoma de Madrid Escuela politécnica superior Máster en Bioinformática y Biología Computacional Trabajo Fin de Máster PLASMIDNET. SISTEMA DE INFORMACIÓN DE MÓDULOS FUNCIONALES DE PLÁSMIDOS Autor: Fernando Freire Gómez Tutor: David Abia Holgado Ponente: Gonzalo Martínez Muñoz Febrero 2020 PLASMIDNET. SISTEMA DE INFORMACIÓN DE MÓDULOS FUNCIONALES DE PLÁSMIDOS Autor: Fernando Freire Gómez Tutor: David Abia Holgado Ponente: Gonzalo Martínez Muñoz Escuela Politécnica Superior Universidad Autónoma de Madrid Febrero 2020 i Resumen Resumen La publicación en web de los datos obtenidos en proyectos bioinformáticos o la exposición de sus algoritmos o procesos de forma que puedan ser utilizados con fuentes de datos alternativas suministradas por el usuario, requiere el diseño y construcción de sistemas capaces de lidiar con grandes volúmenes de datos, habillitados para configurar, distribuir, ejecutar y monitorear flujos de procesos distribuidos entre varios nodos, y conseguir presentar la información de forma interactiva, numérica y gráficamente, confiriendo significación a los datos y a las relaciones entre las diferentes entidades de información. El sistema desarrollado afronta estos retos, teniendo en cuenta además las limitaciones de los entornos humanos de investigación, donde los recursos están sobre todo orientados a la investigación en sí misma. Por ello el sistema se ha construido bajo un estricto criterio de au- tomatización máxima, desde el empaquetamiento y distribución de software hasta la generación de la documentación, eludiendo al máximo la instalación de productos software que conllevarían dificultades de administración y actualización, homogeneizando las pautas de diseño y construc- ción en todos los ámbitos de la aplicación (servidor, navegador), construyendo un conjunto de utilidades para facilitar las pruebas y utilizando los patrones de diseño de software mínimos y necesarios para acometer las diferentes tareas. El sistema se ha construido para soportar las necesidades de los usuarios de la base de datos de módulos funcionales de plásmidos, pero puede ser aplicado fácilmente a cualquier otro proyecto bioinformático. Palabras Clave Módulo funcional, plásmido, proteína, redes, superfamilia, PWA, nodejs, service worker, pipeline, docker, lean, literate programming iii PlasmidNet. Sistema de Información de Módulos Funcionales de Plásmidos Abstract The web publication of the data obtained by bioinformatics projects or the accessibility of their algorithms or processes so that they can be used with alternative data sources provided by the user, requires the design and construction of systems capable of dealing with large volumes of data. Also these systems must be enabled to configure, distribute, execute and monitorice pipelines of batch processes distributed among several nodes, and should have the ability to draw the information interactively, numerically and graphically, conferring meaning to the data and to the relationships between the different information entities. The system developed addresses these challenges, also taking into account the human resour- ces limitations in research environments, where the staff deal primarily towards research itself. Therefore, the system has been built under a strict criteria of maximum automation, from the packaging and distribution of software to the generation of documentation, avoiding the insta- llation of software products that would lead to complexities in administration and updating. To achieve this goal we homogenize to a maximum extent the guidelines of design and construction in all areas of the application (server, browser, pipeline scheduling), building a set of utilities to ease testing and using the minimum and necessary software design patterns to undertake the different tasks. The system has been built to support the user needs of the plasmid functional modules database, but it can be easily extended to any other bioinformatic project. Key words Functional module, plasmid, protein, networks, superfamily, PWA, nodejs, service worker, pipeline, docker, lean, literate programming iv Agradecimientos Puedo escribir estas líneas gracias a los avances científicos. Si no hubiera sido por aquel antibiótico suministrado a tiempo para curar esa neumonía, por aquellos anticoagulantes que eliminaron los trombos antes de que el daño se convirtiera en irreversible, si no fuera por tantas otras cosas pequeñas y grandes, yo ya no estaría en este mundo. Por ello, después de que la ciencia me regalara tiempo en forma de supervivencia y después de que mi última empresa me obsequiara con tiempo para dedicarme a lo que más me gustara, me planteé colaborar con departamentos de investigación con el ánimo de aportar algo de mi experiencia profesional en entornos TIC, algo que ayudara en el trabajo diario de las personas dedicadas a la ardua tarea de interpretar la realidad y cambiarla. Con el fin de lograrlo resultaba imprescindible recibir la formación necesaria para adentrarme en un área gobernada por otra semántica, por otras reglas y fundamentos ajenos en gran medida a los relacionados con mi experiencia previa. El ser elegido para cursar este máster significó un enorme privilegio que no dudé en aprove- char. Después, cuando el CBM, por iniciativa de David Abia, me propuso construir un sistema web para publicar información funcional de plásmidos, tampoco titubeé en aceptar la encomien- da. Este trabajo es un intento de construir una primera versión de este sistema. He intentado utilizar las mejores estrategias de diseño y construcción que he ido aprendiendo durante mi vida profesional previa, soslayando los errores, desde una época que arranca para mí en los inicios de Internet y las comunicaciones de banda ancha, donde todo estaba por hacer, por inventar. Pero este trabajo tiene también mucho de invención, de investigación en estrategias que jamás había utilizado ni he visto tan siquiera plantear. Espero de verdad que con esta dedicación pueda retornar al menos una ínfima parte de lo que he recibido, más allá de que signifique el trámite final para culminar este máster de Bioinformática y Biología Computacional. v PlasmidNet. Sistema de Información de Módulos Funcionales de Plásmidos vi Índice general Índice de Figuras xi Índice de Tablas xiii 1. Introducción 1 1.1. Motivación del proyecto . .1 1.2. Objetivos y enfoque . .2 1.3. Metodología y plan de trabajo . .3 2. Navegador 9 2.1. Planteamiento . .9 2.2. Carga dinámica de módulos javascript . 13 2.2.1. Circuito . 14 2.3. Artefactos injertables . 15 2.4. Base de datos local . 17 2.5. Tablas de datos . 20 2.6. Gráficos vectoriales interactivos. 20 2.7. Subsistema de caché . 21 2.7.1. Service Worker . 22 2.8. Subsistema multiversión . 26 2.9. Aplicación web progresiva . 27 2.10. Diseño de la aplicación . 29 2.11. Documentación como PWA . 31 3. Servidor web 35 3.1. Planteamiento . 35 3.2. Requisitos principales . 36 3.3. Implementación . 36 3.4. Configuración . 37 3.5. Encaminamientos . 38 3.5.1. Solicitudes de estáticos . 38 vii PlasmidNet. Sistema de Información de Módulos Funcionales de Plásmidos 3.5.2. Solicitudes de servicios REST ......................... 38 3.6. Sistema de log ...................................... 39 3.7. Carga dinámica de módulos . 39 4. Bases de Datos 41 4.1. Planteamiento . 41 4.2. Implementación . 42 4.3. Módulos funcionales de plásmidos . 42 4.4. DSL de consulta . 42 4.4.1. Componentes. 43 4.5. Carga inicial de la base de datos . 45 5. Gestor de contenidos 47 5.1. Planteamiento . 47 5.2. Implementación . 49 6. Orquestador distribuido de tareas 51 6.1. Planteamiento . 51 6.2. Definiciones . 52 6.3. Roles . 52 6.4. Casos de uso . 53 6.4.1. Ejecución de una tarea . 53 6.4.2. Ejecución de un paso . 55 6.5. Definición de flujos . 56 6.6. Base de datos de orquestación . 60 6.7. Comunicaciones . 61 7. Automatización Extrema 63 7.1. Generación Documental . 63 7.1.1. Primeros pasos . 63 7.1.2. Enfoque inicial . 64 7.1.3. Implementación . 66 7.1.4. Bibliografía . 69 7.1.5. Conclusiones . 71 7.2. Pruebas y despliegue de software . 72 7.3. Despliegue basado en contenedores . 73 7.3.1. Creación de imágenes . 76 7.3.2. Ejecución de contenedores . 80 7.4. Otras automatizaciones . 80 viii ÍNDICE GENERAL PlasmidNet. Sistema de Información de Módulos Funcionales de Plásmidos 8. Conclusiones y trabajo futuro 83 Glosario de términos y acrónimos 85 Bibliografia 89 A. Manual de utilización 91 A.1. Servidor web ...................................... 91 A.2. Bases de Datos . 91 A.3. Gestor de contenidos . 92 A.4. Orquestador distribuido de tareas . 94 A.4.1. Base de datos de orquestación . 97 A.5. Automatización Extrema . 99 A.5.1. Generación Documental . 99 A.5.2. Pruebas y despliegue de software . 101 A.5.3. Despliegue basado en contenedores . 104 A.5.4. Otras automatizaciones . 107 B. Manual del programador 111 B.1. Estructura Global . 111 B.1.1. Módulo principal . 111 B.2. Navegador . 112 B.2.1. plasmidnet.js . 112 B.2.2. plasmidnet_widgets.js . 114 B.2.3. plasmidnet_loki.js . 125 B.2.4. plasmidnet_graphs.js . 131 B.2.5. plasmidnet_global.js . 141 B.2.6. plasmidnet_sw.js . 144 B.2.7. sw.js . ..