Skip to main content

An example for Jupyter NORTH tool (Jupyter docker image).

Project description

NORTH Jupyter tool

nomad-north-jupyter is a NOMAD plugin and can be used along with other NOMAD plugins, in nomad-distro-dev, nomad-distro-template, and in NOMAD production instance. Adding it as a plugin will make the jupyter_north_tool available in the NORTH tools registry of the NOMAD Oasis environment.

The plugin contains the NORTH tool configuration and a Docker image for a Jupyter-based tool in the NOMAD NORTH (NOMAD Oasis Remote Tools Hub) environment. The nomad-north-jupyter image from this plugin provides the default base image for Dockerfile which is used as a basis to define custom Jupyter NORTH tools.

Quick start

The jupyter_north_tool, a NORTH tool instance provided by this plugin, offers a containerized JupyterLab environment for interactive analysis.

In the following sections, we will cover:

  1. Building and testing the Docker image locally
  2. Using nomad-north-jupyter as a base image for custom NORTH tools
  3. Adding the nomad-north-jupyter plugin to NOMAD
  4. Adding nomad-north-jupyter image in a NOMAD Oasis (not recommended)
  5. Documentation
  6. Main contributors

Building and testing

Build the Docker image locally:

docker build -f src/nomad_north_jupyter/north_tools/jupyter_north_tool/Dockerfile \
    -t ghcr.io/fairmat-nfdi/nomad-north-jupyter:latest .

Test the image:

docker run -p 8888:8888 ghcr.io/fairmat-nfdi/nomad-north-jupyter:latest

Access JupyterLab at http://localhost:8888.

Using nomad-north-jupyter as a base image for custom NORTH tools

This image is designed to be used as a base for custom NOMAD NORTH Jupyter tools. When extending this image in your plugin's Dockerfile created from cookiecutter-nomad-plugin, keep the following in mind:

Package management

Both uv and pip are available as package managers in the image. Both install and uninstall packages in the Conda environment, so you can use either one of them to manage your Python dependencies.

Example using uv:

RUN uv pip install numpy pandas scipy

Example using pip:

RUN pip install --no-cache-dir matplotlib seaborn

Port and user configuration

Like other Jupyter notebook images, port 8888 is exposed for JupyterLab access. The default user is ${NB_USER} (usually jovyan), and you should switch to this user when installing packages or copying files to ensure proper permissions.

Fixing permissions

After customizing the base image (e.g., installing additional packages or adding files), you may need to fix file permissions to avoid permission issues when running the container. Add the following lines at the end of your Dockerfile after all customizations:

COPY --chown=${NB_USER}:${NB_GID} . ${HOME}/${PLUGIN_NAME}
RUN fix-permissions "/home/${NB_USER}" \
    && fix-permissions "${CONDA_DIR}"

Adding the nomad-north-jupyter plugin to NOMAD

Currently, NOMAD has two distinct flavors (NOMAD Oasis and NOMAD development environment) that are relevant depending on your role as an user.

Adding the nomad-north-jupyter plugin in your NOMAD Oasis

The plugin nomad-north-jupyter is a default member of the plugin group in NOMAD Oasis. This facilitates NOMAD to autonomously discover and integrate the NORTHTool via NorthToolEntryPoint defined in the plugin. Later, the tool will be available in the NORTH tools registry of the NOMAD Oasis environment.

Adding nomad-north-jupyter plugin in your local NOMAD installation

We now recommend using the dedicated nomad-distro-dev to facilitate NOMAD plugin development. To add nomad-north-jupyter to your local development environment, add it as a dependency in pyproject.toml. NOMAD will automatically discover NORTHToolEntryPoint instances (e.g., north_tool_entry_point) defined in nomad-north-jupyter. To replace or modify the NORTH tool configuration (for instance, changing the image or image version), you can adjust the entry point configuration in your nomad.yaml file.

Reconfigure existing NORTH tool entry point

The image shipped with nomad-north-jupyter is a generic Jupyter container that may be too simplistic for your use case. In that case, you can change to a different image to use in the container. A NORTHTool entry point can be reconfigured via the nomad.yaml configuration file of your NOMAD Oasis instance (you can learn more about this reconfiguration and the merge strategy in the NOMAD docs). Hence, if you have the nomad-north-jupyter plugin installed, you can do so by adjusting the entry point configuration in your nomad.yaml file:

plugins:
  entry_points:
    options:
      nomad_north_jupyter.north_tools.jupyter_north_tool:north_tool_entry_point:
        north_tool:
          image: ghcr.io/fairmat-nfdi/nomad-north-jupyter:<another_tag>
          display_name: "renamed jupyter tool"

Adding nomad-north-jupyter image in a NOMAD Oasis (not recommended)

[!WARNING] We strongly recommend integrating nomad-north-jupyter into NOMAD as a plugin. The following approach is only recommended if you have an existing NOMAD Oasis instance that you do not want to rebuild, but still want to add the Jupyter image to the running NORTH service.

If you cannot use the plugin approach, you can add the nomad-north-jupyter image to your NORTH service by editing the nomad.yaml file in a nomad-distro-template instance. Define the corresponding NORTH tool in nomad.yaml as shown below (see the full NORTH tool configuration in the NOMAD documentation):

# Not a recommended way
north:
  jupyterhub_crypt_key: "978bfb2e13a8448a253c629d8dd84ffsd587f30e635b753153960930cad9d36d"
  tools:
    options:
      jupyter:
        image: ghcr.io/fairmat-nfdi/nomad-north-jupyter:latest
        description: "### **Jupyter Notebook**: The Classic Notebook Interface"
        file_extensions:
          - ipynb
        icon: jupyter_logo.svg
        image_pull_policy: Always
        maintainer:
          - email: fairmat@physik.hu-berlin.de
            name: NOMAD Authors
        mount_path: /home/jovyan
        path_prefix: lab/tree
        privileged: false
        short_description: ""
        with_path: true

Documentation

For comprehensive documentation on creating and managing NORTH tools, including detailed information on topics such as:

  • Entry point configuration and NORTHTool API
  • Docker image structure and best practices
  • Dependency management

See the NOMAD NORTH Tools documentation.

[!NOTE] This NOMAD plugin was generated with Cookiecutter along with @nomad's cookiecutter-nomad-plugin template.

Main contributors

Name E-mail
NOMAD Authors fairmat@physik.hu-berlin.de

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nomad_north_jupyter-0.2.1.tar.gz (108.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nomad_north_jupyter-0.2.1-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file nomad_north_jupyter-0.2.1.tar.gz.

File metadata

  • Download URL: nomad_north_jupyter-0.2.1.tar.gz
  • Upload date:
  • Size: 108.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nomad_north_jupyter-0.2.1.tar.gz
Algorithm Hash digest
SHA256 0b451614725af6024e39a7e0a633104b8a5c1f88cf04a88b6b4cec4bee6bd428
MD5 3d6a35697fae0b2319256fd7d8608fef
BLAKE2b-256 17a14ba909dca4fab557641f322d8927e2220fb2806638180688ca7d2bb860f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for nomad_north_jupyter-0.2.1.tar.gz:

Publisher: publish.yml on FAIRmat-NFDI/nomad-north-jupyter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nomad_north_jupyter-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for nomad_north_jupyter-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8d7afaa16ce3e1750b9d9a0d48f9ec14722faf58653a9b063dbf0ecde257372b
MD5 9df2743eba0378521570724eb694a78b
BLAKE2b-256 b2d73912e69f2e9d6bb77b030411151e920e333a1894b81e02a69b2193f3230a

See more details on using hashes here.

Provenance

The following attestation bundles were made for nomad_north_jupyter-0.2.1-py3-none-any.whl:

Publisher: publish.yml on FAIRmat-NFDI/nomad-north-jupyter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page