Skip to content
ukaeaPublic

About

Open Source Interactive Visual Annotation of Tokamak Diagnostic Data

Topics

Resources

Contributing

Stars

8 stars

Watchers

4 watching

Forks

Latest commit

 

History

3,248 Commits

Folders and files

Repository files navigation

TokTagger

TokTagger Logo

An open source, interactive annotation platform for Tokamak diagnostic data.

Workflow: CI Workflow: Dependabot License: MIT Linting: ruff Testing: pytest

What It Does

TokTagger is a web-based platform for curating labeled datasets from tokamak diagnostics. It lets users browse shots, inspect signals and images, apply consistent labels, and manage annotations in one place. The Python API and React UI support local or team workflows, making it straightforward to create datasets for downstream analysis and machine-learning models.

It currently supports the following features:

  • Data Browsing: Explore tokamak shots, signals, and images through an intuitive interface.
  • Annotation Tools: Apply consistent labels to signals and images using a customizable tagging system.
  • ML Models: Train and infer from ML models within the UI.
  • Dataset Management: Organize and manage annotations in a central repository.
  • Multi-User Support: Role-based access control with per-project membership, suitable for team annotation workflows.
  • Extensible API: A Python API for integrating with existing workflows and tools.

Installation

To run the application locally:

Install via pip

To install the package via pip (or similarly via Poetry or uv package managers):

python -m venv .venv
source .venv/bin/activate

To install the package for labelling only (without ML Model functionality):

pip install toktagger

Or to include the ML models:

pip install toktagger[models]

If you intend to add custom data loaders or models to your TokTagger instance, this is the recommended route.

Install as a uv tool

Alternatively, it can be installed as a tool using uv. To install the package for labelling only (without ML Model functionality):

uv tool install --python 3.12.6 toktagger

Or to include the ML models:

uv tool install --python 3.12.6 toktagger[models]

Quick Start

To start a local single-user instance:

toktagger

This starts a single-process instance at http://localhost:8002. On the first start, TokTagger creates a local identity provider and prints the user name and the password of the first administrator to the terminal. See User Management.

Options

Flag Default Description
--workers N 1 Number of uvicorn worker processes
--host HOST localhost Host to bind to
--port PORT 8002 Port to listen on
--no-browser off Suppress automatic browser launch
--reload off Auto-reload on code changes (single-worker dev mode only)

Development Mode

For local development with automatic reload on code changes, use a single worker:

toktagger --workers 1 --reload

Multi-User / Team Deployment

For server deployments, run with multiple workers and disable the automatic browser launch. Multiple workers operate on Linux, macOS and Windows:

toktagger --workers 4 --no-browser

The default host is localhost. Only the local machine can connect to it. To let other users on the network connect, add --host 0.0.0.0.

Warning

--host 0.0.0.0 makes TokTagger available to all devices that can reach the machine on port 8002. The traffic is not encrypted. Use it only on a trusted network. For other deployments, use the docker-compose.yml stack, which puts TokTagger behind a TLS proxy.

Or directly via uvicorn (use python -m uvicorn to make sure that the correct virtual environment is used):

python -m uvicorn toktagger.api.asgi:app --workers 4 --host 0.0.0.0 --port 8002

docker-compose.yml is the production stack. It runs TokTagger with Keycloak, MongoDB and a Caddy proxy that handles TLS. See the Deployment guide.

See the User Management guide for creating accounts, assigning roles, and managing project membership.

About

Open Source Interactive Visual Annotation of Tokamak Diagnostic Data

Topics

Resources

Contributing

Stars

8 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages