Sweave per Python
-
23-09-2019 - |
Domanda
Recentemente ho iniziato ad usare Sweave * per la creazione di rapporti di analisi correre con R, e ora sto cercando di fare lo stesso con i miei script Python.
ho trovato riferimenti a embedding pitone in Sweave documenti, ma che sembra un po 'di hack. Qualcuno ha elaborato una soluzione migliore, o c'è un equivalente per pitone Io non sono a conoscenza?
* Sweave è uno strumento che consente di incorporare il codice R per i dati completa analisi in documenti LaTeX
Soluzione
Non credo che ci sia un equivalente diretto, quindi il suggerimento di Romain Francois (nel link) è probabilmente il migliore. Si potrebbe anche prendere in considerazione quanto segue:
- Date un'occhiata al PyLit e PyReport che sono destinati per la programmazione alfabetizzati con Python.
- Sfinge è grande per documentare con Python, e può produrre LaTex.
- una lista di strumenti per la programmazione e scrivere . Alcuni di questi lavori con qualsiasi linguaggio di programmazione.
Altri suggerimenti
Ho scritto un'implementazione di Python di Sweave chiamato Pweave che implementa funzionalità di base e alcune opzioni di Sweave per il codice Python incorporato in riposo o documento in lattice. È possibile ottenere qui: http://mpastell.com/pweave e vedere il post del blog originale qui: http://mpastell.com/2010/03/03/pweave-sweave- per-python /
Dexy è un prodotto molto simile a Sweave. Un vantaggio di Dexy è che non è esclusiva di una sola lingua. Si potrebbe creare un documento Dexy che ha incluso il codice R, codice Python, o qualsiasi altra cosa.
Questo è un po 'tardi, ma per riferimento futuro si potrebbe considerare la mia pacchetto PythonTeX per LaTeX. PythonTeX permette di inserire codice Python in un documento LaTeX, esegue, e riportare l'output. Ma a differenza Sweave, il documento che in realtà Edit è un documento valido .tex (non .Snw o .Rnw), in modo da modificare la parte non-codice del documento è veloce e conveniente.
PythonTeX fornisce molte funzioni, tra cui i seguenti:
- Il documento può essere compilato senza correre alcun codice Python; Codice ha solo bisogno di essere eseguito quando viene modificato.
- uscita Tutti Python viene salvato o memorizzato nella cache.
- codice viene eseguito in sessioni definite dall'utente. Se ci sono più sessioni, le sessioni vengono eseguiti automaticamente in parallelo con tutti i core disponibili.
- Gli errori e gli avvisi sono sincronizzati con i numeri di riga del documento .tex, in modo da sapere esattamente dove sono venuti.
- Il codice può essere eseguito, composto, o comporre ed eseguito. L'evidenziazione della sintassi è fornita da Pygments.
- Tutto stampato da Python viene portato automaticamente nel documento .tex.
- È possibile personalizzare quando viene nuovamente eseguito il codice (modificata, errori, avvisi, ecc.).
- La classe di utilità PythonTeX è disponibile in tutto il codice che viene eseguito. Esso consente di monitorare automaticamente le dipendenze e specificare i file creati che devono essere puliti. Ad esempio, è possibile impostare il documento per rilevare quando i dati da cui dipende vengono modificati, in modo che il codice verrà nuovamente eseguito.
Un file PythonTeX di base assomiglia a questo:
\documentclass{article}
\usepackage{pythontex}
\begin{document}
\begin{pycode}
#Whatever you want here!
\end{pycode}
\end{document}
Si potrebbe prendere in considerazione noweb, che è indipendente dalla lingua ed è la base per Sweave. L'ho usato per Python e funziona bene.
Ho ristrutturato Pweave di Matti un po ', in modo che sia possibile definire arbitrari "chunk-processori", come plugin-moduli. Ciò rende più semplice per estendere per diverse applicazioni di testo pre-elaborazione-chunk-based. La versione ristrutturata è disponibile all'indirizzo https://bitbucket.org/edgimar/pweave/src . A titolo di esempio, si potrebbe scrivere il seguente documento LaTeX-Pweave (notare il "nome del processore" in questo esempio viene specificato con il nome '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}
Inoltre ho pensato la stessa cosa molte volte. Dopo aver letto le vostre domande e guardando in vostro link che ho fatto piccole modifiche al driver Sweave pitone personalizzato, che si collega a. Ho modificato per mantenere anche il codice sorgente e produrre l'uscita e allo stesso modo che Sweave fa per R.
ho postato la versione modificata e un esempio qui: http: //mpastell.com/2010/02/09/python-in-sweave-document/
Certo, non è ottimale, ma sono abbastanza contento con l'uscita e mi piace la possibilità di includere sia R e Python nello stesso documento.
Modifica circa PyLit :
mi piace anche PyLit e in contrasto con la mia risposta originale si può prendere ouput con esso pure, anche se non elegante come Sweave! Ecco un piccolo esempio di come farlo:
import sys
# Catch PyLit output
a = range(3)
sys.stdout = open('output.txt', 'w')
print a
sys.stdout = sys.__stdout__
# .. include:: output.txt
Quello che stai cercando è ottenuto con GNU Emacs e org-mode *. org-mode
molto più che può essere dettagliato in una singola risposta, ma i punti rilevanti sono:
- Il supporto per la programmazione e scrivere con la possibilità di integrare più lingue all'interno dello stesso documento (tra cui l'uso risultati propria lingua come input per un'altra lingua).
- Grafica integrazione.
- Esporta in LaTeX, HTML, PDF, e una varietà di altri formati in modo nativo, generando automaticamente il markup (ma è possibile farlo manualmente, anche).
- 100% personalizzabile , che consente di adattare l'editor per le vostre esigenze.
Non ho Python installato sul mio sistema, ma al di sotto è un esempio di due lingue diverse in fase di esecuzione all'interno della stessa sessione. Il brano è stato modificato dalla splendida org-mode R dimostrativi da Erik Iverson che spiega il set up ed efficace utilizzo di org-mode
per attività di programmazione alfabetizzati. Questo SciPy 2013 presentazione dimostra come org-mode
può essere integrato in un flusso di lavoro (e accade per usare Python).
Emacs può sembrare intimidatorio. Ma per la scienza statistiche / dati, offre enormi possibilità che o non sono offerti in qualsiasi altro luogo o sono distribuite su vari sistemi. Emacs permette a tutti loro di integrare in un'unica interfaccia. Credo che Daniel Gopar dice che la cosa migliore nel suo Emacs esercitazione ,
Sei ragazzi che pigro? Voglio dire, andiamo, basta leggere il tutorial, uomo.
Un'ora o poco più con il tutorial di Emacs apre la porta ad alcuni strumenti estremamente potenti.
* Emacs è dotato di org-mode
. No a parte l'installazione è richiesto.
Bene, con reticolata che è successo ultimamente migliore implementazione di un'interfaccia Python in R si potrebbe continuare a utilizzare Sweave e chiamare Python in linea con l'interprete R. Per esempio, questo ora lavora in un file Markdown .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())
```