Creating an Example Notebook

Functionality of ProbNum is explained in detail in the form of Jupyter notebooks in the tutorials section of the documentation. If you want to add an example showcasing the functionality of ProbNum, follow the instructions below.

from IPython.display import Image

display(Image(url='https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Jupyter_logo.svg/1200px-Jupyter_logo.svg.png',
              width=250, embed=True))
../_images/jupyter.png

Setting up the Jupyter Notebook

We begin by creating a new Jupyter notebook under ./docs/source/tutorials/. If you want some guidance on the style, you can copy one of the existing notebooks.

Style and HTML conversion

If you create your own ensure that the first cell is a markdown cell containing an upper level markdown header (# Header) to be converted correctly to HTML. This header will appear in the sidebar of the documentation. In the body of the notebook only use headers of a lower level (## and more) to ensure correct sidebar appearance.

In order to keep the style of the output consistent, the first code cell of the notebook should contain the following code snippet.

# Make inline plots vector graphics instead of raster graphics
%matplotlib inline
from IPython.display import set_matplotlib_formats

set_matplotlib_formats("pdf", "svg")

# Plotting
import matplotlib.pyplot as plt

plt.style.use("../probnum.mplstyle")

This snippet defines the style of plots generated by Matplotlib. For example, it defines the font and makes sure any output is a vector graphic. If you need to use specific LaTeX packages, e.g. to label your plots, simply add them to the list via:

plt.rcParams["text.latex.preamble"] += r" \usepackage{siunitx}"
plt.rcParams["text.latex.preamble"]
'\usepackage[cm]{sfmath} \usepackage{amsmath, amssymb} \usepackage{bm} \renewcommand{\familydefault}{\sfdefault} \usepackage{siunitx}'

Adding the Notebook to the Website

Now that you’ve created your notebook, we have to add it in the right place on the website. Check the existing topics in ./docs/source/tutorials/<some_topic>.rst and add your notebook name to the appropriate nbgallery.

.. nbgallery::

   my_example_notebook

This creates a gallery item on the corresponding topic page in the documentation under tutorials. You can set the preview image for your example notebook by choosing a cell that produces an output plot and adding a tag to the metadata of the corresponding Jupyter notebook cell.

{
    "tags": [
        "nbsphinx-thumbnail"
    ]
}

Viewing the Result

In order to view the resulting page from the notebook, build the documentation locally via

tox -e docs

If the notebook compiles successfully, you should see similar output to the one below.

...
copying static files... ... done
copying extra files... done
dumping search index in English (code: en)... done
dumping object inventory... done
build succeeded.

The HTML pages are in _build/html.

Build finished. The HTML pages are in _build/html.
___________________________________ summary ____________________________________
  docs: commands succeeded
  congratulations :)

You can now view your results locally by opening the website in ./docs/_build/html. Make sure you fix any error messages popping up in the build before making a pull request to the main branch. Once you’ve created a pull request ReadTheDocs will automatically build the documentation including your new example notebook.