[ Bug #1 Fixed ] RPy – Python interface to the R Programming Language

En días pasados estuve trabajando un poco con Galaxy localmente en mi computadora, sin embargo la instalación normalita es muy sencilla pero si quieres algo ya mas “pro” es necesario leer la documentación del wiki, pero un problema que sucedió fue que al tratar de instalar la interfaz de programación en Python para R salieron algunos errores en el código de RPy por lo que esto me fastidio y tuve que, como regularmente me  pasa, arreglar el problema.

RPy necesita R compilado como librería compartida para eso necesitas compilar R con:

1. $./configure   – -enable-R-shlib  – -prefix=/usr

1.1 $make ; $make install (usar sudo o root)

2. establecer la variable de entorno para R (RHOME , R_HOME),en mi caso :

$sudo vim /etc/profile.d/libR.sh
#!/bin/bash
export RHOME=/usr/lib64/R
export R_HOME=$RHOME
export PATH=$PATH:$RHOME/bin

establecí 2 variables puesto que por el momento olvide el nombre de la variable de entorno para R  y como buen mexicano pensé “naa..cualquiera de esas 2 variables (RHOME, R_HOME) debe jalar..”

3. Configuración del entorno para R

$source /etc/profile.d/libR.sh
$sudo vim /etc/ld.so.conf.d/libR.conf
solo añadir “/usr/lib64/R/lib”

$ sudo ldconfig

Ahora si ya podemos instalar RPy

Después de descomprimir RPy  y tratar de instalar

sudo python setup.py install
RHOMES= [ ]
DEBUG= True
Setting RHOMES to  [‘/usr/lib64/R’]
Traceback (most recent call last):
File “setup.py”, line 109, in <module>
RVERSION = rpy_tools.get_R_VERSION(RHOME, force_exec=True)
File “/home/jacob/Downloads/bio/galaxy/dependencys/rpy/rpy-1.0.3/rpy_tools.py”, line 103, in get_R_VERSION
raise RuntimeError(“Couldn’t obtain version number from output\n”
RuntimeError: Couldn’t obtain version number from output
of `R –version’.

$ R –version
R version 2.10.0 (2009-10-26)

se ve claramente que RPy al tratar de obtener la versión no puede !!  y es que si analizas en detalle la salida y el código fuente en python se observa que no estaba pensado para versiones más allá del rango 0..9

veamos la linea 101 en el código que genera el problema:

ln101:  version = re.search(” +([0-9]\.[0-9]\.[0-9])”, output)

la expresión no corresponde a 2.10.0 , por lo que solo es necesario añadir otro rango en la expresión:

ln101: version = re.search(” +([0-9]\.[0-9][0-9]\.[0-9])”, output)

Ahora RPy ya puede leer algo como R version 2.13.0 (2011-04-13)

4 thoughts on “[ Bug #1 Fixed ] RPy – Python interface to the R Programming Language

  1. Seria mejor expandir la expresión regular que parchar para leer forzosamente 2 dígitos:

    version = re.search(” +([0-9]+\.[0-9]+\.[0-9]+)”, output)

    o

    version = re.search(” +(\d+\.\d+\.\d+)”, output)

    • que milagro ..saludos

      Tienes toda la razón..aunque de cualquier manera al menos de aquí a la versión 2.99.x puede servir.

      Saludos

      Jacob

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s