Lightfall - control system for the ALS facility
Project description
Lightfall
A modern, unified control system for synchrotron lightsource facilities that provides facility-wide consistency with beamline-specific customization.
Overview
Lightfall is designed for the Advanced Light Source (ALS) facility, providing:
- Unified Interface: Consistent look-and-feel across beamlines with skinnable themes
- API-First Architecture: Modular, extensible design enabling automation and integration
- LLM/AI Integration: Claude-powered chatbot for natural language control and assistance
- FAIR-Compliant Data Management: Integration with Tiled for data cataloging and access
- Secure Remote Operations: Full remote operation capability with fine-grained access control
Features
User Interface
- Progressive disclosure: user panels with expert panels behind authorization
- Scripting panel with Jupyter-lab style interface
- LLM panel for controlling panels via natural language
- GUI Builder for drag-and-drop interface creation
- Persistent user preferences saved across sessions
Device Management
- Centralized device catalog with lifecycle tracking
- Real-time monitoring via EPICS Channel Access
- Version-controlled device configurations
- Rich high-level controls integrated into workflows
Data Acquisition
- Bluesky-based acquisition engine
- Flexible signal/stream selection with real-time visualization
- Interactive, pausable, restartable acquisition
- Automatic data persistence to Tiled catalog
Data Browser
- Browse and search data stored in Tiled server
- Filter by date range, plan type, exit status
- Pagination for large datasets
- Click/double-click signals for integration with analysis tools
Installation
pip install lightfall
BCS backend (ALS-internal)
The BCS device backend requires bcsophyd-zmq, which is distributed from ALS
GitLab rather than PyPI:
pip install "bcsophyd @ git+https://git.als.lbl.gov/bcs/bluesky/bcsophyd-zmq"
Without it, Lightfall runs normally; only the BCS backend is unavailable.
Development Installation
# Clone the repository
git clone https://github.com/als-controls/lightfall.git
cd lightfall
# Create and activate virtual environment
python -m venv .venv
.venv\Scripts\activate # Windows
# or
source .venv/bin/activate # Unix
# Install in development mode with dev dependencies
pip install -e ".[dev]"
Running the Application
lightfall
Configuration
Lightfall uses a layered configuration system:
- System defaults - Built-in defaults
- Site configuration - Facility-wide settings
- User preferences - Personal customizations
Configuration files are stored in:
- Windows:
%APPDATA%\lightfall\ - Linux/Mac:
~/.config/lightfall/
Architecture
Lightfall is built on:
- PySide6 - Qt for Python GUI framework
- Bluesky - Data acquisition framework
- Ophyd - Device abstraction layer
- Tiled - Data catalog and access
- EPICS - Control system communication
Plugin System
Lightfall supports plugins for:
- Panels - Custom UI panels
- Settings - Preference pages
- Status Bar - Status indicators
- Engines - Acquisition backends
- Plans - Scan procedures
Development
Running Tests
pytest
Code Quality
# Linting
ruff check src tests
# Type checking
mypy src
Project Structure
ncs/
├── src/ncs/
│ ├── acquire/ # Data acquisition engine
│ ├── auth/ # Authentication & authorization
│ ├── config/ # Configuration management
│ ├── core/ # Core application classes
│ ├── devices/ # Device catalog & backends
│ ├── plugins/ # Plugin system
│ ├── services/ # Application services (Tiled, etc.)
│ ├── ui/ # User interface
│ │ ├── panels/ # Panel implementations
│ │ ├── widgets/ # Reusable widgets
│ │ ├── preferences/ # Settings UI
│ │ └── theme/ # Theming system
│ └── utils/ # Utilities
└── tests/ # Test suite
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lightfall-0.1.1.tar.gz.
File metadata
- Download URL: lightfall-0.1.1.tar.gz
- Upload date:
- Size: 3.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a19c5cc03838f1a10ccda8bd937bb02f39b65290cff6def0446ec20bf6f33fa9
|
|
| MD5 |
4e5457b9ebacd06510496b43c5557c12
|
|
| BLAKE2b-256 |
f8d01a070326945438fd95eda766f36e67a1e34c6dca1002e5b672186a0b07a3
|
Provenance
The following attestation bundles were made for lightfall-0.1.1.tar.gz:
Publisher:
release.yml on als-controls/lightfall
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lightfall-0.1.1.tar.gz -
Subject digest:
a19c5cc03838f1a10ccda8bd937bb02f39b65290cff6def0446ec20bf6f33fa9 - Sigstore transparency entry: 1722808148
- Sigstore integration time:
-
Permalink:
als-controls/lightfall@bb3d699ac9745159f1a98c6a1d85ae53e737ac60 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/als-controls
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bb3d699ac9745159f1a98c6a1d85ae53e737ac60 -
Trigger Event:
push
-
Statement type:
File details
Details for the file lightfall-0.1.1-py3-none-any.whl.
File metadata
- Download URL: lightfall-0.1.1-py3-none-any.whl
- Upload date:
- Size: 3.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5b75d56c5dcc0bc5b4c73a9230563054a12cdaf1f5c671ecb94e113ffa2b937
|
|
| MD5 |
ced35cc2767fd4e568134ee83e6f4344
|
|
| BLAKE2b-256 |
c8e7193132f4668926430ce0df926f6b65a3faeb521557b2cfb23cedfa7d6273
|
Provenance
The following attestation bundles were made for lightfall-0.1.1-py3-none-any.whl:
Publisher:
release.yml on als-controls/lightfall
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lightfall-0.1.1-py3-none-any.whl -
Subject digest:
f5b75d56c5dcc0bc5b4c73a9230563054a12cdaf1f5c671ecb94e113ffa2b937 - Sigstore transparency entry: 1722808209
- Sigstore integration time:
-
Permalink:
als-controls/lightfall@bb3d699ac9745159f1a98c6a1d85ae53e737ac60 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/als-controls
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bb3d699ac9745159f1a98c6a1d85ae53e737ac60 -
Trigger Event:
push
-
Statement type: