2010-01-29 8 views
26

J'ai récemment commencé à utiliser Sweave * pour créer des rapports d'analyses exécutées avec R, et je cherche maintenant à faire de même avec mes scripts python.Sweave pour python

J'ai trouvé des références à docs embedding python in Sweave, mais cela semble être un peu un hack. Est-ce que quelqu'un a trouvé une meilleure solution, ou y at-il un équivalent pour python dont je ne suis pas au courant?

* Sweave est un outil qui permet d'intégrer le code de R pour l'analyse des données complète dans les documents de latex

+0

"pareil"? Que signifie "le même"? Exécuter Python dans un script en latex? –

Répondre

17

Je ne crois pas qu'il y ait un équivalent direct, donc la suggestion de Romain François (dans votre lien) est probablement le meilleur. Vous pouvez également considérer les points suivants:

  1. Jetez un oeil à PyLit et PyReport qui sont destinés à la programmation littéraire avec Python.
  2. Sphinx est idéal pour documenter avec python, et peut sortir LaTex.
  3. Voici a list of tools for literate programming. Certains d'entre eux fonctionnent avec n'importe quel langage de programmation.
2

Vous pouvez essayer SageTeX qui implémente la fonctionnalité Sweave-Like pour la plate-forme mathématique SAGE. Je n'ai pas joué avec ça autant que je le voudrais, mais SAGE est fondamentalement un shell python et évalue python comme son langage natif.

2

J'ai aussi pensé à la même chose plusieurs fois. Après avoir lu vos questions et regardé votre lien, j'ai fait de petites modifications au pilote python Sweave personnalisé, que vous liez à. Je modifia aussi de garder le code source et produire la sortie et de la même manière que Sweave fait pour R.

J'ai posté la version modifiée et un exemple ici: http://mpastell.com/2010/02/09/python-in-sweave-document/

Certes, il n'est pas optimale mais Je suis assez content de la sortie et j'aime la possibilité d'inclure à la fois R et Python dans le même document.

Modifier à propos PyLit:

Je aime aussi PyLit et contrairement à ma première réponse, vous pouvez prendre ouput avec aussi bien, même si elle pas aussi élégant que Sweave! Voici un petit exemple comment le faire:

import sys 

# Catch PyLit output 

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

# .. include:: output.txt 
4

Vous pouvez envisager noweb, qui est indépendant de la langue et est la base de Sweave. Je l'ai utilisé pour Python et ça marche bien.

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

3

J'ai restructuré Pweave de Matti un peu, de sorte qu'il est possible de définir des "processeurs de chunk-" arbitraires plugin-modules. Cela facilite l'extension de plusieurs applications de prétraitement de texte à partir de fragments. La version restructurée est disponible au https://bitbucket.org/edgimar/pweave/src.À titre d'exemple, vous pouvez écrire le document LaTeX-Pweave suivant (notez le « nom du processeur » dans cet exemple est spécifié avec le nom « 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} 
14

Dexy est un produit très similaire à Sweave. Un avantage de Dexy est qu'il n'est pas exclusif à une seule langue. Vous pouvez créer un document Dexy contenant du code R, du code Python ou toute autre chose.

7

Ceci est un peu en retard, mais pour référence future, vous pouvez envisager mon package PythonTeX pour LaTeX. PythonTeX vous permet d'entrer du code Python dans un document LaTeX, de l'exécuter et de ramener la sortie. Mais contrairement à Sweave, le document que vous éditez est un document .tex valide (pas .Snw ou .Rnw), donc l'édition de la partie non-code du document est rapide et pratique.

PythonTeX offre de nombreuses fonctionnalités, notamment les suivantes:

  • Le document peut être compilé sans exécuter de code Python; le code n'a besoin d'être exécuté que lorsqu'il est modifié.
  • Toutes les sorties Python sont enregistrées ou mises en cache.
  • Le code s'exécute dans des sessions définies par l'utilisateur. S'il y a plusieurs sessions, les sessions s'exécutent automatiquement en parallèle en utilisant tous les cœurs disponibles.
  • Les erreurs et les avertissements sont synchronisés avec les numéros de ligne du document .tex, vous savez donc exactement d'où ils viennent.
  • Le code peut être exécuté, composé, ou composé et exécuté. La mise en évidence de la syntaxe est fournie par Pygments.
  • Tout ce qui est imprimé par Python est automatiquement introduit dans le document .tex.
  • Vous pouvez personnaliser l'exécution du code (modifications, erreurs, avertissements, etc.).
  • La classe d'utilitaires PythonTeX est disponible dans tout le code exécuté. Il vous permet de suivre automatiquement les dépendances et de spécifier les fichiers créés qui doivent être nettoyés. Par exemple, vous pouvez configurer le document pour détecter quand les données dont il dépend sont modifiées, de sorte que le code sera réexécuté.

Un fichier PythonTeX de base ressemble à ceci:

\documentclass{article} 
\usepackage{pythontex} 

\begin{document} 

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

\end{document} 
0

Qu'est-ce que vous cherchez est réalisé avec GNU Emacs et org-mode *. org-mode-t beaucoup plus peuvent être détaillées dans une réponse unique, mais les points pertinents sont:

  • Soutien à la programmation littéraire avec la possibilité d'intégrer plusieurs langues dans le même document (y compris en utilisant les résultats d'une langue comme entrée pour une autre langue).
  • Intégration graphique.
  • Exporter vers LaTeX, HTML, PDF, et une variété d'autres formats natifs, générant automatiquement le balisage (mais vous pouvez le faire manuellement, aussi).
  • Tout est 100% customizable, vous permettant d'adapter l'éditeur à vos besoins.

Je n'ai pas installé Python sur mon système, mais ci-dessous est un exemple de deux langues différentes exécutées dans la même session.L'extrait est modifié à partir du merveilleux org-mode R tutorial par Erik Iverson qui explique la mise en place et l'utilisation efficace de org-mode pour les tâches de programmation. Ce SciPy 2013 presentation montre comment org-mode peut être intégré dans un flux de travail (et arrive à utiliser Python).

enter image description here

Emacs peut sembler intimidant. Mais pour les statistiques/la science des données, il offre d'énormes capacités qui ne sont pas offertes ailleurs ou qui sont réparties sur différents systèmes. Emacs vous permet de les intégrer dans une seule interface. Je pense que Daniel Gopar le dit le mieux dans son Emacs tutorial,

Êtes-vous les gars que paresseux? Je veux dire, allez, lisez le tutoriel, mec.

Une heure ou deux avec le tutoriel Emacs ouvre la porte à des outils extrêmement puissants.

* Emacs est livré avec org-mode. Aucune installation séparée n'est requise.

Questions connexes