Skip to main content

booz_xform_jax

PyPI Tests Python License: MIT

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.

Boozer transform runtime

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.4.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for booz-xform-jax 0.4.3
File Size Uploaded
booz_xform_jax-0.4.3.tar.gz 68.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for booz-xform-jax 0.4.3
File Interpreter ABI Platform
booz_xform_jax-0.4.3-py3-none-any.whl Python 3 none any Details

Total release size: 119.4 kB

Release files / booz_xform_jax-0.4.3.tar.gz

Download URL booz_xform_jax-0.4.3.tar.gz
Size 68.7 kB
Tags Source
SHA-256 checksum
How to use checksums
fb95b24b5d248f98f3f79b8a7e84c66d081d67de3ae53781d21cce92c60d5f9d
BLAKE2b-256 checksum
How to use checksums
dbd92b5128f74ab3836a8c903c0833237bbafa7232dd361d73a7c8122ca3a89d
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 2, 2026.

Transparency log

Release files / booz_xform_jax-0.4.3-py3-none-any.whl

Download URL booz_xform_jax-0.4.3-py3-none-any.whl
Size 50.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a36279ff989be8fa947e0424a67864e1cf5992d0a9fad3eb355aaaeb0eb97da7
BLAKE2b-256 checksum
How to use checksums
cecb79cbdcfd956071862253369afeb39d8ab877c5b7e8ce22b14ef5c211d451
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 2, 2026.

Transparency log

Release history Release notifications | RSS feed

0.5.0

2 release files

This release

0.4.3 This release

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page