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.

Which software capabilities are core and which are optional

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.

results matching ""

    No results matching ""