Skip to Content

Les notebooks IPython comme outil de travail dans le domaine géospatial ou le plaisir de partager, de collaborer et de communiquer

Niveau Intermédiaire
Logiciels utilisés IPython
Python
R
Octave
Graphviz
GRASS GIS (via Python)
Plateforme Windows | Mac | Linux | FreeBSD

Qui n'a jamais rêvé d'utiliser/mélanger dans une même interface Python, R, JavaScript, Ruby, Perl, C, Julia, Fortran, Matlab® ou Mathematica®, SQLite et SQL, et compagnie, de pouvoir passer les variables d'un langage à l'autre de manière transparente, de pouvoir collaborer/partager avec d'autres et de publier directement sur Internet les démarches et les résultats, le tout étant reproductible à volonté? (la liste des programmes est celle qui a été utilisée dans la suite).

Cela n'existe pas, me direz-vous, mais c'est pourtant maintenant possible grâce aux Notebooks IPython, GitHub et les services IPython Notebook viewer et Ipython Notebook Slides Viewer qui permettent de publier instantanément les démarches et les résultats sur Internet (voir mon illustration du passage de Octave à R puis de R à Python, à titre de démonstration).

nbviewer.ipython.org/url/beowulf.csail.mit.edu/18.337/fractals.ipynb (avec Julia)

Cette combinaison est en train de devenir une petite révolution dans la communication dans le monde scientifique (et autres) qui connait Python:

  • présentations diverses (comme alternative à PowerPoint et aux logiciels similaires);
  • tutoriels;
  • enseignement universitaire et autres;
  • travaux en coopération ou en partage:
  • etc.

Ils permettent aussi de publier des blogs comme Pythonic Perambulations, des articles scientifiques comme Likelihood of observing an earthquake on a continental low-angle normal fault et même des livres comme Probabilistic Programming & Bayesian Methods for Hackers.

Il suffit de consulter les sites A gallery of interesting IPython Notebooks ou IPython Notebook Examples pour s'en rendre compte.

Qu'en est-il dans le domaine géospatial ?

Il y a bien eu Adventures with GIS: an introduction to IPython and the joy of playdata qui date de 2012, mais c'est apparemment plus compliqué, car il semble difficile pour les Sigistes de concevoir un monde géomatique sans logiciel  SIG et l'utilisation de ces solutions en est encore à ses débuts.

Quelques exemples en fonction de mes trouvailles et sans aucun à priori (il commence a y en avoir beaucoup...):

Quelques-unes de mes réalisations:

 

 

Tout ça, c'est bien beau, mais il doit bien y avoir un problème quelque part ?

Eh oui, car c'est un module Python (2.x, 3.x) et pour pouvoir l'utiliser sur son ordinateur (il y a même une version pour IPhone):

  1. il faut disposer d'une version de Python fonctionnelle (présente par défaut sur Linux et Mac OS X) ou en installer une (Windows);
  2. il faut savoir installer des modules Python.

Ensuite avec la commande

ipython notebook ou ipython2 notebook (selon la version)

C'est cet aspect qui est le plus rédhibitoire pour ceux qui veulent les utiliser.

Si vous ne pouvez/savez pas installer IPython mais vous voulez le tester, il y a quelques solutions dans les nuages:

  • SageMathCloud, gratuit après enregistrement: ("free service with support from University of Washington, the National Science Foundation and Google")

 

  • ou d'autres comme Picloud, payantes.

Principes, pour ceux qui souhaitent poursuivre

 Comment cela fonctionne-t-il ?

  1. la feuille est d'abord élaborée dans le Notebook de IPython (voir plus bas)
  2. le fichier résultant est un fichier au format JSON: .ipynb
  3. ce fichier peut ensuite être transformé en une multitude de formats (HTML, PDF, ...) ou publié directement sur Internet en le plaçant dans un endroit ad hoc

Il nous faut donc commencer par une présentation,  très sommaire de IPython.

C'est quoi IPython

Il a été créé par F Perez (chercheur au Berkeley Institute for Data Science) en 2001.

The goal of IPython is to create a comprehensive environment for interactive and exploratory computing

IPython: from the shell to a book with a single tool; the method behind the madness

Il se compose de:

un terminal interactif

C'est d'abord un terminal interactif ou shell avec une pléthore d’astuces intégrées (parmi d'autres références, très nombreuses) mais ce point ne nous intéresse pas ici.

une console Qt

Entre autres choses, elle permet d'inclure directement les graphiques matplotlib, par exemple, mais ce point ne nous intéresse pas ici;

ipython qtconsole --matplotlib inline ou ipython2 qtconsole --matplotlib inline

le Notebook

C'est aussi, depuis la version 0.12 (2.2 actuellement), une nouvelle interface web riche (à la Mathematica®): le Notebook. Elle se présente sous la forme d’un shell IPython intégré dans une page Web (serveur géré par IPython). La documentation francophone la plus pratique se trouve à Utilisation du Notebook IPython.

ipython notebook ou ipython2 notebook

Le mode opératoire est simple: l'interface fonctionne avec des cellules (cells). Chacune d'entre elles peut contenir du code ou du texte:

Seules les cellules au format Code peuvent être exécutées comme dans un shell classique (avec les touches Majuscule + Return, out() dans la figure suivante et il existe de nombreuses autres astuces), les autres servent à entrer des notes (format Markdown):

De nombreux autres formats sont aussi supportés (HTML , images, videos, équations LaTex,voir IPython's Rich Display System ou Latex footnotes, citations, etc. in IPython Notebook). Voir, à titre d'exemple mes IPortail SIG et Purcell A.Deller.

Les diapositives (slides)

Il est aussi possible de créer des diapositives (slides) de présentation (SlideShow) avec l'API JavaScript reveal.js, (voir IPython Slideshows Will Change the Way You Work).

exemple de Melysa Gymreg sur melissagymrek.com et son fichier example_slideshow.ipynb

Les fichiers résultants (.ipynb)

Les fichiers résultants sont enregistrés au format JSON (fichiers .ipynb) et il est possible de constater qu'une fois les traitements terminés et le fichier sauvegardé, ce sont des fichiers statiques: tout est conservé, même les figures (figure au format png binaire ici).

Ils peuvent donc être convertis sans problème en un multitude de formats (HTML, Markdown, PDF, LaTex, etc) à l'aide du script nbconvert.

ipython nbconvert fichier.ipynb --to html (--to slides, to....) ou ipython2 nbconvert ....

Les services Ipython Notebook viewer et Slides Viewer

Ils permettent de publier directement sur Internet ces fichiers .ipynb  (classique et diaporama). GitHub offre maintenant la possibilité de stocker ces fichiers dans un répertoire Github (Portail.ipynb) ou dans un Gist (Portail2.ipynb) (mais en pratique, n'importe quelle URL au format .ipynb peut être utilisée) et de les transformer instantanément avec l'extension Open in nbviewer (.Firefox, Chrome et Safari) -> Script Portail.

(Google Chrome propose aussi l'application coLaboratory Notebook)

Slides Viewer permet de visualiser les fichiers .SlideShow  ( Présentation de Melissa Gymrek sur son blog et même présentation de à partir du fichier situé sur son dépôt GitHub avec Slides Viewer).

Quelques autres exemples IPython Notebook: An Overview ou An Open-Source Approach for Catchment's Physiographic Characterization (r.basin)

Les extensions 

Mais ce qui fait la force de la solution IPython, ce sont  les nombreuses Extensions. Ce sont des modules Python qui permettent de: 

  • modifier le comportement du shell Python (comme %matplotlib inline dans l'exemple précédent), nommées magics

  • utiliser d'autres programmes dans le Notebook, comme rmagic qui permet d'utiliser R dans le Notebook en utilisant les variables X,Y précédemment définies, mais il y en a des dizaines d'autres (Ruby, Julia, C, Fortran, MatLab, Octave, JavaScript, GraphViz, etc., voir Extension Index) et il s'en crée des nouvelles régulièrement. Ce sont les cell-magics. Il faut bien évidemment que ces applications tierces soient préalablement installées.

Exemple avec rmagic (anciennement load_ext rmagic):

Il y a moyen d'utiliser toutes les possibilités de R:

et d'importer les packages de R:

C'est la même chose avec les autres cellules magiques (voir par exemple, avec Graphviz , avec Octave ou avec JavaScript et la librairie D3.js).

Conclusions

Mon seul souhait est de vous avoir donné l'envie de découvrir cet environnement de travail pour faire de la géomatique, fort éloigné des logiciels SIG il est vrai. Ses principaux avantages résident, pour moi, dans:

  • l'interface de travail pour mon travail personnel: la correction des erreurs est facile, il suffit de revenir dans la cellule incriminée, de les corriger puis de relancer le processus;
  • la possibilité d'utiliser Python, R, GRASS GIS, et autres sans devoir ouvrir des Shells/programmes différents;
  • la documentation des traitements: lorsqu'on utilise cet outil, on se sent vite obligé de commenter ses démarches. Au lieu d'avoir plusieurs documents, je n'en ai plus qu'un seul;
  • la portabilité: il suffit de transporter son fichier .ipynb d'un ordinateur à l'autre ou de le placer sur GitHub;
  • le partage et la coopération à plusieurs: il suffit de partager son document;
  • la reproductibilité des démarches, fondamentale dans le monde scientifique;
  • le plaisir de l'utiliser et de découvrir tout ce que IPython permet de faire...

Il y a encore des défauts, le principal étant qu'il faut connaître Python...

Mais les développements se poursuivent avec bientôt la possibilité de travailler directement à plusieurs sur une même feuille (il est possible d'observer que Microsoft figure parmi les Sponsors).
Pour suivre les progrès, le site officiel de IPython est la meilleure ressource.

Tous les traitements ont été effectués sur Mac OS X  avec plusieurs les versions 1.2.1 et 2.2.0 de IPython.

Site officiel : Travailler avec IPython notebook
Site officiel : Explorer vos données avec le Notebook d’IPython
Site officiel : IPython et ses amis
Site officiel : Apprentissage de IPython Notebook - Exercice pratique (Cours "Informatique pour l'ingénieur" - EPFL-ENAC-SSIE-BA3)
Site officiel : Exportation avec IPython notebook
Site officiel : IPython notebooks dans l'enseignement (Université Paris Dauphine)
Site officiel : Sortie d’IPython en version 2.0 (pour les éléments non traités ici, comme les Widgets JavaScript)


Creative Commons License
licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Pas de Modification 2.0 France

Commentaires

Rectification

"Adventures with GIS: an introduction to IPython and the joy of play , longue vidéo YouTube qui utilise directement PyQGIS dans un notebook, ce que je ne suis pas encore parvenu à faire;"

Ce n'est pas PyQgis qu'il utilise mais PyGIS

Poster un nouveau commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.