Jupyter notebooks


  • Get an idea of the purpose of Jupyter.

  • See some inspirational Jupyter notebooks.

Instructor note

  • 10 min teaching

  • 0 min exercises

Motivation for Jupyter notebooks

Galileo's drawings of Jupiter and its Medicean Stars from Sidereus Nuncius

One of the first notebooks: Galileo’s drawings of Jupiter and its Medicean Stars from Sidereus Nuncius. Image courtesy of the History of Science Collections, University of Oklahoma Libraries (CC-BY).

Case examples

Gravitational wave discovery

Discovery of gravitational waves

Discovery of gravitational waves.

As a case example, let us have a look at the analysis published together with the discovery of gravitational waves. This page lists the available analyses and presents several options to browse them.

  • A quick look at short segments of data can be found at https://github.com/losc-tutorial/quickview

  • The notebook can be opened and interactively explored using Binder by clicking the “launch Binder” button.

  • How does the Binder instance know which Python packages to load?

Activity inequality study

Stanford Activity Inequality Study

Stanford Activity Inequality Study.

Researchers in the Stanford Activity Inequality Study measured daily activity from cell phone tracking data for over 700,000 users in different countries across the world.

More examples

For further inspiration, head over to the Gallery of interesting Jupyter Notebooks.

Use cases

  • Really good for linear workflows (e.g. read data, filter data, do some statistics, plot the results)

  • Experimenting with new ideas, testing new libraries/databases

  • As an interactive development environment for code, data analysis, and visualization

  • Interactive work on HPC clusters

  • Sharing and explaining code to colleagues

  • Teaching (programming, experimental/theoretical science)

  • Learning from other notebooks

  • Keeping track of interactive sessions, like a digital lab notebook

  • Supplementary information with published articles

  • Slide presentations using Reveal.js


  • Programs with non-linear code flow

  • Large codebase (however it can make sense to use Jupyter as interface to the large codebase and import the codebase as a module)

  • You cannot easily write a notebook directly in your text editor (but you can do that with R Markdown)

  • Notebooks can be version controlled (nbdime helps with that), but there are still limitations.

  • Notebooks aren’t named by default and tend to acquire a bunch of unrelated stuff. Be careful with organization!

  • See also https://scicomp.aalto.fi/scicomp/jupyter-pitfalls/.

Good practices

  • Rename notebooks from “Untitled.ipynb”.

  • Run all cells before sharing/saving to verify that the results you see on your computer were not due to cells being run out of order (we will try this later).