rPython, ya en Windows

Aprovechando que por un lado las circunstancias han querido que ahora disfrute de más tiempo libre; que, por otro, mi paquete rPython parece ir ganando aceptación y, finalmente, que tengo varios correos pendientes clamando por una versión en Windows, he pasado unos ratos tratando de hacer el proceso de instalación lo menos pesado y manual que me ha sido posible. Y el resultado ha sido este. Así que si alguien todavía sigue usando Windows y tiene interés en interactuar con Python desde R (aunque solo sea por aburrimiento), que lo pruebe. Y si algo se rompe, que me lo haga saber para parchear el proceso.

20 de noviembre de 2013 · Carlos J. Gil Bellosta

rPython ya está en CRAN

Después de bastante trabajo, rPython ya está disponible en CRAN, ya es un paquete oficial de R. Se trata de un paquete del que ya nos hemos ocupado antes (véase esto y esto) y que permite llamar a Python desde R. Por el momento, está disponible únicamente para plataformas UNIX (Linux, Mac) aunque estoy tratando de crear una versión que funcione en Windows. Además, estoy buscando aplicaciones de rPython (al estilo de esta). Así que si a alguien se le ocurre alguna…

1 de abril de 2013 · Carlos J. Gil Bellosta

Datos LIDAR en R

En la reunión del grupo de interés local (GIL) de R de Madrid, Francisco Mauro habló de aplicaciones de R a conjuntos de datos LIDAR. En efecto, uno quiere estimar la cantidad de madera que hay en un monte. Uno entonces la calcula en unas pequeñas zonas y luego, barriendo el monte con pulsos de láser desde un avión toma medidas (x,y,z) (es decir, longitud, latitud y altura) en una malla fina de puntos. Esa malla permite identificar, por ejemplo, la densidad y altura de los árboles. Correlacionando estas variables proxy con la cantidad de madera, se puede, por ejemplo, estimar por extrapolación la cantidad total de madera que contiene el monte entero. ...

6 de marzo de 2013 · Carlos J. Gil Bellosta

MapReduce con mincedmeat

Hace unos días implementé un proceso MapReduce usando mincedmeat, un pequeño entorno en Python para desarrollar este tipo de procesos distribuidos. El código y los datos pueden descargarse de este enlace. Los datos de partida están en 249 ficheros de unos 25kb que contienen filas del tipo journals/algorithmica/HarelS98:::David Harel::Meir Sardas:::An Algorithm for Straight-Line of Planar Graphs es decir, publicación, autor (o autores) separados por :: y título de la publicación. Los tres campos están separados por :::. ...

7 de noviembre de 2012 · Carlos J. Gil Bellosta

HHH, HHT y el comando "yield" de Python

Variable aleatoria X: tiramos una moneda al aire sucesivamente y contamos el número de veces que lo hacemos hasta obtener el patrón HHH (tres caras) en las tres últimas tiradas. Variable aleatoria Y: lo mismo, pero hasta que salga el patrón HHT. Entonces las medias de X e Y son iguales, ¿verdad? Pues no. (¿Alguien sabría decirme cuál de las combinaciones, HHH o HHT, tiende, en promedio, a aparecer antes? Pueden darse explicaciones muy complejas, pero existe una muy simple e intuitiva). ...

26 de octubre de 2012 · Carlos J. Gil Bellosta

El algoritmo PSLQ e identificación de números

El algoritmo PSLQ se usa para resolver aproximadamente ecuaciones con coeficientes enteros $a_i$ de la forma $$ \sum_i a_i x_i = 0$$ donde, obviamente, no todos los $a_i$ son cero. Aproximadamente significa que la solución se busca dentro de un cierto nivel de tolerancia. No existe, que yo sepa, una implementación en R. Pero sí en Python, usando librerías que permiten utilizar números de precisión arbitraria, como [mpmath](https://code.google.com/p/mpmath/). Veamos un ejemplo: ...

17 de septiembre de 2012 · Carlos J. Gil Bellosta

R en el Software Developer's Journal

El Software Developer’s Journal ha publicado estos días un número dedicado exclusivamente a R. Dicen que sus 260 páginas hacen de este número el más extenso que ha publicado jamás la revista. Incluye, además, un artículo mío, Rpython, a package for calling Python from R. Creo que es necesario registrarse (y probablemente de forma no gratuita) para hojear el volumen. De todos modos tal vez sería posible que pudiese pasarle el número completo a aquellos que deseen echarle un vistazo…

22 de agosto de 2012 · Carlos J. Gil Bellosta

¿Siete lenguajes de programación emergentes?

Hace un par de días apareció un artículo en InfoWorld en el que se enumeraban siete lenguajes de programación emergentes. Parece que por emergentes ha de entenderse cada vez más extendidos en la empresa. Como R hacía parte del rol, comencé alegrándome. Después me surgieron dos elementos de sospecha. Véase la lista de los siete lenguajes seleccionados: Python, un viejo conocido. Ruby Matlab JavaScript, que está gozando de una segunda primavera gracias a AJAX y demás R, ¡cómo no! Erlang (vale la pena echarle un vistazo: tiene cosas la mar de interesantes) Cobol (¡ufa!) Extensiones CUDA Los elementos de sospecha son dos (ni tres ni siete): ...

27 de octubre de 2010 · Carlos J. Gil Bellosta

Un ilustrador problema de compatibilidad de licencias libres

This whole thing is such a nuisance. It seems one can’t even give something away these days! Así de infeliz se mostraba G. Grothendieck hace unos días. Y es que habíamos enviado una primera versión del paquete rJython que subir a CRAN y nos encontramos con problemas de licencias. Eso de las licencias de software es un tema enojoso. Importante, pero enojoso. Además, da la impresión, que totalmente exótico a la ética y costumbres de este país desde el que escribo: algún día, como divertimento, contaré alguna historieta. Y cuando haya vencido la fecha de prescripción, la más divertida, la más ilustradora del fenómeno, la sin par: la del código con copyright de EverisWaterhouseCoopers. ...

5 de agosto de 2010 · Carlos J. Gil Bellosta

rJython: un nuevo paquete para llamar a Python desde R

Ya está disponible el paquete rJython que permite llamar a Python desde R. Aunque todavía no se ha subido a CRAN, puede instalarse así: install.packages("rJython", repos="http://R-Forge.R-project.org") Una vez instalado puede probarse el paquete ejecutando, por ejemplo, rJython <- rJython() a <- 1:4 jython.assign(rJython, "a", a) jython.exec(rJython, "b = len( a )") jython.get(rJython, "b") rJython$exec("import math") jython.get(rJython, "math.pi") jython.call(rJython, "len", 1:3) b <- 5:8 rJython$exec("def concat(a,b): return a+b") jython.call(rJython, "concat", a, b) Arquitectura: Jython y rJava El paquete no está basado en el habitual Cpython sino en Jython, un intérprete de Python desarrollado en Java. El motivo es doble: ...

13 de julio de 2010 · Carlos J. Gil Bellosta