Umbrella metapackage and tooling for the StringJAX ecosystem of differentiable string-theory codes.
Project description
The StringJAX project: Compiling String Theory
Differentiable tools for string compactifications in JAX.
StringJAX is the umbrella project for a family of interoperating, separately
versioned and separately citable Python packages. This repository hosts the
lightweight stringjax metapackage (a one-command installer and an environment
helper) and the documentation hub. It contains no physics code — that lives in
the member packages below.
Why StringJAX?
Constructing and analysing string-theory vacua has traditionally meant stitching together bespoke scripts, incompatible data formats, and slow, non-differentiable numerics. StringJAX exists to make that pipeline fast, differentiable, and reproducible from end to end. Every member package is built on JAX, so the same code runs on CPU, GPU, or TPU and exposes exact gradients through the whole geometry → effective theory → moduli-stabilisation chain. The packages are small, single-purpose, and independently versioned, so you install only what you need and cite exactly what you used.
Install
pip install stringjax # CPU; JAXVacua engine + CYTools + bundled models
pip install "stringjax[all]" # + databases (StringForge) and the flux-bounding extra
GPU/TPU/Apple-Silicon need one extra step for JAX — see the installation guide.
Note:
stringjaxis permissively licensed (MIT), but using the ecosystem pulls injaxvacua, which is GPL-3.0; your usage is subject to those terms.
Packages
| Package | Role | Install | Docs | GitHub |
|---|---|---|---|---|
| JAXVacua | Type IIB flux-vacuum engine | pip install jaxvacua |
DOC | (GitHub) |
| JAXPolyLog | Differentiable polylogarithms | pip install jaxpolylog |
DOC | (GitHub) |
| StringForge | Calabi–Yau databases & vacua vault | pip install stringforge |
DOC | (GitHub) |
StringJAX itself is the project/brand and is not an installable physics package.
First five minutes
import jaxvacua as jvc
jvc.set_precision("float64") # before heavy compute
model = jvc.FluxEFT(h12=2, model_ID=1, limit="LCS", maximum_degree=5)
finder = jvc.FluxVacuaFinder.from_model(model)
vacua = finder.sample_SUSY_flux_vacua(N=100, mode="ISD")
print(len(vacua), "candidate vacua")
Check your environment at any time:
stringjax doctor # versions, JAX backend/devices, float64 status, Gurobi availability
stringjax versions # just the member-package versions
Documentation
The documentation hub lives at https://stringjax.readthedocs.io. Each member package has its own authoritative documentation; the hub orients newcomers and links into them.
Roadmap & long-term goals
StringJAX is released incrementally, and the umbrella is deliberately thin so that member packages can evolve at their own pace.
- Near term — stabilise the JAXVacua flux-vacuum engine and its public API, publish archival releases with DOIs, and grow the StringForge data layer.
- Medium term — broaden coverage of the low-energy effective theory (the Kähler sector and α′/string-loop corrections, axion physics, and uplift scenarios) as further member packages that plug into the same differentiable interfaces.
- Long term — a unified, differentiable environment in which large regions of the landscape can be sampled, optimised, and connected to phenomenology and machine-learning workflows, with strong interoperability and reproducibility guarantees across the ecosystem.
The about page sets out the motivation and strategy in more detail; the compatibility matrix tracks current version windows.
Citing
Please cite the specific package(s) you used rather than the umbrella; see
CITATION.cff and each member's citation file. BibTeX entries are
collected in the documentation.
Contributing
See CONTRIBUTING.md and the
code of conduct. Questions are welcome in GitHub Discussions.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file stringjax-0.1.0.tar.gz.
File metadata
- Download URL: stringjax-0.1.0.tar.gz
- Upload date:
- Size: 45.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a0817d46f635224ef3e35d806f5be3222349ccde4ec079bfb835050699b7244
|
|
| MD5 |
77619a9208935a623b3113c69cc4fea0
|
|
| BLAKE2b-256 |
700157af5889795c2795cb75b8d1481d836a4190380d8ab81a9e98f57ab5620e
|
File details
Details for the file stringjax-0.1.0-py3-none-any.whl.
File metadata
- Download URL: stringjax-0.1.0-py3-none-any.whl
- Upload date:
- Size: 19.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c46c639bfdc465e04c3d765de02196052ce10b101cf88604142d5f16831e1da
|
|
| MD5 |
49e33cf1fb914dd8f3e2389ca92e29ce
|
|
| BLAKE2b-256 |
65b617d0837683fbed4e0fc0544da5187ff53f174f7d874418889779d13a22f8
|