Constellaration
Code for analyzing and evaluating stellarator plasma boundaries
Install / Use
/learn @proximafusion/ConstellarationREADME
ConStellaration: A dataset of QI-like stellarator plasma boundaries and optimization benchmarks
ConStellaration is a dataset of diverse QI-like stellarator plasma boundary shapes and optimization benchmakrs, paired with their ideal-MHD equilibria and performance metrics. The dataset is available on Hugging Face. The repository contains a suite of tools and notebooks for exploring the dataset, including a forward model for plasma simulation, scoring functions for optimization evaluation and data-driven generative modeling.
Installation
The following instructions have been tested on Ubuntu 22.04 and Ubuntu 24.04. Other platforms may require additional steps and have not been validated.
The system dependency libnetcdf-dev is required for running the forward model. On Ubuntu, please ensure it is installed before proceeding, by running:
sudo apt-get update
sudo apt-get install build-essential cmake libnetcdf-dev
Install from PyPI
The package can be installed directly from PyPI:
pip install constellaration
Install by cloning the repository
- Clone the repository:
git clone https://github.com/proximafusion/constellaration.git
cd constellaration
-
Install the required system dependencies
- On Ubuntu:
sudo apt-get update && sudo apt-get install -y libnetcdf-dev - On MAC-OS:
brew install netcdf
- On Ubuntu:
-
Install the required Python dependencies:
pip install .
Running with Docker
If you prefer not to install system dependencies, you can use the provided Dockerfile to build a Docker image and run your scripts in a container.
- Build the Docker image:
docker build -t constellaration .
- Run your scripts by mounting a volume to the container:
docker run --rm -v $(pwd):/workspace constellaration python relative/path/to/your_script.py
Replace your_script.py with the path to your script. The $(pwd) command mounts the current directory to /workspace inside the container.
Explanation Notebook
You can explore the functionalities of the repo through the Boundary Explorer Notebook.
Contributing
To be able to run unit tests, please install the test and lint environment:
pip install -e ".[test,lint]"
Note: The development and test environment currently supports Python 3.10 only. Other Python versions are not guaranteed to work.
Linting
We use pre-commit to automatically lint and format code before each commit. Linting is static code analysis that catches style issues and potential errors. If any hook fails, the commit will be blocked until you fix the reported issues and re-stage your changes.
Install the hook (once per clone):
pip install pre-commit
pre-commit install
You can run all pre-commit hooks against all files like this:
pre-commit run --all-files
Unit tests
To locally run all unit tests (while in the top directory of the repo)
pytest .
Optimization baseline
The optimization baseline can be executed by running the individual files within the folder optimization_examples.
Citation
@inproceedings{
cadena2025constellaration,
title={ConStellaration: A dataset of {QI}-like stellarator plasma boundaries and optimization benchmarks},
author={Santiago A Cadena and Andrea Merlo and Emanuel Laude and Alexander Bauer and Atul Agrawal and Maria Pascu and Marija Savtchouk and Lukas Bonauer and Enrico Guiraud and Stuart R. Hudson and Markus Kaiser},
booktitle={The Thirty-ninth Annual Conference on Neural Information Processing Systems Datasets and Benchmarks Track},
year={2025},
url={https://openreview.net/forum?id=NQSbGKlCpx}
}
Related Skills
node-connect
351.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
