optixstuff 1.5.0__tar.gz → 3.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. {optixstuff-1.5.0 → optixstuff-3.0.0}/.pre-commit-config.yaml +8 -0
  2. {optixstuff-1.5.0 → optixstuff-3.0.0}/CHANGELOG.md +29 -0
  3. {optixstuff-1.5.0 → optixstuff-3.0.0}/PKG-INFO +6 -3
  4. {optixstuff-1.5.0 → optixstuff-3.0.0}/README.md +4 -2
  5. {optixstuff-1.5.0 → optixstuff-3.0.0}/pyproject.toml +1 -1
  6. {optixstuff-1.5.0 → optixstuff-3.0.0}/src/optixstuff/__init__.py +10 -1
  7. {optixstuff-1.5.0 → optixstuff-3.0.0}/src/optixstuff/_version.py +2 -2
  8. optixstuff-3.0.0/src/optixstuff/coronagraph.py +753 -0
  9. {optixstuff-1.5.0 → optixstuff-3.0.0}/src/optixstuff/disperser.py +14 -0
  10. {optixstuff-1.5.0 → optixstuff-3.0.0}/src/optixstuff/optical_path.py +11 -0
  11. {optixstuff-1.5.0 → optixstuff-3.0.0}/src/optixstuff/primary.py +28 -5
  12. optixstuff-3.0.0/src/optixstuff/speckle.py +85 -0
  13. {optixstuff-1.5.0 → optixstuff-3.0.0}/src/optixstuff/yippy_coronagraph.py +11 -8
  14. optixstuff-3.0.0/tools/check_internal_refs.py +80 -0
  15. optixstuff-1.5.0/src/optixstuff/coronagraph.py +0 -193
  16. {optixstuff-1.5.0 → optixstuff-3.0.0}/.gitignore +0 -0
  17. {optixstuff-1.5.0 → optixstuff-3.0.0}/.readthedocs.yaml +0 -0
  18. {optixstuff-1.5.0 → optixstuff-3.0.0}/.zenodo.json +0 -0
  19. {optixstuff-1.5.0 → optixstuff-3.0.0}/CITATION.cff +0 -0
  20. {optixstuff-1.5.0 → optixstuff-3.0.0}/LICENSE +0 -0
  21. {optixstuff-1.5.0 → optixstuff-3.0.0}/src/optixstuff/_repr.py +0 -0
  22. {optixstuff-1.5.0 → optixstuff-3.0.0}/src/optixstuff/detector.py +0 -0
  23. {optixstuff-1.5.0 → optixstuff-3.0.0}/src/optixstuff/exposure.py +0 -0
  24. {optixstuff-1.5.0 → optixstuff-3.0.0}/src/optixstuff/optical_elements.py +0 -0
@@ -1,4 +1,12 @@
1
1
  repos:
2
+ - repo: local
3
+ hooks:
4
+ - id: no-internal-refs
5
+ name: no internal research references
6
+ entry: python3 tools/check_internal_refs.py
7
+ language: system
8
+ types: [text]
9
+ exclude: ^(CHANGELOG\.md|tools/check_internal_refs\.py)$
2
10
  - repo: https://github.com/pre-commit/pre-commit-hooks
3
11
  rev: "v6.0.0"
4
12
  hooks:
@@ -1,5 +1,34 @@
1
1
  # Changelog
2
2
 
3
+ ## [3.0.0](https://github.com/CoreySpohn/optixstuff/compare/v2.0.0...v3.0.0) (2026-07-20)
4
+
5
+
6
+ ### ⚠ BREAKING CHANGES
7
+
8
+ * **coronagraph:** sampling-explicit image contract -- wavelength-explicit stellar_map/source_psfs/background_transmission/extended_scene, table SPI base, MultiBandCoronagraph
9
+
10
+ ### Features
11
+
12
+ * **coronagraph:** sampling-explicit image contract -- wavelength-explicit stellar_map/source_psfs/background_transmission/extended_scene, table SPI base, MultiBandCoronagraph ([76c578b](https://github.com/CoreySpohn/optixstuff/commit/76c578be46ee79281dbb24ef44e3af4708fd7155))
13
+
14
+ ## [2.0.0](https://github.com/CoreySpohn/optixstuff/compare/v1.5.0...v2.0.0) (2026-07-10)
15
+
16
+
17
+ ### ⚠ BREAKING CHANGES
18
+
19
+ * **disperser:** sky_pitch_arcsec replaces sky_pitch_lod -- the cube grid is fixed-angle, so the pitch is a plain angle
20
+
21
+ ### Features
22
+
23
+ * **disperser:** sky_pitch_lod + psflet_pack_path descriptor fields ([d2ae639](https://github.com/CoreySpohn/optixstuff/commit/d2ae6392a5f24a2c3b43413149dd7e89b7125600))
24
+ * **primary:** exact segment geometry -- optional segment_point_to_point_m and inscribed_diameter_m, segment_pitch_m, flat-top segment_centres_m matching the HWO EAC baseline pupils ([4c5b4b7](https://github.com/CoreySpohn/optixstuff/commit/4c5b4b71843450339c2a330d74833a5b53a5431d))
25
+ * **speckle:** add AbstractSpeckleField interface and OpticalPath.speckle ([fb7b501](https://github.com/CoreySpohn/optixstuff/commit/fb7b501a2b105350786f757c7c5c761f8bfef2b0))
26
+
27
+
28
+ ### Code Refactoring
29
+
30
+ * **disperser:** sky_pitch_arcsec replaces sky_pitch_lod -- the cube grid is fixed-angle, so the pitch is a plain angle ([31041e2](https://github.com/CoreySpohn/optixstuff/commit/31041e2b85402b083ce2e7913100cfc2919452f3))
31
+
3
32
  ## [1.5.0](https://github.com/CoreySpohn/optixstuff/compare/v1.4.0...v1.5.0) (2026-06-27)
4
33
 
5
34
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: optixstuff
3
- Version: 1.5.0
3
+ Version: 3.0.0
4
4
  Summary: Hardware abstractions for the HWO direct imaging simulation suite
5
5
  Project-URL: Homepage, https://github.com/CoreySpohn/optixstuff
6
6
  Project-URL: Issues, https://github.com/CoreySpohn/optixstuff/issues
@@ -34,6 +34,7 @@ Classifier: Programming Language :: Python :: 3
34
34
  Classifier: Topic :: Scientific/Engineering :: Astronomy
35
35
  Requires-Python: >=3.11
36
36
  Requires-Dist: equinox>=0.12.0
37
+ Requires-Dist: hwoutils
37
38
  Requires-Dist: interpax
38
39
  Requires-Dist: jax>=0.4.1
39
40
  Requires-Dist: jaxlib>=0.4.1
@@ -94,8 +95,10 @@ Built on [JAX](https://github.com/google/jax) and
94
95
 
95
96
  - **Abstract interfaces** — `AbstractPrimary`, `AbstractOpticalElement`,
96
97
  `AbstractCoronagraph`, `AbstractDetector`, `AbstractDisperser`
97
- - **Concrete implementations** — `SimplePrimary`, `ConstantThroughput`,
98
- `IdealDetector`, `Detector`, `LensletDisperser`
98
+ - **Concrete implementations** — `SimplePrimary`, `SegmentedPrimary` (carries
99
+ hex segment geometry for a diffraction backend), `ConstantThroughput`,
100
+ `IdealDetector`, `Detector` (with optional wavelength-dependent QE),
101
+ `LensletDisperser`
99
102
  - **Container** — `OpticalPath`, a composable hardware configuration passed to all
100
103
  simulators
101
104
 
@@ -36,8 +36,10 @@ Built on [JAX](https://github.com/google/jax) and
36
36
 
37
37
  - **Abstract interfaces** — `AbstractPrimary`, `AbstractOpticalElement`,
38
38
  `AbstractCoronagraph`, `AbstractDetector`, `AbstractDisperser`
39
- - **Concrete implementations** — `SimplePrimary`, `ConstantThroughput`,
40
- `IdealDetector`, `Detector`, `LensletDisperser`
39
+ - **Concrete implementations** — `SimplePrimary`, `SegmentedPrimary` (carries
40
+ hex segment geometry for a diffraction backend), `ConstantThroughput`,
41
+ `IdealDetector`, `Detector` (with optional wavelength-dependent QE),
42
+ `LensletDisperser`
41
43
  - **Container** — `OpticalPath`, a composable hardware configuration passed to all
42
44
  simulators
43
45
 
@@ -16,7 +16,7 @@ classifiers = [
16
16
  "Programming Language :: Python :: 3",
17
17
  "Topic :: Scientific/Engineering :: Astronomy",
18
18
  ]
19
- dependencies = ["equinox>=0.12.0", "interpax", "jax>=0.4.1", "jaxlib>=0.4.1", "yippy"]
19
+ dependencies = ["equinox>=0.12.0", "hwoutils", "interpax", "jax>=0.4.1", "jaxlib>=0.4.1", "yippy"]
20
20
 
21
21
  [project.optional-dependencies]
22
22
  dev = ["pre-commit"]
@@ -1,7 +1,12 @@
1
1
  """optixstuff -- Hardware abstractions for the HWO simulation suite."""
2
2
 
3
3
  from optixstuff._version import __version__
4
- from optixstuff.coronagraph import AbstractCoronagraph, AbstractScalarCoronagraph
4
+ from optixstuff.coronagraph import (
5
+ AbstractCoronagraph,
6
+ AbstractScalarCoronagraph,
7
+ AbstractTableCoronagraph,
8
+ MultiBandCoronagraph,
9
+ )
5
10
  from optixstuff.detector import (
6
11
  AbstractDetector,
7
12
  Detector,
@@ -20,6 +25,7 @@ from optixstuff.optical_elements import (
20
25
  )
21
26
  from optixstuff.optical_path import OpticalPath
22
27
  from optixstuff.primary import AbstractPrimary, SegmentedPrimary, SimplePrimary
28
+ from optixstuff.speckle import AbstractSpeckleField
23
29
  from optixstuff.yippy_coronagraph import YippyCoronagraph
24
30
 
25
31
  __all__ = [
@@ -29,12 +35,15 @@ __all__ = [
29
35
  "AbstractOpticalElement",
30
36
  "AbstractPrimary",
31
37
  "AbstractScalarCoronagraph",
38
+ "AbstractSpeckleField",
39
+ "AbstractTableCoronagraph",
32
40
  "AbstractUniformElement",
33
41
  "ConstantThroughput",
34
42
  "Detector",
35
43
  "ExposureConfig",
36
44
  "IdealDetector",
37
45
  "LensletDisperser",
46
+ "MultiBandCoronagraph",
38
47
  "OpticalPath",
39
48
  "SegmentedPrimary",
40
49
  "SimplePrimary",
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.5.0'
22
- __version_tuple__ = version_tuple = (1, 5, 0)
21
+ __version__ = version = '3.0.0'
22
+ __version_tuple__ = version_tuple = (3, 0, 0)
23
23
 
24
24
  __commit_id__ = commit_id = None