JupyterLab

equser ships with bundled Jupyter notebooks and interactive widgets for exploring EQ Wave power quality data. Install the [jupyter] extra to get the full environment:

pip install equser[jupyter]

This installs JupyterLab, DuckDB, ipywidgets, and all analysis dependencies.

Bundled notebooks

equser bundles a top-level welcome.ipynb entry point plus reference notebooks organized into two categories.

welcome.ipynb is the starting point (the EQ Lab entry point on a gateway). It checks the environment, shows where CPOW/PMon data lives, runs a short load_cpow_scaled + GatewayClient example, and links the other notebooks.

Tutorials

Step-by-step introductions to each data access method:

NotebookDescription
01-parquet-filesLoad and plot PMon and CPOW data directly from Parquet files
02-local-duckdbQuery Parquet files locally with DuckDB SQL
03-backend-apiQuery historical data through the EQ Coherence REST API
04-live-streamingReal-time waveform and spectral streaming via WebSocket

Analysis templates

Ready-to-use analysis workflows:

NotebookDescription
harmonic-analysisFFT-based harmonic spectrum, THD calculation, and spectrograms
power-trendsLong-term voltage, frequency, and power factor trends across multiple files
delta-analysisEquipment-specific configuration (wye vs. delta), interactive file selection
ai-event-analysisAI-assisted power-quality event analysis via the RAG API (needs demo access)

Listing and copying notebooks

Notebooks are bundled inside the installed package. Use the Python API or CLI to copy them to a working directory where you can edit and run them.

CLI

# List all bundled notebooks
equser notebooks list

# Copy all notebooks to a working directory
equser notebooks copy --dest ./my-notebooks

# Copy only tutorials
equser notebooks copy --dest ./my-notebooks --category tutorials

Python API

from equser.notebooks import list_notebooks, copy_notebooks, get_notebooks_dir

# See what is available
for nb in list_notebooks():
    print(nb)

# Where the notebooks live inside the installed package
print(get_notebooks_dir())

# Copy to a working directory
copied = copy_notebooks('./my-notebooks')
print(f"Copied {len(copied)} notebooks")

# Copy only analysis templates
copy_notebooks('./my-notebooks', category='analysis')

File selector widget

The equser.widgets module provides an interactive file selector for browsing Parquet files inside notebooks. It displays a searchable list with file metadata (size, timestamps parsed from filenames).

from equser.widgets import create_file_selector

# Create a selector for a directory of CPOW files
selector = create_file_selector('/path/to/cpow/')
display(selector)

# After selecting a file interactively:
selected = selector.get_selected()

The widget includes:

  • Text search box for filtering by filename
  • Scrollable file list
  • Detail pane showing file size, path, and start time (parsed from the YYYYMMDD_HHMM filename convention)

Launching JupyterLab

The quickest path is equser notebooks launch, which copies the notebooks to a directory and opens JupyterLab there in one step:

equser notebooks launch                       # copies to ./equser-notebooks
equser notebooks launch --dest ./eq-notebooks

Or do it manually:

equser notebooks copy --dest ./eq-notebooks
cd eq-notebooks
jupyter lab

From there, open welcome.ipynb first, then follow the tutorials in numbered order.



© 2026 EQ Systems Inc.GitHubMIT License
Last updated: July 2, 2026