Sweave для питона

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

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

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


person pufferfish    schedule 29.01.2010    source источник
comment
то же? Что значит то же самое? Запустить Python внутри латексного скрипта?   -  person S.Lott    schedule 29.01.2010


Ответы (10)


Некоторые предложения:

  1. Я использую Pweave уже несколько лет, и он очень похож на Sweave. Настоятельно рекомендуется.
  2. Самым популярным инструментом для встроенных отчетов в python на данном этапе являются записные книжки Jupyter, которые позволяют встраивать разметку, и они весьма полезны, хотя лично мне все еще нравится писать что-то в LaTeX ...
  3. Вы также можете взглянуть на PyLit, который предназначен для грамотного программирования на Python, но не так хорошо поддерживается как некоторые из альтернатив.
  4. Sphinx отлично подходит для документирования с помощью Python и может выводить LaTex.
  5. Вот список инструментов для грамотного программирования. Некоторые из них работают с любым языком программирования.
person Shane    schedule 29.01.2010
comment
Pyreport, похоже, больше не существует. - person hd1; 20.04.2020
comment
Обновлено, спасибо. Pweave - лучший вариант для замены Sweave. - person Shane; 06.05.2020

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

person Matti Pastell    schedule 03.03.2010
comment
Очень хорошо! Не могу дождаться, чтобы попробовать. - person Shane; 03.03.2010

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

person JD Long    schedule 09.11.2011

Это немного поздно, но на будущее вы можете рассмотреть мой пакет 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}
person G. Poore    schedule 23.01.2013

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

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

person John Horton    schedule 04.03.2010

Я немного реструктурировал 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}
person Mark    schedule 26.01.2011

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

person Sharpie    schedule 01.02.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
person Matti Pastell    schedule 09.02.2010

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

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

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

введите описание изображения здесь

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

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

Примерно час с учебником по Emacs открывает дверь к некоторым чрезвычайно мощным инструментам.

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

person Lorem Ipsum    schedule 29.05.2017

Что ж, с помощью reticulate, которая является последней лучшей реализацией интерфейса Python в R, вы можете продолжать использовать Sweave и вызвать встроенный Python с помощью интерпретатора 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())
```
person oliver    schedule 08.08.2018