org language for python r sweave literate-programming

python - language - r for linux download



Sweave para Python (10)

Recientemente comencé a usar Sweave * para crear informes de análisis ejecutados con R, y ahora estoy buscando hacer lo mismo con mis scripts de Python.

He encontrado referencias a incrustar python en documentos de Sweave , pero parece un poco pirateado. ¿Alguien ha encontrado una mejor solución, o hay un equivalente para Python del que no estoy al tanto?

* Sweave es una herramienta que permite incrustar el código R para análisis completos de datos en documentos de látex


Bueno, con la reticulate que es una mejor implementación reciente de una interfaz de Python en R, podría continuar usando Sweave y llamar a Python en línea usando el intérprete de R. Por ejemplo, esto ahora funciona en un archivo de rebajas .Rnw o .Rmd.

```{r example, include=FALSE} library(reticulate) use_python("./dir/python") ``` ```{python} import pandas data = pandas.read_csv("./data.csv") print(data.head()) ```


Esto es un poco tarde, pero para futuras referencias podría considerar mi paquete PythonTeX para LaTeX. PythonTeX le permite ingresar el código de Python en un documento de LaTeX, ejecutarlo y devolver la salida. Pero a diferencia de Sweave, el documento que realmente edita es un documento .tex válido (no .Snw o .Rnw), por lo que editar la parte no codificada del documento es rápido y conveniente.

PythonTeX proporciona muchas características, incluyendo las siguientes:

  • El documento se puede compilar sin ejecutar ningún código Python; El código solo necesita ser ejecutado cuando es modificado.
  • Toda la salida de Python se guarda o se almacena en caché.
  • El código se ejecuta en sesiones definidas por el usuario. Si hay varias sesiones, las sesiones se ejecutan automáticamente en paralelo utilizando todos los núcleos disponibles.
  • Los errores y las advertencias se sincronizan con los números de línea del documento .tex, para que sepa exactamente de dónde provienen.
  • El código puede ser ejecutado, tipografiado, o tipografiado y ejecutado. El resaltado de sintaxis es proporcionado por Pygments.
  • Todo lo impreso por Python se introduce automáticamente en el documento .tex.
  • Puede personalizar cuando el código se vuelva a ejecutar (modificado, errores, advertencias, etc.).
  • La clase de utilidades PythonTeX está disponible en todo el código que se ejecuta. Le permite realizar un seguimiento automático de las dependencias y especificar los archivos creados que deben limpiarse. Por ejemplo, puede configurar el documento para que detecte cuándo se modifican los datos de los que depende, por lo que el código se volverá a ejecutar.

Un archivo básico de PythonTeX se ve así:

/documentclass{article} /usepackage{pythontex} /begin{document} /begin{pycode} #Whatever you want here! /end{pycode} /end{document}



He reestructurado un poco el Pweave de Matti, de modo que es posible definir "procesadores de trozos" arbitrarios como módulos de plugin. Esto facilita la extensión de varias aplicaciones de preprocesamiento de texto basadas en fragmentos. La versión reestructurada está disponible en https://bitbucket.org/edgimar/pweave/src . Como ejemplo, puede escribir el siguiente documento LaTeX-Pweave (observe que el "nombre del procesador" en este ejemplo se especifica con el nombre ''mplfig''):

/documentclass[a4paper]{article} /usepackage{graphicx} /begin{document} /title{Test document} /maketitle Don''t miss the great information in Figure /ref{myfig}! <<p=mplfig, label=myfig, caption = "Figure caption...">>= import sys import pylab as pl pl.plot([1,2,3,4,5],[''2,4,6,8,10''], ''b.'', markersize=15) pl.axis(''scaled'') pl.axis([-3,3, -3,3]) # [xmin,xmax, ymin,ymax] @ /end{document}


Lo que buscas se logra con GNU Emacs y org-mode *. org-mode hace mucho más de lo que se puede detallar en una sola respuesta, pero los puntos relevantes son:

  • Compatibilidad con la programación alfabetizada con la capacidad de integrar varios idiomas en el mismo documento (incluido el uso de los resultados de un idioma como entrada para otro idioma).
  • Integración de gráficos.
  • Exporte a LaTeX, HTML, PDF y una variedad de otros formatos de forma nativa, generando automáticamente el marcado (pero también puede hacerlo manualmente).
  • Todo es 100% personalizable , lo que le permite adaptar el editor a sus necesidades.

No tengo Python instalado en mi sistema, pero a continuación se muestra un ejemplo de dos idiomas diferentes que se ejecutan en la misma sesión. El extracto se modificó del maravilloso tutorial org-mode R de Erik Iverson, que explica la configuración y el uso efectivo del org-mode para tareas de programación alfabetizadas. Esta presentación de SciPy 2013 demuestra cómo org-mode puede integrarse en un flujo de trabajo (y pasa a usar Python).

Emacs puede parecer intimidante. Pero para estadísticas / ciencia de datos, ofrece capacidades tremendas que no se ofrecen en ningún otro lugar o se distribuyen a través de varios sistemas. Emacs le permite integrarlas todas en una sola interfaz. Creo que Daniel Gopar lo dice mejor en su tutorial de Emacs ,

¿Son ustedes que perezosos? Quiero decir, vamos, solo lee el tutorial, hombre.

Una hora más o menos con el tutorial de Emacs abre la puerta a algunas herramientas extremadamente poderosas.

* Emacs viene con org-mode . No se requiere instalación por separado.


No creo que haya un equivalente directo, por lo que la sugerencia de Romain Francois (en su enlace) es probablemente la mejor. También es posible que desee considerar lo siguiente:

  1. Eche un vistazo a PyLit y PyReport que están diseñados para la programación literaria con Python.
  2. Sphinx es ideal para documentar con python y puede generar LaTex.
  3. Aquí hay una lista de herramientas para la programación literaria . Algunos de estos funcionan con cualquier lenguaje de programación.


Puede probar SageTeX que implementa la funcionalidad de Sweave-Like para la plataforma matemática SAGE . No he jugado con eso tanto como me gustaría, pero SAGE es básicamente un shell de python y evalúa python como su idioma nativo.


También he pensado en lo mismo muchas veces. Después de leer sus preguntas y buscar en su enlace, realicé pequeñas modificaciones en el controlador Sweave de Python personalizado al que se vincula. Lo modifiqué para mantener también el código fuente y producir la salida de la misma manera que lo hace Sweave para R.

Publiqué la versión modificada y un ejemplo aquí: http://mpastell.com/2010/02/09/python-in-sweave-document/

Por supuesto, no es óptimo, pero estoy bastante contento con el resultado y me gusta la posibilidad de incluir tanto R como Python en el mismo documento.

Editar sobre PyLit :

También me gusta PyLit y, contrariamente a mi respuesta original, puedes atraparlo también, ¡aunque no es tan elegante como Sweave! Aquí hay un pequeño ejemplo de cómo hacerlo:

import sys # Catch PyLit output a = range(3) sys.stdout = open(''output.txt'', ''w'') print a sys.stdout = sys.__stdout__ # .. include:: output.txt


Dexy es un producto muy similar a Sweave. Una de las ventajas de Dexy es que no es exclusivo de un solo idioma. Puede crear un documento Dexy que incluya el código R, el código Python o cualquier otra cosa.