Rpython

rPython + feather

R

Supongo que a estas alturas todos conoceréis feather y rPython. Hoy los vais a ver trabajar juntos.

Primero solo en R:

library(feather)
path <- "/tmp/my_data.feather"
write_feather(cars, path)
my_cars <- read_feather(path)

Ahora, para pasarle datos a Python:

library(rPython)
python.exec("import feather")
python.exec("a = feather.read_dataframe('/tmp/my_data.feather')")
python.exec("print a")

Y, finalmente, para crear datos grandes en Python y devolvéselos a R:

python.exec("import numpy as np")
python.exec("import pandas as pd")
python.exec("arr = np.random.randn(10000000)")
python.exec("arr[::10] = np.nan")
python.exec("df = pd.DataFrame({'column_{0}'.format(i): arr for i in range(10)})")
python.exec("feather.write_dataframe(df, '/tmp/test.feather')")

python.data <- read_feather("/tmp/test.feather")
dim(python.data)
#[1] 10000000       10

Los tiempos, que los mida cada cual.

PyData Madrid 2016, en abril de este año

Me llegan noticias de PyData Madrid 2016, que tendrá lugar en abril de este año en Madrid:

Os pongo un poco en contexto. Las PyData empezaron como conferencias de desarrolladores y usuarios de herramientas Python para trabajar con datos. Las primeras se hicieron en Silicon Valley, Nueva York, Londres,… Actualmente hay conferencias en NY, SV, Dallas, Seattle, Boston, Londres, Berlín, Amsterdam, París, Colonia, Tokio, Singapur,…, y Madrid. Como he comentado, empezaron un poco enfocadas en Python pero ahora están mucho más abiertas y se habla de Julia, Python, R, Scala,…

Pasando data.frames de R como tablas de pandas en Python usando rPython

R

Un usuario de rPython, David González Knowles, me ha facilitado su código para pasar una tabla, iris en este caso, de R a una tabla de pandas en Python usando mi paquete.

En R hay tablas de serie. En Python no. La librería pandas de Python implementa algo parecido a los data.frames. Solo que nada garantiza que un usuario de Python la tenga instalada. Por eso no hay un formato de destino claro y universal para las tablas de R a través de rPython. Y por eso, en Python, si se tiene pandas instalado, el usuario tiene que hacer algo, lo siguiente:

rPython & Anaconda

R

Nota: publico hoy en inglés en atención al público potencial de la entrada.

rPython lets R users call Python code. Anaconda is a completely free enterprise-ready Python distribution for large-scale data processing, predictive analytics, and scientific computing. Not surprisingly, some users want to call Anaconda Python rather than their system’s default Python.

However, Anaconda is a very particular package: unlike most other packages, whose files are scattered in a diversity of locations, it is self contained in a single directory. This helps Anaconda solve some problems, like the library hell. It is intended to provide the same experience regardless of the specifics of the host system.

Todo por no RTFM (o cómo usar matplotlib con R)

R

Quien escribió Call matplotlib from R podía haberse ahorrado bastante trabajo de la peor especie (programación de bajo nivel con C++) leyendo los benditos manuales (de rPython, en este caso).

Le bastaba hacer

library(rPython)

x <- seq(0, 2*pi, length = 100)
sx <- sin(x)
cx <- cos(x)

python.assign("x", x)
python.assign("sx", sx)
python.assign("cx", cx)

python.exec("import matplotlib.pyplot as plt")

python.exec("plt.rcParams.update({'figure.figsize' : (7,4)})")
python.exec("plt.plot(x, sx)")
python.exec("plt.plot(x, cx, '--r', linewidth=2) ")
python.exec("plt.legend(('sin(x)', 'cos(x)'))")
python.exec("plt.savefig('2015-04-02-pyplot.png')")

para obtener

2015-04-02-pyplot

con una fracción del esfuerzo y sin reinventar la rueda.

Publicada una nueva versión de rPython-win

R

Acabo de subir a Github una nueva versión de rPython-win, que soluciona uno de mis bugs históricos: ha pasado tanto tiempo en estado “pendiente” que casi le cojo cariño. Tiene (o tenía) que ver con particularidades no documentadas de las APIs para C de Python en distintas versiones de Windows y creo que no afecta al paquete en otras plataformas.

Y aprovechando que el Pisuerga pasa por Valladolid, un enlace: Calling Python from R with rPython.

rPython, ya en Windows

R

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.

rPython ya está en CRAN

R

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…

Datos LIDAR en R

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.

R en el Software Developer's Journal

R

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…

Se buscan "alpha testers" para rPython

R

Busco alpha testers para mi paquete rPython. El paquete es la evolución natural de rJython, un paquete de R que permite llamar a Jython, el dialecto de Python que corre sobre la máquina virtual de Java, desde R.

rPython permite llamar al verdadero Python. Funciona perfectamente en mi máquina, pero necesito ver qué problemas de instalación y uso aparecen en otras plataformas. De momento, sólo funcionaría sobre plataformas UNIX o Linux. Me sorprendería lo indecible que funcionase también sobre Windows: sería toda una casualidad.