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

È stato utile?

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:

  1. Date un'occhiata al PyLit e PyReport che sono destinati per la programmazione alfabetizzati con Python.
  2. Sfinge è grande per documentare con Python, e può produrre LaTex.
  3. 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.

http://www.cs.tufts.edu/~nr/noweb/

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}

Si potrebbe provare a sagetex che implementa Sweave funzionalità -come per il SAGE piattaforma di matematica. Non ho giocato in giro con tanto quanto vorrei, ma Sage è fondamentalmente un guscio di pitone e valuta pitone come è lingua madre.

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).

entrare descrizione dell'immagine qui

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())
```
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top