clabe
██████╗██╗ █████╗ ██████╗ ███████╗ ██╔════╝██║ ██╔══██╗██╔══██╗██╔════╝ ██║ ██║ ███████║██████╔╝█████╗ ██║ ██║ ██╔══██║██╔══██╗██╔══╝ ╚██████╗███████╗██║ ██║██████╔╝███████╗ ╚═════╝╚══════╝╚═╝ ╚═╝╚═════╝ ╚══════╝ Command-line-interface Launcher for AIND Behavior Experiments
CLABE is a Python toolkit for building, running, and operating behavioral-experiment workflows. It provides a launcher for experiment scripts alongside composable utilities for user interaction, external applications, configuration and storage, resource checks, data transfer, remote execution, logging, and repository-state capture.
The library is designed to be useful both in an interactive experiment session and in scripted or remote workflows.
Install
For a project managed with uv:
uv add aind-clabe
Or install with pip:
pip install aind-clabe
To work on this repository locally:
git clone https://github.com/AllenNeuralDynamics/clabe.git
cd clabe
uv sync
What CLABE provides
- Experiment launcher — discover and run functions marked with
@experiment, with console, TUI, and web-served interaction options. - Frontends and forms — collect typed input from Pydantic models, prompt for paths, confirmations, selections, and read-only reviews.
- Applications and executors — describe external commands once and run them locally, asynchronously, detached, or through XML-RPC.
- Stores and services — compose local, in-memory, Ficus, and optional Dataverse-backed configuration and data services.
- Operational helpers — resource constraints, data transfer, structured logging, OpenTelemetry support, and session construction.
- Repository state — capture a JSON snapshot of a repository and its submodules for dataset or experiment metadata.
Quick start
Define an experiment in a Python module:
from clabe.launcher import Launcher, experiment
@experiment()
async def my_experiment(launcher: Launcher) -> None:
launcher.frontend.notify("Experiment started")
# Configure the session, check resources, and run applications here.
Run the module with the CLABE CLI:
uv run clabe run path/to/my_experiment.py
See examples/behavior_launcher.py for a fuller example that combines sessions, forms, stores, resource checks, applications, and telemetry.
Command line
Show available commands and their options:
uv run clabe --help
Run an experiment interactively:
uv run clabe run path/to/my_experiment.py
Serve an experiment's text UI locally:
uv run clabe serve path/to/my_experiment.py --port 8089
Capture Git state for a repository and all declared submodules:
uv run clabe repository-state path/to/repository > repository-state.json
Each repository entry includes its URL, commit SHA, exact and nearest tags, branch, dirty state, name, cwd-relative path, and nested submodules. The launcher writes this snapshot alongside its temporary output; when logs are copied, it is saved at Behavior/Logs/.launcher/repository-state.json in the session directory.
Optional integrations
Some integrations are optional so a basic installation remains lightweight:
uv add "aind-clabe[aind-services]" # AIND services, data schema, and transfer tooling
uv add "aind-clabe[web]" # Web-served Textual UI
uv add "aind-clabe[otel]" # OpenTelemetry exporters and YAML support
Documentation and development
- Browse the documentation for API references and guides.
- Run tests with
uv run pytest. - Check style with
uv run ruff check. - Build documentation locally with
uv run mkdocs serveafter installing thedocsdependency group.
Contributions are welcome. Please include focused tests for behavior changes and keep the package's cross-platform support in mind.
Release files for aind-clabe 0.13.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aind_clabe-0.13.3.tar.gz | 132.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aind_clabe-0.13.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 298.7 kB
Release files / aind_clabe-0.13.3.tar.gz
| Download URL | aind_clabe-0.13.3.tar.gz |
|---|---|
| Size | 132.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
466f5f5b6f4480d6bc7a96d8efa5da63049d3c67ba3d67ff2ff1e6750f7c9342
|
|
BLAKE2b-256 checksum How to use checksums |
1d42258dec1e101ba341b4bca1205022027f936487d5c9164c1797bba4b69370
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","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}
|
Release files / aind_clabe-0.13.3-py3-none-any.whl
| Download URL | aind_clabe-0.13.3-py3-none-any.whl |
|---|---|
| Size | 166.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
59d9c1445b7890567c3b9083536d01e2b70147d847c21d74e3792544bcaf4acd
|
|
BLAKE2b-256 checksum How to use checksums |
b1c21d7f77a32c55b80a2feea2122d0da16aa51f793f53987ce45f849b4a131d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","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}
|