Installation#
pip install stringjax # CPU; JAXVacua engine + CYTools + bundled models
pip install "stringjax[all]" # + databases (StringForge) and the flux-bounding extra
stringjax is an install-only metapackage: it pulls in a mutually-compatible set of
member packages and provides the stringjax command. Import the member packages
directly (import jaxvacua as jvc).
Choosing the right JAX build#
JAX is the dependency most often misconfigured. The default install gives the CPU
build, which works everywhere. For accelerators, install the matching JAX wheel
after stringjax:
pip install stringjax
pip install stringjax pip install -U “jax[cuda12]”
pip install stringjax pip install -U “jax[tpu]” -f https://storage.googleapis.com/jax-releases/libtpu_releases.html
pip install stringjax pip install jax-metal # experimental; see the float64 caveat below
64-bit precision#
Flux-vacuum searches require 64-bit arithmetic. Enable it before JAX is imported, either programmatically
import jaxvacua as jvc
jvc.set_precision("float64")
or via the environment:
export JAXVACUA_PRECISION=float64
Warning
Some accelerators — notably Apple Metal — have limited or slow float64 support and
may fall back to the CPU. Run stringjax doctor to confirm whether float64 is
actually enabled on your device.
Optional features#
Flux bounding (Gurobi). Systematic flux enumeration uses Gurobi, which needs a (free, for academics) licence. Install with
pip install "jaxvacua[bounding]"and activate the licence; everything else works without it.Databases & vacua vault (StringForge). Included via
stringjax[all], orpip install stringforge. Large datasets are fetched on demand and cached locally; setSTRINGFORGE_DATA_DIRto relocate the cache and pin dataset versions for reproducibility.
Reproducible environments#
Pinned specifications are shipped in the repository:
pip install -r requirements-cpu.txt # or requirements-gpu.txt
pip install -r requirements-cpu.txt -c constraints.txt # exact, pinned versions
# or, with conda/mamba:
mamba env create -f environment-cpu.yml
Verify#
stringjax doctor
prints the member versions, the active JAX backend and devices, whether float64 is
enabled, and whether Gurobi is available, with suggestions when something is off.