Подтвердить что ты не робот

Sweave для python

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

Ответ 4

Это немного поздно, но для будущих ссылок вы можете рассмотреть мой 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

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

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

Ответ 6

Я немного изменил Matti Pweave, так что можно определить произвольные "chunk-processor" как модули-модули. Это упрощает расширение для нескольких приложений для предварительной обработки текста на основе блоков. Реорганизованная версия доступна по адресу 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}

Ответ 7

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

Ответ 8

Я тоже много раз думал о том же. После прочтения ваших вопросов и изучения вашей ссылки я внесла небольшие изменения в пользовательский драйвер Sweave python, к которому вы ссылаетесь. Я изменил его, чтобы сохранить исходный код и произвести вывод так же, как 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

Ответ 9

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

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

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

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

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

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

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

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