ipython

Fiche logiciel validé
  • Création ou MAJ importante : 05/10/12
  • Correction mineure : 06/02/13
Mots-clés
Pour aller plus loin

ipython : interface en ligne de commande optimisée pour le calcul scientifique sous python

  • Site web
  • Système : UNIX-like, Windows, MacOS X
  • Téléchargement
  • Version évaluée : 0.10 à 0.12
  • Langue(s) de l'interface : anglais
  • Licence : BSD

    L'auteur de IPython (Fernando Perez) promeut les licences BSD plutôt que GPL car cela facilite la réutilisation d'après lui.

Description
Fonctionnalités générales

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.

Autres fonctionnalités

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):
console IPyton Notebook
Capture d'écran par l'auteur, sous licence CC BY-NC-SA.

Interopérabilité

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).

Contexte d'utilisation dans mon laboratoire/service

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.

Limitations, difficultés, fonctionnalités importantes non couvertes

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é).

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré
  • Debian, Ubuntu et la plupart des distributions Linux (pour avoir accès à pylab, il faut ajouter le paquet python-matplotlib).

  • IPython reste absent des Redhat, CentOS mais il existe néanmoins des RPM pour ces distributions.

  • Sous Windows, IPython est intégré à la distribution PythonXY.

Plates-formes

Unix, Windows, MacOS

Logiciels connexes
Autres logiciels aux fonctionnalités équivalentes
Environnement de développement
Type de structure associée au développement

Développement fait sur GitHub: l'auteur principal (Fernando Perez) est employé par l'Université de Berkeley mais l'équipe de développement est assez large (60 personnes) avec des contributeurs en Europe et en Afrique du Sud.

Eléments de pérennité

Très large communauté d'utilisateurs.

Société / organisations qui ont participé au financement du développement: Enthought, Tech-X Corporation Boulder CO:, Microsoft, NIH (grant), NSF (Sage), Google (summer of code).

Projet qui en dépendent (avec leurs institutions) :

  • Sage : open source mathematics.
  • PyRAF : Space Telescope Science Institute
  • CASA : Nat. Radio Astronomy Observatory
  • Ganga : CERN
  • PyMAD : neutron spectrom., Laue Langevin
  • Sardana : ALBA Synchrotron Espagnol/Catalan.
  • ASCEND : eng. modeling (Carnegie Mellon).
  • JModelica : dynamical systems.
  • DASH : Denver Aerosol Sources and Health.
  • PyIMSL Studio, by Visual Numerics.
  • Trilinos : Sandia National Lab.
  • Pymerase : microarray gene expression.
  • DoD : baseline configuration.
  • Mayavi : 3d visualization, Enthought.
  • NiPype : computational pipelines, MIT.
  • QSnake : source-distro for scientific comp.

Environ 60 dévelopeurs actifs (mais pas en continu).

Références d'utilisateurs institutionnels

CEA, ESRF, CERN (analyses LHC), CNRS (analyses Planck HFI)

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums

Il existe plusieurs listes de diffusion pour IPython :

Documentation utilisateur

Voir la documentation de IPython pour l'interface et de SciPy pour l'ensemble des fonctionnalités scientifiques.

Divers (astuces, actualités, sécurité)

Les nouvelles consoles (qt et notebook) utilisent ZeroMQ pour communiquer entre le client et le serveur (dépendance à ZMQ).
IPython cherche aussi à permettre le calcul parallèle avec des clusters Linux mais je n'utilise pas ces fonctionnalités.
L'auteur de la fiche utilise indifféremment dans ses activités quotidiennes les version 0.10, 0.11, 0.12, qui ne présentent pas de différences significatives, mis à part certains détails mentionnées plus haut.

Contributions

Via Pull-Request sur GitHub.

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.