En el post anterior expliqué cómo realizar filogenias con el paquete R. Pero no me bastaba con aprender esto, sino que quería integrar órdenes de R en un script en Python, del mismo modo que se puede integrar R con LaTeX gracias a Sweave. Y claro que se puede, con rpy2, un proyecto que nos proporciona una sintaxis para trabajar con R desde Python.
Es un proyecto que se encuentra en una fase de rápido desarrollo y que conviene tener la última versión, pues hay notables mejoras. Por eso en lugar de instalar desde repositorios el paquete «python-rpy2», recomiendo hacerlo por un precompilado deb desde launchpad. Yo me he instalado la versión de Maveric en Lucid y no he notado ningún problema.
Una vez salvado este punto, pasamos a la acción. Ejecutamos el interprete Python y cargamos rpy2:
>>> import rpy2.robjects as robjects
A continuación parte del código utilizado en el post anterior con objeto de dibujar un árbol filogenético:
>>> robjects.r.library("ape") >>> robjects.r.library("phangorn") >>> robjects.r.library("multicore") >>> data = robjects.r["read.dna"]("alignment_contig_phy.txt") >>> data = robjects.r["as.phyDat"](data) >>> data = robjects.r["as.DNAbin"](data) >>> print(data) >>> dm = robjects.r["dist.dna"](data, model = "JC69") >>> treeUPGMA = robjects.r["upgma"](dm) >>> viewUPGMA = robjects.r["plot"](treeUPGMA)
Y se nos abrirá la ventana con nuestro árbol. Nota que la sintáxis es sencilla. El nombre de la función R entre corchetes y comiilas seguido de los datos a los que se aplican entre paréntesis. Esto, precedido de «robjects.r», la función de rpy2 que hace las llamadas a R. Esto es todo por el momento, más información en la documentación de la librería.
Así de fácil, así de R, así de Python.
Ok! Buenisimo!
¿y que versiones de python y R usaste?
Gracias!
Me alegro de que te haya interesado.
Utilicé Python 2.6 y R 2.12.1 bajo Ubuntu 10.04.
funciona desde window.
Estoy teniendo probemas porque no reconoce la version de R.
Hay que modificar algo en el archivo rpy.py
Llevo las 4 horas de la mañana tratando que haga la conexión con R desde Windows 7. Moví un dll de aquí para allá pero luego me dice que no lee rinterface ¡qué locura, no lee una carpeta de su mismo directorio! Pero sin duda estas son las características desgracias que traen Window$ consigo. Esta noche probaré en mi máquina linux en mi hogar. Ya no me gasto más aquí. Saludos y gracias por el post.