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
)© SNCF (source https://giphy.com)
Note : Attention à l'ajout de contenu html/javascript qui peut créer des interactions non voulues, en particulier lors des conversions.
def dit_hopla():
print("Hopla!")
dit_hopla()
Le compteur affiche In [*]
pendant l'exécution :
import time
time.sleep(2) # attend 2 secondes
dit_hopla()
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 dit_hopla():
print("Hopla!")
dit_hopla()
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 : orszag-tang_v100.ipynb
Avec pandas : openaccessweek2019 en utilisant Binder
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 texte 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
:
import os, webbrowser
webbrowser.open_new_tab(f'file:///{os.getcwd()}/notebook-mania2.html');
Partage, conversion et publication peuvent être facilement assurés par une chaîne d'intégration continue telle que gitlab-ci : par exemple, ce notebook est publié sur https://boileau.pages.math.unistra.fr/notebook-mania2
Le morceau difficile, c'est l'exécution...
Basé sur repo2docker
.
requirements.txt
, apt.txt
, environment.yml
ou même Dockerfile
Un lien suffit pour tester cette présentation avec Binder.
$\implies$ La solution "riche".
Un exemple : https://v100.math.unistra.fr
Attention : projet en sommeil.