Full text
! 1! ! !
! 2! ! !
! 3! ! ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA DESARROLLO DE UNA APLICACIÓN MÓVIL EN PG/CORDOVA PARA LA GESTIÓN DE DATOS, PARAMETRIZACIÓN Y EJECUCIÓN DE SERVICIOS WEB EN BIOINFORMÁTICA DEVELOPMENT OF A MOBILE APP IN PG/CORDOVA FOR DATA MANAGEMENT, PARAMETRIZATION AND EXECUTION OF BIOINFORMATICS WEB SERVICES Realizado por Sergio Díaz del Pino Tutorizado por Oswaldo Trelles Salazar Juan Falgueras Cano Departamento Arquitectura de Computadores UNIVERSIDAD DE MÁLAGA MÁLAGA, SEPTIEMBRE, 2016 Fecha defensa: El Secretario del Tribunal
! 4! ! ! !
! 5! Resumen: A lo largo de este documento se describe el plan de trabajo para el desarrollo de una aplicación basada en web, especialmente diseñada para móviles pero accesible desde cualquier navegador, así como sus características y su funcionalidad. Empezando por las razones que motivan este trabajo, la definición de los objetivos del mismo y el estado del arte, se describen también el marco de desarrollo y las distintas etapas del desarrollo software. El resultado es mORCA, una aplicación basada en web especialmente diseñada para dispositivos móviles capaz de navegar a través de repositorios, descubrir y ejecutar servicios bioinformáticos y consultar resultados de los mismos. Además la aplicación ha sido portada a las principales plataformas móviles (Android e iOS) con el uso de marcos de trabajo como PhoneGap y Cordova, que mediante instalación permiten mejorar la experiencia del usuario final guardando información en el propio dispositivo. Palabras claves: Bioinformática, Web, Movil, Phonegap, Cordova Abstract: In this document we describe the road map for the development of a webbased application specially developed for mobile devices but also accesible for any browser. Its characteristics and its functionallity is also described. It starts for the reasons that motivates this work, the definition of the goals and the state of the art and continues with the description of the development framework and its differents stages. The result is mORCA, a web-based application specially developed for mobiles devices that allows the user to browse through repositories, discover and execute bioinformatics services and check the results. The application has been wrapped to work in the main mobile platforms (Android and iOS) using frameworks as Phonegap and Cordova, which through an installation improves the final user experience by storing some data in the device. Keywords: Bioinformatics, Web, Mobile, Phonegap, Cordova
! 6!
! 7! Tabla de contenidos ! Capítulo 1. Introducción 1.1 Motivación 1.2 Objetivos 1.3 Características del cliente 1.4 Métodos Capítulo 2. Metodología 2.1 Introducción 2.2 Estado del arte 2.3 Desarrollo ágil 2.4 Iteraciones Capítulo 3. Aplicación 3.1 Introducción 3.2 Partes del sistema 3.3 Requisitos 3.4 Requisitos de la interfaz 3.5 Ciclo de vida 3.6 Diseño de la arquitectura Capítulo 4. Módulos de mORCA 4.1 Introducción 4.2 Módulo de Exploración de Servicios 4.3 Módulo de Descubrimiento de Servicios 4.4 Módulo de Ejecución de Servicios 4.5 Módulo de Sistema de Ficheros Capítulo 5. Interfaces móviles en mORCA 5.1 Introducción 5.2 Exploración el repositorio 5.3 Descubrimiento e invocación servicios 5.4 Sistema de Ficheros
! 8! Capítulo 6. Desarrollo 6.1 Prototipos 6.1.1 iOS 6.1.2 Tecnologías Web + Cordova/PhoneGap 6.2 Tecnologías 6.2.1 jQuery 6.2.3 jQuery Mobil 6.4 Versión Web-App 6.5 Versión empaquetada Capítulo 7. Ejecutando servicios en la nube con mORCA 7.1 Navegando con mORCA 7.1.1 Ejemplo 1 7.1.2 Ejemplo 2 7.1.3 Ejemplo 3 Capítulo 8. Discusión y conclusiones Bibliografía Apéndices Anexo 1. Servicios web 1.1 Introducción 1.2 Tecnologías 2.2.1 SOAP 2.2.2 REST 1.3 Repositorios Anexo 2. API Modular 2.1 Introducción 2.2 Módulos 2.3 Arquitectura 2.3.1 Interfaz 2.3.2 Acceso Anexo 3. Estado del arte
! 9! Capítulo 1. Introducción 1.1 Motivación El crecimiento del uso de dispositivos móviles en los últimos años [1] [2] y sus características implícitas tales como la ubicuidad de acceso a internet y su portabilidad, en combinación con su aumento de potencia, han hecho de estos dispositivos unos aliados imprescindibles no solo en nuestra vida personal sino también en el aspecto laboral [3] [4]. La bioinformática, definida como el uso de técnicas y herramientas computacionales para el análisis de la información biológica [5], tradicionalmente ha ofrecido servicios computacionales a través de la Web, y más recientemente basándose en el concepto de servicios webs [6] como por ejemplo aquellos de consulta de base de datos biológicas tales como GenBank [7] o UniProt [8], o servicios para la comparación y alineamiento de secuencias, tales como BLAST [9], FASTA [10], etc. Por estas razones no debe quedarse atrás en esta nueva tendencia de uso y explotación de las nuevas tecnologías disponibles. Por ello, en este proyecto se propone la el diseño, implantación y pruebas de un cliente software capaz de descubrir, componer, invocar y monitorizar la ejecución de servicios Web. La demostración de su utilidad se realizará sobre servicios y herramientas bioinformáticas. Para ello, centrándonos en el modelo cliente-servidor, apoyado en la disponibilidad de repositorios de servicios y de las tecnologías web para llevar a cabo un cliente ligero, con respuesta rápida y capaz de ser ejecutado en la mayoría de los dispositivos más importantes. Los repositorios de servicios equivalen a una base de datos, con interfaz de Servicio Web, que contiene la descripción del servicio, parámetros, forma de invocación, etc. Son la tendencia actual, como lo demuestra su utilización en los proyectos ELIXIR [11], la infraestructura computacional Europea para la bioinformática (equivalente al CERN en física)..
! 16! 3.2 Partes del Sistema Desde el comienzo del desarrollo de MORCA tuvimos claro que necesitaría no sólo de la parte cliente si no de una parte de backend encargada de procesar los datos y ejecutar los servicios. En nuestro caso, el grupo ya contaba con un backend funcionando, MAPI, del que hablaremos en el Anexo 1. Dicho backend nos permitía acelerar el proceso de desarrollo, centrándonos en la parte del cliente. Como podremos apreciar más adelante mORCA y MAPI, aunque independientes, gozarán de total comunicación entre ellas, situación clásica del modelo ClienteServidor. 3.3 Requisitos A la hora de desarrollar mORCA nos encontramos con una serie de requisitos indispensables que nuestra aplicación debería cumplir. • Catálogo de servicios: Debía ser compatible con los repositorios actuales y permitir explorar y buscar a través de ellos. El número de servicios en bioinformática no es sólo muy grande, sino que está en continuo crecimiento, es por ello que las herramientas para agruparlos y catalogarlos se hacen indispensables. • Composición de parámetros de servicios: La generación de interfaces dinámicas conocidos los parámetros sería el punto fuerte, permitiendo trabajar con infinidad de servicios con interfaces adaptadas sin la necesidad de desarrollar cada una de forma individual. Esto será posible gracias a los metadatos con los que se registran los servicios. • Invocación: Una vez encontrado el servicio y teniendo la interfaz generada y adaptada, los servicios debían poder ser invocados desde el propio teléfono y permitir la consulta de sus resultados. • Manejo de ficheros: La mayoría de servicios necesitan de ficheros de datos, por ello era necesario implementar un sistema de ficheros en la nube que nos permitiera transferir archivos y hacer uso de ellos a la hora de ejecutar un servicio.
! 17! 3.4 Requisitos de la interfaz Uno de los principales problemas que se nos presentaba era cómo mostrar la información. Aunque hay varios estudios tratan la transición correcta entre interfaces WIMP (Windows, Icons, Menus and Pointer) y las móviles (o táctiles) [13] el caso particular de las aplicaciones en biomedicina y bioinformática requieren algunas consideraciones especiales debido al hecho de que la complejidad de los parámetros es muy elevada y requiere de soluciones gráficas a medida para evitar la saturación, especialmente en visualizaciones. En la actualidad hay tres modelos de programación en lo referente a aplicaciones móviles [14], podemos hablar de: - Aplicaciones nativas: Son desarrolladas en su totalidad en el lenguaje nativo del dispositivo. Esto implica varios desarrollos paralelos para cada una de las plataformas (iOS, Android, Windows Phone...) pero permite el acceso a todas las características del teléfono tales como GPS, acelerómetros… - Aplicaciones basadas en web: Son desarrolladas con tecnologías web, lo que las hace totalmente independiente la plataforma y sólo requieren de un navegador web, a cambio el acceso a ciertas características del dispositivo está más restringido. - Aplicaciones híbridas: Son una mezcla de las dos anteriores, se desarrollan usando tecnologías web pero se disfrazan de nativas haciendo uso de APIS capaces de interactuar directamente con el teléfono.
! 18! 3.5 Ciclo de vida El modelo de ciclo de vida clásico para navegar, descubrir y ejecutar servicios en la nube desde un cliente externo está ilustrado en la Figura 3. El proceso, generalmente, consiste en una serie de pasos que empiezan por registrar el servicio en el repositorio usando herramientas destinadas a tal tarea como Flipper [15]. Una vez que el servicio ha sido registrado sus metadatos son accesibles para el cliente. De esta forma el servicio puede ser seleccionado y este proporcionará los datos de su interfaz que será procesada por el cliente y mostrada al usuario. Además podemos hablar de la subida y bajada de ficheros a la nube para hacer uso de esos datos en la propia ejecución. Figura 3. Ciclo de vida para el registro, descubrimiento, composición de parámetros, subida y bajada de ficheros y ejecución de los servicios .
! 19! 3.6 Diseño de la Arquitectura mORCA ha sido desarrollado usando MAPI (Modular API) como principal backend del sistema, permitiéndonos homogenizar el acceso tanto a repositorios como a Servicios Web. MAPI se encargará de extraer la información de los repositorios, así como los metadatos de los servicios, traduciéndolos a un lenguaje accesible para nuestra aplicación. En la parte del cliente la funcionalidad viene dada por la implementación del WSDL, que hemos dividido en pequeños módulos coincidentes con los requisitos que exponíamos en el punto 3.3. Figura 4. Arquitectura del sistema. Dividida en dos grandes grupos, Front-end y Back-end, compuestos de los diferentes módulos encargados del funcionamiento del sistema.
! 20! En la parte más baja, referente al lado del servidor, nos encontramos con MAPI con una capa superior de Servicio Web que actuará de comunicador entre ella y mORCA. Ya en el lado del cliente tenemos los siguientes módulos: - Exploración de catálogos: o En él se concentrarán los métodos necesarios para la exploración y búsqueda de servicios, permitiéndonos trabajar con varios repositorios. - Descubrimiento de servicios: o En él estarán definidos los algoritmos encargados de procesar los parámetros y generar las interfaces - Invocación de servicios: o Donde procesaremos los datos, la ejecución de los servicios y manejaremos los resultados. - Sistema de ficheros: o Se encargará del manejo de ficheros en la nube.
! 21! Capítulo 4. Módulos de mORCA 4.1 Introducción En este capítulo vamos a definir y comentar los módulos que componen nuestra aplicación. Además mostraremos una pequeña lista de los requisitos que definimos para cada módulo en las primeras etapas del proyecto. 4.2 Módulo de Exploración de servicios El módulo de exploración de servicios de mORCA será el encargado de trabajar con los repositorios y sus listas de servicio. Deberá proveer una herramienta de búsqueda y capacidad de trabajar con varios repositorios. Por lo tanto deberá cumplir con los siguientes requisitos: • Obtención de las listas de servicios • Capacidad multirepositorio • Búsqueda mediante filtro de servicios • Generación de árboles para la muestra de servicios 4.3 Módulo de descubrimiento de servicios El módulo de descubrimiento de servicios de mORCA será el encargado de comunicarse con el servidor para obtener los datos de los parámetros de servicios así como de generar las interfaces de manera dinámica en función a esos parámetros y adaptarlas al dispositivo desde el que se vayan a ejecutar. Los requisitos de este módulo son: • Obtención de parámetros de servicios • Generación dinámica de interfaces • Diseño responsivo • Búsqueda de servicios 4.4 Módulo de Invocación de servicios El módulo de invocación de servicios de mORCA será el encargado de procesar los parámetros de entrada, encapsularlos y mandarlos al servidor para que el servicio sea ejecutado. Además, deberá recoger los resultados que arroje la ejecución de dicho servicio.
! 22! Los requisitos de este módulo son: • Procesar los parámetros de entrada • Ejecución del servicio en el lado del servidor • Recuperar los resultados tras la ejecución 4.5 Módulo de sistema de fichero El módulo de Sistema de ficheros será el encargado de manejar los ficheros tanto en el dispositivo como en la nube. Los requisitos de este módulo son: • Subir y descargar ficheros del servidor • Gestión de ficheros • Compatibilidad con Amazon S3
! 23! Capítulo 5. Interfaces móviles en mORCA 5.1 Introducción La transición entre una aplicación WIMP para un entorno de escritorio a una interfaz móvil para un entorno táctil implica un cambio completo en la forma de interacción con el usuario. Las limitaciones en el tamaño de la pantalla, la entrada de datos, la visualización de resultados… plantean una completa revaluación de las mismas. Todas estas limitaciones deben ser tenidas en cuenta debido a la importancia en la relación entre el usuario y el dispositivo ya que un mal diseño puede hacer de una aplicación útil algo inusable. Es por ello que cada uno de los módulos de mORCA han sido diseñados prestando especial atención a todas ellas, haciendo que el usuario se encuentre con interfaces familiares en el entorno móvil pero que aún no han llegado totalmente al mundo bioinformático. 5.2 Exploración del repositorio Una visualización tipo TableView ha sido usada para representar el árbol de servicios como una lista navegable de carpetas y servicios. Esto provee al usuario de un conocimiento rápido de las principales categorías del árbol. Cada celda, con el nombre del servicio acompañado por un icono y una pequeña descripción, es navegable hacía el siguiente nivel del árbol o hacía la interfaz del servicio para ser invocado. La fluidez de la vista se consigue guardando de forma local la información referente al repositorio, es decir, cacheando la lista de servicios, comunicándose con el servidor sólo para recibir los datos de un servicio concreto, junto con animaciones CSS3 que hacen a los paneles hijos aparecer de derecha a izquierda. 5.3 Descubrimiento e invocación de servicios En los módulos para el descubrimiento e invocación de servicios encontramos las interfaces de servicios generadas dinámicamente. Nuestra aplicación, después de que el usuario haya seleccionado un servicio de la lista del repositorio, manda una petición de consulta al backend. Este nos devuelve una lista de parámetros así como algunas datos referentes a ellos como pueden ser el tipo, los valores permitidos.. que se requieren para ejecutar el servicio. mORCA es capaz de construir la interfaz de usuario adecuada para solicitarlos con esta información. Este método no es siempre
! 24! el óptimo para construir una interfaz de usuario adecuada, de manera que se aplican heurísticas que permiten organizar en diálogos coherentes las interfaces, poner valores por defecto e incluso, permitir la descripción ad-hoc de la interfaz añadiendo esta descripción como metainformación al servicio. Además, estas interfaces han sido diseñadas para generarse usando elementos HTML5 que junto con jQuery Mobile se adaptan de forma responsiva al tamaño de pantalla y facilitan la entrada de datos haciendo uso de botones grandes o ‘selects’ y ‘checkboxes’ adaptados a los teclados móviles. 5.4 Sistema de ficheros El manejo de ficheros en los dispositivos móviles siempre supone una limitación debido al poco espacio con el que cuentan. En este caso hemos optado por mantener en la nube un sistema de ficheros para cada usuario el cual permite tanto subir ficheros desde los dispositivos móviles que lo permitan o desde un ordenador como generarlos directamente desde la aplicación. Esto es buscando una secuencia mediante uno de los servicios o copiándola directamente desde nuestro terminal. Las razones son varias: a) Tamaño de los ficheros: Las capacidades de los teléfonos móviles oscilan, en general, entre los 16Gb y los 128Gb, manteniendose la mayoría los niveles más bajos. Es por esto que manejar ficheros de gran tamaño de manera local se hace, en muchos casos, imposible. b) Relación tiempo de translado/coste: Enviar y recibir ficheros de manera local puede suponer un problema de coste debido al tamaño de los mismos. c) Mayor accesibilidad: La mayoría de las veces estos datos se encuentran ya en repositorios estándares conocidos y no son resultado de experimentos locales. Además nuestro sistema se ha integrado con Amazon S3 para importar ficheros. Amazon S3 es un sistema de almacenamiento online ofertado por Amazon Web Services. Provee de almacenamiento a través de servicios web que funcionan mediante REST, SOAP o incluso BitTorrent
! 25! El diseño del módulo encargado de gestionar los ficheros permite hacer que cualquier otro sistema de almacenamiento online sea compatible desarrollando un pequeño plugin. Esto hace que protocolos tan conocidos como FTP, http o APIs de servicios populares como Dropbox, Mega... puedan tener su adaptación a mORCA. Para ello se han utilizado representaciones clásicas de listas de ficheros, en este caso adaptadas a pantallas pequeñas, a las cuales acompañan iconos que permiten interactuar con los propios ficheros (Información, borrar, editar...)
! 32! 6.5 Versión empaquetada Como decíamos en el punto 4.4, hemos hecho uso de Cordova/PhoneGap para empaquetar nuestra aplicación en un .apk compatible con los dispositivos Android. Será necesario descargar cada uno de los SDK’s de los sistemas operativos a usar (iOS, Android, Windows Phone…) y empaquetar la app para cada uno de ellos. Esto nos permitirá mejorar no sólo en velocidad si no que nos permitirá acceder a los principales mercados de aplicaciones de las distintas plataformas (Google Market, Amazon Marketplace, App Store...)
! 33! Capítulo 7. Ejecución de servicios con mORCA 7.1 Navegando con mORCA Con la intención de demostrar el potencial de proveer acceso a servicios bioinformáticos mediante dispositivos móviles procedemos a presentar tres ejercicios: - El primero centrado en la búsqueda de un servicio y obtención de una secuencia. - El segundo centrado en la ejecución de un servicio clásico (Blast). - El tercero centrado en la ejecución de un workflow para el estudio de la homología de unas secuencias. Los dos primeros ejemplos conforman en sí mismos un pequeño workflow: Obtendremos una secuencia usando uno de los servicios y más tarde, en el ejemplo dos, usaremos dicha secuencia para ejecutar un Blast. En el tercer ejercicio el workflow será autómatico, ya que así estará definido en el repositorio y, además, incluirá el uso de servicios externos. La complejidad de los ejemplos es mayor a medida que avanzan, mostrando en el primero una interfaz simple con poca carga de información, en el segundo una interfaz de un servicio más complejo, con una carga de parámetros mucho más densa y variada. El último lo centraremos en la obtención de los resultados finales para ser interpretados.
! 34! 7.1.1 Ejemplo 1: Búsqueda de servicios Este primer ejemplo incluye la búsqueda y el descubrimiento del servicio ‘GetAminoAcidSequence’. Dicho servicio obtiene una secuencia de un aminoácido desde una base de datos biológica. Para ello: a) Será necesario identificarse en el sistema por motivos de seguridad. b) Seleccionaremos el repositorio con el que queremos trabajar. En este caso será el repositorio por defecto ‘Bitlab’. c) Localizaremos el servicio en el catálogo ya sea mediante la navegación por el árbol o ayudándonos de la búsqueda superior. d) Una vez el servicio ha sido seleccionado se generará la interfaz correspondiente mediante una rápida llamada para obtener los metadatos del mismo. e) Con los parámetros rellenados correctamente procederemos a ejecutar el servicio. f) Finalmente los resultados serán recibidos mediante AJAX y mostrados en la pantalla al usuario. A su vez un fichero se habrá guardado en nuestra carpeta de usuario. Figura 9. Interfaz para ‘GetAminoAcidSequence’ generada de forma dinámica.
! 35! 7.2.2 Ejemplo 2: Ejecución de un servicio Blast En este segundo ejemplo ejecutaremos el bien conocido Blast. Este servicio compara una secuencia dada contra una base de datos, en este caso SwissProt, y nos devolverá una lista de secuencias similares que encuentre en la misma base de datos. Ya tenemos en nuestra carpeta de usuario la secuencia que hemos obtenido en el ejercicio anterior, aunque también tendríamos opciones como subir nosotros mismos el fichero o copiar y pegar la secuencia directamente. Para ejecutar Blast el procedimiento a seguir es muy parecido al anterior: a) Será necesario loguearse en el sistema por motivos de seguridad. b) Seleccionaremos el repositorio con el que queremos trabajar. En este caso será el repositorio por defecto ‘Bitlab’. c) Localizaremos el servicio en el catálogo ya sea mediante la navegación por el árbol o ayudándonos de la búsqueda superior. d) Una vez el servicio ha sido seleccionado se generará la interfaz correspondiente mediante una rápida llamada para obtener los metadatos del mismo. e) A la hora de rellenar los parámetros usaremos el icono en forma de nube para seleccionar nuestro fichero generado. f) Rellenaremos el resto de opciones y ejecutaremos el servicio g) Los resultados serán mostrados por pantalla y guardados en nuestra carpeta de usuario. Figura 10. Interfaz para un servicio Blast generada de forma dinámica.
! 36! 7.2.3 Ejemplo 3: Ejecución de un workflow Para este último ejemplo vamos a ejecutar un pequeño workflow compuesto de varios servicios, incluyendo un servicio externo del EBI. Este workflow, registrado en el repositorio de Bitlab como ‘Homology search and Phylogenetic study’ usa un identificador de secuencia de entrada que se usará para descargar la secuencia de la base de datos de Unitprot [15] con la que ejecutaremos el resto de programas. La lista de servicios a ejecutar es: • GetAminoacidSequence: Descarga la secuencia de la base de datos (Unitprot) • runEBIBlast. Ejecuta un BlastP (Búsqueda de homología usando una base de datos de proteinas) con la secuencia dada. La salida servirá de entrada para el siguiente servicio. • getBestHitsFromBlast: Extrae los mejores hits del resultado del Blast usando un valor de corte (e-value) de 0.02. La salida es una colección de secuencias con sus respectivos identificadores. • getAminoAcidSequenceCollection: Este servicio cogerá la lista de identificadores del servicio anterior y descargará sus respectivas secuencias. • runClustalwFast: Realiza un alineamiento múltiple de secuencias usando el algorítmo ClustalW instalado en el EBI. • runCreateTreeFromClustalw: Finalmente, las relaciones obtenidas con el alineamiento multiple se usan para construir un arbol filogenético con formato Newick. Este tipo de árbol es útil para estudiar las relaciones evolutivas entre las secuencias descargadas. Para ejecutar dicho workflow los pasos a seguir son parecidos a los anteriores ejemplos: a) Será necesario identificarse en el sistema por motivos de seguridad. b) Seleccionaremos el repositorio con el que queremos trabajar. En este caso será el repositorio por defecto ‘Bitlab’. c) Localizaremos el servicio en el catálogo ya sea mediante la navegación por el árbol o ayudándonos de la búsqueda superior. d) Una vez el servicio ha sido seleccionado se generará la interfaz correspondiente mediante una rápida llamada para obtener los metadatos del mismo.
! 37! e) Con los parámetros rellenados correctamente procederemos a ejecutar el servicio. f) Finalmente los resultados serán recibidos mediante AJAX y mostrados en la pantalla al usuario. A su vez un fichero se habrá guardado en nuestra carpeta de usuario. Figura 11. A la izquierda, la interfaz del workflow generada dinámicamente. Después, el resultado del mismo en la aplicación y como arbol filogenético.
! 38!
! 39! Capítulo 8. Discusión y conclusiones Tal y como decíamos en el capítulo introductorio, el crecimiento de los dispositivos móviles se ha incrementado de manera casi exponencial en los últimos años. No solamente por el entorno social y la interacción humana que facilitan si no debido al fuerte impacto que están empezando a tener en el ámbito científico. Debemos aprovechar sus principales ventajas, como la ubicuidad de acceso. Nuestra contribución reside en la experiencia obtenida del desarrollo de aplicaciones y servicios bioinformáticos y biomédicos. Estos entornos de desarrollo son bien conocidos por funcionar a través de la web interaccionando con el llamado ‘Big data’. Y es aquí donde los dispositivos móviles han sido dirigidos. Aunque estos dispositivos parten de una posición de desventaja al perder el ratón como dispositivo de entrada y contar con una pantalla pequeña como dispositivo de salida, creemos que ofrecen una posibilidad de interacción muy potente con los gestos táctiles tales como pellizcar, hacer zoom, rotar... con sólo pequeños movimientos de dedos sobre la pantalla. No sólo las pantallas o la interacción táctil con el usuario son motivo de controversia: aunque algunos sistemas operativos como Android o Windows Phone permiten el acceso a su sistema de ficheros de forma tradicional, estos dispositivos no suelen contar con una gran capacidad de almacenamiento, estando la media en unos 16/32Gb, por lo que trabajar con grandes archivos, tales como algunas secuencias o comparaciones genómicas, directamente desde el dispositivo se antoja complicado. En resumen, este proyecto presenta una aplicación móvil capaz de navegar a través de repositorios, buscar y descubrir servicios, generar interfaces responsivas de forma dinámica basadas en metadatos de servicios bioinformáticos y ejecutarlos desde el propio cliente. Con esto propone un primer acercamiento del uso de dispositivos móviles en campos científicos que todavía no aprovechan su potencial, como la bioinformática.
! 40!
! 41! Bibliografia [1]!Internet!Trends,!2013.!Available!from:! <http://www.kpcb.com/insights/2013-internet-trends>![7!October!2013]! ! [2]!The!‘Mobile!Only’!Internet!Generation,!2010.!Available!from:! <http://www.slideshare.net/OnDevice/the-mobile-only-internet-generation>![7! October!2013]! ! [3]!Laura!Pfeifer!Vardoulakis,!Amy!Karlson,!Dan!Morris,!Greg!Smith,!Justin! Gatewood,!and!Desney!Tan.!Using!mobile!phones!to!present!medical!information! to!hospital!patients.!In!Proceedings!of!the!SIGCHI!Conference!on!Human!Factors! in!Computing!Systems,!CHI’12,!pages!1411–1420,!New!York,!NY,!USA,!2012.! ACM.! ! [4]!Robin!Deegan.!Managing!distractions!in!complex!settings.!In!Proceedings!of! the!15th!International!Conference!on!Human-computer!Interaction!with!Mobile! Devices!and!Services,!MobileHCI!’13,!pages!147–150,!New!York,!NY,!USA,!2013.! ACM.! ! [5]!Attwood,!T.K.!and!Parry-Smith,!D.J.!(1999),!“Introduction!to!bioinformatics”,! Addison!Wesley!Longman,!Harlow,!Essex!CM20!2JE,!UK.ISBN!0!582!327881.! ! [6]!Ison,!J.,!Rapacki,!K.,!Ménager,!H.,!Kalaš,!M.,!Rydza,!E.,!Chmura,!P.,!...!&!Booth,!T.! (2015).!Tools!and!data!services!registry:!a!community!effort!to!document! bioinformatics!resources.!Nucleic!acids!research,!gkv1116.! ! [7]!Benson!DA,!Karsch-Mizrachi!I,!Lipman!DJ,!Ostell!J,!Sayers!EW!(2009).! !GenBank.!Nucleic!Acids!Res.!2009!Jan;37(Database!issue):D26-31.! !Epub!2008!Oct!21.! ! [8]!Uniprot,!C.!(2010).!"Ongoing!and!future!developments!at!the!Universal! Protein!Resource".!Nucleic!Acids!Research.!39!(Database!issue):!D214–D219.! doi:10.1093/nar/gkq1020.!PMC!3013648free!to!read.!PMID!21051339.! ! [9]!Pearson!WR,!Lipman!DJ:!Improved!tools!for!biological!sequence!comparison.! Proceedings!of!the!National!Academy!of!Sciences,!1988,!!85(8):2444–2448! ! [10]!Tao!Tao!(2011-08-24).!"Single!Letter!Codes!for!Nucleotides".![NCBI! Learning!Center].!National!Center!for!Biotechnology!Information.! ! [11]!https://www.elixir-europe.org! ! ! [12]!Karlsson,!J.,!&!Trelles,!O.!(2013).!MAPI:!a!software!framework!for! distributed!biomedical!applications.!J.!Biomedical!Semantics,!4,!4.! ! [13]!Cheung,!Victor;!Heydekorn,!Jens,!Scott!Stacey!and!Dachselt!Raimund.! Revisiting!hovering:!Inter-!action!guides!for!interactive!surfaces.!In!Proceedings!
! 48!
! 49! Anexo 2. API Modular 2.1 Introducción MAPI es un marco de trabajo (framework), desarrollado por el grupo de investigación Bitlab del Departamento de Arquitectura de Computadores de la Universidad de Málaga, para uniformizar el acceso a distintos repositorios de Servicios Web facilitando de esta forma el desarrollo de clientes que trabajen con éstos. El framework ha sido programado utilizando el lenguaje Java5 por lo que es multiplataforma y utilizable tanto en aplicaciones de escritorio como en aplicaciones web (haciendo uso de jsp), applets o servicios web. Su nombre proviene de la idea de realizar un framework lo más desacoplado posible de manera que una aplicación que utilice sólo ciertas características de MAPI no necesite importarla por completo, sino únicamente los módulos usados y sus dependencias. MAPI se encuentra dividida en dos capas claramente diferencias, la interfaz o módulo que es uniforme independientemente del repositorio al que estemos accediendo y los accesos que son específicos para cada repositorio y cuya tarea es traducir las peticiones provenientes de la capa superior al repositorio utilizando los protocolos específicos del mismo. Adicionalmente existen unos accesos especiales que permiten añadir una cache a un acceso concreto, agilizando las peticiones y permitiendo su uso sin conexión a la red. Además de la interfaz programática realizada en Java, MAPI posee una interfaz de Servicios Web que proporciona aproximadamente la misma funcionalidad con la ventaja de poder ser utilizada por cualquier aplicación, sin importar el lenguaje en el que se haya desarrollado o el entorno en el que se ejecute.
! 50! 2.2 Módulos Como hemos comentado anteriormente, la principal característica de MAPI es su modularidad. Actualmente en MAPI consta de 8 módulos principales aunque el diseño no está cerrado a la aparición de nuevos módulos si resultara necesario. Podemos dividir MAPI en los siguientes módulos: - ModularAPICore: Es el núcleo de MAPI, en él se definen e implementan las utilidades comunes a todos los módulos. - DataType y Tool son los módulos encargados de manejar las entidades presentes en el modelado de Servicios Web. - Namespace y FunctionalCategory estructuran y ordenan dichas entidades agrupándolas de distintas formas. - Data proporciona al desarrollador de aplicaciones herramientas para tratar los datos y convertirlos de un formato a otro. - FileSystem permite almacenar estos datos ofreciendo servicios de persistencia. - ToolLocation maneja los endpoints o puntos de acceso a los Servicios Web permitiendo el uso de mirros. - User permite la administración de usuarios, MAPI contempla el uso de Servicios Web seguros que requieran algún tipo de autenticación, por ello también permite el control de usuarios permitiendo su creación y administración desde este módulo. Además de estos módulos, MAPI define variantes seguras de los mismos con ligeros cambios para el control de acceso a los recursos.
! 51! 2.3 Arquitectura Todos los módulos de MAPI se encuentran divididos en dos capas bien diferenciadas: interfaz y acceso. La interfaz define el modelo de datos utilizado por el módulo y es independiente del repositorio utilizado en cada momento. Mientras que es responsabilidad de los accesos transformar los datos y protocolos del repositorio para hacerlos coincidir con la interfaz común. Cada módulo dispone de varios accesos especializados en cada uno de los repositorios que pueden ser manejados por MAPI (por ejemplo, BioMoby, INB, ACGT, WSDL, etc.) además de estos accesos, existe uno especial que actúa como capa intermedia entre la interfaz y el acceso proporcionando servicios de caché agilizando el sistema de haciéndolo independiente del tráfico de la red. La utilización de un acceso u otro viene definido por un fichero de configuración (URL del repositorio, Proxy, fichero de caché, etc.). Por lo tanto, cambiar de repositorio o acceso es tan sencillo como editar un fichero XML, no siendo necesario ningún cambio en el código ni compilar de nuevo la aplicación. 2.3.1 Interfaz El diseño de MAPI concibe la interfaz como un modelo común a la mayoría de los repositorios de Servicios Web, por lo que debe contener además de los campos más utilizados en la definición de los Servicios Web métodos para buscar, listar y organizar la información contenida en cada repositorio. MAPI dispone de métodos para realizar las operaciones básicas realizadas sobre cualquier base de datos o capa de persistencia: Crear, Obtener, Actualizar y Borrar (Create, Retrieve, Update y Delete en inglés) normalmente indicado con el acrónimo CRUD. Los métodos de creación de objetos nos permitirán añadir nuevas entidades al repositorio, útil cuando queremos registrar un servicio nuevo, organizar de forma estructurada los servicios (organizándolos por categorías), crear tipos de datos nuevos para nuestro servicio, dar de alta a un usuario en el sistema, etc. MAPI permite obtener el listado completo de entidades por tipo (obtener el listado completo de servicios en una llamada, por ejemplo), también dispone de métodos para obtener un recurso completo o explorar un árbol de categorías solicitando las entidades descendientes de una dada. Además los listados devueltos
! 52! por MAPI implementan una funcionalidad adicional que permite un filtrado dinámico y completamente flexible de los resultados. Cada entidad ofrece los mecanismos necesarios para editar cualquiera de sus campos, útil cuando deseamos cambiar la definición de un servicio, el nombre de un parámetro, la definición de un tipo de datos. Como es obvio MAPI también ofrece la posibilidad de eliminar cualquier recurso que creamos que ya no es necesario o quede obsoleto del repositorio, pudiendo de esta forma tener un repositorio limpio y ordenado en todo momento. En el fichero de configuración se podrá indicar si se desean borrar automáticamente todas las dependencias del elemento a eliminar o por el contrario que se prohíba el borrado. Cuando se utilizan los módulos seguros, todas estas funciones son monitorizadas y sólo serán ejecutadas en el caso de que el usuario tenga los permisos necesarios para llevarla a cabo. La interfaz es idéntica en ambos casos a excepción de los métodos necesarios para entrar y salir del sistema y manejar las sesiones. Existes dos interfaces para MAPI: - Programática: es la más usada, ha sido desarrollada en Java y permite utilizar todos los módulos de MAPI y explotar toda su funcionalidad. - Web Services: Permite usar MAPI desde otros lenguajes de programación a costa de perder cierta funcionalidad debido a las restricciones propias de los Servicios Web 2.3.2 Acceso Los accesos son la parte más importante de MAPI, en ellos reside la capacidad de ésta para leer múltiples repositorios distintos. Se puede entender un acceso como un conversor de interfaces tanto a nivel de datos como a nivel de operaciones. MAPI define una interfaz que deben cumplir todos los accesos, con los métodos necesarios para cubrir las necesidades de la interfaz programática y un modelo de datos uniforme a la par que flexible. La implementación de cada acceso deberá cubrir la funcionalidad de cada uno de los métodos definidos haciendo uso de los servicios que le proporciona el repositorio concreto que mapea. Por ello, es posible que un método de un acceso requiera de dos o más llamadas a servicios del repositorio.
! 53! Para evitar los posibles retrasos causados por este problema o por caídas temporales de los repositorios, se ha implementado un tipo de accesos especiales capaces de almacenar la información del repositorio en una caché, recudiendo considerablemente los tiempos de arranque y uso del acceso y permitiendo su uso incluso sin conexión a internet. Además de cubrir la funcionalidad básica definida por MAPI, los accesos deben traducir las estructuras de datos de los repositorios a un modelo entendible por la capa superior. Para ello se utilizan pares atributo valor cuyas claves serán definidas en la interfaz del acceso. Ésta definición del modelo de datos permite a la implementación del acceso incluir datos adicionales que pueden ser ignorados por la interfaz de MAPI e incorporados a ella en un futuro, o dejar campos sin utilizar en caso que el repositorio no contenga esa información.
! 54!
! 55! Anexo 3. Estado del arte Categor y* App name Performs Advantajes Dissatvantajes Link 2 CloningBench Helps to do cloning experiments, in every detail based on tables for each kind of enzimes, etc. Up to the point, it helps with the details for this kind of experiments. Free Not updated since 2011 https://itunes.apple.c om/es/app/cloningben ch-byinvitrogen/id4586177 77?mt=8 2 Promega View, run and annotate Promega protocols. Run timers directly from the relevant steps, and when complete, email the annotated protocols for printing, etc Interesting tool for this lab users. Free Specific https://itunes.apple.c om/es/app/promega/i d307546949?mt=8 1 Phylogram Visualization of phylogenetic tree Phylogram allows visualisation of the phylogenetic trees resulting from bioinformatics sequence analyses Just for iPhone, not intuitive, does not hanlde landscape, can't get to file selection. Low interactivity. Difficult to zoom-handleintertact even with small phylogenetic trees. https://itunes.apple.c om/us/app/phylogram /id399814043?mt=8&l s=1 1 Biocatalogue Browse the catalogue for services, service providers. REST endpoints and SOAP Operations Informational app, handles landscape and portrait. Free Is more like a web site. Information is minimal, no links. Unorganized, plain lists, non hierarchical nor contents organized. Quite difficult to browse or search through. https://itunes.apple.c om/us/app/biocatalog ue/id450120348?mt= 8&ls=1 2 EdgeBio It allows access to all content from the EdgeBio blog, website and their online communities Unifies all digital resources of EdgeBio blog. Free.Interacts via scial networks It is more a link to videos and on line resources than a tool or app. Not access from all countries https://itunes.apple.c om/us/app/edgebio/id 515313935?mt=8&ls= 1 1 SimAlign iOS touch application that interfaces with NCBI BLAST service to align a provided sequence or Accession. Saves all queries allowing users to recall and resubmit searches. iOS and Android It is not confortable to use, many dialogs for the only task it can do: NCBI blast. It depends on registered users. It is unable to handle files, you must copypaste or type the entire sequence in a small textbox. It is based on registering and not free accounts. https://itunes.apple.c om/us/app/simalign/id 432818873?mt=8
! 56! 1 SimGene Interfaces with Simbiot, Ensembl, NCBI, etc, to retrieve annotation info for over 30-species, based on gene and symbol search iOS and Android Same user interface and uncomfortable handling as SimAlign. It is based on registering and not free accounts. https://itunes.apple.c om/us/app/simgene/i d427772349?mt=8 1 Oh BLAST It! Executes BLAST Simple. Free Only Android. It doesn't have a real graphical user interface, but a kind of black screen where everything is displayed and entering as command lines https://play.google.co m/store/apps/details?i d=com.bioinformatics app 1 Gene Aligner This program uses the NeedlemanWunsch and SmithWaterman algorithms for pairwise gene global and local alignment, respectively. Simple. Free. The sequences can be entered in two different ways: string of characters or NCBI accession number. The program can also generate a dot plot for the alignment. Only Android. It doesn't have a real graphical user interface, but a kind of black screen where everything is displayed and entering as command lines https://play.google.co m/store/apps/details?i d=itd_gene.activities 2 NEB Tools /New England Biolabs Inc Enzyme finder for restriction enzyme finding information on any NEB enzyme Complete, well documented and organised. Free Quite specific for this labs https://itunes.apple.c om/es/app/nebtools/id350346827?mt =8 3 RCSB PDB Official mobile app of the RCSB PDB (Protein data bank) Amazing database, with molecular 3D rendering. Depends on internet connection. Only querying https://itunes.apple.c om/us/app/rcsbprotein-databank/id529153183?ls =1&mt=8 2 PCR Essentials Interact Remotely with your ProFlex™ PCR system. product information on Taq Polymerases, dNTP, Gels and stains, RTPCR products, cDNA products and master mixes, etc. Smart interface, high quality app. Free Specific https://itunes.apple.c om/es/app/pcressentials/id60699064 0?mt=8 3 DrugBankWP Chemical, pharmacological and pharmaceutical database Complete WindowsPhone only http://www.windowsp hone.com/eses/store/app/drugban kwp/968f1dbe-0e674c2a-b73316bfcfd4f51c 1 DNAApp Open ab1 files Open and visualise sequences from Dropbox (in iOS). New versions save also in fasta format Simple. Not well adapted to common gestures in mobiles. https://itunes.apple.c om/us/app/dnaapp/id 854944694?mt=8
! 57! 4 Evolutionary Biology Concept to teach evolutionary concepts Simple More as web site than appication. Simple. It covers only quite a few topics in Bioinformatics, it's very simple and take no advantage of the interactive capabilities of the device. Not free https://itunes.apple.c om/us/app/evolutiona rybiology/id513464425? mt=8&ls= 4 Gen Tutor iOS student app for students taking a standard College level course in Genetics Extensive and complete based on levels of knowledge. Free A tool for students, following a course https://itunes.apple.c om/es/app/genetutor/id534062019?mt =8 4 Gene Link Quick short course in molecular genetics High quality material. Wide range and well organized number of topics. Tools for researchers. Free Only tools for handling one sequence, simple ops https://itunes.apple.c om/es/app/arraygenetic-tools-fromgene/id399712676?mt =8 4 Nature ENCODE It helps to navigate through the 30 papers published in Nature, Genome Research and Genome Biology as the ENCODE Project Amazing presentation of the state of the art in the most important papers published iPad only https://itunes.apple.c om/es/app/natureencode/id553487333? mt=8 4 MyGenome/Il lumina, Inc Explore real human genome Graphic, health implications, educational, quite complete. Good graphics, a lot of information on genetic deseases. Cheap. iPad only https://itunes.apple.c om/es/app/mygenom e/id516405838?mt=8 4 Human Genome Obtain graphical info between diseases and genes, syndromes or traits Graphical, pedagogic, free iPad only https://itunes.apple.c om/es/app/humangenome/id576939342 ?mt=8 2,4 MIQE qPCR Helps with technical support on particular qPCR experiments. Based on characteristics, it offers articles and depending on your problem, particular advise Essentially useful. Kept updated, with active version supporting. Fre e Quite specific, documentative. https://itunes.apple.c om/es/app/miqeqpcr/id423650002?mt =8 2 Real-time PCR Clearly organised set of documentative resource on experiment preparation and results interpretation on PCR Attractive, easy to use, a lot of information. Update. Free Specific, documentative https://itunes.apple.c om/es/app/real-timepcr/id523157743?mt= 8