Software dependencies
A software dependency is a Python package VAFT imports to implement part of VAFT itself. External
scientific solvers such as EFIT or CHEASE are a different relation – independent implementations
VAFT integrates through vaft.code – and are described on the
external scientific codes page.
Optional is not experimental, and required is not more important. A capability is optional
when the core works without it; a mandatory storage library is less scientifically specialized
than an optional physics backend. Version constraints have one owner, pyproject.toml, and are
shown here exactly as it states them. Which modules import which package is shown, from the
source, by the dependency explorer.
Required core
pip install vaft installs every package below.
Scientific data representation
The OMAS/IMAS data model every VAFT layer reads and writes.
| Package | Requirement | Used for |
|---|---|---|
omas |
omas==0.95.2 |
OMAS data structures (ODS) and their IMAS mapping |
xmltodict |
xmltodict>=0.13.0 |
lets omas serialize equilibrium.code.parameters (EFIT namelists) |
imas_core |
imas_core>=5.6.0,<6 |
the IMAS access layer imas_python runs on |
imas_python |
imas_python>=2.1.0,<3 |
native IMAS IDS objects |
Numerical computing
Arrays, solvers, statistics and uncertainty propagation.
| Package | Requirement | Used for |
|---|---|---|
numpy |
numpy>=2.0.0,<3 |
arrays everywhere |
scipy |
scipy>=1.13.0,<2 |
integration, interpolation, optimization and linear algebra |
statsmodels |
statsmodels>=0.14.6,<0.16 |
regression for confinement scalings and statistical analysis |
uncertainties |
uncertainties>=3.2.2,<4 |
uncertainty propagation for Thomson scattering and plotted errors |
Tabular and labelled data
Tables, labelled arrays and spreadsheet exchange.
| Package | Requirement | Used for |
|---|---|---|
openpyxl |
openpyxl |
Excel shot logs and summary sheets |
pandas |
pandas>=2.2.2 |
tables of shots, signals and summaries |
xarray |
xarray>=2024.4.0 |
labelled arrays for plotting and export |
Image processing
Camera frames and contour extraction.
| Package | Requirement | Used for |
|---|---|---|
opencv-python |
opencv-python>=4.9.0.80 |
visible-camera frames and geometry |
scikit-image |
scikit-image |
contours of flux surfaces and images |
Storage and remote access
HDF5 files, the HSDS service and the encrypted raw-data access.
| Package | Requirement | Used for |
|---|---|---|
cryptography |
cryptography>=42.0.0 |
decrypting the stored raw-database credentials |
h5py |
h5py>=3.16,<4 |
HDF5 files |
h5pyd |
h5pyd==0.24.0 |
the HSDS service, pinned because newer releases empty attributes on it |
Database access
The VEST shot database.
| Package | Requirement | Used for |
|---|---|---|
mysql-connector-python |
mysql-connector-python>=8.4.0 |
the VEST raw shot database |
Configuration and code file formats
YAML configuration and the Fortran namelists of EFIT, EFUND and g-/k-files.
| Package | Requirement | Used for |
|---|---|---|
f90nml |
f90nml>=1.4.4 |
Fortran namelists of EFIT/EFUND inputs and g-/k-files |
PyYAML |
PyYAML>=6.0.2,<7 |
machine descriptions, configurations and the generated documentation catalogs |
Visualization
Static and interactive figures.
| Package | Requirement | Used for |
|---|---|---|
matplotlib |
matplotlib>=3.7.3,<4 |
every static figure |
plotly |
plotly>=5.24,<7 |
interactive panels and the GUI |
seaborn |
seaborn |
confinement-scaling regression and residual plots |
Workflow execution
The production Snakemake pipelines.
| Package | Requirement | Used for |
|---|---|---|
snakemake |
snakemake |
the production pipelines’ scheduler |
tqdm |
tqdm>=4.67.3 |
progress bar in verbose OMAS/IMAS loading (load_omas_imas), reached through omas’s star import |
wexpect |
wexpect; sys_platform == 'win32' |
Windows-only; declared but imported by no VAFT module today |
Interactive notebooks and GUI
The Jupyter kernel and widgets the notebooks use, and the browser GUI.
| Package | Requirement | Used for |
|---|---|---|
ipykernel |
ipykernel>=6.29.4 |
the notebooks’ kernel |
ipython |
ipython |
inline display in notebooks |
ipywidgets |
ipywidgets |
notebook widgets |
panel |
panel>=1.9,<2 |
the browser GUI (vaft gui), served locally or over SSH port forwarding |
Optional capabilities and development
Each extra adds a capability the core does not need. dev and architecture are for working on
VAFT itself.
| Extra | Install | Capability | What it enables | Requirements |
|---|---|---|---|---|
sklearn |
pip install "vaft[sklearn]" |
Machine learning and surrogates | Gaussian-process profile fitting with scikit-learn | scikit-learn |
surrogate |
pip install "vaft[surrogate]" |
Machine learning and surrogates | TGLF neural-network surrogate inference | onnxruntime |
tokamaker |
pip install "vaft[tokamaker]" |
In-process solver backends | TokaMaker free-boundary equilibria, in process (OpenFUSIONToolkit) | openfusiontoolkit |
ml |
pip install "vaft[ml]" |
Machine learning and surrogates | the torch and scikit-learn backends of vaft.process.ml and ONNX export | torch, onnx, onnxruntime, scikit-learn, skl2onnx |
tracking |
pip install "vaft[tracking]" |
Machine learning and surrogates | explicit local experiment indexing; JSON and model identity stay canonical | mlflow>=3,<4 |
vtk |
pip install "vaft[vtk]" |
3-D and video output | 3-D scenes as PyVista multiblocks and ParaView files | pyvista>=0.44 |
jupyter3d |
pip install "vaft[jupyter3d]" |
3-D and video output | interactive 3-D scenes in Jupyter | k3d>=2.16 |
video |
pip install "vaft[video]" |
3-D and video output | encoding animations to .mp4/.webm | av>=13 |
accel |
pip install "vaft[accel]" |
Acceleration | nothing yet: no VAFT module imports numba | numba |
optimize |
pip install "vaft[optimize]" |
Adaptive scientific optimization | nothing yet: reserved for domain-owned adaptive optimization (#1875) | optuna>=5,<6 |
mcp |
pip install "vaft[mcp]" |
Agent interfaces | the local, read-only MCP server for agent clients | mcp>=1.26,<2 |
gui |
pip install "vaft[gui]" |
Agent interfaces | nothing: Panel is core now; the empty extra keeps vaft[gui] working | |
architecture |
pip install "vaft[architecture]" |
Architecture and documentation tooling | the import graph behind the dependency explorer | grimp>=3.17,<4 |
dev |
pip install -e ".[dev]" |
Testing, quality and notebooks | running the test suite and contributing | pytest, onnxruntime, scikit-learn, av>=13, pytest-xdist, pre-commit, black, flake8, ruff, ipykernel>=7.2.0, mcp>=1.26,<2, nbclient>=0.10, nbformat>=5.10, grimp>=3.17,<4 |
Check what the current environment can actually use with python install/check_vaft_environment.py.