booz_xform_jax
Boozer coordinate transforms for VMEC and VMEX equilibria, with differentiable JAX kernels and legacy BOOZ_XFORM input and output files.
Installation
pip install booz_xform_jax
For NVIDIA GPUs, install JAX with CUDA support in the same environment. For development, use pip install -e .[dev] in a clone.
Quick start
Use a STELLOPT control file with booz_xform_jax, xbooz_xform_jax or xbooz_xform:
booz_xform_jax in_booz.mycase F
from booz_xform_jax import Booz_xform
bx = Booz_xform()
bx.read_wout("wout_mycase.nc", flux=True)
bx.register_surfaces([0.25, 0.5, 0.75])
bx.run()
bx.write_boozmn("boozmn_mycase.nc")
Use bx.run_jax() or the functional API for compiled transforms and jax.grad, jax.jvp and jax.vmap. Examples cover geometry, resolution scans and optimization.
Capabilities
| Feature | BOOZ_XFORM (Fortran) | booz_xform_jax |
|---|---|---|
| CPU | ✅ | ✅ |
| GPU | ❌ | ✅ |
| Automatic differentiation | ❌ | ✅ |
| Stellarator symmetric geometry | ✅ | ✅ |
| Nonstellarator symmetric geometry, including sine spectra | ✅ | ✅ |
Legacy control files and NetCDF boozmn output |
✅ | ✅ |
Accuracy and speed
Matched CLI transforms agree with STELLOPT BOOZ_XFORM to double precision, including nonzero sine coefficients. Times below include process startup and file I/O: Apple M2 CPU, float64, fastest of three fresh processes, compilation cache disabled.
| Equilibrium | Surfaces | Relative L2 error in cosine and sine spectra | Fortran | JAX |
|---|---|---|---|---|
| Circular tokamak | 3 | 4.8e-15 | 0.10 s | 0.82 s |
| Up/down asymmetric tokamak | 3 | 1.0e-14 | 0.10 s | 0.82 s |
| li383 | 4 | 4.9e-15 | 1.16 s | 0.91 s |
| Landreman–Sengupta–Plunk | 4 | 5.7e-15 | 1.72 s | 0.95 s |
Fortran is faster on the small tokamak cases; JAX is faster on these stellarator cases. JAX process startup takes 0.71 s; full-process peak memory is 224–514 MiB versus 12–71 MiB for Fortran. Measurements include resolution and memory; the memory plot shows all four cases.
Compiled Python transforms amortize their first-call cost:
li383, 48 surfaces, mboz=nboz=16 |
First call | Warm call |
|---|---|---|
| JAX, x86-64 CPU | 0.446 s | 0.0830 s |
| JAX, RTX A4000 GPU | 0.728 s | 0.00629 s |
These synchronized kernel measurements use JAX 0.9.2 and exclude setup and file I/O. CPU and GPU records include derivative timings and source revisions.
Reproduce the CLI comparison with a STELLOPT xbooz_xform executable on PATH:
python tools/readme_compare.py --repeats 3
Documentation
Quickstart · Theory · Inputs and outputs · Numerics · STELLOPT compatibility · API
Citation and license
Cite the Boozer-coordinate and BOOZ_XFORM literature in the bibliography, together with this repository. Licensed under MIT.
Metadata
Release files for booz-xform-jax 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| booz_xform_jax-0.5.0.tar.gz | 69.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| booz_xform_jax-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 120.6 kB
Release files / booz_xform_jax-0.5.0.tar.gz
| Download URL | booz_xform_jax-0.5.0.tar.gz |
|---|---|
| Size | 69.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
25c33dce8cabda5541c91a69a07e8b3affab5c188e2d93300fcfe705e2b97667
|
|
BLAKE2b-256 checksum How to use checksums |
ec799216ad62c5eb744639c1658aa6cbba71af92d7e86595ca931985f77b180b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logRelease files / booz_xform_jax-0.5.0-py3-none-any.whl
| Download URL | booz_xform_jax-0.5.0-py3-none-any.whl |
|---|---|
| Size | 51.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
65708c0ef7192ca1a220a938b27cdbb23b36294d1e437f2930ecb032c77841dd
|
|
BLAKE2b-256 checksum How to use checksums |
308dae4e60995f9cd746fa16c4d6c040b459aefe3e8e1c12a4d911650f2667ba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency log