Introduction à /ˈdʒuːpɪtər/

plan

  • le projet Jupyter
  • outils
  • bloc-notes Jupyter
  • Markdown
  • noyaux
  • faire une présentation
  • extensions utiles

le projet Jupyter

  • bifurcation (2014) de la console interactive pour Python IPython (2001)
In [ ]:
- bifurcation (2014) de la console interactive pour Python __IPython__ (2001)
  • application web permettant de communiquer avec des noyaux pour
    • Julia
    • Python
    • (e)R
  • alternative à Orgmode pour faire de la «science reproductible»
  • outil pédagogique (préparations de TPs ou de transparents)

Outils

  • jupyter-console : console texte à la IPython
  • jupyter-qtconsole : console graphique
  • jupyter-notebook : appli web
  • jupyter-kernelspec : gestion des noyaux
  • jupyter-nbconvert : conversion vers divers formats (html, pdf, transparents)
  • jupyter-nbextension : gestion des extensions

Appli web

  • lancer jupyter-notebook
    jupyter-notebook (--kernel=nom_du_noyau)
    
  • le serveur démarre sur l'hôte local et on peut se connecter via le navigateur avec un jeton généré
  • ouvrir un navigateur (Firefox, qutebrowser, etc..) en local
    firefox  http://localhost:8888/?token=num_jeton
    

Markdown

  • Il est possible de créer des cellules de texte enrichi
  • écrire des maths: $ \int \sin x = - \cos x $
  • utiliser un formatage html : e.g changement de police
  • insérer du code avec coloration syntaxique
    for(auto & x : z) { s+= x; }
    

Noyaux

  • on selectionne le type de noyau en démarrant la session
  • on peut se connecter à un noyau qui tourne avec jupyter console --existing=ID où l'on récupère ID en regardant localhost:8888/api/kernels
  • Dans un noyau python, on peut executer un bloc de code d'un autre noyau avec l'instruction magique %%script <language>
In [9]:
%%script julia
println(sum(1:10))
55
  • des «widgets» rendent le code interactif
In [1]:
from pylab import *
def myplot(x):
   a=linspace(0,pi,100)
   plot(a,sin(x*a))

from ipywidgets import FloatSlider, ToggleButtons, interact
interact(myplot,x=10)
Out[1]:
<function __main__.myplot>
  • l'inclusion de vidéos peut se faire en HTML ou grâce à des modules python
In [4]:
from IPython.display import YouTubeVideo
YouTubeVideo("w4nl94fU39o")
Out[4]:

faire des transparents

  • façon classique : View → Cell Toolbar → Slideshow → specifier le type de chaque diapo
    jupyter nbconvert --to slides --post serve
    
  • utiliser l'extension rise

extensions utiles

  • vimbinding → raccourcis clavier vim dans les bloc-notes
  • rise → genere les présentations directement dans le bloc-notes
  • jupytext → import/export de fichier ipynb