optixstuff 2.0.0__tar.gz → 4.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.
- optixstuff-4.0.0/.codespellrc +4 -0
- optixstuff-4.0.0/.editorconfig +15 -0
- optixstuff-4.0.0/.gitattributes +10 -0
- {optixstuff-2.0.0 → optixstuff-4.0.0}/.gitignore +5 -0
- {optixstuff-2.0.0 → optixstuff-4.0.0}/.pre-commit-config.yaml +6 -2
- {optixstuff-2.0.0 → optixstuff-4.0.0}/.zenodo.json +1 -1
- {optixstuff-2.0.0 → optixstuff-4.0.0}/CHANGELOG.md +32 -0
- {optixstuff-2.0.0 → optixstuff-4.0.0}/CITATION.cff +1 -1
- {optixstuff-2.0.0 → optixstuff-4.0.0}/PKG-INFO +28 -21
- optixstuff-4.0.0/SECURITY.md +9 -0
- optixstuff-4.0.0/pyproject.toml +111 -0
- {optixstuff-2.0.0 → optixstuff-4.0.0}/src/optixstuff/__init__.py +8 -1
- {optixstuff-2.0.0 → optixstuff-4.0.0}/src/optixstuff/_version.py +2 -2
- optixstuff-4.0.0/src/optixstuff/coronagraph.py +775 -0
- {optixstuff-2.0.0 → optixstuff-4.0.0}/src/optixstuff/detector.py +2 -2
- {optixstuff-2.0.0 → optixstuff-4.0.0}/src/optixstuff/optical_elements.py +4 -6
- {optixstuff-2.0.0 → optixstuff-4.0.0}/src/optixstuff/optical_path.py +2 -1
- {optixstuff-2.0.0 → optixstuff-4.0.0}/src/optixstuff/primary.py +20 -20
- {optixstuff-2.0.0 → optixstuff-4.0.0}/src/optixstuff/speckle.py +66 -5
- {optixstuff-2.0.0 → optixstuff-4.0.0}/src/optixstuff/yippy_coronagraph.py +50 -13
- optixstuff-2.0.0/pyproject.toml +0 -64
- optixstuff-2.0.0/src/optixstuff/coronagraph.py +0 -193
- {optixstuff-2.0.0 → optixstuff-4.0.0}/.readthedocs.yaml +0 -0
- {optixstuff-2.0.0 → optixstuff-4.0.0}/LICENSE +0 -0
- {optixstuff-2.0.0 → optixstuff-4.0.0}/README.md +0 -0
- {optixstuff-2.0.0 → optixstuff-4.0.0}/src/optixstuff/_repr.py +0 -0
- {optixstuff-2.0.0 → optixstuff-4.0.0}/src/optixstuff/disperser.py +0 -0
- {optixstuff-2.0.0 → optixstuff-4.0.0}/src/optixstuff/exposure.py +0 -0
- {optixstuff-2.0.0 → optixstuff-4.0.0}/tools/check_internal_refs.py +0 -0
|
@@ -15,13 +15,17 @@ repos:
|
|
|
15
15
|
args: [--pytest-test-first]
|
|
16
16
|
- id: end-of-file-fixer
|
|
17
17
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
18
|
-
rev: v0.
|
|
18
|
+
rev: v0.17.3
|
|
19
19
|
hooks:
|
|
20
20
|
- id: ruff-check
|
|
21
21
|
args: [--fix]
|
|
22
22
|
- id: ruff-format
|
|
23
|
+
- repo: https://github.com/codespell-project/codespell
|
|
24
|
+
rev: v2.4.1
|
|
25
|
+
hooks:
|
|
26
|
+
- id: codespell
|
|
23
27
|
- repo: https://github.com/compilerla/conventional-pre-commit
|
|
24
|
-
rev: v4.
|
|
28
|
+
rev: v4.4.0
|
|
25
29
|
hooks:
|
|
26
30
|
- id: conventional-pre-commit
|
|
27
31
|
stages: [commit-msg]
|
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [4.0.0](https://github.com/CoreySpohn/optixstuff/compare/v3.0.0...v4.0.0) (2026-11-05)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### ⚠ BREAKING CHANGES
|
|
7
|
+
|
|
8
|
+
* **coronagraph:** AbstractCoronagraph.core_mean_intensity implementations must accept the keyword-only stellar_diam_lod argument.
|
|
9
|
+
* **coronagraph:** YippyCoronagraph.core_mean_intensity and noise_floor_ayo now return values per (lambda/D)^2, the AbstractCoronagraph contract, instead of yippy's per-pixel fraction of the star's light; both grow by 1/pixel_scale_lod**2 (16x at 0.25 lambda/D pixels). Multiply either by core_area for the fraction in the aperture, and stop dividing by pixel_scale_lod**2 downstream.
|
|
10
|
+
* American spelling throughout, rename segment_centres_m to segment_centers_m
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* **coronagraph:** add stellar_diam_lod to core_mean_intensity and noise floor ([8cd9749](https://github.com/CoreySpohn/optixstuff/commit/8cd97496c3434ea7bd4effaf2b6f2f1fb095a294))
|
|
15
|
+
* **speckle:** exposure-averaged realization on the speckle-field contract ([d163bf6](https://github.com/CoreySpohn/optixstuff/commit/d163bf6a0a821b1d31bed46925ef63a4c19145de))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* American spelling throughout, rename segment_centres_m to segment_centers_m ([ccf79e1](https://github.com/CoreySpohn/optixstuff/commit/ccf79e14d8aee487d1dcabd2cf08b4a3893b2a36))
|
|
21
|
+
* **coronagraph:** report the yippy AYO noise floor per (lambda/D)^2 ([3add7c7](https://github.com/CoreySpohn/optixstuff/commit/3add7c7c79f8153cfafa0a7409b0ed497c001ee4))
|
|
22
|
+
* **coronagraph:** report yippy core mean intensity per (lambda/D)^2 ([dc55aaa](https://github.com/CoreySpohn/optixstuff/commit/dc55aaaca375bb5e45b34d93df0ff9ad5c16fbd5))
|
|
23
|
+
|
|
24
|
+
## [3.0.0](https://github.com/CoreySpohn/optixstuff/compare/v2.0.0...v3.0.0) (2026-07-20)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### ⚠ BREAKING CHANGES
|
|
28
|
+
|
|
29
|
+
* **coronagraph:** sampling-explicit image contract -- wavelength-explicit stellar_map/source_psfs/background_transmission/extended_scene, table SPI base, MultiBandCoronagraph
|
|
30
|
+
|
|
31
|
+
### Features
|
|
32
|
+
|
|
33
|
+
* **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))
|
|
34
|
+
|
|
3
35
|
## [2.0.0](https://github.com/CoreySpohn/optixstuff/compare/v1.5.0...v2.0.0) (2026-07-10)
|
|
4
36
|
|
|
5
37
|
|
|
@@ -7,7 +7,7 @@ authors:
|
|
|
7
7
|
- family-names: Spohn
|
|
8
8
|
given-names: Corey
|
|
9
9
|
orcid: "https://orcid.org/0000-0002-3138-0240"
|
|
10
|
-
affiliation: "NASA Goddard Space Flight Center"
|
|
10
|
+
affiliation: "University of Maryland, Baltimore County; NASA Goddard Space Flight Center; CRESST II"
|
|
11
11
|
repository-code: "https://github.com/CoreySpohn/optixstuff"
|
|
12
12
|
license: MIT
|
|
13
13
|
doi: "10.5281/zenodo.20819379"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: optixstuff
|
|
3
|
-
Version:
|
|
3
|
+
Version: 4.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
|
|
@@ -32,28 +32,35 @@ Classifier: Intended Audience :: Science/Research
|
|
|
32
32
|
Classifier: License :: OSI Approved :: MIT License
|
|
33
33
|
Classifier: Programming Language :: Python :: 3
|
|
34
34
|
Classifier: Topic :: Scientific/Engineering :: Astronomy
|
|
35
|
-
Requires-Python: >=3.
|
|
36
|
-
Requires-Dist: equinox>=0.
|
|
37
|
-
Requires-Dist:
|
|
38
|
-
Requires-Dist:
|
|
39
|
-
Requires-Dist:
|
|
40
|
-
Requires-Dist:
|
|
35
|
+
Requires-Python: >=3.12
|
|
36
|
+
Requires-Dist: equinox>=0.13.2
|
|
37
|
+
Requires-Dist: hwoutils>=1.10.0
|
|
38
|
+
Requires-Dist: interpax>=0.3.12
|
|
39
|
+
Requires-Dist: jax>=0.8.1
|
|
40
|
+
Requires-Dist: jaxlib>=0.8.1
|
|
41
|
+
Requires-Dist: jaxtyping>=0.3.3
|
|
42
|
+
Requires-Dist: yippy>=2.10.6
|
|
41
43
|
Provides-Extra: dev
|
|
42
|
-
Requires-Dist: pre-commit; extra == 'dev'
|
|
44
|
+
Requires-Dist: pre-commit>=3.5; extra == 'dev'
|
|
43
45
|
Provides-Extra: docs
|
|
44
|
-
Requires-Dist: ipython; extra == 'docs'
|
|
45
|
-
Requires-Dist: matplotlib; extra == 'docs'
|
|
46
|
-
Requires-Dist: myst-nb; extra == 'docs'
|
|
47
|
-
Requires-Dist: sphinx; extra == 'docs'
|
|
48
|
-
Requires-Dist: sphinx-
|
|
49
|
-
Requires-Dist: sphinx
|
|
50
|
-
Requires-Dist:
|
|
51
|
-
Requires-Dist: sphinxcontrib-mermaid; extra == 'docs'
|
|
46
|
+
Requires-Dist: ipython>=8.18; extra == 'docs'
|
|
47
|
+
Requires-Dist: matplotlib>=3.10.7; extra == 'docs'
|
|
48
|
+
Requires-Dist: myst-nb>=1.0; extra == 'docs'
|
|
49
|
+
Requires-Dist: sphinx-autoapi>=3.0; extra == 'docs'
|
|
50
|
+
Requires-Dist: sphinx-book-theme>=1.1; extra == 'docs'
|
|
51
|
+
Requires-Dist: sphinx>=7.2; extra == 'docs'
|
|
52
|
+
Requires-Dist: sphinxcontrib-mermaid>=0.9; extra == 'docs'
|
|
52
53
|
Provides-Extra: test
|
|
53
|
-
Requires-Dist: hypothesis; extra == 'test'
|
|
54
|
-
Requires-Dist:
|
|
55
|
-
Requires-Dist:
|
|
56
|
-
Requires-Dist: pytest-cov; extra == 'test'
|
|
54
|
+
Requires-Dist: hypothesis>=6.79.1; extra == 'test'
|
|
55
|
+
Requires-Dist: numpy>=2.0; extra == 'test'
|
|
56
|
+
Requires-Dist: psutil>=5.9.4; extra == 'test'
|
|
57
|
+
Requires-Dist: pytest-cov>=1.0; extra == 'test'
|
|
58
|
+
Requires-Dist: pytest-fail-slow>=0.1.0; extra == 'test'
|
|
59
|
+
Requires-Dist: pytest-markdown-docs>=0.5.0; extra == 'test'
|
|
60
|
+
Requires-Dist: pytest-testmon>=2.0.7; extra == 'test'
|
|
61
|
+
Requires-Dist: pytest-timeout>=1.3.1; extra == 'test'
|
|
62
|
+
Requires-Dist: pytest-xdist>=2.5; extra == 'test'
|
|
63
|
+
Requires-Dist: pytest>=7.3.2; extra == 'test'
|
|
57
64
|
Description-Content-Type: text/markdown
|
|
58
65
|
|
|
59
66
|
# optixstuff
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Security policy
|
|
2
|
+
|
|
3
|
+
This is research software maintained by one person. Please report a vulnerability, for
|
|
4
|
+
example a leaked credential, a malicious dependency, or a workflow that could be abused, through
|
|
5
|
+
GitHub private vulnerability reporting: use "Report a vulnerability" on the Security tab of this
|
|
6
|
+
repository. If that is unavailable, email corey.a.spohn@nasa.gov with "SECURITY" in the subject.
|
|
7
|
+
|
|
8
|
+
Expect an acknowledgement within a week. Only the latest release receives fixes. Incorrect
|
|
9
|
+
numerical results are not security issues; please open an ordinary issue for those.
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ['hatchling>=1.26.3', "hatch-fancy-pypi-readme>=24.1.0", "hatch-vcs>=0.4"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "optixstuff"
|
|
7
|
+
description = "Hardware abstractions for the HWO direct imaging simulation suite"
|
|
8
|
+
authors = [{ name = "Corey Spohn", email = "corey.a.spohn@nasa.gov" }]
|
|
9
|
+
dynamic = ['readme', 'version']
|
|
10
|
+
requires-python = ">=3.12"
|
|
11
|
+
license = { file = "LICENSE" }
|
|
12
|
+
classifiers = [
|
|
13
|
+
"Development Status :: 2 - Pre-Alpha",
|
|
14
|
+
"Intended Audience :: Science/Research",
|
|
15
|
+
"License :: OSI Approved :: MIT License",
|
|
16
|
+
"Programming Language :: Python :: 3",
|
|
17
|
+
"Topic :: Scientific/Engineering :: Astronomy",
|
|
18
|
+
]
|
|
19
|
+
dependencies = [
|
|
20
|
+
"equinox>=0.13.2",
|
|
21
|
+
"hwoutils>=1.10.0",
|
|
22
|
+
"interpax>=0.3.12",
|
|
23
|
+
"jax>=0.8.1",
|
|
24
|
+
"jaxlib>=0.8.1",
|
|
25
|
+
"jaxtyping>=0.3.3",
|
|
26
|
+
"yippy>=2.10.6",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
[project.optional-dependencies]
|
|
30
|
+
dev = ["pre-commit>=3.5"]
|
|
31
|
+
docs = [
|
|
32
|
+
"sphinx>=7.2",
|
|
33
|
+
"myst-nb>=1.0",
|
|
34
|
+
"sphinx-book-theme>=1.1",
|
|
35
|
+
"sphinx-autoapi>=3.0",
|
|
36
|
+
"sphinxcontrib-mermaid>=0.9",
|
|
37
|
+
"ipython>=8.18",
|
|
38
|
+
"matplotlib>=3.10.7",
|
|
39
|
+
]
|
|
40
|
+
test = [
|
|
41
|
+
"pytest>=7.3.2",
|
|
42
|
+
"hypothesis>=6.79.1",
|
|
43
|
+
"pytest-cov>=1.0",
|
|
44
|
+
"pytest-xdist>=2.5",
|
|
45
|
+
"pytest-testmon>=2.0.7",
|
|
46
|
+
"pytest-markdown-docs>=0.5.0",
|
|
47
|
+
"pytest-timeout>=1.3.1",
|
|
48
|
+
"pytest-fail-slow>=0.1.0",
|
|
49
|
+
# The optional hwoutils budget plugin uses psutil for portable RSS sampling.
|
|
50
|
+
"psutil>=5.9.4",
|
|
51
|
+
"numpy>=2.0",
|
|
52
|
+
]
|
|
53
|
+
|
|
54
|
+
[project.urls]
|
|
55
|
+
Homepage = "https://github.com/CoreySpohn/optixstuff"
|
|
56
|
+
Issues = "https://github.com/CoreySpohn/optixstuff/issues"
|
|
57
|
+
|
|
58
|
+
[tool.hatch.version]
|
|
59
|
+
source = "vcs"
|
|
60
|
+
|
|
61
|
+
[tool.hatch.build.hooks.vcs]
|
|
62
|
+
version-file = "src/optixstuff/_version.py"
|
|
63
|
+
|
|
64
|
+
[tool.hatch.metadata.hooks.fancy-pypi-readme]
|
|
65
|
+
content-type = "text/markdown"
|
|
66
|
+
|
|
67
|
+
[[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]]
|
|
68
|
+
path = "README.md"
|
|
69
|
+
|
|
70
|
+
[tool.ruff.lint]
|
|
71
|
+
select = ["B", "D", "E", "F", "I", "UP", "RUF"]
|
|
72
|
+
|
|
73
|
+
[tool.ruff.lint.pydocstyle]
|
|
74
|
+
convention = "google"
|
|
75
|
+
|
|
76
|
+
[tool.ruff.lint.per-file-ignores]
|
|
77
|
+
"tests/**" = ["D"]
|
|
78
|
+
|
|
79
|
+
[tool.hatch.build.targets.wheel]
|
|
80
|
+
packages = ["src/optixstuff"]
|
|
81
|
+
|
|
82
|
+
[tool.hatch.build.targets.sdist]
|
|
83
|
+
exclude = ["/scripts", "/docs", "/tests", "/.github"]
|
|
84
|
+
|
|
85
|
+
[tool.pytest.ini_options]
|
|
86
|
+
filterwarnings = ["error"]
|
|
87
|
+
markers = [
|
|
88
|
+
"medium: tests with a 30-second default time budget",
|
|
89
|
+
"slow: tests with a 300-second default time budget, run nightly",
|
|
90
|
+
]
|
|
91
|
+
|
|
92
|
+
[tool.testbudget]
|
|
93
|
+
library = "optixstuff"
|
|
94
|
+
mode = "report"
|
|
95
|
+
unit_s = 5
|
|
96
|
+
medium_s = 30
|
|
97
|
+
slow_s = 300
|
|
98
|
+
|
|
99
|
+
[tool.deptry]
|
|
100
|
+
known_first_party = ["optixstuff"]
|
|
101
|
+
optional_dependencies_dev_groups = ["dev", "docs", "test"]
|
|
102
|
+
|
|
103
|
+
[tool.deptry.per_rule_ignores]
|
|
104
|
+
# JAX loads its compiled backend; keep the explicit minimum version constraint.
|
|
105
|
+
DEP002 = ["jaxlib"]
|
|
106
|
+
|
|
107
|
+
[tool.ty.environment]
|
|
108
|
+
python-version = "3.11"
|
|
109
|
+
|
|
110
|
+
[tool.ty.src]
|
|
111
|
+
include = ["src/optixstuff"]
|
|
@@ -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
|
|
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,
|
|
@@ -31,12 +36,14 @@ __all__ = [
|
|
|
31
36
|
"AbstractPrimary",
|
|
32
37
|
"AbstractScalarCoronagraph",
|
|
33
38
|
"AbstractSpeckleField",
|
|
39
|
+
"AbstractTableCoronagraph",
|
|
34
40
|
"AbstractUniformElement",
|
|
35
41
|
"ConstantThroughput",
|
|
36
42
|
"Detector",
|
|
37
43
|
"ExposureConfig",
|
|
38
44
|
"IdealDetector",
|
|
39
45
|
"LensletDisperser",
|
|
46
|
+
"MultiBandCoronagraph",
|
|
40
47
|
"OpticalPath",
|
|
41
48
|
"SegmentedPrimary",
|
|
42
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 = '
|
|
22
|
-
__version_tuple__ = version_tuple = (
|
|
21
|
+
__version__ = version = '4.0.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (4, 0, 0)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|