Вопрос

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

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

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

Это было полезно?

Решение

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

  1. Посмотри на ПиЛит и PyReport которые предназначены для грамотного программирования на Python.
  2. Сфинкс отлично подходит для документирования с помощью Python и может выводить LaTex.
  3. Вот список инструментов для грамотного программирования.Некоторые из них работают с любым языком программирования.

Другие советы

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

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

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

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

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

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

Вы могли бы попробовать SageTeX который реализует функциональность Sweave-Like для МУДРЕЦ математическая платформа.Я не играл с ним столько, сколько хотелось бы, но SAGE, по сути, представляет собой оболочку Python и оценивает Python как родной язык.

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

То, что вы ищете, достигается с помощью ГНУ Эмакс и организационный режим*. org-mode делает далеко больше, чем можно описать в одном ответе, но важные моменты таковы:

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

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

enter image description here

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

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

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

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

Ну, с сетчатый который является лучшей за последнее время реализацией интерфейса 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())
```
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top