2010-01-29 11 views
26

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.Sweave para python

He encontrado referencias a embedding python in Sweave documentos, pero parece un truco. ¿Alguien ha encontrado una mejor solución o hay un equivalente para Python del que no estoy enterado?

* Sweave es una herramienta que permite incrustar el código R para los datos completa analiza en los documentos de látex

+0

"lo mismo"? ¿Qué significa "lo mismo"? Ejecutar Python dentro de un script de látex? –

Respuesta

17

no creo que hay un equivalente directo, por lo que la sugerencia de Romain Francois (en su enlace) es probablemente el mejor También puede ser que desee considerar el siguiente:

  1. Tenga una mirada en PyLit y PyReport que están destinados a la programación ilustrada con Python.
  2. Sphinx es ideal para documentar con python, y puede dar salida a LaTex.
  3. Aquí está a list of tools for literate programming. Algunos de estos funcionan con cualquier lenguaje de programación.
2

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

2

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

he publicado 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 acerca PyLit:

también me gusta PyLit y ​​contrario a mi primera respuesta se puede coger ouput con él también, aunque no tan elegante como Sweave! He aquí 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 
3

He reestructurado de Matti Pweave un poco, por lo que es posible definir arbitrarias "chunk-procesadores", como plugin-módulos. Esto hace que sea fácil de ampliar para varias aplicaciones de preprocesamiento de texto basadas en fragmentos. La versión reestructurada está disponible en https://bitbucket.org/edgimar/pweave/src.A modo de ejemplo, se podría escribir el siguiente documento LaTeX-Pweave (nótese el "nombre del procesador" en este ejemplo se especifica con el 'mplfig' nombre):

\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} 
14

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

7

Esto es un poco tarde, pero para referencia futura puede considerar mi paquete PythonTeX para LaTeX. PythonTeX le permite ingresar el código de Python en un documento LaTeX, ejecutarlo y recuperar el resultado. 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 ofrece muchas características, incluyendo las siguientes:

  • El documento puede ser compilado sin ejecutar ningún código Python; el código solo necesita ser ejecutado cuando es modificado.
  • Todo el resultado de Python se guarda o 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 se puede ejecutar, componer o componer y ejecutar. El resaltado de sintaxis es proporcionado por Pygments.
  • Cualquier cosa impresa por Python se incluye automáticamente en el documento .tex.
  • Puede personalizar cuándo se vuelve a ejecutar el código (modificado, errores, advertencias, etc.).
  • La clase de utilidades PythonTeX está disponible en todos los códigos que se ejecutan. Le permite rastrear automáticamente las dependencias y especificar los archivos creados que deben limpiarse. Por ejemplo, puede configurar el documento para detectar cuándo se modifican los datos de los que depende, para que el código se vuelva a ejecutar.

Un archivo básico PythonTeX se parece a esto:

\documentclass{article} 
\usepackage{pythontex} 

\begin{document} 

\begin{pycode} 
#Whatever you want here! 
\end{pycode} 

\end{document} 
0

Lo que estamos buscando se consigue con GNU Emacs y org-mode *. org-mode hace ahora más que puede ser detallado en una sola respuesta, pero los puntos relevantes son:

  • Apoyo para la programación ilustrada con la capacidad de integrar múltiples idiomas dentro del mismo documento (incluyendo el uso de los resultados de un idioma como el entrada para otro idioma).
  • Integración de gráficos.
  • Exportar 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% customizable, lo que le permite adaptar el editor a sus necesidades.

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

enter image description here

Emacs puede parecer intimidante. Pero para las estadísticas/ciencia de datos, ofrece enormes capacidades que, o bien no se ofrecen en otro lugar o se extienden a través de varios sistemas. Emacs le permite integrarlos a todos en una sola interfaz. Creo que Daniel Gopar lo dice mejor en su Emacs tutorial,

¿Ustedes son tan vagos? 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 potentes.

* Emacs viene con org-mode. No se requiere una instalación separada.

Cuestiones relacionadas