Sweave for python

Ostatnio zacząłem używać Sweave* do tworzenia raportów analiz uruchamianych za pomocą R, a teraz chcę zrobić to samo z moimi skryptami Pythona.

Znalazłem odniesienia do osadzania Pythona w dokumentach Sweave, ale wydaje się to trochę hack. Czy ktoś wymyślił lepsze rozwiązanie, czy jest jakiś odpowiednik dla Pythona, którego nie znam?

* Sweave to narzędzie, które pozwala osadzać kod R do kompletnych analiz danych w dokumentach latex

Author: mdsumner, 2010-01-29

10 answers

Nie wierzę, że istnieje bezpośredni odpowiednik, więc sugestia Romaina Francois (w twoim linku) jest chyba najlepsza. Możesz również rozważyć następujące kwestie:

  1. spójrz naPyLit iPyReport , które są przeznaczone do literackiego programowania w Pythonie.
  2. Sphinx jest świetny do dokumentowania za pomocą Pythona i może wyprowadzać Latex.
  3. Oto lista narzędzi do programowania literate . Niektóre z nich działają z dowolnym język programowania.
 18
Author: Shane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-29 13:17:13

Napisałem Pythonową implementację Sweave o nazwie Pweave, która implementuje podstawową funkcjonalność i niektóre opcje Sweave dla kodu Pythona osadzonego w dokumencie reST lub Latex. Możesz go dostać tutaj: http://mpastell.com/pweave i zobacz oryginalny wpis na blogu tutaj: http://mpastell.com/2010/03/03/pweave-sweave-for-python/

 23
Author: Matti Pastell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-11 09:49:08

Dexy jest bardzo podobny produkt do Sweave. Jedną z zalet Dexy jest to, że nie jest on wyłączny dla jednego języka. Możesz utworzyć dokument Dexy zawierający kod R, Kod Pythona lub cokolwiek innego.

 15
Author: JD Long,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-09 18:39:44

To trochę za późno, ale na przyszłość możesz rozważyć mój PythonTeX pakiet dla LaTeX. PythonTeX pozwala wprowadzić kod Pythona w dokumencie LaTeX, uruchomić go i przywrócić wyjście. Ale w przeciwieństwie do Sweave, dokument, który faktycznie edytujesz, jest ważny .dokument tex (not .Snw lub .Rnw), więc edycja nie-kodowej części dokumentu jest szybka i wygodna.

PythonTeX zapewnia wiele funkcji, w tym następujące:

  • dokument można skompilować bez uruchamianie dowolnego kodu Pythona; kod musi być wykonywany tylko wtedy, gdy jest modyfikowany.
  • wszystkie wyjścia Pythona są zapisywane lub buforowane.
  • kod działa w sesjach zdefiniowanych przez użytkownika. Jeśli istnieje wiele sesji, sesje są automatycznie uruchamiane równolegle przy użyciu wszystkich dostępnych rdzeni.
  • błędy i ostrzeżenia są synchronizowane z numerami linii .dokumenty tex, więc dokładnie wiesz, skąd pochodzą.
  • kod może być wykonywany, składany lub składany i wykonywany. Podświetlanie składni jest dostarczone przez pigmenty.
  • Wszystko wydrukowane przez Pythona jest automatycznie wprowadzane do .dokument tex.
  • możesz dostosować, kiedy kod jest ponownie wykonywany (zmodyfikowany, błędy, ostrzeżenia itp.).
  • Klasa PythonTeX utilities jest dostępna w każdym wykonywanym kodzie. Pozwala na automatyczne śledzenie zależności i określanie utworzonych plików, które powinny zostać oczyszczone. Na przykład, możesz ustawić dokument tak, aby wykrywał, kiedy DANE, od których zależy, są modyfikowane, tak aby Kod był ponownie stracony.

Podstawowy plik PythonTeX wygląda tak:

\documentclass{article}
\usepackage{pythontex}

\begin{document}

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

\end{document}
 8
Author: G. Poore,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-23 02:55:58

Możesz rozważyć noweb, który jest niezależny od języka i jest podstawą Sweave. Używałem go do Pythona i działa dobrze.

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

 5
Author: John Horton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-04 01:39:36

Zrestrukturyzowałem trochę Pweave Mattiego, tak aby można było zdefiniować dowolne "procesory" jako moduły wtyczek. Ułatwia to rozszerzenie dla kilku aplikacji do wstępnego przetwarzania tekstu opartych na kawałkach. Wersja zrestrukturyzowana jest dostępna pod adresem https://bitbucket.org/edgimar/pweave/src . jako przykład możesz napisać następujący dokument LaTeX-Pweave (zauważ, że "nazwa procesora" w tym przykładzie jest określona nazwą '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}
 4
Author: Mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-01 21:50:37

Możesz spróbować SageTeX , który implementuje funkcję Sweave dla Sage platformy matematycznej. Nie bawiłem się nim tak często, jak bym chciał, ale Sage jest w zasadzie powłoką Pythona i ocenia Pythona jako język ojczysty.

 3
Author: Sharpie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-01 05:32:43

Wiele razy myślałem o tym samym. Po przeczytaniu twoich pytań i zaglądnięciu do Twojego linku zrobiłem małe modyfikacje do niestandardowego sterownika Python Sweave, do którego linkujesz. Zmodyfikowałem go tak, aby zachowywał kod źródłowy i produkował Wyjście tak samo jak Sweave dla R.

Zamieściłem zmodyfikowaną wersję i przykład tutaj: http://mpastell.com/2010/02/09/python-in-sweave-document/

Przyznaję, że nie jest to optymalne, ale jestem całkiem zadowolony z wyjściem i podoba mi się możliwość włączenia zarówno R, jak i Pythona w tym samym dokumencie.

Edit about PyLit :

Ja też lubię PyLit i wbrew mojej oryginalnej odpowiedzi można go też złapać, choć nie jest tak elegancki jak Sweave! Oto mały przykład jak to zrobić:

import sys

# Catch PyLit output

a = range(3)
sys.stdout = open('output.txt', 'w')
print a
sys.stdout = sys.__stdout__

# .. include:: output.txt
 3
Author: Matti Pastell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-10 15:53:09

To, czego szukasz, osiąga się dzięki GNU Emacs i org-mode *. org-mode does far more than can be detailed in a single response, but the relevant point are:

  • wsparcie dla programowania literackiego z możliwością integracji wielu języków w ramach tego samego dokumentu (w tym używanie wyników jednego języka jako danych wejściowych dla innego języka).
  • Integracja Grafiki.
  • eksport do LaTeX, HTML, PDF i wielu innych formaty natywnie, automatycznie generując znaczniki(ale możesz to zrobić również ręcznie).
  • Wszystko jest w 100% konfigurowalne , co pozwala dostosować edytor do swoich potrzeb.

Nie mam zainstalowanego Pythona w moim systemie, ale poniżej znajduje się przykład dwóch różnych języków uruchamianych w ramach tej samej sesji. Fragment został zmodyfikowany ze wspaniałego org-mode r tutorial autorstwa Erika Iversona, który wyjaśnia konfigurację i efektywne wykorzystanie org-mode dla literatów zadania programistyczne. Ta Prezentacja SciPy 2013 pokazuje, w jaki sposób org-mode można zintegrować z przepływem pracy (i tak się składa, że używa Pythona).

Tutaj wpisz opis obrazka

Emacs może wydawać się onieśmielający. Ale dla statystyki / data science oferuje ogromne możliwości, które nie są oferowane nigdzie indziej lub są rozłożone na różne systemy. Emacs pozwala zintegrować je wszystkie w jednym interfejsie. Myślę, że Daniel Gopar najlepiej mówi w swoim Emacs tutorial ,
Jesteście aż tak leniwi? Po prostu przeczytaj samouczek.

Około godziny z samouczkiem Emacsa otwiera drzwi do niezwykle potężnych narzędzi.

* Emacs pochodzi z org-mode. Nie jest wymagana oddzielna instalacja.

 2
Author: Lorem Ipsum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-29 16:05:23

Cóż, z reticulate, która jest najnowszą najlepszą implementacją interfejsu Pythona w R, można nadal używać Sweave i wywoływać Pythona inline za pomocą interpretera R. Na przykład to teraz działa w .Rnw lub .Plik RMD markdown.

```{r example, include=FALSE}
library(reticulate)
use_python("./dir/python")
```

```{python}
import pandas
data = pandas.read_csv("./data.csv")
print(data.head())
```
 0
Author: Oliver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-08 17:14:52