Skip to main content

Umbrella metapackage and tooling for the StringJAX ecosystem of differentiable string-theory codes.

Project description

The StringJAX project: Compiling String Theory

Doc StringJAX Python License: GPL v3

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: stringjax is permissively licensed (MIT), but using the ecosystem pulls in jaxvacua, 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stringjax-0.1.0.tar.gz (45.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stringjax-0.1.0-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

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

Hashes for stringjax-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3a0817d46f635224ef3e35d806f5be3222349ccde4ec079bfb835050699b7244
MD5 77619a9208935a623b3113c69cc4fea0
BLAKE2b-256 700157af5889795c2795cb75b8d1481d836a4190380d8ab81a9e98f57ab5620e

See more details on using hashes here.

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

Hashes for stringjax-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8c46c639bfdc465e04c3d765de02196052ce10b101cf88604142d5f16831e1da
MD5 49e33cf1fb914dd8f3e2389ca92e29ce
BLAKE2b-256 65b617d0837683fbed4e0fc0544da5187ff53f174f7d874418889779d13a22f8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page