Sweave для питона - PullRequest
       21

Sweave для питона

27 голосов
/ 29 января 2010

Я недавно начал использовать Sweave * для создания отчетов об анализах, выполненных с использованием R, и теперь собираюсь сделать то же самое с моими скриптами на python.

Я нашел ссылки на встраивание python в документы Sweave , но это похоже на хак. Кто-нибудь разработал лучшее решение, или есть эквивалент для python, о котором я не знаю?

* Sweave - это инструмент, позволяющий встроить код R для полного анализа данных в латексные документы

Ответы [ 10 ]

25 голосов
/ 03 марта 2010

Я написал реализацию Sweave для Sweave под названием Pweave, которая реализует базовую функциональность и некоторые опции Sweave для кода Python, встроенные в документ reST или Latex. Вы можете получить его здесь: http://mpastell.com/pweave и посмотреть оригинальное сообщение здесь: http://mpastell.com/2010/03/03/pweave-sweave-for-python/

17 голосов
/ 29 января 2010

Я не верю, что есть прямой эквивалент, поэтому предложение Ромен Франсуа (по вашей ссылке), вероятно, лучшее. Вы также можете рассмотреть следующие вопросы:

  1. Взгляните на PyLit и PyReport , которые предназначены для грамотного программирования на Python.
  2. Sphinx отлично подходит для документирования с помощью python и может выводить LaTex.
  3. Вот список инструментов для грамотного программирования . Некоторые из них работают с любым языком программирования.
16 голосов
/ 09 ноября 2011

Dexy очень похож на продукт Sweave. Одним из преимуществ Dexy является то, что он не является эксклюзивным для одного языка. Вы можете создать документ Dexy, включающий код R, код Python или что-то еще.

8 голосов
/ 23 января 2013

Это немного поздно, но для дальнейшего использования вы можете рассмотреть мой пакет PythonTeX для LaTeX. PythonTeX позволяет вам вводить код Python в документе LaTeX, запускать его и возвращать вывод. Но в отличие от Sweave, документ, который вы на самом деле редактируете, является действительным документом .tex (не .Snw или .Rnw), поэтому редактирование некодовой части документа выполняется быстро и удобно.

PythonTeX предоставляет множество функций, включая следующие:

  • Документ может быть скомпилирован без запуска кода Python; код должен выполняться только после его модификации.
  • Весь вывод Python сохраняется или кэшируется.
  • Код выполняется в пользовательских сессиях. Если имеется несколько сеансов, сеансы автоматически запускаются параллельно с использованием всех доступных ядер.
  • Ошибки и предупреждения синхронизируются с номерами строк в документе .tex, поэтому вы точно знаете, откуда они пришли.
  • Код может быть выполнен, набран или набран и выполнен. Подсветка синтаксиса обеспечивается Pygments.
  • Все, что напечатано Python, автоматически заносится в документ .tex.
  • Вы можете настроить время повторного выполнения кода (изменение, ошибки, предупреждения и т. Д.).
  • Класс утилит PythonTeX доступен во всем выполняемом коде. Это позволяет автоматически отслеживать зависимости и указывать созданные файлы, которые необходимо очистить. Например, вы можете настроить документ так, чтобы он определял, когда изменяются данные, от которых он зависит, так что код будет выполняться повторно.

Базовый файл PythonTeX выглядит следующим образом:

\documentclass{article}
\usepackage{pythontex}

\begin{document}

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

\end{document}
5 голосов
/ 04 марта 2010

Вы можете рассмотреть noweb, который не зависит от языка и является основой для Sweave. Я использовал его для Python, и он работает хорошо.

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

4 голосов
/ 26 января 2011

Я немного реструктурировал Pweave Матти, чтобы можно было определить произвольные «процессоры чанка» как подключаемые модули. Это облегчает расширение для нескольких приложений предварительной обработки текста на основе фрагментов. Реструктурированная версия доступна по адресу https://bitbucket.org/edgimar/pweave/src.. Например, вы можете написать следующий документ LaTeX-Pweave (обратите внимание, что «имя процессора» в этом примере указано с именем «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}
3 голосов
/ 09 февраля 2010

Я тоже много раз думал об этом. После прочтения ваших вопросов и просмотра вашей ссылки я внес небольшие изменения в пользовательский драйвер python Sweave, на который вы ссылаетесь. Я изменил его так, чтобы он также сохранял исходный код и выводил так же, как Sweave для R.

Я разместил измененную версию и пример здесь: http://mpastell.com/2010/02/09/python-in-sweave-document/

Конечно, это не оптимально, но я очень доволен выводом, и мне нравится возможность включать R и Python в один документ.

Редактировать о PyLit :

Мне также нравится PyLit, и, вопреки моему первоначальному ответу, вы можете поймать и выход с ним, хотя он не такой элегантный, как Sweave! Вот небольшой пример, как это сделать:

import sys

# Catch PyLit output

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

# .. include:: output.txt
3 голосов
/ 01 февраля 2010

Вы можете попробовать SageTeX , который реализует функциональность Sweave-Like для математической платформы SAGE . Я не играл с ним столько, сколько хотел бы, но SAGE - это по сути оболочка python, которая оценивает python как его родной язык.

2 голосов
/ 29 мая 2017

То, что вы ищете, достигается с помощью GNU Emacs и org-mode *. org-mode делает далеко больше, чем можно описать в одном ответе, но соответствующие пункты:

  • Поддержка грамотного программирования с возможностью интеграции нескольких языков в одном документе (включая использование результатов одного языка в качестве входных данных для другого языка).
  • Интеграция графики.
  • Экспорт в LaTeX, HTML, PDF и многие другие форматы, автоматически генерируя разметку (но вы также можете сделать это вручную).
  • Все 100% настраивается , что позволяет адаптировать редактор к вашим потребностям.

У меня не установлен Python в моей системе, но ниже приведен пример двух разных языков, запущенных в одном сеансе. Отрывок изменен из замечательного учебника org-mode R Эрика Айверсона, который объясняет настройку и эффективное использование org-mode для задач грамотного программирования. Эта презентация SciPy 2013 демонстрирует, как org-mode может быть интегрирована в рабочий процесс (и случается с использованием Python).

enter image description here

Emacs может показаться пугающим. Но для статистики / данных, он предлагает огромные возможности, которые либо не предлагаются нигде, либо распространяются по различным системам. Emacs позволяет интегрировать их все в единый интерфейс. Я думаю, что Даниэль Гопар сказал это лучше всего в своем учебнике по Emacs ,

Вы, ребята, такие ленивые? Я имею в виду, давай, просто прочитай учебник, чувак.

Час или около того с помощью учебника по Emacs открывает двери для очень мощных инструментов.

* Emacs поставляется с org-mode. Отдельная установка не требуется.

0 голосов
/ 08 августа 2018

Ну, с сеткой , которая является недавно лучшей реализацией интерфейса Python в R, вы можете продолжить использовать Sweave и вызывать Python inline, используя интерпретатор R. Например, теперь это работает в файле уценки .Rnw или .Rmd.

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

```{python}
import pandas
data = pandas.read_csv("./data.csv")
print(data.head())
```
...