R² project

Añadir nuevas funciones de R a R-Squared

Añadir nuevas funciones de R a R-Squared

En una de nuestras anteriores entradas contábamos que íbamos a usar JSON para cargar dinámicamente las configuraciones de las funciones de R en los menús.

De esta forma se pueden cargar nuevos ficheros con diferentes configuraciones que reemplacen la configuración por defecto o añadan nuevas funcionalidades.

Ahora estamos trabajando en ello, y para facilitar la creación de este tipo de ficheros de configuración exportables, o simplemente para crear menús de funciones personalizadas al gusto de cada persona, disponemos de un editor de configuraciones sencillo para ello.

Todo esto aún está en fase de desarrollo, pero aquí les dejamos una captura de como va quedando el editor.

Captura de pantalla de 2015-12-22 12-22-59

R-Squared, proyecto ganador del CUSL-ULL en 2014, entrevista a sus autores [Desde la OSL]

rsquared_logoSiguiendo con la campaña para animar la participación al Concurso Universitario de Software Libre (#CUSL) aprovechamos a entrevistar a Andrés y Eduardo Nacimiento, que en la edición del CUSL del curso 2013/14 se llevaron el premio local ULL al mejor proyecto. Se presentaron con R-squared consistente en una interfaz de usuario sencilla para usar la herramienta estadística R.

Recientemente Andrés y Eduardo Nacimiento, junto con Jésica Carballo, otra estudiante de la ULL, han fundado la empresaOpen Code Consulting, donde han hecho del Software Libre su profesión, y donde R-Squared forma una parte importante de sus activos.

¿Qué les animó a presentarse al CUSL? ¿Les costó mucho compatibilizar sus estudios con la participación en el CUSL?

opencodePersonalmente llevábamos algunos años intentando participar en el CUSL, pero siempre las clases y el trabajo (por parte de Eduardo, en la OSL), entre otras cosas, nos impedían dedicarle tiempo necesario para ponernos a desarrollar un proyecto.

Como miembros activos de la comunidad del Software Libre en la ULL, y fuera de ella, el hecho de participar en un concurso de Software Libre era un evento que no podíamos dejar pasar, y finalmente ese año decidimos, que ya teníamos que presentar “algo” al concurso. Aún así no fue fácil y el tiempo se nos fue echando encima y cuando ya se iba acercado la fecha de finalización del concurso, aún no teníamos más que la estructura principal del programa, pero sin apenas funcionalidades.

Finalmente logramos avanzar y desarrollar una versión usable del programa al concurso, aunque si miramos los momentos de los commits vemos que fueron a altas horas de la noche, porque era cuando único solíamos tener algo de tiempo “libre”.

¿Cómo se les ocurrió la idea de R-squared?

En la Universidad, uno de los temas que suelen tratarse en gran parte de carreras es la Estadística, y en la mayoría de ellas se suele utilizar SPSS u otro software privativo para la docencia, incluso en Informática, por absurdo que parezca, se usa muchas veces SPSS en lugar de R.

Uno de los principales escollos que tenía la eliminación de Windows de muchas aulas de informática, era que este software solo se tenía para Windows. Aunque luego estuvo disponible para GNU/Linux y desde la OSL se preparó un instalador para que funcionara dentro de la red SIGA en Bardinux, sigue habiendo un problema, y es que aunque nos hayamos “librado” del sistema operativo MS Windows en más de la mitad de los ordenadores de la ULL, el software SPSS seguía siendo privativo aunque funcionara en GNU/Linux.

Para solucionar ese problema necesitábamos un software estadístico, al menos tan potente como el SPSS y que tuviera una interfaz gráfica sencilla parecida al mismo. La primera parte está solucionada y sobrepasada desde hace años con R, pero la segunda parte, la de la interfaz amigable, aún seguía sin llegar.

Decidimos por ello, realizar una interfaz lo más sencilla posible, que aprovechara la potencia de R, y que decidimos llamar R-Squared, jugando con los términos estadísticos R y R cuadrado.

¿Qué cosas aprendieron con el paso por el CUSL? ¿Valoran la experiencia como positiva?

La principal cosa que aprendimos participando en el CUSL es que estamos capacitados para crear o colaborar en proyectos de software reales, y que muchas veces no te das cuenta hasta que empiezas a desarrollarlo, y éste muchas veces es uno de los principales obstáculos a la hora de lanzarse a desarrollar software.

La experiencia fue muy positiva, ya que creemos que el proyecto de R-Squared realmente puede ser útil, y no sólo en el ámbito educativo, sino también fuera de él.

Vemos que, a diferencia de otros muchos proyectos del CUSL, R-squared continúa vivo ¿Qué les ha animado este tiempo a seguir con el proyecto? ¿Qué planes de futuro tienen para R-Squared?

El que creamos, como decíamos antes, que el proyecto puede ser realmente útil, es lo que nos anima a seguir, y aunque no hayamos podido dedicarle mucho tiempo durante este período, si es verdad que este verano estuvimos trabajando en él realizando algunas mejoras.

Además, también desde este verano contamos con nuestra primera colaboradora, Holi Díaz Kaas, que realizó las traducciones. En todo proyecto de software libre, siempre es un momento importante cuando otras personas se unen al proyecto, y consideramos que ya dimos el primer paso en ese sentido.

El trabajo ahora está encaminado a facilitar la inclusión de funcionalidades de R en R-Squared, y para ello estamos cambiando la forma en la que se llaman a las distintas funciones de R. Ahora es posible importar desde un fichero JSON con las descripciones de las funciones para aumentar rápidamente las funcionalidades. Esta parte aún no está terminada y aún nos falta crear un editor de funciones que genere ficheros de ese tipo para poder compartir funcionalidades que se podrían cargar a modo de “plug-in”.

Otra de las funcionalidades que tenemos pendientes es la de añadir una consola, que permita a usuarios más avanzados usarla directamente, pero sin perder las ventajas de seguir usando tanto la interfaz para tratar los datos como el editor de textos incorporado donde automáticamente se añaden los resultados.

También tenemos pendiente la posibilidad de que se pueda ejecutar en servidores remotos y así aprovechar capacidades de cómputo de la que no podemos disponer en un ordenador personal. Y ya que estamos en este paso, el siguiente sería mirar la posibilidad de paralelizar ciertos procesos, si es posible de forma más o menos automática, lo que podría facilitar su uso en temas tan actuales como el Big Data.

Nos queda mucho trabajo por delante, si el escaso tiempo libre nos lo permite, podemos tener un software que entre otras cosas ahorre a instituciones como la propia Universidad de La Laguna miles de euros en licencias cada año y que se van fuera sin generar ningún beneficio a la comunidad.

Fuente: https://osl.ull.es/cusl/r-squeare-entrevista-autores/

Probando la importación con JSON

Finalmente decidimos cambiar XML por JSON, para importar las funciones y la configuración de las categorías y menús para R-squared.

El fichero de configuración quedaría de la siguiente forma:

{
“function”: [
{
“name”: “mean”,
“title”: “Mean”,
“description”: “Generic function for the (trimmed) arithmetic mean.”,
“output” : “text”,
“menu”: “Unidimensional”,
“category”: “Basics”,
“argument”: [
{
“value”: “x”,
“optional”: “0”,
“type”: “object”,
“default”: “NONE”,
“about”: “An R object.  Currently there are methods for numeric/logical vectors and date, date-time and time interval objects. Complex vectors are allowed for ‘trim = 0’, only.”
},
{
“value”: “trim”,
“optional”: “1”,
“type”: “numeric”,
“default”: “0”,
“about”: “the fraction (0 to 0.5) of observations to be trimmed from each end of ‘x’ before the mean is computed.  Values of trim outside that range are taken as the nearest endpoint.”
},
{
“value”: “na.rm”,
“optional”: “1”,
“type”: “boolean”,
“default”: “FALSE”,
“about”: “a logical value indicating whether ‘NA’ values should be stripped before the computation proceeds.”
}
]
},
{
“name”: “median”,
“title”: “Median”,
“description”: “Compute the sample median.”,
“output” : “text”,
“menu”: “Unidimensional”,
“category”: “Basics”,
“argument”: [
{
“value”: “x”,
“optional”: “0”,
“type”: “object”,
“default”: “NONE”,
“about”: “an object for which a method has been defined, or a numeric vector containing the values whose median is to be computed.”
},
{
“value”: “na.rm”,
“optional”: “1”,
“type”: “boolean”,
“default”: “FALSE”,
“about”: “a logical value indicating whether ‘NA’ values should be stripped before the computation proceeds.”
}
]
}
]
}

Cambio de repositorio

Hemos tenido que cambiar nuestro repositorio tras el cierre de Gitorious, y lo hemos trasladado a Gitlab.

Se puede acceder a la nueva página del proyecto desde el siguiente enlace:

https://gitlab.com/r-squared/r-squared

gitlab

Importar funciones desde XML

Una de las funcionalidades que creemos que tiene mayor prioridad es la posibilidad de importar/añadir nuevas funciones de una forma sencilla y genérica, que nos permita con unos pocos parámetros cargar cualquier función de R, e incluso cargar nuestras propias funciones locales.

Una función básica como la media aritmética tiene la siguiente estructura:

mean(x, trim = 0, na.rm = FALSE, …)

Por lo que, se plantea la posibilidad de usar XML para cargar las funciones, pudiendo así añadirle más información, como por ejemplo los parámetros opcionales, el tipo de datos, etc.

Para este caso el fichero XML podría tener la siguiente estructura:

<?xml version=”1.0″ encoding=”UTF-8″ ?>
<functions>
<function>
<name>mean</name>
<title>Mean</title>
<description>Generic function for the (trimmed) arithmetic mean.</description>
<menu>Unidimensional</menu>
<category>Basics</category>
<arguments>
<argument>
<value>x</value>
<optional>0</optional>
<type>object</type>
<default>NONE</default>
<about>An R object.  Currently there are methods for numeric/logical vectors and date, date-time and time interval objects. Complex vectors are allowed for ‘trim = 0’, only.</about>
</argument>
<argument>
<value>trim</value>
<optional>1</optional>
<type>numeric</type>
<default>0</default>
<about>the fraction (0 to 0.5) of observations to be trimmed from each end of ‘x’ before the mean is computed.  Values of trim outside that range are taken as the nearest endpoint.</about>
</argument>
<argument>
<value>na.rm</value>
<optional>1</optional>
<type>boolean</type>
<default>FALSE</default>
<about>a logical value indicating whether ‘NA’ values should be stripped before the computation proceeds.</about>
</argument>
</arguments>
</function>
</functions>

De esta forma sería sencillo, también, hacer un editor de funciones que nos permita generar estos ficheros XML.

Presentación usada durante la fase final del Concurso

Esta es la presentación que usamos durante la presentación del proyecto R-squared durante la fase final del Concurso Universitario de Software Libre en la Universidad de La Laguna.

Vídeo de la versión 0.2

Vídeo con algunas de las funcionalidades de la nueva versión 0.2 alfa de R-squared

Síguenos en Twitter

R-Squared Project

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.