octave_kernel
octave_kernel copied to clipboard
An Octave kernel for IPython
An Octave kernel for Jupyter
.. image:: https://mybinder.org/badge_logo.svg :target: https://mybinder.org/v2/gh/Calysto/octave_kernel/main?urlpath=/lab/tree/octave_kernel.ipynb
Prerequisites
Jupyter Notebook <http://jupyter.readthedocs.org/en/latest/install.html>_ and GNU Octave_.
Installation
To install using pip::
pip install octave_kernel
Add --user to install in the user-level environment instead of the system environment.
To install using conda::
conda config --add channels conda-forge
conda install octave_kernel
conda install texinfo # For the inline documentation (shift-tab) to appear.
We require the octave executable to run the kernel.
Add that executable's directory to the PATH environment variable or create the
environment variable OCTAVE_EXECUTABLE to point to the executable itself.
Note that on Octave 5 on Windows, the executable is in "Octave-5.x.x.x\mingw64\bin".
We automatically install a Jupyter kernelspec when installing the
python package. This location can be found using jupyter kernelspec list.
If the default location is not desired, remove the directory for the
octave kernel, and install using python -m octave_kernel install. See
python -m octave_kernel install --help for available options.
Usage
To use the kernel, run one of:
.. code:: shell
jupyter notebook # or ``jupyter lab``, if available
# In the notebook interface, select Octave from the 'New' menu
jupyter qtconsole --kernel octave
jupyter console --kernel octave
This kernel is based on MetaKernel <http://pypi.python.org/pypi/metakernel>_,
which means it features a standard set of magics (such as %%html). For a full list of magics,
run %lsmagic in a cell.
A sample notebook is available online_.
Configuration
The kernel can be configured by adding an octave_kernel_config.py file to the
jupyter config path. The OctaveKernel class offers plot_settings, inline_toolkit,
kernel_json, and cli_options as configurable traits. The available plot settings are:
'format', 'backend', 'width', 'height', 'resolution', and 'plot_dir'.
.. code:: bash
cat ~/.jupyter/octave_kernel_config.py
# use Qt as the default backend for plots
c.OctaveKernel.plot_settings = dict(backend='qt')
The path to the Octave kernel JSON file can also be specified by creating an
OCTAVE_KERNEL_JSON environment variable.
The command line options to Octave can also be specified with an
OCTAVE_CLI_OPTIONS environment variable. The cli options be appended to the
default opions of --interactive --quiet --no-init-file. Note that the
init file is explicitly called after the kernel has set more off to prevent
a lockup when the pager is invoked in ~/.octaverc.
The inline toolkit is the graphics_toolkit used to generate plots for the inline
backend. It defaults to qt. The different backend can be used for inline
plotting either by using this configuration or by using the plot magic and putting the backend name after inline:, e.g. plot -b inline:fltk.
Troubleshooting
Kernel Times Out While Starting
If the kernel does not start, run the following command from a terminal:
.. code:: shell
python -m octave_kernel.check
This can help diagnose problems with setting up integration with Octave. If in doubt,
create an issue with the output of that command.
Kernel is Not Listed
~~~~~~~~~~~~~~~~~~~~
If the kernel is not listed as an available kernel, first try the following command:
.. code:: shell
python -m octave_kernel install --user
If the kernel is still not listed, verify that the following point to the same
version of python:
.. code:: shell
which python # use "where" if using cmd.exe
which jupyter
Gnuplot Error
~~~~~~~~~~~~~
An error that starts with ``gnuplot> set terminal aqua enhanced title`` can be fixed by
adding ``setenv("GNUTERM","qt");`` to ``~/.octaverc`` on MacOS or by installing
``gunplot-x11`` and using ``setenv("GNUTERM", "X11")``.
Octave-Snap (Linux)
~~~~~~~~~~~~~~~~~~~
You can check if you are using a snap version on Linux by checking the path to your Octave
installation.
.. code:: shell
which octave
If the returned path has ``snap`` in it, then Octave is running in a container and you will need to configure the kernel appropriately.
1) Set the environment variable ``OCTAVE_EXECUTABLE="octave"``
.. code:: shell
echo export OCTAVE_EXECUTABLE=\"octave\" >> ~/.bashrc
2) Make a directory for the temporary plot directories that the kernel uses. This *cannot* be a hidden directory.
.. code:: shell
mkdir ~/octavePlots
3) Set ``plot_dir`` to point to your plot directory in ``octave_kernel_config.py``.
.. code:: shell
c.OctaveKernel.plot_settings = dict(plot_dir='<home>/octavePlots')
where ``<home>`` is the absolute path to your home directory. Do not use ``~`` as this resolves to a different location for Octave-Snap.
Blank Plot
~~~~~~~~~~
Specify a different format using the ``%plot -f <backend>`` magic or using a configuration setting.
On some systems, the default ``'png'`` produces a black plot. On other systems ``'svg'`` produces a
black plot.
Local Installation
------------------
To install from a git checkout, run:
.. code:: shell
make install
.. _Octave: https://www.gnu.org/software/octave/download.html
.. _online: http://nbviewer.ipython.org/github/Calysto/octave_kernel/blob/main/octave_kernel.ipynb