Jupyter pour Julia
-Python
-R
.
Les points de départ :
L'histoire est racontée sur le blog de Fernando Perez et dans cet article de Karlijn Willems.
Une multitude de noyaux :
Python, Julia, R
Sagemath, Cling (C++), Fortran, bash, go
, etc.Une page web dynamique constituée d'une séquence de cellules de deux types :
code
: éditables et exécutablesOn bénéficie de la techno web : texte riche, rendu des principaux formats de médias, aides en ligne, etc.
Source : https://github.com/activityhistory/jupyter_on_github
markdown
: formattage, reconnaissance syntaxiqueMathJax
)Note : Attention à l'ajout de contenu html/javascript qui peut créer des interactions non voulues, en particulier lors des conversions.
def say_hello():
print("Hello!")
say_hello()
Le compteur affiche In [*]
pendant l'exécution :
import time
time.sleep(2)
say_hello()
Pour les tracés, patience...
Pour découvrir l'utilisation des notebooks, l'aide propose un tour guidé : Help > User interface tour
.
Du point de vue utilisateur, on peut regrouper les fonctionnalités dans trois catégories :
Note : pour SageMath, les notebooks Sage sont désormais remplacés par les notebooks Jupyter
Si j'écris :
la cellule markdown est rendue en bash
:
ls -al
Maintenant :
Rendu en python
:
def say_hello():
print("Hello")
say_hello()
Des magic commands en ligne et par cellule qui permettent d'interagir avec le système ou d'appeler d'autres langages.
%lsmagic
Allons sur GPU avec pyopencl : ../patapon/stvenant.ipynb
Avec pandas : ../cours-python/07-pandas.ipynb extrait de ce cours.
Un exemple très riche, le cours de Randall J. LeVeque :
On y trouve :
C'est très beau, je veux travailler avec ! Comment fais-je ?...
Trois problématiques principales :
Mais pour quels besoins ? Enseignement ? Communication scientifique ? Calcul ? Voire calcul intensif ?
Tout est stocké dans un fichier au format json
(y compris les sorties d'exécution) donc :
avec nbconvert
, de nombreux exports sont disponibles :
REVEAL.js
(ce support en est un !)Le notebook peut être exécuté lors de l'export pour contenir la sortie des exécutions.
%%bash
jupyter nbconvert --to html notebook-mania2.ipynb
ls -al notebook-mania2.html
qui produit le fichier notebook-mania2.html.
Partage, conversion et publication peuvent être facilement assurés par une chaîne d'intégration continue telle que gitlab-ci (cf. exposé GitLab Pages).
Le morceau difficile, c'est l'exécution...
Avantages :
Inconvénients :
Avantages :
Inconvénients :
Basé sur repo2docker
.
Avantages :
requirements.txt
, apt.txt
, environment.yml
ou même Dockerfile
Inconvénients :
Cette présentation avec binder : https://mybinder.org/
Avantages :
Inconvénients :
$\implies$ La solution "riche".
Deux modes :
Le principe :
Les étapes :
Elles sont nombreuses !
Attention :
Avec sa bibliothèque de widgets, Jupyter peut être vu également comme un atelier de fabrication d'applications web orientées vers le calcul et le traitement des données.
Cf. l'exemple shallow_water de R. J. Leveque.