Journées Mathrice, Montpellier, 27-29 mars 2018

Mathrice

Notebook-mania 2

La révolution Jupyter en 2018


Jupyter
Diaporama - Page unique - Sources GitLab

Matthieu Boileau

IRMA, CNRS, Université de Strasbourg


Licence Creative Commons

Introduction

Journées Mathrice, octobre 2015 à Orsay :


Mathrice

Si vous avez manqué Notebook mania 1

Jupyter pour Julia-Python-R.

Les points de départ :

Une brève chronologie

L'histoire est racontée sur le blog de Fernando Perez et dans cet article de Karlijn Willems.

Les ingrédients de base

La couche web

La couche langage

Une multitude de noyaux :

Qu'est-ce qu'un notebook Jupyter ?

Une page web dynamique constituée d'une séquence de cellules de deux types :

On bénéficie de la techno web : texte riche, rendu des principaux formats de médias, aides en ligne, etc.

Le notebook type

Mathrice Source : https://github.com/activityhistory/jupyter_on_github

Cellules de texte

$$e^{i\pi} + 1 = 0$$

Note : Attention à l'ajout de contenu html/javascript qui peut créer des interactions non voulues, en particulier lors des conversions.

Cellules de code éditables et exécutables

Le compteur affiche In [*] pendant l'exécution :

Pour les tracés, patience...

Fonctionnalités de base

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 :

Interaction avec le notebook

Deux modes (un peu comme dans vi) :

Mode édition

Mode commande

Intérêt des notebooks pour les sciences

Note : pour SageMath, les notebooks Sage sont désormais remplacés par les notebooks Jupyter

Passage en revue des fonctionnalités

Le texte enrichi

Si j'écris :

```bash ls -al ```

la cellule markdown est rendue en bash :

ls -al

Maintenant :

```python def say_hello(): print("Hello") say_hello() ```

Rendu en python :

def say_hello():
    print("Hello")
say_hello()

Interopérabilité et ergonomie

Des magic commands en ligne et par cellule qui permettent d'interagir avec le système ou d'appeler d'autres langages.

Des exemples !

Calcul

Allons sur GPU avec pyopencl : ../patapon/stvenant.ipynb

Traitement des données

Avec pandas : ../cours-python/07-pandas.ipynb extrait de ce cours.

Enseignement des mathématiques

Un exemple très riche, le cours de Randall J. LeVeque :

On y trouve :

Travailler en pratique avec les notebooks ?

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 ?

Partager

Tout est stocké dans un fichier au format json (y compris les sorties d'exécution) donc :

Convertir

avec nbconvert, de nombreux exports sont disponibles :

Le notebook peut être exécuté lors de l'export pour contenir la sortie des exécutions.

Un exemple de conversion

qui produit le fichier notebook-mania2.html.

Exécuter

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

Les solutions

Le serveur jupyter local

Avantages :

Inconvénients :

Le serveur Jupyterhub

Avantages :

Inconvénients :

Mybinder

Basé sur repo2docker.

Avantages :

Inconvénients :

Cette présentation avec binder : https://mybinder.org/ Binder

Cocalc

https://cocalc.com/

Avantages :

Inconvénients :

$\implies$ La solution "riche".

Usages avancés et évolution

nbgrader

Deux modes :

Le principe :

Les étapes :

  1. Version enseignant
  2. Auto-génération de la version étudiant
  3. Publication de la version étudiant
  4. Récupération des soumissions (sans effort avec la version hébergée)
  5. Auto-évaluation
  6. Evaluation manuelle
  7. Commentaires écrits aux étudiants

La vidéo qui dit tout.

Les extensions

Elles sont nombreuses !

Attention :

Assembler

bookbook

Vers des applications web ?

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.

Jupyterlab

Conclusion

Mathrice

Prêts à décoller ?