Skip to main content

A tool to launch JupyterLab with a modified version of a notebook, based on user-specified parameters.

Project description

np-notebooks-launcher

A GUI tool for launching JupyterLab with a filtered, pre-configured version of a Jupyter notebook. Designed for experiment workflows that use the same notebook across different experiment types (e.g. ephys, hab, training).

PyPI Python version

Coverage CI/CD GitHub issues

What it does

  1. Reads the first cell of a notebook to find _-prefixed variables annotated as Literal, int, float or bool types — these are the configurable parameters:

    alt text

  2. Shows a GUI with a dropdown for each variable, pre-populated with the options and default from the notebook:

    Preview of launcher GUI

  3. Generates a filtered copy of the notebook with the selected values injected and irrelevant cells removed.

  4. Launches JupyterLab with the filtered copy, with the first cell modified:

    alt text

The launcher also has a Reset & Update button which is hard-coded to reset to the latest commit on github.com/alleninstitute/np_notebooks:main and runs uv sync on the repository.

Usage

uvx np-notebook-launcher path/to/notebook.ipynb

How to annotate a notebook

First cell — configurable variables

The first cell of the notebook is special. Any _-prefixed variable with a Literal type annotation will appear as a dropdown in the launcher GUI:

# variables in this cell with underscore-prefix can be injected by launcher:
_experiment: Literal["pretest", "ephys", "opto", "hab", "training"] = "pretest"
  • The variable name must start with _
  • The type annotation must be Literal[opt1, opt2, ...]
  • A default value must be assigned (= "pretest")
  • Supported value types: str, bool, int, float

When launched, the first cell is replaced with a markdown summary of the injected values.

Cell directives — conditional visibility

Add a directive comment as the first line of any cell to control whether it appears in the filtered notebook.

Code cells:

# /// show-if: _experiment=ephys

Markdown cells:

<!-- /// show-if: _experiment=ephys -->

Directives

Directive Behavior
show-if: <condition> Cell is included only when condition is true
hide-if: <condition> Cell is hidden only when condition is true

Cells with no directive are always included.

Condition syntax

Conditions use and, or, not, and names matching the possible option values of the variable. The namespace prefix (e.g. _experiment=) is informational — what follows = is the boolean expression.

# /// show-if: _experiment=ephys
# /// show-if: _experiment=(ephys or opto) and not pretest
# /// hide-if: _experiment=training

For a string variable like _experiment = "ephys", the condition context is {"ephys": True, "pretest": False, "hab": False, ...} — each option is a key and only the selected one is True. Unknown names evaluate to False.

Project structure

src/np_notebooks_launcher/__init__.py   # all logic: parsing, filtering, GUI, CLI
notebooks/dynamic_routing.ipynb         # example annotated notebook
tests/test_launcher.py                  # unit + integration tests
pyproject.toml

Development

Install with uv:

uv sync

Run tests:

uv run task test

The entry points np-notebooks-launcher and launch both map to np_notebooks_launcher:main.

Pushing to main triggers CI/CD with publishing to PyPI.

Key functions

Function Description
parse_first_cell_variables(cell) Extracts annotated _vars from cell 0
parse_cell_directive(cell) Reads show-if/hide-if from a cell's first line
cell_is_visible(cell, ctx) Evaluates directive against a context dict
filter_notebook(nb, ctx, variable_selections) Returns a filtered deep copy of the notebook
generate_filtered_notebook(source, ctx, ...) Filters and writes the notebook to disk
run_launcher(notebook_path) Opens the GUI

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

np_notebooks_launcher-0.1.8.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

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

np_notebooks_launcher-0.1.8-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file np_notebooks_launcher-0.1.8.tar.gz.

File metadata

  • Download URL: np_notebooks_launcher-0.1.8.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for np_notebooks_launcher-0.1.8.tar.gz
Algorithm Hash digest
SHA256 aaa86ecb472b1d567f62295595db0c62d39c0bc1d9240f8e7a0d7d51c2930bdd
MD5 c003614f8decf976a54f3c8f51018170
BLAKE2b-256 6e376a9ad6c13cf97b21c810dcd99bf8d334949913e3c7f8fb074d3168b4f5dc

See more details on using hashes here.

File details

Details for the file np_notebooks_launcher-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: np_notebooks_launcher-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for np_notebooks_launcher-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 7bc1cd9c8fba297e82b6a2b4e3cda33e6602c759b2d470f886387ade6224e3ca
MD5 f726a4102d74bcde349b50dbdf6ce50c
BLAKE2b-256 cde104f86ecc8e453975c9ca582b51b35470cfb8b4465a2a843cc1138649ad54

See more details on using hashes here.

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