optixstuff
Shared hardware objects — with standard values — for the HWO direct-imaging simulation suite.
What optixstuff is
optixstuff is a thin shared dependency that defines the observatory's
hardware as composable JAX modules: primary aperture, throughput-affecting
elements, coronagraph backend, detector. Its job is to be the single source of
truth for the hardware configuration that downstream tools consume.
coronagraphoto
(2D image simulation), coronachrome
(lenslet-IFS dispersion + spectral extraction), and
jaxEDITH
(exposure-time and yield calculations) import the same OpticalPath class and
the same detector / throughput / primary / disperser types from optixstuff.
Change a value here and every downstream tool picks it up on the next import.
What optixstuff is not
- Not a wavefront tool. Diffraction, E-field propagation, and PSFs-from-first-principles belong to dLux and HCIPy.
- Not a PSF interpolator. That's yippy's job;
optixstuff wraps a PSF backend via
YippyCoronagraphbut does not compute PSFs. - Not a scene model. Stars, planets, disks, and zodi live in skyscapes.
- Not a simulator. Downstream tools (coronagraphoto, coronachrome, jaxEDITH)
consume an
OpticalPathto produce images, dispersed IFS frames, or count rates.
Architecture
Built on JAX and
Equinox, optixstuff provides:
- Abstract interfaces —
AbstractPrimary,AbstractOpticalElement,AbstractCoronagraph,AbstractDetector,AbstractDisperser - Concrete implementations —
SimplePrimary,SegmentedPrimary(carries hex segment geometry for a diffraction backend),ConstantThroughput,IdealDetector,Detector(with optional wavelength-dependent QE),LensletDisperser - Container —
OpticalPath, a composable hardware configuration passed to all simulators
Every abstract method accepts three fidelity axes — wavelength, position, and time — with defaults so that simple implementations can ignore unused axes while future high-fidelity models (wavelength-dependent coatings, position-dependent vignetting, time-dependent detector degradation) can use them without breaking the interface.
Ecosystem position
flowchart TB
physopt["<b>Physical optics</b><br/>dLux · HCIPy · PROPER<br/>E-fields → PSFs"]
yippy["<b>yippy</b><br/>PSF interpolation"]
optix["<b>optixstuff</b><br/>Telescope · Coronagraph · Detector · OpticalPath<br/>Throughput chains · QE · Noise rates"]
jaxedith["<b>jaxEDITH</b><br/>Scalar count rates<br/>Exposure-time calculations"]
corono["<b>coronagraphoto</b><br/>2D image simulation<br/>Multi-epoch scenes"]
coronachrome["<b>coronachrome</b><br/>Lenslet-IFS dispersion<br/>Spectral extraction"]
physopt -- YIP --> yippy
yippy -- flux patterns --> optix
optix --> jaxedith
optix --> corono
optix --> coronachrome
Installation
pip install optixstuff
Status
This package is in early development (pre-v0.1.0).
Metadata
Release files for optixstuff 3.0.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 | |
|---|---|---|---|
| optixstuff-3.0.0.tar.gz | 30.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| optixstuff-3.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 59.2 kB
Release files / optixstuff-3.0.0.tar.gz
| Download URL | optixstuff-3.0.0.tar.gz |
|---|---|
| Size | 30.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
561d73a04a87f0d1f75c643294094259a3c48ffb04e5787dc902bdfafe91da24
|
|
BLAKE2b-256 checksum How to use checksums |
bffc3ff45415076d9ac45ba88943106c0238399f4ab763e99997651b44de2a29
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.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 Jul 20, 2026.
Transparency logRelease files / optixstuff-3.0.0-py3-none-any.whl
| Download URL | optixstuff-3.0.0-py3-none-any.whl |
|---|---|
| Size | 29.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6d53a3728291f17f7a8287373a822a50c7030a7f36f5df8d79c3319f143141d6
|
|
BLAKE2b-256 checksum How to use checksums |
b69c78f84dbcb29c20d2d840d50a0f760e34adaea0ed35c6f96988cdd7970a74
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.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 Jul 20, 2026.
Transparency log