VAFT is an open-source Python library that functions both as a dedicated data platform for the VEST (Versatile Experiment Spherical Torus) tokamak at Seoul National University and as a machine- and code-generic data analysis framework built upon the IMAS data model, providing an IMAS-compliant data interface built on the OMAS interface library and an HSDS remote HDF5 database.
Hong-Sik Yun, Sunjae Lee et al 2025 Plasma Phys. Control. Fusion 67 115021 (doi:10.1088/1361-6587/ae1b6a)
| Capability | Description |
|---|---|
| Remote Database Access | Load per-shot OMAS ODS data from the VEST HSDS server with a single function call |
| Machine Mapping | Convert native VEST diagnostic signals into standardized IMAS IDS (magnetics, Thomson scattering, barometry, PF active, TF, spectrometer UV, charge exchange, etc.) |
| Equilibrium & Stability | Interfaces for EFIT, CHEASE, GPEC(DCON/RDCON) — read/write code I/O in IDS format |
| Physics Formulas | Equilibrium quantities (poloidal/toroidal flux, safety factor), stability metrics (beta limits, ballooning), confinement scaling laws (ITER89P, H98y2), Green's functions |
| Signal Processing | Smoothing, baseline subtraction, noise reduction, electromagnetic field calculations, eddy current modeling |
| Profile Fitting | Map kinetic diagnostics (Thomson scattering, CES) onto equilibrium flux surfaces; fit with GP, polynomial, or exponential models |
| Visualization | Time traces, 1D/2D profiles, flux surface contours, top-view, and operational-space maps |
| IMAS Interoperability | Convert between OMAS ODS and IMAS-Python (AL5) data structures; export to NetCDF |
VEST Data Analysis Platform
├── Automated Pipeline (Snakemake) ── experiment → postprocessing → simulation
├── IMAS Database (OMAS-HSDS) ── per-shot HDF5 storage via REST API
└── VAFT Library (this repo) ── data access, mapping, processing, visualization
Experimental:
dataset_description · magnetics · tf · pf_active · barometry · spectrometer_uv · thomson_scattering · charge_exchange
Modelling:
wall · em_coupling · pf_passive · equilibrium (EFIT/CHEASE) · core_profiles · mhd_linear (DCON/RDCON)
Install from source (recommended):
git clone https://github.com/VEST-Tokamak/vaft.git
cd vaft
python -m pip install -e .aurorafusion (the Open-ADAS interface used for radiative-power calculations) is a
required dependency and is installed by the step above.
h5pyd is the only package left out of the dependency list — it has no extra, and must
be installed with --no-deps to avoid conflicting pins:
# HSDS database client
python -m pip install --no-deps h5pyd==0.20.0
# Development tooling
python -m pip install -e ".[dev]"Install from PyPI (obsolete):
pip install vaftSupported Python: 3.10 -- 3.13
Numerical stack default: NumPy 2.x (numpy>=2,<3)
If you will use the remote VEST HSDS database, configure your HSDS credentials:
hsconfigureEnter the following when prompted:
| Field | Value |
|---|---|
| Server endpoint | http://147.46.36.244:5101 |
| Username | contact peppertonic18@snu.ac.kr |
| Password | contact peppertonic18@snu.ac.kr |
A connection ok message confirms you are connected. See the detailed guide for more information.
import vaft
# Load a shot from the remote database
ods = vaft.database.load(39915)
# Access IMAS-structured data directly
time = ods['magnetics.time']
ip = ods['magnetics.ip.0.data']# Map Thomson scattering data onto equilibrium flux coordinates, then fit profiles
mapped_rho = vaft.process.equilibrium_mapping_thomson_scattering(ods, geq)
vaft.process.profile_fitting_thomson_scattering(
ods, time_ms, mapped_rho, fitting_function_te='gp', fitting_function_ne='gp'
)# Convert OMAS ODS ↔ IMAS-Python data entry
from vaft.imas import omas_imas
omas_imas.save_omas_imas(ods, pulse=39915, run=0)vaft/
├── database/ # Remote database access (HSDS, raw SQL)
├── machine_mapping/ # Native-to-IDS diagnostic conversion (70+ functions)
├── formula/ # Physics formulas (equilibrium, stability, Green's functions)
├── process/ # Signal processing, EM modeling, profile fitting
├── plot/ # Visualization (time, 1D, 2D, top-view, analysis)
├── omas/ # ODS utilities (shot metadata, sample data)
├── imas/ # IMAS-Python (AL5) interoperability
├── code/ # Code interfaces (EFIT, CHEASE, GPEC, Snakemake)
└── data/ # Sample data, geometry assets, calibration tables
| Notebook | Description |
|---|---|
| database_initialization_and_load | Core data loading and framework basics |
| plotting_sample_using_vaft_plot_module | Visualization examples with the plot module |
| profile_fitting_using_equilibrium_and_kinetic_diagnostics | Thomson/CES mapping and profile fitting |
| read_and_convert_data_structure | ODS/IMAS data structure conversion |
| imas_omas_data_conversion | IMAS ↔ OMAS interoperability |
| vest_experimental_data_list | Browse the VEST shot database |
| confinement_time_scaling | Energy confinement time scaling analysis |
| vest_daily_monitoring | Daily experiment monitoring dashboard |
| publication_figures | Reproduce figures from publications |
- Documentation: vest-tokamak.github.io/vaft
- Paper: H.-S. Yun, S. Lee et al, "Developing an IMAS-compatible platform for the university-scale tokamak VEST and its application to operating characteristics analysis", Plasma Phys. Control. Fusion 67 115021 (2025). doi:10.1088/1361-6587/ae1b6a
- OMAS: gafusion.github.io/omas — Python API for IMAS data structures
- OMFIT: omfit.io — Integrated modeling and experimental data analysis framework for tokamak research
- HSDS: github.com/HDFGroup/hsds — HDF5 REST-based data service
- IMAS: github.com/iterorganization/IMAS-Data-Dictionary — ITER Integrated Modelling & Analysis Suite
Contributions are welcome. Please open an issue or submit a pull request.
For database write access, contact peppertonic18@snu.ac.kr, satelite2517@snu.ac.kr.
The authors would like to thank O Meneghini and J McClenaghan at General Atomics for their technical advice. Some parts of the data processing were performed using the code API in the OMFIT integrated modeling framework [1]. This research was supported by the National Research Foundation of Korea (NRF) grant funded by the Korean Government (MSIT) (RS-2021-NR057187, RS-2023-00281276, RS-2024-00409564, and RS-2025-02304810).