ipython
IPython comble certaines lacunes de l'interpréteur python en mode console (CLI: command line interface) en apportant la couleur et une édition de l'historique. Tout en conservant l'accès à toutes les fonctionnalités natives de Python, IPython offre un accès rapide aux commandes du shell (unix/windows), de l'introspection des objets python, l'accès aisé à leur documentation (docstrings), l'aide au profilage de code et une facilité de sortie graphique avec matplotlib.
Pylab
Pylab est un mode spécial de IPython qui offre des facilités de calcul numérique et de visualisation scientifique directement dans l'interface en ligne de commande (CLI). On s'approche des fonctionnalités natives de MatLab et IDL/GDL. Ce mode, qui s'obtient avec l'option --pylab (nécessite généralement l'ajout de paquets supplémentaires), charge en mémoire numpy et matplotlib et initie un moteur de rendu graphique.
Voici un exemple de visualisation d'une courbe 1D et d'une image 2D :
x=linspace(-10,10,200)
plot(x,sin(x)/x)
clf()
imshow(outer(sin(x),cos(x)))
Une fois activées, ces extensions à Python permettent de travailler dans un mode enrichi permettant de tester des idées en mode interactif, voir ses données en traçant au vol des graphiques et garder la main sur ses objets.
Les récents développements (v0.11 et +) ont apporté des consoles plus riches que la ligne de commande simple d'origine avec des fonctionnalités d'édition avancée et la possibilité d'afficher des images dans le texte (à la façon des notebook de Mathematica). On les obtient avec :
-
ipython qtconsole --pylab=inline
(depuis la version 0.11)
-
ipython notebook --pylab inline
(depuis la version 0.12)
Voici l'exemple précédent dans l'interface notebook (dans un butineur web):
Capture d'écran par l'auteur, sous licence CC BY-NC-SA.
IPython fonctionne sur toutes les plate-formes où python tourne (windows, unix, mac, ...). Il tourne aussi bien avec les versions 2 que 3 de python. Les dernières versions de ipython (>=0.11) ont abandonné la compatibilité avec python 2.5 (et antérieure).
IPython me sert à développer mon code d'analyse de données de manière interactive et à la visualiser ("à la Matlab"). Les outils de profilages intégrés (%timeit) me servent aussi à choisir entre les différentes implémentations possibles pour un même algorithme.
IPython est très facile à prendre en main, il est intuitif et rend python évident pour les scientifiques. Son seul défaut, à mes yeux, vient de l'accumulation des données en mémoire (liée aux fonctionnalités d'historique).
Python et IPython évoluent significativement entre deux versions (notamment les versions majeures python 2.4, 2.5 et 3), ce qui pose des problèmes et pour le développement (un code initialement écrit en 2.4 ne tournera pas de suite en 3) et pour le CLI (Command line interface) : le comportement peut être significativement différent, et les installations très inhomogènes selon les ordinateurs (dépendances manquantes) et la customisation de chacun des utilisateurs. Ceci conduit à des "expériences utilisateurs" différentes et des incompréhensions entre collègues travaillant sur les mêmes projets et même calculateur mais ayant étendus différemment les options de python et IPython (il est fréquent d'oublier de signaler aux tiers que tel ou tel paquet optionnel, dans tel version, sera utilisé).
Commentaires
notebook (nbviewer)
http://nbviewer.ipython.org/ contient une excellente référence et plein d'exemples d'utilisation.
(Merci M. Dupont !)
Mon favori : XKCD plots.