una herramienta web para el análisis morfométrico resistente

59
Universidad Nacional del Centro de la Provincia de Buenos Aires Facultad de Ciencias Exactas - Departamento de Computación y Sistemas Una herramienta web para el Análisis Morfométrico Resistente Trabajo Final de Carrera para acceder al título de Ingeniero de Sistemas Autor: Guillermo Andrés Pacheco Director: Viviana Ferraggine Codirector: Sebastián Torcida

Upload: others

Post on 08-Nov-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Una herramienta web para el Análisis Morfométrico Resistente

Universidad Nacional del Centro de la Provincia de Buenos Aires

Facultad de Ciencias Exactas - Departamento de Computación y Sistemas

Una herramienta web

para el Análisis Morfométrico Resistente

Trabajo Final de Carrera para acceder al título

de Ingeniero de Sistemas

Autor: Guillermo Andrés Pacheco

Director: Viviana Ferraggine

Codirector: Sebastián Torcida

Page 2: Una herramienta web para el Análisis Morfométrico Resistente

Agradecimientos

Quiero agradecerle a mi familia el amor y el apoyo incondicional que me

brindaron a lo largo de la carrera: me inculcaron desde pequeño el valor de los

estudios y por eso he llegado a este lugar. A mi hijo, que es el motor de mi vida. No

puedo dejar de agradecerles a los compañeros de cursada y conocidos en general

con quienes compartí éstos años de carrera; su compañía, su apoyo y los lindos

momentos compartidos enriquecieron este recorrido. Finalmente, quiero agradecer

la directora y al codirector de este trabajo final por su paciencia, su ayuda y su guía

en la realización del mismo. A todas éstas personas, mi más sincero

agradecimiento.

Guillermo

Page 3: Una herramienta web para el Análisis Morfométrico Resistente

INDICE GENERAL

CAPÍTULO 1: INTRODUCCIÓN 5

1.1 Motivación y Descripción del Problema

1.2 Objetivos

1.3 Metodología

1.4 Estructura del Documento

CAPÍTULO 2: MARCO TEÓRICO 8

2.1 Morfometría Geométrica

2.1.1 Landmarks, Datos Morfométricos, Forma

2.1.2 Superposiciones Procrustes

2.1.2.1 Superposición Procrustes por Cuadrados Mínimos (SPCM)

2.1.2.2 Superposición Procrustes Resistente (SPR)

2.1.3 Distancias Morfométricas

2.1.3.1 Distancia Procrustes

2.1.3.2 Distancia Resistente

2.1.4 Ordenamientos

2.2 Consideraciones sobre Softwares Morfométricos

2.3 RPS Desktop, Nuevas Funcionalidades y Entorno Web

CAPÍTULO 3: TECNOLOGÍAS UTILIZADAS 17

3.1 Introducción

3.2 Entorno de Capacidades Estadísticas y Gráficas

3.3 Tecnología de Base de Datos

3.4 Frontend

3.4.1 ReactJS

3.4.2 AngularJS

3.4.3 Librerías Gráficas Javascript

3.6 Backend

3.6.1 .NET Core

3.6.2 NodeJS

3.7 Web Services

3.8 Shiny de R Studio

3.9 Decisiones de Implementación

4.1 Introducción

Page 4: Una herramienta web para el Análisis Morfométrico Resistente

CAPÍTULO 4 : DESARROLLO 27

4.2 RPS Package

4.2.1 Entorno de Desarrollo

4.2.2 Rutinas Principales

4.2.3 Documentación de R Package

4.3 Modelo de Datos

4.3.1 Descripción de Campos JSON

4.4 RPS Services

4.4.1 Gestión de Solicitudes

4.4.2 Módulos de Procesamiento

4.4.2.1 ParseJSON

4.4.2.2 PlotlyGenerator (GraphicsJSONGenerator)

4.4.2.3 R_Module

4.4.3 Gestión de Sistema de Archivos

4.4.4 Acceso a la Base de Datos

4.4.5 Funcionamiento Integral de RPS Services

4.5 RPS Frontend

4.5.1 Entorno de Desarrollo de la Aplicación Web

4.5.2 Desarrollo

4.5.2.1 Vista de Módulos

4.5.2.2 Vista de Componentes

4.5.3 Servicios AngularJS

CAPÍTULO 5 : MEJORAS Y TESTEO 46

5.1 RPS Online vs. RPS Desktop

5. 2 Test de Precisión del RPS Package

5.3 Test de Compatibilidad de RPS Online

COMENTARIOS FINALES 54

Page 5: Una herramienta web para el Análisis Morfométrico Resistente

1.1 Motivación y Descripción del Problema

La morfometría se ocupa del análisis cuantitativo de la forma de organismos y

estructuras biológicas, valiéndose de herramientas matemáticas y estadísticas. El

enfoque actual para describir la variación de una forma biológica es relativamente

reciente: en la década del noventa tuvo lugar la llamada la revolución morfométrica

(Rohlf y Marcus, 1993; Adams et al., 2004), en la que los métodos matemáticos y

geométricos se fusionaron con la estadística multivariada para constituir un área

disciplinar específica conocida como el análisis estadístico de la forma.

En este contexto, morfometría geométrica utiliza para el estudio de una forma

biológica las coordenadas cartesianas en 2D o 3D de puntos anatómicos

denominados landmarks cuya característica distintiva es la homología: éstos puntos

pueden ser claramente identificados y registrados por un especialista -biólogo,

antropólogo, médico, etc.- en todos los organismos cuya forma se quiere analizar

y/o comparar. Así, la MG representa una forma mediante un conjunto o

configuración de landmarks que captura la geometría del organismo biológico

estudiado. Y la comparación de dos o más formas se realiza superponiendo de

manera óptima las configuraciones que las representan.

En las últimas décadas los métodos de la MG se han convertido en

estándares en disciplinas como la biología y la antropología. Sin embargo, la

mayoría de los softwares morfométricos desarrollados desde entonces como

MorphoJ (Klingenberg, 2011), Geomorph (Adams y Otárola Castillo, 2013) y la serie‐

TPS (Rohlf, 2015) entre otros, han implementado casi exclusivamente métodos de

superposición basados en cuadrados mínimos dejando de lado las alternativas

resistentes (Siegel y Benson, 1982; Rohlf y Slice, 1990; Slice, 1996; Torcida et al.,

2014). Estas últimas ofrecen mejores resultados cuando existen errores, datos

atípicos o outliers, facilitando la interpretación biológica de los resultados pese a su

mayor costo computacional. La ausencia de herramientas de software de uso

masivo que incluyan el enfoque resistente es por lo tanto evidente.

CAPÍTULO 1: INTRODUCCIÓN

Page 6: Una herramienta web para el Análisis Morfométrico Resistente

Para promover en la comunidad morfométrica el uso de algoritmos

resistentes en el estudio de formas biológicas en 3D empleando landmarks, se

desarrolló recientemente la herramienta de software de escritorio RPS: Resistant

Procrustes Software (Ferraggine et al., 2017) en Java; será mencionada como RPS

Desktop de aquí en adelante. RPS Desktop tiene una implementación sencilla y

permite el análisis de uno o más datasets (conjunto de configuraciones de

landmarks cuya forma se quiere estudiar) dentro de un mismo proyecto. Después de

haber sido usada un tiempo, se detectó la conveniencia de incorporar en RPS

Desktop la persistencia de datos e integrarla con algún paquete estadístico. Se

evaluó entonces desarrollar una herramienta web con las funcionalidades

existentes, los agregados y con la posibilidad de ser colaborativa.

1.2 Objetivos

En este trabajo se describe el proceso de desarrollo e implementación en el

entorno web RPS Online de las funcionalidades existentes en RPS Desktop,

integrándolas con un motor de bases de datos y con un framework de capacidades

estadísticas y gráficas. Los objetivos fueron:

• construir un modelo de datos genérico que para cada usuario soporte el

almacenamiento de sus proyectos, los datasets/landmarks/etc.

correspondientes y los resultados de los análisis realizados;

• integrar las funcionalidades estadísticas, gráficas, de análisis y de

almacenamiento en una herramienta web que permita realizar un estudio

morfométrico descriptivo con el enfoque resistente;

• incorporar a las funcionalidades de RPS Desktop la posibilidad de:

› aumentar o disminuir la cantidad de objetos y/o de landmarks a analizar;

› importar y exportar datos morfológicos desde y hacia la base de datos,

partiendo de diferentes fuentes;

› realizar otros tipos de consultas y actualizaciones en la base de datos.

Page 7: Una herramienta web para el Análisis Morfométrico Resistente

1.3 Metodología

En este trabajo se empleó un enfoque ágil: un desarrollo iterativo e

incremental donde los requisitos y soluciones fueron evolucionando de acuerdo a

las necesidades del proyecto. Inicialmente no resultaba claro cómo integrar una

aplicación web con un framework de capacidades estadísticas y gráficas; éste y

otros aspectos fueron definiéndose en el proceso. El análisis de alternativas, las

consultas con usuarios representativos de la comunidad morfométrica y las

discusiones con los directores fueron permanentes.

1.4 Estructura del Documento

Este documento está organizado de la siguiente manera:

• En el Capítulo 2 se describe brevemente el enfoque de la morfometría

geométrica para el estudio de las formas biológicas y también los análisis

morfométricos que se implementan en RPS Online.

• En el Capítulo 3 se describen las tecnologías de software utilizadas para el

desarrollo del sistema, incluyendo las que fueron descartadas.

• En el Capítulo 4 se explica el desarrollo del sistema y su

estructura/arquitectura final. Se describen la arquitectura, el modelo de datos

y los componentes de la aplicación. Y se mencionan los cambios introducidos

respecto a la planificación original.

• En el Capítulo 5 se detallan las funcionalidades y facilidades con las que

cuenta el sistema, explicando a grandes rasgos su modo de uso. Y se

mencionan los resultados obtenidos en los testeos.

• El trabajo concluye con un resumen de lo realizado.

Page 8: Una herramienta web para el Análisis Morfométrico Resistente

2.1 Morfometría Geométrica

La morfometría geométrica (MG) alude al enfoque surgido en la década del

noventa en el que la forma de un organismo es representada mediante las

coordenadas cartesianas de una configuración o conjunto de landmarks. Los

landmarks fueron inicialmente utilizados para el estudio de formas en 2D, pero su

uso en 3D se ha vuelto progresivamente más frecuente a partir del avance

tecnológico y de la disponibilidad de imágenes de diverso tipo: tomografías

computadas, resonancias magnéticas, etc.

2.1.1 Landmarks, Datos Morfométricos, Forma

Los landmarks se definen como puntos anatómica o geométricamente

homólogos entre estructuras u organismos. Como se describe en (Bookstein, 1991)

pueden distinguirse tres tipos de landmarks (Fig. 1):

Tipo I: son puntos que cuentan con mayor evidencia biológica de su homología. Por ejemplo, una

yuxtaposición de tejidos o una sección pequeña de características histológicas inusuales;

Tipo II: son puntos cuya homología sólo se sostiene con evidencia geométrica y no histológica. Por

ejemplo, puntos de máxima curvatura;

Tipo III: son puntos con al menos una coordenada ambigua. Por ejemplo, los extremos de un

diámetro máximo o el punto inferior de una concavidad. Estos landmarks suelen caracterizar a más

de una región de la estructura, condicionando las interpretaciones geométricas o biológicas sobre

ellos. Debido a la naturaleza algo imprecisa de éste tipo de landmarks, Bookstein (1996) revisó su

clasificación original y denominó semilandmarks a éste grupo.

En el ámbito de la llamada morfometría tradicional, la forma de un organismo

era caracterizada y estudiada a través del registro de medidas lineales (Marcus,

1990; Fig. 1, B). El problema de éste tipo de medidas (el largo máximo y el ancho

mínimo son algunos ejemplos típicos) es que no hacían referencia a la homología

de los puntos que las determinaban. Y por lo tanto no siempre conseguían capturar

CAPÍTULO 2: MARCO TEÓRICO

Page 9: Una herramienta web para el Análisis Morfométrico Resistente

la configuración espacial y geométrica de la estructura subyacente (Adams et al.,

2004; Slice, 2007).

El enfoque de la MG intentó superar los inconvenientes de la morfometría

tradicional al registrar y analizar las coordenadas cartesianas de los landmarks

(Bookstein, 1991; Fig. 1, A). El criterio de homología biológica que sustenta la MG

establece una restricción para elegir los puntos que se consideran informativos en

términos de la forma de un organismo: los puntos seleccionados deben permitir

realizar inferencias (Zelditch et al., 2004). Al mismo tiempo, esa restricción

contribuye a reducir el error de medición: se utilizan puntos claramente reconocibles

y presentes en todos los organismos que es estudian.

A finales de la década del setenta se postuló una definición bastante precisa

de la forma: es aquella información geométrica de una estructura u organismo que

permanece luego de filtrar los efectos de su posición, su escala y su orientación

(Kendall, 1977). Comenzó entonces una renovación significativa en el estudio de las

formas biológicas como consecuencia del desarrollo de los métodos basados en las

coordenadas cartesianas de puntos (Rohlf y Marcus, 1993; Adams et al., 2004;

Gunz et al., 2005).

La MG representa una forma biológica mediante una configuración de

landmarks: una matriz n x p en la que se almacenan las coordenadas cartesianas de

n landmarks en p=2 ó p=3 dimensiones. Estudios biológicos y antropológicos

emplean habitualmente landmarks para obtener información sobre la forma de

estructuras fenotípicas y analizar su variación entre individuos, poblaciones y/ó

especies (Goodall, 1991; Adams et al., 2004; Mitteroecker y Gunz, 2009). En

Figura 1: (A) Landmarks del tipo I, II y III

(B) Medidas lineales

Page 10: Una herramienta web para el Análisis Morfométrico Resistente

tiempos recientes, el análisis de la variación de la forma biológica se ha vuelto un

tema de interés en campos tan diversos como la ecología y los estudios evolutivos

(Bookstein, 1989, 1991, 1996) y existe consenso en que el enfoque de la MG está

poniendo a la luz aspectos morfométricos no considerados previamente (Zelditch et

al., 2004; Mitteroecker et al., 2005; Hallgrímsson y Lieberman, 2008)

2.1.2 Superposiciones Procrustes

Un paso intuitivo para comparar la forma de dos o más configuraciones de

landmarks en el contexto de la MG es intentar superponer sus coordenadas

cartesianas. Pero esto requiere elegir cuidadosamente el criterio a usar para realizar

la superposición, ya que las diferencias de forma que se identifican dependen

fuertemente del criterio empleado (Richtsmeier et al., 2002; Catalano y Goloboff,

2012).

A partir de la definición de Kendall resulta claro que la superposición óptima

de distintas configuraciones de landmarks puede alcanzarse una vez que las

diferencias en términos de posición, orientación y escala han sido filtradas. Las

superposiciones que filtran tales diferencias conservando la forma se conocen como

superposiciones Procrustes; el nombre alude al posadero de la mitología griega que

forzaba a sus huéspedes a encajar en sus lechos estirándolos cruelmente o

cortándoles sus piernas. Matemáticamente, una superposición Procrustes busca

determinar la traslación, la rotación/reflexión y el escalamiento óptimos para

sincronizar respectivamente la posición, la orientación y la escala de las

configuraciones de landmarks cuyas formas se comparan (Fig. 2). Tales

transformaciones geométricas dejan invariante la forma.

Figura 2: Interpretación geométrica de las transformaciones de una superposición Procrustes:

las diferencias de posición, escala y orientación son eliminadas para comparar las formas.

Page 11: Una herramienta web para el Análisis Morfométrico Resistente

2.1.2.1 Superposición Procrustes por Cuadrados Mínimos (SPCM)

El criterio de superposición Procrustes más utilizado busca transformaciones

que dejen invariante la forma de modo que la suma de las distancias euclideas al

cuadrado entre los landmarks correspondientes de las distintas configuraciones sea

mínima luego de la superposición: es la llamada superposición Procrustes por

cuadrados mínimos (SPCM, en lo que sigue).

Por su relativa simplicidad matemática y su eficiencia computacional, la

SPCM es el método más difundido para el análisis de la forma usando landmarks.

Sin embargo, es sabido que posee limitaciones: en particular, cuando las diferencias

de forma no son homogéneas entre los landmarks (Richtsmeier et al., 2002; van der

Linde y Houle, 2009). En estos casos el resultado de una SPCM suele conducir a

interpretaciones erróneas: cuando las diferencias de forma son importantes pero

están concentradas en unos pocos landmarks, la SPCM tiende a desparramarlas

porque promedia la falta de ajuste (Rohlf y Slice, 1990; Slice, 1996); ésta es una

característica de los métodos basados en cuadrados mínimos. En consecuencia, los

cambios de forma relativos que tienen lugar en diferentes sectores de un organismo

Figura 3: Resultados SPCM vs SPR al comparar la forma de dos paralelepípedos.

Page 12: Una herramienta web para el Análisis Morfométrico Resistente

suelen ser medidos y representado con poca precisión por una SPCM, quedando

muchas veces enmascarados (Fig. 3, [fuente: Perez et al. 2012]).

Brevemente, la SPCM de k configuraciones de n landmarks en p=2 ó p=3

dimensiones consta de los siguientes pasos (los detalles matemáticos de éste

método iterativo pueden encontrarse por ejemplo en Gower, 1975):

1. Centrar todas las configuraciones de modo que el landmark promedio en c/u de ellas sea el

origen del sistema cartesiano. Calcular como configuración consenso (o pivote) el promedio

de todas las configuraciones.

2. Realizar una superposición por cuadrados mínimos de cada configuración sobre la

configuración consenso. Luego, calcular la nueva configuración consenso.

3. Si la diferencia entre el nuevo consenso y el consenso anterior supera la tolerancia

estipulada, volver al paso 2. Caso contrario, la convergencia se considera alcanzada y se da

por terminado el algoritmo.

Aunque existen diversos paquetes estadísticos pagos que permiten realizar una

SPCM, ésta funcionalidad ha sido incorporada a la aplicación RPS Online para

permitir la comparación de los resultados del método más popular con los del

método resistente que se intenta difundir.

2.1.2.2 Superposición Procrustes Resistente (SPR)

Diversas alternativas han sido propuestas en la literatura para sortear los

defectos de la SPCM (Rohlf y Slice, 1990; Richtsmeier et al., 2002; van der Linde y

Houle, 2009). Entre ellas, la superposición Procrustes resistente basada en

medianas repetidas (Siegel y Benson, 1982) es probablemente la más elegante y

eficiente. Intuitivamente, el ajuste resistente entre dos configuraciones de landmarks

se logra superponiendo perfectamente aquellos landmarks que no cambian (Fig. 3,

A); de éste modo, las verdaderas diferencias de forma quedan evidenciadas en la

falta de ajuste de los landmarks que sí cambian. Desde un punto de vista

estadístico, un método resistente es aquel que impide que cambios significativos en

una pequeña porción de los datos tengan un impacto decisivo en los resultados de

un ajuste o de un análisis (Huber, 1981). Se puede probar que cambiando hasta la

mitad menos uno de un conjunto de valores, la mediana repetida del nuevo conjunto

permanecerá igual: ésto representa un breakdown value de casi el 50% (Slice,

1982) que es el máximo valor posible de flexibilidad. Una superposición Procrustes

resistente basada en medianas repetidas (SPR, de ahora en más) conseguirá

Page 13: Una herramienta web para el Análisis Morfométrico Resistente

entonces el mejor ajuste para a la mayoría de los landmarks, sin verse afectada por

grandes variaciones en unos pocos puntos. Es importante mencionar que luego de

una SPR las diferencias de forma localizadas son capturadas con mayor eficacia y

precisión, facilitando su interpretación biológica (Siegel y Benson, 1982; Torcida et

al., 2014). En (Torcida et al., 2014) se presenta una extensión de la SPR basada en

medianas repetidas de (Siegel y Benson, 1982) que para comparar la forma de más

de dos configuraciones de landmarks en 3D, además de 2D. El nuevo algoritmo

reduce significativamente la complejidad computacional de la propuesta de (Slice,

1996) al reducir su complejidad combinatoria; por otro lado, se ofrece ahora una

prueba de la optimalidad del algoritmo que no existía anteriormente. La nueva SPR

utiliza como configuración consenso resistente aquella cuyos landmarks resultan las

medianas espaciales o geométricas (Weiszfeld, 1937) de los landmarks

correspondientes de las configuraciones cuyas formas se desean comparar.

Brevemente, la SPR para k configuraciones de n landmarks en p=2 ó p=3

dimensiones consta de los siguientes pasos (Torcida et al., 2014):

1. Llevar a cabo una SPCM para contemplar reflexiones, en caso de que fueran necesarias.

Esta superposición inicial facilita además la estimación de la rotación resistente.

2. Calcular como configuración consenso la configuración cuyos landmarks son las medianas

espaciales de los landmarks correspondientes de todas las configuraciones.

3. Realizar una superposición resistente de cada configuración sobre la configuración

consenso. Luego, calcular la nueva configuración consenso.

4. Si la diferencia entre el nuevo consenso y el consenso anterior supera la tolerancia

estipulada, volver al paso 2. Caso contrario, la convergencia se considera alcanzada y se da

por terminado el algoritmo.

Este algoritmo ha sido implementado en RPS Online, constituyendo su principal

funcionalidad morfométrica.

2.1.3 Distancias Morfométricas

Luego de obtener una superposición Procrustes interesa medir las diferencias

de forma resultantes entre cada par de configuraciones de landmarks. Es útil

entonces calcular una distancia multivariada que cuantifique esas diferencias; para

cada método de superposición RPS Online permite obtener una matriz de distancias

coherente.

Page 14: Una herramienta web para el Análisis Morfométrico Resistente

2.1.3.1 Distancia Procrustes

Cuando las configuraciones de landmarks han sido superpuestas a por una

SPCM, la magnitud de las diferencias de forma entre dos configuraciones es

estimada mediante la raíz cuadrada de la suma que ha sido minimizada: la suma de

las distancias euclideas al cuadrado entre los landmarks correspondientes. Esta

magnitud se conoce habitualmente como distancia Procrustes y ha sido

implementada en RPS Online.

2.1.3.2 Distancia Resistente

La SPR no resulta de un proceso de optimización (minimización o

maximización) y por lo tanto no existe una distancia naturalmente asociada a dicha

superposición. En (Torcida et al, 2014) se propone como distancia razonable para

medir las diferencias de forma luego de realizar una SPR a la suma de las

distancias euclideas no cuadradas entre los landmarks correspondientes. Ésta

distancia ha sido también implementada en RPS Online.

2.1.4 Ordenamientos

Luego de obtener una superposición Procrustes y de haber medido las

diferencias de forma resultantes mediante una distancia, es habitual graficar a cada

configuración de landmarks como un punto en 2D o en 3D de modo que la distancia

entre cada par de puntos represente lo mejor posible la distancia morfométrica

correspondiente. Éste gráfico se conoce como escalamiento multidimensional (MDS,

por sus siglas en inglés) u ordenamiento de las configuraciones y facilita la

visualización de las diferencias de forma. Siguiendo (Torcida et al, 2014), en RPS

Online se implementaron dos versiones del escalamiento multidimensional universal

(UMDS) propuesto en (Agarwal, 2010): una por cuadrados mínimos (lsUMDS) y otra

resistente (rUMDS).

2.2 Consideraciones sobre Softwares Morfométricos

La visualización de los cambios en una forma biológica constituye el corazón

de la MG: al estar basados en puntos claramente identificables, los cambios pueden

representarse gráficamente o en animaciones computacionales. Una buena

visualización suele comunicar los cambios de forma más eficazmente que una tabla

de coeficientes. Y en el caso de la MG los cambios morfológicos se visualizan en su

Page 15: Una herramienta web para el Análisis Morfométrico Resistente

contexto anatómico inmediato como desplazamientos relativos de los landmarks. La

evolución de los recursos gráficos en la informática permite entonces visualizar la

variación de la forma biológica en 2D y 3D de manera atractiva.

Los softwares morfométricos más utilizados actualmente se ejecutan bajo

distintas plataformas (Microsoft, Mac, Linux). Existen diversas opciones, gratuitas o

pagas. En algunos casos se trata de aplicaciones de escritorio, que requieren la

descarga del programa y el uso de los recursos de la máquina del usuario; en otros

casos se trata de frameworks que necesitan de un conocimiento específico de parte

del usuario. Algunas de las aplicaciones más populares son:

➢ Geomorph (Adams, 2013): desarrollado en el entorno R, es un package gratuito y abierto

que cubre todas las etapas del análisis de datos basados en landmarks. Entre otras

funcionalidades, incluye rutinas para: la lectura, la manipulación y la digitalización de

datasets en 2D y 3D; el análisis estadístico de la variación y la covariación de la forma; la

visualización de las formas analizadas y de sus patrones de variación, etc.

➢ Morpho (https://cran.r-project.org/web/packages/Morpho/index.html): está desarrollado en R

por S. Schlager y proporciona un conjunto de herramientas para la morfometría geométrica y

el procesamiento de mallas. Incluye la deformación de mallas en base a puntos de

referencia; pruebas de permutaciones; la detección de outliers; etc.

➢ MorphoJ (Klingenberg, 2011): ésta aplicación gratuita desarrollada en Java permite extraer

información de formas biológicas en 2D y 3D a partir de la superposición Procrustes,

ofreciendo análisis multivariados clásicos como componentes principales y análisis

discriminante e incluyendo herramientas filogenéticas y de modularidad. La aplicación

requiere que se instale Java Runtime Enviroment en el sistema operativo de la máquina a

trabajar. Carece de una interfaz gráfica iteractiva en 3D.

➢ TPS Series (Rohlf, 2015): ésta serie de programas se inició a principios de los noventa bajo

un entorno MS-DOS, migrando luego a las nuevas versiones de Windows. El desarrollo de

aplicaciones especializadas en lugar de un software integral buscó acortar los plazos para

ofrecer una herramienta de software para el análisis morfométrico.

Uno de los inconvenientes principales de las aplicaciones morfomométricas

de escritorio está vinculado al gran volumen de datos que se manejan, consumiendo

disco y memoria tanto en el procesamiento y almacenamiento de los datos como en

la instalación y uso de las aplicaciones. Otro inconveniente es que obligan a utilizar

el propio equipo: si el equipo no está no está accesible tampoco lo están la

aplicación y a los datos. Como alternativa, una aplicación web se abstrae del SO y

sólo necesita una conexión a internet (lo que puede ser un inconveniente en

Page 16: Una herramienta web para el Análisis Morfométrico Resistente

ocasiones) y un navegador; no requiere instalación y utiliza la última versión estable

disponible. Estas consideraciones impulsaron el desarrollo de una aplicación web.

2.3 RPS Desktop, Nuevas Funcionalidades y Entorno Web

Como se ha mencionado este trabajo está basado en RPS Desktop, una

versión de escritorio muy similar descripta en (Ferraggine et al., 2017). La aplicación

premite un análisis resistente de la forma a partir de configuraciones de landmarks

en 2D y 3D. Y consiste en una herramienta Java de código abierto con una interfaz

de usuario bien diseñada, amigable y personalizable.

De la versión de escritorio se conservan: todas las funcionalidades

morfométricas, la creación de proyectos, la carga de datasets en los diferentes

formatos (.tps, .nts, .txt); la eliminación de datasets y/o análisis de un proyecto; la

eliminación de objetos y/o landmarks; la visualización en 2D y 3D.

Las funcionalidades incorporadas son: la creación de cuentas de usuario para

la gestión de los proyectos y los análisis; la recuperación de clave y contraseña de

usuario; la edición del perfil del usuario; la exportación de los resultados y gráficos;

la edición de un dataset para eliminarle objetos y/o landmarks.

Page 17: Una herramienta web para el Análisis Morfométrico Resistente

3.1 Introducción

Internet está presente en todos los aspectos de la vida diaria y las

tecnologías web son de uso cotidiano: buscar información, leer noticias, mirar

televisión, participar de las redes sociales, etc. Basta ingresar una dirección URL y

hacer un click para poder acceder al contenido buscado cuando se desee, en

dispositivos móviles y en computadoras. En este contexto se pretende inaugurar el

uso de herramientas de la MG en un entorno online. Las principales ventajas de una

arquitectura web respecto a una standalone como RPS Desktop están asociadas

con:

• la compatibilidad multiplataforma: su uso es independiente del dispositivo

empleado;

• la actualización: se mantienen actualizadas a la última versión. El proceso es

automático y por lo tanto la actualización no necesita ser descargada,

instalada o configurada por el usuario;

• el requerimiento de memoria: tienen una menor demanda de memoria RAM

de parte del usuario, comparadas con el software instalado localmente;

• el manejo de errores: son menos propensas a crear conflictos del software o

del hardware con otras aplicaciones del usuario. Los errores pueden ser

corregidos en cuanto son descubiertos;

• la facilidad de uso: son accesibles desde cualquier lugar, desde una PC o

portátil, desde un móvil o una tablet y desde cualquier lugar físico con

conexión a internet.

En el desarrollo de la aplicación web dos de las tecnologías estaban

prefijadas: i) el uso de una aplicación de capacidades estadísticas y gráficas que al

combinarse con las funcionalidades morfométricas permitiera elaborar un paquete

autocontenido, y ii) para hacer posible la persistencia de los datos, el uso de una

base de datos. En las próximas dos secciones se describen las características de

CAPÍTULO 3: TECNOLOGÍAS UTILIZADAS

Page 18: Una herramienta web para el Análisis Morfométrico Resistente

ambas tecnologías; posteriormente, se analizan opciones contempladas para el

desarrollo del Frontend y del Backend de la aplicación web.

3.2 Entorno de Capacidades Estadísticas y Gráficas

En el ambiente morfométrico la herramienta de capacidades estadísticas y

gráficas más utilizada es R: (https://www.r-project.org/).

surgió como un entorno y un lenguaje de programación directamente

enfocado en análisis estadísticos y en gráficos. Fue desarrollado inicialmente por R.

Gentleman y R. Ihaka de la Universidad de Auckland en 1993 y actualmente es

responsabilidad del denominado R Development Core Team, quien monitorea el

esfuerzo colaborativo permanente en el que personas de todo el mundo hacen sus

contribuciones. se encuentra disponible bajo los términos de una licencia GNU de

la Free Software Foundation en forma de código fuente. Se compila y ejecuta en

una amplia variedad de plataformas como UNIX, FreeBSD, Linux, Windows y Mac.

Como lenguaje de código abierto es relativamente accesible tanto para los

principiantes como los para usuarios experimentados. Actualmente es uno de los

lenguajes más utilizados en investigación para los análisis estadísticos; en

particular, es muy popular en campos como la minería de datos, la bioinformática, la

matemática financiera y la morfometría. Una explicación probable es que permite

descargar bibliotecas o packages específicos con las funcionalidades de cálculo y

gráficas deseadas a las que contribuyen aportantes de todo el mundo. La unidad

fundamental del código compartible en es el package: éste agrupa el código, los

datos, la documentación y los ejemplos de uso. En enero de 2015 había más de

6.000 packages disponibles en el CRAN (Comprehensive R Archive Network, el

repositorio público de packages ).

resulta una plataforma atractiva para el estudio de la variación de la forma

de objetos en 2D y en 3D, con herramientas que van desde la carga de datos hasta

la producción de gráficos estáticos e interactivos y análisis estadísticos diversos.

3.3 Tecnología de Base de Datos

Para lograr la persistencia de datos en la aplicación web resulta natural

utilizar una base datos. El motor de almacenamiento establecido fue PostgreSQL

(www.postegresql.org) que es de libre distribución, se adhiere ampliamente

Page 19: Una herramienta web para el Análisis Morfométrico Resistente

al estándar SQL y soporta un gran volumen de datos. Se describen brevemente a

continuación sus características más relevantes.

es un potente sistema de base de datos objeto-relacional y de código

abierto que utiliza y amplía el lenguaje SQL. Se ha ganado una sólida reputación

por su arquitectura, por el mantenimiento de la integridad de los datos, por su

conjunto robusto de funciones y porque ofrece soporte seguro a grandes cargas de

trabajo. Cabe mencionar además la dedicación de la comunidad de código abierto

que colabora y contribuye con el mantenimiento y el desarrollo del software.

es altamente escalable, tanto por la cantidad de datos que puede gestionar como

por la cantidad de usuarios concurrentes.

Otra característica fundamental de es que ofrece una gran variedad de

tipos de datos estándares y de tipos semiestructurados como XML, JSON y JSONB

(éste último disponible a partir de la versión 9.4); JSON está basado en sintaxis

Javascript. En el contexto de éste trabajo, la opción de emplear tipos de datos

semiestructurados para almacenar los datasets y evitar así el overhead de

preprocesamiento condujo a la elección de un gestor de bases de datos pos-

relacionales como que ofrece escalabilidad y tiempos de respuesta

superiores a los ofrecidos por sistemas relacionales (Vazquez Ortiz et al. 2016).

ha ido incorporando gradualmente características NoSQL lo que permitió

prescindir de una tercera herramienta.

3.4 Frontend

Para el desarrollo de la interfaz de usuario se consideraron diversas

tecnologías en auge, con sus virtudes y sus falencias. En la decisión se priorizó que

las tecnologías elegidas pudieran complementarse tanto con el entorno como

con el motor de base de datos y que facilitaran el desarrollo de la aplicación.

A continuación se describen brevemente las opciones analizadas.

3.4.1 ReactJS

ReactJS (www.reactjs.org) es una librería Javascript de código abierto,

hecha pública por Facebook. Ofrece grandes beneficios en términos de performance

Page 20: Una herramienta web para el Análisis Morfométrico Resistente

y modularidad, a la vez que promueve un flujo muy claro de datos y eventos

facilitando la planificación y el desarrollo de aplicaciones complejas.

permite desarrollar aplicaciones web con mayor orden y con menos líneas

de código que Javascript puro o que librerías como jQuery centradas en la

manipulación del DOM (Document Object Model) para la representación de

documentos. permite que las vistas se vinculen con los datos: las vistas cambian

al cambiar los datos. Como el típico marco de binding y doble binding ralentizaba la

aplicación debido a la cantidad de conexiones entre las vistas y los datos, se creó

una nueva dinámica de funcionamiento que optimizó la renderización de las vistas

ante los cambios en los datos de la aplicación.

mantiene un DOM virtual propio en lugar de depender exclusivamente del

DOM del navegador; la biblioteca puede determinar qué partes del DOM se han

modificado, comparando los contenidos de la versión nueva con los de la versión

almacenada en el DOM virtual y en base a ello determinar cómo actualizar

eficientemente el DOM del navegador.

posibilita un desarrollo basado en componentes reutilizables. Antes de

desarrollar sobre conviene buscar si ya existe algún componente que realice la

tarea deseada; pueden encontrarse componentes simples como botones, sliders,

tooltips, etc.

3.4.2 AngularJS

AngularJS (www.angularjs.org) es un conjunto de librerías apoyadas por

Google. Una oleada de sistemas ha situado recientemente a Javascript en otro

nivel: BackboneJS, EmberJS y entre otros. Estos frameworks aportan

herramientas y patrones de diseño con los que Javascript se convierte en un

lenguaje capaz de servir como motor de grandes aplicaciones. Anteriormente los

servidores tenían que enviar el HTML completo al cliente; ahora la tendencia es que

solo envíen los datos y que el cliente, un navegador o cualquier otro sistema donde

se deseen ver esos datos, sea el que los manipule y los muestre debidamente.

La ventaja de es que el servidor se libera de trabajo: simplemente envía

los datos al cliente a través de JSON y es éste quien se encarga de producir el

HTML necesario. Pero no sólo representa una mejora para el servidor en cuanto

términos de procesamiento: también lo es en términos de bits, porque es más rápido

Page 21: Una herramienta web para el Análisis Morfométrico Resistente

transferir datos simples que el HTML completo. En definitiva, el servidor reparte su

carga de trabajo entre todos los clientes que se conectan al web service. Las

aplicaciones cliente/servidor van logrando así un desempeño similar al de las

aplicaciones de escritorio: se les demanda que sean rápidas y eso se logra

empleando frameworks como .

Al desarrollador también se le facilitan las cosas, no sólo porque dispone de

un conjunto de librerías sino que además los frameworks están asociados a un

conjunto de paradigmas y patrones que facilitan la elaboración del software y sobre

todo su mantenimiento (Model View Controler, MVC). Cada parte del código se sitúa

en un lugar específico y ese orden hace el desarrollo más manejable, lo que se

traduce en una mejor calidad del código.

Por todo lo anterior, representa una alternativa muy atractiva como

framework para el desarrollo de una aplicación web. La Fig. 4 describe el

funcionamiento general de .

3.4.3 Librerías Gráficas Javascript

La visualización de los datos es un aspecto central en la MG y por ello se

evaluaron alternativas basadas en librerias Javascript: chart.js, Plotly y three.js.

• chart.js tiene gran popularidad como librería de código abierto al contar con

varios tipos de gráficos diferentes, una buena performance en la mayoría de

los navegadores y la capacidad de adaptarse al dispositivo donde se

Figura 4: Diagrama de ejecución de una aplicación AngularJS

Page 22: Una herramienta web para el Análisis Morfométrico Resistente

visualiza. Sin embargo, ésta alternativa fue descartada ya que no permite

realizar gráficos en 3D.

• three.js es conocida por su gran potencia en visualizaciones y animaciones

3D. Admite una gran variedad de gráficos y es lo suficientemente flexible para

manipular cualquier tipo de dato. Utiliza la API Javascript WebGL y admite la

aceleración GPU cuando el usuario cuenta con ese recurso. La potencia de la

librería excede las funcionalidades básicas que éste trabajo necesita y su uso

requiere de un entrenamiento importante, por lo que fue descartada.

• Plotly.js es una librería de código abierto que brinda soporte para Javascript,

Python y R (entre otros lenguajes) y que también utiliza WebGL. Permite

crear gráficos muy flexibles en el servidor cuando se utiliza el tipo de dato

JSON, los que luego serán visualizados en el navegador. Es fácil de integrar

con distintos frameworks (AngularJS, por ej.).

3.6 Backend

Los análisis morfométricos requieren procesar un gran caudal de datos, tanto

para realizar los cálculos matemáticos como para generar los gráficos en 2D y en

3D. Por este motivo se buscó un backend acorde que responda a las solicitudes del

cliente en tiempos razonables y que soporte la carga de procesamiento requerida.

Se consideraron tecnologías tales como: .NET Core, NodeJS y Shiny Studio, que se

describen brevemente a continuación.

3.6.1 .NET Core

.NET Core es una implementación de .NET Standard

(www.microsoft.com/net) para uso general, modular, multiplataforma y de código

abierto. Contiene muchas de las API de .NET Framework, aunque .NET Core es un

conjunto más pequeño que incluye: componentes del entorno en tiempo de

ejecución, un marco de trabajo, un compilador y herramientas que admiten diversos

sistemas operativos (SO).

Al tratarse de un proyecto de código abierto, favorece desarrollo más

transparente con una comunidad activa y comprometida detrás. Permite escribir

aplicaciones y bibliotecas que se ejecutan sin modificaciones en todos los SO.

Page 23: Una herramienta web para el Análisis Morfométrico Resistente

Existen principalmente dos modos de desarrollo en : una implementación basada

en framework y una implementación autocontenida, con una instalación mínima. En

lugar de un gran ensamblado, está disponible en paquetes centrados en las

características necesarias. Se consigue así un modelo de desarrollo más ágil y

optimizado, de mantenimiento económico.

3.6.2 NodeJS

Concebido como un entorno de ejecución de JavaScript de código abierto,

ejecutable en diversos SO y orientado a eventos asíncronos, NodeJS

(www.nodejs.org) está diseñado para construir aplicaciones en red escalables.

Este entorno del lado del servidor utiliza el motor V8 desarrollado por Google

para su navegador Chrome. El motor permite compilar y ejecutar Javascript a

velocidades increíbles; tal velocidad es debida a que V8 compila Javascript en

código de máquina nativo, en lugar de interpretarlo o ejecutarlo como bytecode.

En el modelo de concurrencia más común hoy en día se usan threads del

SO; las operaciones de redes basadas en threads son relativamente ineficientes y

más difíciles de usar. Cuando una aplicación necesita realizar un bloqueo

(operaciones de entrada/salida) envía una tarea asíncrona al event-loop (bucle

de eventos) junto con un callback y luego continúa. Para escalar grandes volúmenes

de clientes, todas las operaciones intensivas de bloqueo en se llevan a cabo

de forma asíncrona. En términos de la administración de memoria, cada conexión

dispara la ejecución de un evento dentro del proceso del motor. La Fig. 5 resume la

dinámica.

Figura 5: Modelo de la dinámica de ejecución del motor NodeJS

Page 24: Una herramienta web para el Análisis Morfométrico Resistente

3.7 Web Services

Si se busca un entorno de desarrollo con componentes cuya modificación sea

sencilla y económica, utilizar un web service (https://www.w3.org/TR/2004/NOTE-

ws-gloss-20040211/#webservice) es una alternativa apropiada: se trata de un

conjunto de protocolos y estándares que sirven para intercambiar datos entre

aplicaciones.

Un web service aporta interoperabilidad: distintas aplicaciones de software

desarrolladas en lenguajes de programación diferentes y ejecutadas sobre

plataformas diversas pueden utilizar un web service para intercambiar datos en

redes como internet. Un web service es una función que envía parámetros al

servidor y éste responde a la petición. Los web services fomentan los estándares y

protocolos basados en texto, facilitando el acceso a su contenido y permitiendo

comprender su funcionamiento. Pueden sacar provecho de los firewalls, al estar

basados en HTTP.

En la actualidad, para describir una interfaz entre sistemas que utilicen

directamente HTTP en la obtención de datos o para indicar la ejecución de

operaciones sobre los datos en cualquier formato (XML, JSON, etc.) se utiliza

REST. Como característica particular, REST no necesita de las abstracciones

adicionales de aquellos protocolos basados en patrones de intercambio de

mensajes: es más fácil de usar, más eficiente, más rápido y más flexible.

3.8 Shiny de R Studio

Shiny de R Studio surgió en la búsqueda de una herramienta que permita

correr código R desde un servidor web. es un R package que facilita la creación

desde R Studio de aplicaciones web interactivas, permitiendo a los usuarios tener

vínculo con sus datos sin tener que manipular el código. Cada app es una carpeta

que contiene un archivo server.R y comúnmente un archivo ui.R; server.R contiene

las instrucciones que constituyen los componentes R de la aplicación, en tanto que

ui.R es una descripción de la interfaz de usuario (la página web que muestra la

aplicación).

Page 25: Una herramienta web para el Análisis Morfométrico Resistente

3.9 Decisiones de Implementación

La evaluación de las tecnologías mencionadas condujo a las siguientes

decisiones:

• El entorno R fue elegido desde el comienzo para la implementación de las

funcionalidades morfométricas por su versatilidad como entorno de

capacidades estadísticas y gráficas. Como parte del proceso de desarrollo se

decidió implementar RPS package, un R package en el que están incluidas

todas las funcionalidades morfométricas de RPS Online.

• En un principio se contempló la utilización de una base de datos no relacional

como MongoDB, Cassandra, etc. porque éstas permiten gestionar fácilmente

tipos de datos JSON. Se optó por una base pos-relacional como PostgreSQL

para gestionar la información de tipo relacional involucrada en los perfiles de

usuario y en la administración de los proyectos. Como PostgreSQL soporta el

tipo de dato no estructurado JSON, se decidió además explotar esta

característica y sacarle provecho en la carga, en el almacenamiento y en la

lectura de las estructuras que representan las matrices de datos de los

datasets y sus análisis. La versión utilizada es la 9.5.7.

• De las tecnologías Frontend se seleccionó el framework de propósito general

AngularJS en lugar de la librería ReactJS ya que el primero permite

desarrollar íntegramente la aplicación web, es modularizable y tiene vistas

dinámicas que se actualizan en tiempo real.

• Para la visualización de los gráficos se descartaron las librerias chart.js y

three.js. La primera de ellas no brinda visualización en 3D, un aspecto clave

para una aplicación que necesita soporte para datos en 3D. Por otro lado,

three.js es un módulo Javascript de usabilidad compleja que no ofrece los

gráficos específicos buscados para RPS Online. Plotly.js cubre las

pretensiones de RPS Online con un código fácil de comprender y potenciado

por WebGL, lo que mejora su performance. Fue la elegida.

• Como Backend se decidió desarrollar el web service RPS Services, cuyo

objetivo es aportar una capa de procesamiento de las funcionalidades

morfométricas brindadas por RPS package y ser a la vez una interfaz hacia R

y hacia PostgreSQL; se logra así desacoplar el procesamiento y la

visualización de los datos, quitando carga de trabajo al cliente web y

Page 26: Una herramienta web para el Análisis Morfométrico Resistente

permitiendo que sea invocado desde otra aplicación. .Net Core ofrece las

características buscadas, pero presenta dificultades en la gestión de memoria

a medida que la aplicación escala; al contar con recursos físicos limitados

para la implementación, esta tecnología fue descartada. Por su parte, Shiny

de R Studio presentó limitaciones en el manejo de eventos asíncronos no

bloqueantes ante el volumen de datos involucrados en los análisis

morfométricos. Por todo lo anterior se decidió utilizar un web service REST

desarrollado sobre NodeJS, que facilita el uso de JSON como documento de

intercambio: se trata de un entorno sumamente liviano con una arquitectura y

una gestión de memoria adecuadas para un servidor de aplicaciones con

bajos recursos. El gestor de módulos NPM permite la interacción con R y con

PostgreSQL mediante r-script, file-system y pg (el intercambio de datos entre

NodeJS y R y el cliente PostgreSQL nobloqueante, respectivamente).

Page 27: Una herramienta web para el Análisis Morfométrico Resistente

4.1 Introducción

El desarrollo de la aplicación web combina el framework AngularJS que

interactúa con un web service REST (NodeJS) encargado de la gestión de las

funcionalidades que requiere cada usuario. Se implementó además un R package

que es el módulo de procesamiento de los análisis morfométricos del web service.

El trabajo se llevó a cabo en tres etapas: la elaboración de RPS package, el

desarrollo de la web y por último el testeo modular e integral de todo lo anterior.

La arquitectura del sistema (Fig. 6) describe la interacción de los cuatro

componentes principales: RPS Package (el R package), el servidor de bases de

datos (PostgreSQL), RPS Services (la API REST) y RPS Frontend (la aplicación

AngularJS). Este último sólo se ocupa de la visualización de los datos y de los

resultados, dado que es la API REST la encargada de intercambiar información con

R y con el servidor de base de datos. A continuación se describe en detalle el

desarrollo de cada uno de los componentes, los inconvenientes encontrados en ese

proceso y el modo en el que fueron resueltos.

CAPÍTULO 4 : DESARROLLO

Figura 6: Arquitectura del sistema

Page 28: Una herramienta web para el Análisis Morfométrico Resistente

4.2 RPS package

Tal como se ha mencionado, la elaboración de RPS package tuvo un doble

objetivo: que RPS Online lo utilice como módulo de procesamiento dentro del web

service y además ponerlo a disposición de la comunidad R en general y de la

comunidad morfométrica en particular. Por este motivo, al momento de su

implementación se tuvieron en cuenta todos los requerimientos para su publicación

en el repositorio oficial CRAN de R (https://cran.r-project.org/web/packages/policies.html).

De todas las funcionalidades morfométricas mencionadas en la sección 2.1,

la SPCM fue resuelta utilizando un R package ya disponible en el CRAN

(Geomorph). RPS package tiene también dependencias con otros R packages

como Gmedian (que aporta rutinas especificas para un buen funcionamiento de las

rutinas nuevas) y matlab (que ofrece funcionalidades presentes justamente en el

software bajo licencia del mismo nombre).

Para la elaboración de RPS package se utilizaron dos módulos adicionales:

roxygen2 y devtools. roxygen2 se utiliza para escribir y estandarizar la

documentación de los R packages: hace posible especificar para cada función los

parámetros de entrada/salida, los autores, las funciones auxiliares, cuáles son las

dependencias (si corresponde), etc. devtools, por su parte, permite: realizar las

validaciones cuando se incorpora un R package al CRAN, generar los archivos .tar,

generar los binarios de instalación y también realizar pruebas en entorno local, entre

otras funcionalidades.

Figura 7: Pantalla principal de RStudio.

Page 29: Una herramienta web para el Análisis Morfométrico Resistente

4.2.1 Entorno de Desarrollo

RStudio (Fig. 7) es un entorno de desarrollo código abierto que tiene

incorporado un editor de texto, debugging y diversos templates para la construcción

de R packages. Para poder utilizarlo fue necesario aprender el lenguaje R (conocer

su sintaxis, su estructura de datos y su flujo de ejecución) antes de implementar

RPS package.

El insumo de partida fueron los archivos fuente de los algoritmos resistentes

que los autores de (Torcida et al. 2014) proporcionaron al autor de este trabajo en el

lenguaje Matlab. Al tratarse de scripts elaborados en un lenguaje puramente

científico y sin un conocimiento informático experto, se encontraron errores de

codificación tales como: redundancias, sobredeclaración de variables, bucles

repetitivos, etc. Se realizó entonces un refactoring y una optimización de todas las

rutinas, a partir de la potencia de la sintaxis de R que sí está orientada al

desarrollador de software.

4.2.2 Rutinas Principales

Las funcionalidades de la sección 2.1 implementadas en RPS package

fueron:

Nombre Descripción Entrada Salida

cmdistance_RPS Calcula la distancia Procrustes (CM)

entre cada par de matrices del

conjunto de entrada.

Un conjunto de matrices

que representan los

especímenes de un

dataset.

La matriz de distancias

Procrustes entre cada par

de especímenes del

conjunto de entrada.

resdistance_RPS Calcula la distancia resistente entre

cada par de matrices del conjunto

de matrices de entrada.

Un conjunto de matrices

que representan los

especímenes de un

dataset.

La matriz de distancias

resistentes entre cada par

de especímenes del

conjunto de entrada.

resunivMDS_RPS A partir de una matriz de distancias

D se obtienen k puntos en 2D o en

3D tales que las distancias

euclideas entre éstos puntos

aproximan D en base a un criterio

resistente.

Una matriz de distancias

D de tamaño kxk. La

dimensión p (2 ó 3) de los

puntos que la

representarán.

El conjunto de k puntos en

p dimensiones cuyas

distancias aproximan D

(aprox. resistente).

eucunivMDS_RPS A partir de una matriz de distancias

D se obtienen k puntos en 2D o en

3D tales que las distancias

euclideas entre éstos puntos

aproximan D en base a un criterio

de CM.

Una matriz de distancias

D de tamaño kxk. La

dimensión p (2 ó 3) de los

puntos que la

representarán.

El conjunto de k puntos en

p dimensiones cuyas

distancias euclideas

aproximan D (aprox. CM).

Page 30: Una herramienta web para el Análisis Morfométrico Resistente

Nombre Descripción Entrada Salida

procrustesCM_RPS Esta función es una invocación a la

función gpagen del R package

geomorph que lleva a cabo la

superposición Procrustes por CM

del conjunto de matrices de entrada.

Un conjunto de matrices

que representan los

especímenes de un

dataset.

Un conjunto de matrices

que representan los

especímenes luego de

una superposición

Procrustes por CM.

robgit_RPS Realiza la superposición Procrustes

resistente del conjunto de matrices

de entrada.

Un conjunto de matrices

que representan los

especímenes de un

dataset. Un valor lógico

que indica si se devuelve

la configuración de

consenso.

Un conjunto de matrices

que representan los

especímenes luego de

una superposición

Procrustes resistente. Y la

configuración consenso

final (si corresponde).

readlandtxtMorphJ_

RPS

Lee un archivo MorphoJ .txt y lo

devuelve como un conjunto de

matrices que representan los

especímenes de un dataset.

El path del archivo y La

dimensión de los puntos

(2 ó 3).

Un conjunto de matrices

que representan los

especímenes de un

dataset.

Las rutinas principales requirieron además de la implementación de algunas rutinas

secundarias:

Nombre Descripción Entrada Salida

SpmedcrudoCalcula la mediana espacial de las

filas de la matriz de entrada.

Una matriz cuyas filas

representan los mismos

landmarks de distintos

especímenes.

Un vector que es la

mediana espacial de las

filas de la matriz de

entrada

SpatialmedCalcula la mediana espacial de un

conjunto de matrices.

Un conjunto de matrices

que representan los

especímenes de un

dataset.

Una matriz cuyas filas son

las medianas especiales

de las respectivas filas de

las matrices de entrada.

scaleSpecimenAjusta la de escala de un conjunto

de matrices respecto a su

consenso.

Un conjunto de matrices

que representan los

especímenes de un

dataset y su matriz

consenso.

Una conjunto de matrices

con el ajuste de escala

correspondiente.

rotationEstima la matriz de rotación

resistente en 3D.

Dos matrices en p (2 ó 3)

dimensiones que

representan un espécimen

y el consenso de un

dataset.

El eje y el ángulo de la

rotación resistente óptima

entre las dos matrices de

entrada.

initialFocusCentrado resistente de un conjunto

de matrices.

Un conjunto de matrices

que representan los

especímenes de un

dataset

Un conjunto de matrices

que representan los

especímenes luego del

centrado resistente.

Page 31: Una herramienta web para el Análisis Morfométrico Resistente

4.2.3 Documentación de RPS Package

Una vez finalizado el desarrollo de RPS package se procedió a documentarlo,

requisito para su aprobación y publicación en el repositorio público oficial CRAN.

Tal como se mencionó, los módulos auxiliares devtools y roxygen2

permitieron crear y estandarizar la estructura de la documentación de RPS package.

Debió agregarse entonces a RPS package información sobre: los autores, el

encargado de mantenerlo, la versión, los nombres de las funciones disponibles

(incluyendo los parámetros de entrada y de salida) y las funciones de otros

packages que es necesario importar para poder utilizar RPS package. Se generaron

entonces los archivos Description y Namespace que a su turno producen la

documentación final.

La validación de RPS package para su incorporación al repositorio CRAN

contempló diversos intentos que incluyeron alertas y errores; las observaciones

señaladas en cada intento fueron oportunamente analizadas y corregidas. En

https://cran.rproject.org/web/packages/RPS/index.html puede encontrarse la documentación

del RPS package oficial publicado, mientras que la documentación interactiva se

encuentra disponible en https://www.rdocumentation.org/packages/RPS/versions/1.0. 1

4.3 Modelo de Datos

En el diseño de la estructura de los datos se partió de un Diagrama de

Entidades y Relaciones Extendido (DERExt) e inicialmente se realizó una

transformación física a un modelo puramente relacional. Posteriormente se observó

que con dicho modelo físico los tiempos de respuesta en la carga y en los análisis

de los dataset no resultaban óptimos.

Así, se decidió transformar el DERExt inicial en uno alternativo en el cual la

representación de landmarks y especímenes se tratara como un tipo de dato

semiestructurado. La implementación en el modelo físico se realizó utilizando un tipo

de dato JSON para almacenar las matrices que representan los datasets,

manteniendo el resto de los datos con un enfoque relacional. Las capacidades pos-

relacionales de PostgreSQL permitieron integrar en el modelo de datos físico datos

estructurados y semi-estructurados.

Page 32: Una herramienta web para el Análisis Morfométrico Resistente

La utilización del tipo de datos JSON contribuyó a mejorar sustancialmente el

tiempo de respuesta; por otra parte, al implementar un web service REST el

intercambio se realiza en JSON con correspondiente ventaja en la manipulación.

El esquema de la base de datos (Fig. 8) está compuesto por seis tablas:

Figura 8: Diagrama definitivo de la Base de Datos

Page 33: Una herramienta web para el Análisis Morfométrico Resistente

Tabla Descripción

app_user contiene los datos de una cuenta de usuario.

country contiene las nacionalidades posibles de los usuarios del sistema

project contiene los datos de los proyectos de cada usuario

dataset contiene los datos de los dataset que integran un proyecto

distance contiene los datos de una matriz de distancias entre los especímenes de un dataset

ordination contiene los datos de un ordenamiento obtenido a partir de una matriz de distancias

Dado que el costo de los análisis resistentes en tiempo de procesamiento es

alto y resulta proporcional al tamaño de los datatests, se optó por un procesamiento

asíncrono. Para atender a este aspecto clave se agregó en algunas tablas un

campo send que es un flag. Éste flag distingue tres estados: los análisis en proceso

(estado 0), los análisis finalizados y no visualizados (estado 1) y los análisis

finalizados y visualizados (estado 2); se utiliza principalmente cuando un usuario

inicia la sesión en RPS Online.

4.3.1 Descripción de Campos JSON

A continuación se describe las estructura de cada uno de los campos JSON

utilizados en las diferentes tablas de la base de datos.

Page 34: Una herramienta web para el Análisis Morfométrico Resistente

Dataset.data: sobre esta estructura se almacena la matriz que representa un dataset original o resultante de un análisis

data Arreglo de objetos, en el que cada elemento se identifica concatenando la palabra

“specimen” y el número de orden correspondiente y se describe con sus landmarks.

excluded_land Landmarks excluidos del análisis (cuando corresponde)

excluded_obj Número de orden de los especímenes excluidos del análisis (cuando corresponde)

root_number_landmarks Cantidad de landmarks del dataset original (al eliminarlos a lo largo de sucesivos

análisis es necesario guardarlos)

root_number_specimens Cantidad de especímenes del dataset original

Dataset.objects_name Distance.objects_name, Ordination.objects_name

objects_name almacena un arreglo conteniendo los nombres de los objetos en orden posicional

con respecto a los datos almacenados en Dataset.data

Distance.data, Ordination.data

data almacena un arreglo que: para Distance corresponde a la matriz de distancias de

un dataset y para Ordination corresponde a una matriz donde cada fila representa

un punto del escalamiento.

Dataset.pdf, Distance.pdf, Ordination.pdf Respetan el formato proporcionado por la librería pdfMake (NodeJS).

Dataset.content [ {text: 'Procrustes Superimposition Report', style: 'header'},

{text: 'Type of Superimposition: '+params.algorithm},

{text: 'Data Dimension: '+params.dimention+'D'},

{text: 'Dataset Name: '+params.name},

{text: 'Source Dataset: '+params.original_name},

{text: 'Number of Objects: '+params.numbers_of_specimen },

{text: 'Number of Landmarks: '+params.numbers_of_landmark }

//table ],

Distance.content [ {text: 'Distance Matrix Report', style: 'header'},

{text: 'Type of Distance: '+params.algorithm},

{text: 'Output Name: '+params.name},

{text: 'Source Dataset: '+params.original_name},

{text: 'Number of Objects: '+params.numbers_of_specimen } ],

Ordination.content [ {text: 'Ordination Report', style: 'header'},

{text: 'Type of Universal MDS: '+params.algorithm},

{text: 'Output Name: '+params.name},

{text: 'Source Distance Matrix: '+params.distance_name},

{text: 'Cartesian Coordinates: ', style: 'subheader'} ],

styles { header: { fontSize: 18, bold: true, margin: [0, 0, 0, 10] },

subheader { fontSize: 14, bold: true, margin: [0, 10, 0, 5] },

4.4 RPS Services

RPS Services es un web service realizado sobre la plataforma NodeJS que

brinda soporte a la aplicación web AngularJS. El desarrollo del servicio se realizó en

Javascript plano de acuerdo al estándar JavaScript ECMA-262 specification, que

Figura 9: Diagrama de la implementación de RPS Services

Page 35: Una herramienta web para el Análisis Morfométrico Resistente

posee un diseño modularizado y proporciona el procesamiento asíncrono no

bloqueante para las solicitudes que recibe. RPS Services consta de 4 capas:

gestión de solicitudes, módulos de procesamiento, gestión de entrada/salida y

acceso a la base de datos (Fig. 9). Las capas se describen a continuación.

4.4.1 Gestión de Solicitudes

En RPS Services se define el enrutamiento utilizando sentencias para

responder a solicitudes GET o POST, según corresponda. Ambos métodos definen

callbacks (también conocidos como handler functions) que son invocados cuando la

aplicación recibe el request para una ruta específica (endpoint). La aplicación

escucha las solicitudes y cuando consigue hacer matching con algún endpoint

definido, ordena su ejecución. De esta manera se separa la gestión de solicitudes

de la definición de routes, agrupando endpoints según la acción a realizar y el

componente lógico que se utilice. Por ejemplo, en un mismo archivo se gestionan

todas las solicitudes que involucran la manipulación de datasets. Estas routes se

formalizan como scripts donde se definen cada uno de los endpoints necesarios. Se

definieron entonces los siguientes scripts:

Nombre Solicitudes gestionadas

So

licitu

des

GE

T

Countries_read.js Países de origen de los usuarios

Dataset_read.js Dataset (originales o resultados de análisis) de usuarios

Project_read.js Proyectos del usuario

User_read.js Validación de usuarios, carga de cuentas de usuario, etc.

So

licitu

des

PO

ST

Analysis_request.js Nuevas superposiciones Procrustes. Cuenta con los mecanismos necesarios para

crear un nuevo sub-proceso al procesar un nueva superposición.

Dataset_request.js Carga datasets en los distintos formatos propuestos: .tps, .nts, .txt, .txt MorphoJ.

Distance_request.js: Cálculo de una nueva matriz de distancia. Cuenta con los mecanismos necesarios

para crear un nuevo sub-proceso al procesar una nueva matriz de distancia.

Ordination_request.js Nuevo ordenamiento. Cuenta con los mecanismos necesarios para crear un nuevo

sub-proceso al procesar un nuevo ordenamiento.

Project_request.js Alta y modificación de proyectos

Remove_management.js: Borrado de proyectos, datasets, análisis, etc.

user_request.js Alta de usuario y recuperación de claves.

4.4.2 Módulos de Procesamiento

Page 36: Una herramienta web para el Análisis Morfométrico Resistente

Se desarrollaron tres módulos de procesamiento: ParseJSON, la interfaz

GraphicsJSONGenerator cuya implementación es PlotlyGenerator y R_Module.

4.4.2.1 ParseJSON

Este módulo implementa el patrón adapter para ajustar la interfaz de

comunicación entre R_Module y R. La interfaz es bidireccional: ajusta las entradas y

salidas tanto para el procesamiento en R como para la generación de la respuesta

al cliente y hace hincapié en la representación de las matrices de datos que sirven

de entrada para los distintos algoritmos.

4.4.2.2 PlotlyGenerator (GraphicsJSONGenerator)

GraphicsJSONGenerator es un módulo que funciona como interfaz hacia

alguna implementación del generador de gráficos. Se utilizó un patrón de inyección

de dependencias por pasaje de parámetros en el constructor de la clase, que

depende de la librería gráfica de la aplicación cliente. Se implementó entonces

PlotlyGenerator, que utiliza la librería grafica PlotlyJS. Esta estrategia de

implementación permite que una eventual modificación por el uso de una librería

gráfica más potente no afecte los módulos de mayor abstracción.

4.4.2.3 R_Module

R_Module se encarga de correr las rutinas de R; utiliza el módulo

NPM:rscript, que envía scripts y parámetros de NodeJS a R y viceversa. R_Module

implementa cada uno de los análisis que brinda RPS OnLine. Si se deseara

incorporar nueva funcionalidad a RPS Service, sólo sería necesario implementar la

interfaz en este módulo.

Page 37: Una herramienta web para el Análisis Morfométrico Resistente

4.4.3 Gestión del Sistema de Archivos

La gestión de los archivos que son cargados a RPS Online se realiza a través

del módulo NPM:fs para: la validación de las extensiones, la carga de archivos

temporales, la copia/movimiento/borrado de archivos (datasets), etc.

4.4.4 Acceso a la Base de Datos

La interfaz DataLayer gestiona todas las operaciones en la base de datos

(altas, bajas, modificaciones). Al igual que con las librerías gráficas, se implementó

un patrón de inyección de dependencias por pasaje de parámetros en el constructor

de la clase; el módulo correspondiente se denomina postgreSQL_DB. La gestión de

las llamadas a la base de datos PostgreSQL se implementa con el módulo NPM:pg.

4.4.5 Funcionamiento Integral de RPS Services

El web service funciona de la siguiente manera: una vez recibida la solicitud

de la aplicación cliente (una superposición Procrustes, un cálculo de distancias o un

ordenamiento) ésta es gestionada por el route correspondiente. El route crea un

nuevo subproceso en memoria que es el encargado de llevar a cabo la solicitud; una

vez completada, se comunica con el thread principal y devuelve los resultados antes

de ser desalojado de memoria. De esta manera es posible correr múltiples

instancias de análisis para un mismo usuario y el event-loop que gestiona la sesión

en tiempo real no es bloqueado. La implementación busca aprovechar al máximo la

disponibilidad de recursos del servidor, optimizando el tiempo de respuesta del web

service.

4.5 RPS Frontend

4.5.1 Entorno de Desarrollo de la Aplicación Web

El desarrollo de la aplicación web comenzó configurando el entorno de

desarrollo; al no contarse con experiencia en éste tipo de aplicaciones, se apuntó a

un IDE (Integrated Development Environment) que proporcionara un ambiente

confiable, robusto y fácil de utilizar. Se decidió entonces emplear Visual Studio

Page 38: Una herramienta web para el Análisis Morfométrico Resistente

Code, un IDE liviano que ofrece una interfaz familiar, con debugging y manejo de

extensiones oficiales.

Al implementar una aplicación AngularJS se utiliza el gestor de módulos NPM

de NodeJS. La versión de NodeJS que brinda soporte a la herramienta fue v8.9.3 y

la versión de NPM fue v5.5.1. Los paquetes que se instalaron para el desarrollo de

la web fueron:

• Angular CLI: este módulo permite la creación de un proyecto AngularJS.

Provee herramientas para el debugging, la compilación del proyecto, la

realización de unit-tests y de empaquetados.

• TypeScript: el framework AngularJS utiliza TypeScript como base del

desarrollo. Este complemento otorga al entorno web un perfil orientado a

objetos que facilita la comprensión del código en las eventuales

modificaciones del proyecto.

4.5.2 Desarrollo

Se describe ahora el diseño de RPS Frontend, que estuvo focalizado en la en

la usabilidad de la aplicación y en la visualización de los resultados de los análisis

morfométricos.

El diagrama de clases (Fig. 10) consta de tres vistas: los módulos, los

componentes principales MainRpsComponent y DashboardRpsComponent.

4.5.2.1 Vista de Módulos

Los bloques de construcción básicos en una aplicación AngularJS son los

NgModules; éstos recopilan código en conjuntos funcionales y proporcionan un

contexto de compilación para los componentesprincipales. RPS Frontend consta de

los NgModules: AppModule, MainRpsModule y DashboardRpsModule para

gestionar la lógica de sus vistas Home y Dashboard.

Figura 10: Vista de Módulos en el diagrama de clases de RPS Frontend

Page 39: Una herramienta web para el Análisis Morfométrico Resistente

AppModule es el módulo encargado de lanzar la aplicación; debe declararse

obligadamente ya que es interpretado por AngularJS como el módulo raíz.

Los NgModule routers son los módulos de AngularJS que permiten definir

una ruta de navegación entre los diferentes estados de la aplicación detectando

jerarquías. El router mapea direcciones URL con vistas (en lugar de páginas);

cuando un usuario hace click en un enlace, el router intercepta el comportamiento

del navegador y muestra/oculta las jerarquías de la vista. Si el router determina que

el estado actual de la aplicación requiere una funcionalidad particular no cargada en

el navegador por el módulo que lo define, el router mismo puede cargar el módulo

por demanda. AppModule contiene un módulo de routing AppRoutingModule que

gestiona la navegación entre las dos vistas principales de la aplicación y sólo

permite el acceso al Dashboard a los usuarios que poseen una cuenta en RPS

Online. Esta característica encapsula toda la lógica de navegación en un solo

módulo, brindando así un mayor control en el flujo de las vistas.

El control de la sesión de un usuario se realiza mediante la declaración de un

Guard sobre la vista solicitada. Como componente nativo de AngularJS, el Guard

condiciona el acceso a una vista por medio de una validación: por ejemplo, una

lógica del lado del cliente o una solicitud de usuario y contraseña a cargo del web

service como en este caso.

La creación de cuentas y la validación de los usuarios son llevadas a cabo

por MainRpsModule, donde MainRoutingModule gestiona la navegación entre los

formularios y el home de la aplicación. De modo análogo, DashboardRoutingModule

gestiona la creación de los análisis, la carga de los datasets, la visualización de los

resultados, etc. para DashboardRpsModule.

4.5.2.2 Vista de Componentes

Los componentes de una aplicación AngularJS generalmente definen vistas,

organizadas jerárquicamente. Cada aplicación tiene al menos un componente raíz

que conecta una jerarquía con la página DOM. Cada componente define una clase

que contiene los datos y la lógica de la aplicación, asociada a una plantilla HTML

que define una vista. RPS Frontend define por defecto a AppComponent como raíz

de la aplicación; AppComponent gestiona las vistas de MainRpsComponent y

DashboardRpsComponent.

Page 40: Una herramienta web para el Análisis Morfométrico Resistente

MainRpsComponent

Gestiona el funcionamiento de NavbarMainComponent, quien se ocupa de la

navegación mediante los componentes SignUpRpsComponent y

SignInRpsComponent. El primero es un formulario que captura y valida los datos

con los que se da el alta una nueva cuenta de usuario; se ocupa parcialmente del

control de errores desde el servidor (chequear si un e-mail está asociado a otra

cuenta, por ej.). Para disminuir el overhead, el control de dominio y la completitud

los formularios se realizan del lado cliente sin necesidad de comunicarse con el web

service o con la base. SignInRpsComponent, por su parte, se encarga de la

validación de un usuario existente y de la recuperación de contraseñas; para ello

interactúa con el web service y utiliza una API al enviar emails. Los dos

componentes mencionados utilizan SharedDatasetService para el intercambio de

datos entre componentes, implementando el patrón de diseño Observer.

Es importante mencionar el binding entre las entradas de los usuarios y la

información enviada al web service. El web service maneja un protocolo REST que

realiza intercambios a través de JSON; AngularJS habilita el binding a un objeto

declarado en el controlador de la vista y en el request al servicio el objeto es

enviado como string. Así, ninguna de las llamadas al servicio desde RPS Frontend

tiene costo de pos-procesamiento.

El diagrama de clases que describe la jerarquía de MainRpsComponent

puede verse en el Anexo 1.

DashboardRpsComponent

Para la segunda vista de la aplicación, DashboardRpsComponent es el

componente encargado de la creación de proyectos, del cargado de datasets, de la

realización de los análisis y de la actualización de los datos del perfil de usuario.

Dentro de él, NavbarDashboardComponent gestiona la creación de proyectos, la

carga de datasets y los cambios en el perfil de usuario a través de la visualizaciones

de cuadros de diálogo (pop-up); éstos realizan las solicitudes a RPS Services para

las tres operaciones. El control de dominio y de completitud de los formularios se

realiza del lado cliente.

TreeViewComponent es la vista del árbol de proyectos que posee un usuario;

con sólo un click, el usuario puede seleccionar y correr los análisis que desee. Cada

Page 41: Una herramienta web para el Análisis Morfométrico Resistente

análisis está a su vez representado por un componente diferente, formularios que

se visualizan en cuadros de diálogo.

En las primeras versiones para obtener un análisis se presionaba el botón

correspondiente en la barra del Dashboard, pero ésta solución tenía algunos

inconvenientes: se perdía la referencia directa al dataset, que debía buscarse en el

DOM de la página. La acción estaba a cargo de un módulo NPM, pero las

referencias con frecuencia se perdían y los resultados no se correspondían con los

datos. Se decidió entonces una simplificación: al hacer click derecho sobre un ítem

del árbol, el usuario puede seleccionar el análisis que desea correr. El árbol contiene

cuatro tipos de elementos: proyectos, datasets (originales o los resultantes de una

suposición Procrustes), distancias y ordenamientos. Cada tipo sólo habilita aquellos

análisis que tienen sentido: los datasets permiten que a partir de ellos se obtengan

superposiciones Procrustes y matrices de distancias (distance); las matrices de

distancias permiten generar ordenamientos. Es posible eliminar cada tipo de

elemento, para los que tienen elementos relacionados en la jeraquía del árbol, éstos

se eliminaran en cascada. Existe una excepción para el tipo de elemento proyecto

(project), el cual no debe poseer elementos que dependan de él; sólo será posible

su eliminación cuando el usuario ha eliminado previamente los datasets que lo

componen. Al hacer click en un proyecto aparece su descripción y su nombre,

dichos campos pueden editarse.

Hay tres componentes que interactúan entre sí de forma permanente:

TreeViewComponent/GraphicsDashboardComponent/ResultDashboardComponent.

Cuando se realiza un análisis TreeViewComponent debe actualizar sus ítems,

GraphicsDashboardComponent debe generar la visualización del resultado y

ResultDashboardComponent tiene que construir las grillas correspondientes a los

datos del resultado. Por este motivo se utiliza SharedDatasetService para el

intercambio de datos entre componentes permitiendo la actualización de manera

paralela de los componentes mencionados.

Page 42: Una herramienta web para el Análisis Morfométrico Resistente

Figura 11: Diagrama de la secuencia de procesamiento de una superposición Procrustes.

Sobre GraphicsDashboardComponent se utiliza la librería PlotlyJS para

generar las visualizaciones en 2D o 3D. GraphicsDashboardComponent es el

módulo que crea los gráficos, con una carga de procesamiento importante para la

máquina del usuario. Es claro que el tamaño del dataset impacta de lleno en el

rendimiento de la visualización; por ello, PlotlyJS genera los gráficos partir de un

JSON de entrada generado por el web service, alivianando el procesamiento en la

máquina del cliente.

Cabe destacar finalmente la utilización de la librería pdfMake

(http://pdfmake.org/#/), que gestiona la descarga de los resultados desde el browser

en formato pdf.

DistanceAnalysisComponent, ProcrustesAnalysisComponent, OrdinationAnalysisComponent

Estos componentes ejecutan los análisis morfométricos. El usuario puede

editar el rótulo identificador del análisis realizado, pero por defecto se utilizan los

prefijos que existían en la versión de escritorio de RPS.

ProcrustesAnalysisComponent corresponde a la superposición Procrustes de

un dataset. Cuando el usuario selecciona la opción resistente, es posible modificar

los valores por defecto de la cantidad de iteraciones y la tolerancia utilizados en la

ejecución del algoritmo en R.

DistanceAnalysisComponent y OrdinationAnalysisComponent presentan la

misma configuración y sólo se diferencian en su salida: el primero genera una matriz

de distancias y el segundo obtiene un ordenamiento (que por defecto es un gráfico

en 2D, más fácil de interpretar).

Existe además un control sobre los nombres de los proyectos (únicos por

usuarios) y de los datasets (únicos por proyecto).

Page 43: Una herramienta web para el Análisis Morfométrico Resistente

El diagrama describiendo la jerarquía en DashboardRpsComponent puede

verse en el Anexo 2.

4.5.3 Servicios AngularJS Desarrollados

Los componentes denominados Servicios proporcionan a la aplicación web

funcionalidades específicas no directamente relacionadas con las vistas. Los

servicios pueden inyectarse como dependencias, haciendo que el código sea

modular, fácilmente reutilizable y eficiente.

Los servicios AngularJS implementados buscaron agrupar las solicitudes al

web service en función del elemento lógico afectado (usuario, proyecto, dataset,

etc.). Tanto la búsqueda de información, la actualización de la bases de datos (altas,

bajas y modificaciones) o el procesamiento resultaron así modularizados.

Se describen a continuación los servicios desarrollados AngularJS:

• ProcrustesService: ésta clase gestiona las superposiciones Procrustes de la herramienta.

• DistanceService: gestiona el cálculo de las matrices de distancias.

• OrdinationService: gestiona los ordenamientos.

• ProjectService: gestiona los proyectos, etc.

• DatasetService: gestiona altas, bajas y modificaciones de datasets, y lectura de los mismos.

• UserService: gestiona el alta de usuarios y sus actualizaciones.

• RemoveService: gestiona la eliminación de datasets, análisis y proyectos.

• InitializeService: gestiona la inicialización de los componentes de la aplicación (carga de

países en el Sign up, carga de perfiles de usuario, etc.)

• AuthService: se utiliza como puente entre el estado de auth-guard y la vista para restringir el

acceso al Dashboard.

• Auth-guardService: implementa la interfaz CanActivate que proporciona AngularJS, se

implementó para realizar la validación de un usuario al ingresar a su cuenta. El

funcionamiento del mismo. Se basa en permitir la transición a una vista dependiendo del

resultado de la validación del usuario: sólo se podrá acceder a las vistas del Dashboard

mientras el usuario esté logueado en la sesión.

Page 44: Una herramienta web para el Análisis Morfométrico Resistente

Para la puesta en producción de esta herramienta se empleó una máquina

virtual Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0.-130-generic x86_64), utilizando el

módulo NPM:forever (0.15.3) que asegura la ejecución de los servicios

constantemente. Se instaló una base de datos PostgreSQL 9.5.13 y una R-base

3.2.3.

Page 45: Una herramienta web para el Análisis Morfométrico Resistente

5.1 RPS Online vs. RPS Desktop

Se detallan en ésta sección las mejoras de RPS Online en comparación con

la versión de escritorio.

La vista principal de RPS Desktop puede apreciarse en la Fig. 12. En el

sector de la izquierda se gestionan los análisis (recuadro 1) y puede visualizarse la

información específica de cada landmark (recuadro 2); en el sector central que

ocupa el mayor espacio se visualizan los gráficos de los datasests/análisis y los

reportes correspondientes (recuadros 3 y 4); a la izquierda aparece el árbol de

proyectos, con sus datasets/especímenes/landmarks (recuadro 5).

Una nueva funcionalidad de RPS Online es la posibilidad de crear perfiles de

usuario (Fig. 13 y Fig. 14, globo 4), habilitando la persistencia de los proyectos con

sus datasets y sus análisis. Los perfiles constan de un nick único y una dirección de

email que se utiliza para recuperar la clave de la cuenta; la información ingresada

por el usuario puede ser actualizada en todo momento.

CAPÍTULO 5 : MEJORAS Y TESTEO

Figura 12: Vista principal de RPS Desktop

Page 46: Una herramienta web para el Análisis Morfométrico Resistente

El procesamiento asíncrono de RPS Online hace posible la ejecución de los

análisis mientras el usuario continúa con otras actividades (Fig.14, globo 2). Cuando

un análisis ha finalizado, la solapa Processing completed lo indica en su contador

(Fig. 14, globo 3). Los análisis finalizados que no han sido vistos por los usuarios se

almacenan en la base datos; cuando el usuario ingrese a su cuenta nuevamente

podrá visualizarlos en el Analysis Repository (Fig. 14, globo 1) y presionando

reubicarlos automáticamente en los proyectos respectivos (Fig. 14, recuadro verde).

Para solicitar un análisis en RPS Online basta con hacer click derecho sobre

un ítem en el árbol de proyectos del Dashboard (Fig. 14, recuadro verde), un

mecanismo mas intuitivo que el disponible en RPS Desktop.

Figura 13: Edición del perfil de usuario en RPS Online

Figura 14: Vista del Dashboard de RPS Online

Page 47: Una herramienta web para el Análisis Morfométrico Resistente

Con respecto a la carga de datasets en el sistema, en RPS Desktop el

usuario debía seleccionar previamente el proyecto para luego ir al menú File y allí

seleccionar el dataset; con frecuencia, el usuario olvidaba la selección del proyecto

y la operación no se realizaba. En RPS Online el usuario cuenta con un menú

intuitivo y simple que lo guía en la gestión de los datasets (Fig. 15); RPS Online

cuenta además con un formato de entrada adicional, .txt de MorphoJ, muy popular

en el ambiente morfométrico.

Figura 15: Menú de gestión de datasets en RPS Online

Figura 16: Tabs simultáneas de gráficos y resultados en RPS Online

Page 48: Una herramienta web para el Análisis Morfométrico Resistente

También se realizaron mejoras en el tratamiento de gráficos y resultados. En

RPS Desktop ambas solapas estaban separadas (Fig. 12, recuadro 3) dificultando la

visualización conjunta de los resultados correspondientes a un determinado gráfico.

En RPS Online existen dos tabs verticales que comparten la pantalla del Dashboard,

donde es posible visualizar en simultáneo gráficos y resultados (Fig.16, recuadros

rojo y azul).

En cuanto a los resultados numéricos, la visualización de RPS Desktop

empleaba un formato .txt (texto libre) que permitía editarlos pero no exportarlos.

RPS Online presenta los resultados en un formato de grilla (Fig. 16, recuadro azul)

que se mantiene al exportarlos como .csv o .pdf (Fig. 17 y 18).

Figura 17: Vista de la exportación en formato PDF de una superposición Procrustes.

Page 49: Una herramienta web para el Análisis Morfométrico Resistente

Cuando el usuario señala con el cursor un landmark en un gráfico de RPS

Online, se muestra la información de sus coordenadas y el espécimen al que

pertenece (Fig. 19). En RPS Desktop la misma información aparecía al seleccionar

el landmark en el árbol de proyectos de la aplicación (Fig. 12, recuadro 2) pero no

era posible identificarlo en el gráfico.

RPS Online cuenta también con mejoras respecto a RPS Desktop en la barra

de herramientas gráficas. En ella, las operaciones posibles pueden aplicarse de

manera específica e independiente para cada gráfico y no globalmente. Por

ejemplo:

Figura 19: Visualización de la información de los landmarks en RPS Online

Figura 18: Vista del formato CSV

al exportar una superposición

Procrustes.

Page 50: Una herramienta web para el Análisis Morfométrico Resistente

permite descargar una captura en formato .png de un gráfico.

permite editar el gráfico desde el dashboard de PlotlyJS.

permite, naturalmente, un zoom en el gráfico.

desplaza la cámara de visión.

permite recuadrar sólo una parte del gráfico.

permite marcar un lazo que solo incluya lo dibujado dentro del mismo.

permite el zoom in/out.

controla la autoescala.

resetea los ejes.

proyecta el valor sobre los ejes del grafico.

muestra la información de las etiquetas.

muestra las leyendas de los objetos.

El cálculo de las matrices de distancias y de los ordenamientos (llamados

proyecciones en RPS Desktop) no tuvo grandes modificaciones respecto a la

versión anterior. En la superposición Procrustes resistente, el análisis más

importante de la aplicación, el usuario puede editar el valor de tolerancia para la

convergencia y la cantidad máxima de iteraciones del algoritmo (Fig. 20, globo 1)

Figura 20: Menú de configuración de la SPR en RPS Online

Page 51: Una herramienta web para el Análisis Morfométrico Resistente

Pueden encontrarse más detalles sobre el funcionamiento de RPS Online en

el manual de usuario disponible en http://rps.pladema.net/downloadTutorial.

5.2 Test de Precisión del RPS Package

Los algoritmos estadístico-matemáticos implementados en RPS Online son

producto de la migración al lenguaje R de rutinas interpretadas por Matlab. Como

prueba de precisión de la nueva implementación se evaluó un conjunto de datos en

2D (Craneos2D, Fig. 21) y otro en 3D (Mandibulas3D, Fig. 22), comparando los

resultados ofrecidos por RPS Desktop y por RPS Online. La medida utilizada fue la

diferencia Matlab–RPS Package coordenada a coordenada para todos los

especímenes del dataset resultado, luego de una SPR. Esas diferencias se volcaron

posteriormente en los histogramas que se muestran a continuación.

FIgura 2: Histograma del diferencial obtenidos de los analisis sobre el dataset Craneos2D

Figura 21: Histograma de las diferencias de precisión Matlab-RPS Package luego de la SPR del dataset Craneos2D

Figura 22: Histograma de las diferencias de precisión Matlab-RPS Package luego de una SPR del dataset Mandibulas3D

Page 52: Una herramienta web para el Análisis Morfométrico Resistente

Debido a la simetría de los histogramas y considerando que la mayor

concentración de las diferencias se produce en torno al cero, puede concluirse que

la precisión de ambas versiones de RPS es aproximadamente equivalente.

Los datasets utilizados en para el testeo pueden descargarse desde el

repositorio: https://github.com/GuillermoPachecoGit/TestRPS_Dataset

5.3 Test de Compatibilidad de RPS Online

Las páginas web deben actualizar su implementación para mantener la

compatibilidad con los navegadores. Por ello se realizó un test de compatibilidad a

RPS Online, que evaluaría su funcionamiento sobre distintas plataformas. La

herramienta utilizada fue la popular BrowserShots (Kaalra y Gowthaman, 2014) que

combina más de 120 navegadores y sistemas operativos. Los resultados obtenidos

fueron satisfactorios: RPS Online funcionó en más del 50% de las alternativas; cabe

señalar que aproximadamente el 30% de las combinaciones navegador/SO son

obsoletas y no reciben mantenimiento alguno. Los resultados del test se visualizan

en la tabla que sigue:

SO/Browser Windows Linux (Debian,Ubuntu) macOS

Chrome >= 10 V V V

Opera >= 51 V Error V

Edge > 16 V n/a V

Safari > 10 n/a n/a V

Firefox > 60 V V n/a

IE 9 10 11 V n/a n/a

Test de Compatibilidad de RPS Online: resultados

Page 53: Una herramienta web para el Análisis Morfométrico Resistente

Este trabajo consistió en el desarrollo de RPS Online:

http://rps.pladema.net/main/home, una herramienta que pone por primera vez a

disposición de la comunidad morfométrica una aplicación web con un enfoque

resistente básico, novedoso e integral para el estudio descriptivo de la forma de

objetos representados por landmarks.

Como parte del desarrollo de la aplicación web se elaboró RPS package, un

paquete implementado en el entorno de capacidades estadísticas y gráficas R. RPS

package contiene todas las funcionalidades morfométricas ofrecidas en RPS Online

y ha sido testeado y publicado por el R Developtment Core Team en el CRAN, el

repositorio oficial de R packages. Desde el momento de su publicación en julio de

2018, el RPS package cuenta con casi 150 descargas en todo el mundo.

Las capacidades gráficas de RPS Online, por otro lado, son superiores a las

de su antecesor RPS Desktop en términos de una mayor flexibilidad y eficacia en la

visualización y la edición de la información de landmarks y/o especímenes en los

gráficos 2D y 3D. El diseño de la interfaz de usuario permite además apreciar en

simultáneo gráficos y resultados numéricos.

La etapa de testeos arrojó resultados razonables y positivos tanto en la

precisión numérica como en la compatibilidad con diferentes plataformas.

Es posible afirmar que los objetivos de éste trabajo han sido alcanzados

ampliamente: las funcionalidades morfométricas de RPS Desktop, implementadas a

través del RPS package, fueron ahora integradas con el motor de bases de datos

PostgreSQL. Así, RPS Online permite la gestión y el almacenamiento de los

proyectos de cada usuario incluyendo datasets, landmarks y análisis. Toda ésta

información almacenada puede editarse: es posible eliminar especímenes y

landmarks. Los resultados de un análisis se pueden exportar en formatos populares

como .pdf, .txt y .csv; los gráficos, en formato .png. El diseño modular y flexible de

RPS Online es otro un punto a destacar: será fácil reutilizar sus componentes o

incorporarle otras (por ejemplo, métodos resistentes para llevar a cabo análisis

COMENTARIOS FINALES

Page 54: Una herramienta web para el Análisis Morfométrico Resistente

filogenéticos o métodos para el análisis de formas representadas por superficies en

lugar de puntos, por nombrar sólo un par de posibles extensiones).

Para el autor, éste trabajo significó: fortalecerse en el desarrollo de

aplicaciones web, ser capaz de integrar diferentes tecnologías, poder organizar su

trabajo individual comunicando periódicamente sus progresos e incorporarse a un

espacio grupal de discusión y toma de decisiones técnicas. La experiencia

acumulada en todo este proceso podrá trasladarse y adaptarse al trabajo

profesional cuando resulte conveniente.

Page 55: Una herramienta web para el Análisis Morfométrico Resistente

BIBLIOGRAFÍA

● Adams D. C. y Otárola Castillo E. (2013) ‐ Geomorph: an R package for the

collection and analysis of geometric morphometric shape data. Met. in Ecol.

Evol. 4(4): 393-399.

● Adams D C., Rohlf F. J. y Slice D. E. (2004). Geometric morphometrics: ten

years of progress following the ‘revolution’. It. Journal of Zool. 71(1):5-16.

● Agarwal A., Phillips J. M. y Venkatasubramanian S. (2010). Universal

multidimensional scaling. En KDD’10: Proceedings of the 16th ACM SIGKDD

international conference on knowledge discovery and data mining (pp. 1149–

1158). New York: ACM

● Bookstein F. L. (1989) Principal warps: thin-plate splines and the

decomposition of deformations. IEEE Trans. Pattern Anal. Mach. Intell. 11:

567–585.

● Bookstein F. L. (1991). Morphometric tools for landmark data: geometry and

biology. Cambridge University Press.

● Bookstein F. L. (1996). Biometrics, biomathematics and the morphometrics

synthesis. Bull. Math. Biol. 58:313–365

● Bootstrap (website oficial): https://getbootstrap.com

● Catalano S. A., y Goloboff P. A. (2012). Simultaneously mapping and

superimposing landmark configurations with parsimony as optimality criterion.

Syst. Biol. 61(3):392-400.

● Csardi G. y Nepusz T. (2006). The igraph software package for complex

network research. Inter. Journal Comp. Syst. 1695(5):1-9.

● ExpressJS (website oficial): https://expressjs.com

● Ferraggine V. E., Torcida S. y Perez S. I. (2017) RPS (Resistant Procrustes

Software): una herramienta novedosa para el Análisis Morfométrico

Resistente. En el 4to. CONAISSI (Congreso Nac. de Ingeniería en Informática

y Sist. de Información). Salta, Argentina

● Goodall C. R. (1991) Procrustes methods in the statistical analysis of shape.

J. R. Statist. Soc. B 53:285–339

Page 56: Una herramienta web para el Análisis Morfométrico Resistente

● Gower J. C. (1975) Generalized Procrustes analysis. Psychometrika

40:33–51

● Gunz P., Mitteroecker P. y Bookstein F. L. (2005). Semilandmarks in three

dimensions. En Modern morphometrics in physical anthropology (pp. 73-98).

Springer, Boston MA.

● Hallgrimsson B. y Lieberman D. E. (2008). Mouse models and the

evolutionary developmental biology of the skull. Integ. Comp. Biol.

48(3):373-384.

● Huber P. J. (1981). Robust Statistics. New York, Chichester.

● JQuery (website oficial): https://jquery.com

● Kaalra B. y Gowthaman K. (2014). Cross Browser Testing Using Automated

Test Tools. Int. J. of Adv. Studies Comp. Sci. Eng. 3(10):7-12

● Kendall, D. (1977). The diffusion of shape. Advances in Applied Probability 9:

428-430.

● Klingenberg C. P. (2011) MorphoJ: an integrated software package for

geometric morphometrics. Mol. Ecol. Res. 11(2):353-357

● Marcus L. F. (1990) Traditional morphometrics. En Proceedings of the

Michigan Morphometrics Workshop (pp. 77-122). Univ. Mich.

● Mitteroecker P. y Gunz P. (2009). Advances in geometric morphometrics.

Evol. Biol. 36(2):235-247.

● Website de software morfométrico: http://life.bio.sunysb.edu/morph/soft-

tps.html

● Nordhausen K., Sirkia S., Oja, H. y Tyler D. E. (2012). ICSNP: Tools for

Multivariate Nonparametrics, R-package 1.0-9.

● Plotly (website oficial): https://plot.ly

● PostgreSQL (website oficial): https://www.postgresql.org/about/

● Richtsmeier J. T., Burke Deleon V., y Lele S. R. (2002). The promise of

geometric morphometrics. Am. J. Phys. Ant. 119(35):63-91.

● Rohlf F. J. y Slice D. E. (1990). Extensions of the Procrustes method for the

optimal superimposition of landmarks. Syst. Zool. 39:40–59.

Page 57: Una herramienta web para el Análisis Morfométrico Resistente

● Rohlf F. J. y Marcus L. F. (1993). A revolution in morphometrics. Trends Ecol.

Evol. 8:129–132.

● Rohlf F. J. (2015) The tps series of software. Hystrix It. J. Mamm. 26(1):9–12

● Siegel, A. F. (1982) Robust regression using repeated medians. Biometrika

69(1): 242–244

● Siegel A. F. y Benson R. H. (1982). A robust comparison of biological shapes.

Biometrics 38: 341–350.

● Slice D. E. (1996). Three-dimensional generalized resistant fitting and the

comparison of least-squares and resistant fit residuals. En L. F. Marcus et al.,

(Eds.), Advances in morphometrics (pp.179–199). New York, Plenum Press.

● Slice D. E. (2007) Geometric morphometrics. Annu. Rev. Anthropol. 36:261-

281.

● Torcida S., Perez S. I. y Gonzalez P. N. (2014). An integrated approach for

landmark-based resistant shape analysis in 3D. Evol. Biol. 41(2):351-366.

● van der Linde, K., y Houle, D. (2009). Inferring the nature of allometry from

geometric data. Evol. Biol. 36(3):311-322.

● Vazquez Ortíz, Y., Mier Pierre, L., León, S. y Anthony, R. (2016).

Características no relacionales de PostgreSQL: incremento del rendimiento

en el uso de datos JSON. Rev. Cub. de Cs. Informáticas 10:70-81.

● Weiszfeld, E. (1937) Sur le point pour lequel la somme des distances de n

points donnes est minimum. Tohoku Math.l Journal 43:355–386

● Zelditch M. L., Swiderski D. L., Sheets H. D. y Fink, W. L. (2004). Geometric

morphometric for biologists: A primer. London, Academic Press

Page 58: Una herramienta web para el Análisis Morfométrico Resistente

ANEXO 1

Page 59: Una herramienta web para el Análisis Morfométrico Resistente

ANEXO 2