11.11.3 Jupyter Notebooks

Jupyter notebooks are one popular technique for displaying code, text, and graphical output together in a comprehensive manner. Octave can publish results to a Jupyter notebook with the function jupyter_notebook.

 
: notebook = jupyter_notebook (notebook_filename)
: notebook = jupyter_notebook (notebook_filename, options)

Run and fill the Jupyter Notebook in file notebook_filename from within GNU Octave.

Both text and graphical Octave outputs are supported.

This class has a public property notebook which is a structure representing the JSON-decoded Jupyter Notebook. This property is intentionally public to enable advanced notebook manipulations.

Note: Jupyter Notebook versions (nbformat) lower than 4.0 are not supported.

The optional second argument options is a struct with fields:

  • tmpdir to set the temporary working directory.

%plot magic is supported with the following settings:

  • "%plot -f <format>" or "%plot --format <format>": specifies the image storage format. Supported formats are:
    • PNG (default)
    • SVG (Note: If SVG images do not appear in the notebook, it is most likely related to Jupyter Notebook security mechanisms and explicitly "trusting" them will be necessary).
    • JPG
  • "%plot -r <number>" or "%plot --resolution <number>": specifies the image resolution.
  • "%plot -w <number>" or "%plot --width <number>": specifies the image width.
  • "%plot -h <number>" or "%plot --height <number>": specifies the image height.

Examples:

## Run all cells and generate the filled notebook

## Instantiate an object from a notebook file
notebook = jupyter_notebook ("myNotebook.ipynb");
## Run the code and embed the results in the notebook property
notebook.run_all ();
## Generate a new notebook by overwriting the original notebook
notebook.generate_notebook ("myNotebook.ipynb");

## Run just the second cell and generate the filled notebook

## Instantiate an object from a notebook file
notebook = jupyter_notebook ("myNotebook.ipynb");
## Run the code and embed the results in the notebook property
notebook.run (2)
## Generate a new notebook in a new file
notebook.generate_notebook ("myNewNotebook.ipynb");

## Generate an Octave script from a notebook

## Instantiate an object from a notebook file
notebook = jupyter_notebook ("myNotebook.ipynb");
## Generate the Octave script
notebook.generate_octave_script ("jup_script.m");

See also: jsondecode, jsonencode.