Pergunta

Eu comecei recentemente a usar Arrancrar* Para criar relatórios de análises com r e agora estou procurando fazer o mesmo com meus scripts Python.

Eu encontrei referências a Incorporar python em Swave Docs, mas isso parece um pouco de um hack. Alguém já elaborou uma solução melhor ou há um equivalente para o Python que eu não estou ciente?

* Sweave é uma ferramenta que permite incorporar o código R para análises de dados completas em documentos de látex

Foi útil?

Solução

Não acredito que haja um equivalente direto, então a sugestão de Romain François (em seu link) é provavelmente a melhor. Você também pode querer considerar o seguinte:

  1. Dê uma olhada em Pylit e Pyreport destinados à programação alfabetizada com Python.
  2. Esfinge é ótimo para documentar com o Python e pode gerar látex.
  3. Aqui está Uma lista de ferramentas para programação alfabetizada. Alguns deles trabalham com qualquer linguagem de programação.

Outras dicas

Escrevi uma implementação do Sweave Python chamada PWeave que implementa a funcionalidade básica e algumas opções de Sweave para o código Python incorporado no documento REST ou LATEX. Você pode obtê-lo aqui: http://mpastell.com/pweave E veja a postagem original do blog aqui: http://mpastell.com/2010/03/03/pwweave-sweave-for-python/

Dexy é um produto muito semelhante para SWAVER. Uma vantagem de Dexy é que ele não é exclusivo de um único idioma. Você pode criar um documento Dexy que incluía código R, código Python ou qualquer outra coisa.

Isso é um pouco tarde, mas para referência futura, você pode considerar meu Pythontex pacote para látex. O Pythontex permite que você insira o código Python em um documento LATEX, execute -o e traga de volta a saída. Mas, diferentemente do Sweave, o documento que você edita é um documento .tex válido (não .snw ou .rnw), portanto, editar a parte não-código do documento é rápida e conveniente.

O Pythontex fornece muitos recursos, incluindo o seguinte:

  • O documento pode ser compilado sem executar nenhum código Python; O código só precisa ser executado quando é modificado.
  • Toda a saída do Python é salva ou armazenada em cache.
  • O código é executado em sessões definidas pelo usuário. Se houver várias sessões, as sessões são executadas automaticamente em paralelo usando todos os núcleos disponíveis.
  • Erros e avisos são sincronizados com os números de linha do documento .tex, para que você saiba exatamente de onde eles vieram.
  • O código pode ser executado, comete ou comete e executado. O destaque da sintaxe é fornecido por pigmentos.
  • Qualquer coisa impressa pelo Python é automaticamente trazida para o documento .tex.
  • Você pode personalizar quando o código é reexecionado (modificado, erros, avisos, etc.).
  • A classe Utilities Pythontex está disponível em todos os códigos executados. Ele permite rastrear automaticamente dependências e especificar arquivos criados que devem ser limpos. Por exemplo, você pode definir o documento para detectar quando os dados depende são modificados, para que o código seja reexecionado.

Um arquivo básico do pythontex se parece com o seguinte:

\documentclass{article}
\usepackage{pythontex}

\begin{document}

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

\end{document}

Você pode considerar Noweb, que é independente da linguagem e é a base para Sweave. Eu o usei para Python e funciona bem.

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

Reestruturei um pouco o PWeave de Matti, para que seja possível definir "processadores de pedaços" arbitrários como módulos de plug-in. Isso facilita a extensão de vários aplicativos de preprocessamento de texto baseados em chunk. A versão reestruturada está disponível em https://bitbucket.org/edgimar/pweave/src. Como exemplo, você pode escrever o seguinte documento de Latex-Pweave (observe o "Nome do processador" neste exemplo é especificado com o nome '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}

Você poderia tentar SAGETEX que implementa a funcionalidade do tipo SÁBIO Plataforma de Matemática. Não brinquei com isso tanto quanto gostaria, mas Sage é basicamente uma concha Python e avalia o Python como sua língua nativa.

Eu também pensei na mesma coisa muitas vezes. Depois de ler suas perguntas e olhar para o seu link, fiz pequenas modificações no driver personalizado do Python Sweave, para o qual você vincule. Eu o modei para manter o código -fonte e produzir a saída também da mesma maneira que a Sweave faz para R.

Eu publiquei a versão modificada e um exemplo aqui: http://mpastell.com/2010/02/09/python-in-sweavea-document/

É verdade que não é ideal, mas estou muito feliz com a saída e gosto da capacidade de incluir R e Python no mesmo documento.

Edite sobre Pylit:

Eu também gosto de Pylit e, ao contrário da minha resposta original, você também pode pegar o OPUT com ele, embora não seja tão elegante quanto Sweave! Aqui está um pequeno exemplo de como fazê -lo:

import sys

# Catch PyLit output

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

# .. include:: output.txt

O que você está procurando é alcançado com GNU Emacs e modo de organização*. org-mode faz distante Mais do que pode ser detalhado em uma única resposta, mas os pontos relevantes são:

  • Suporte para programação alfabetizada com a capacidade de integrar vários idiomas no mesmo documento (incluindo os resultados de um idioma como entrada para outro idioma).
  • Integração gráfica.
  • Exportar para o LATEX, HTML, PDF e uma variedade de outros formatos nativamente, gerando automaticamente a marcação (mas você pode fazê -lo manualmente também).
  • Tudo é 100% personalizável, permitindo que você adapte o editor às suas necessidades.

Não tenho o Python instalado no meu sistema, mas abaixo está um exemplo de dois idiomas diferentes sendo executados na mesma sessão. O trecho é modificado a partir do maravilhoso Tutorial de Org-Mode R. por Erik Iverson, que explica a configuração e o uso eficaz de org-mode para tarefas de programação alfabetizadas. este Apresentação Scipy 2013 demonstra como org-mode pode ser integrado a um fluxo de trabalho (e por acaso usa Python).

enter image description here

Os emacs podem parecer intimidadores. Mas, para estatísticas/ciência de dados, oferece tremendas capacidades que não são oferecidas em nenhum outro lugar ou estão espalhadas por vários sistemas. O EMACS permite que você os integre a uma única interface. Eu acho que Daniel Gopar diz o melhor em seu Tutorial do EMACS,

Vocês são tão preguiçosos? Quero dizer, vamos lá, basta ler o tutorial, cara.

Uma hora ou mais com o tutorial do EMACS abre a porta para algumas ferramentas extremamente poderosas.

* Emacs vem com org-mode. Nenhuma instalação separada é necessária.

Bem com reticulado que é uma melhor implementação recente de uma interface Python em R, você pode continuar usando o Sweave e Chamado de Python em linha usando o intérprete R. Por exemplo, isso agora funciona em um arquivo de marcação .rnw ou .rmd.

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

```{python}
import pandas
data = pandas.read_csv("./data.csv")
print(data.head())
```
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top