getframes 2.0.0__tar.gz → 2.1.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.
- {getframes-2.0.0 → getframes-2.1.0}/.gitignore +2 -0
- {getframes-2.0.0 → getframes-2.1.0}/CHANGELOG.md +54 -3
- {getframes-2.0.0 → getframes-2.1.0}/PKG-INFO +6 -1
- {getframes-2.0.0 → getframes-2.1.0}/README.md +5 -0
- getframes-2.1.0/examples/14_keck_lgs_ttf_trade_study.ipynb +1867 -0
- {getframes-2.0.0 → getframes-2.1.0}/examples/README.md +1 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/__about__.py +1 -1
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/analysis/__init__.py +3 -2
- getframes-2.1.0/src/getframes/analysis/apertures.py +180 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/camera.py +38 -2
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/config.py +20 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/frame.py +44 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/noise.py +62 -4
- getframes-2.1.0/src/getframes/presets/data/andor_cb1_0_5mp.toml +34 -0
- getframes-2.1.0/src/getframes/presets/data/andor_marana_4_2b_11.toml +38 -0
- getframes-2.1.0/src/getframes/presets/data/andor_ocam2k.toml +33 -0
- getframes-2.1.0/src/getframes/presets/data/hamamatsu_orca_quest_2.toml +47 -0
- getframes-2.1.0/src/getframes/presets/data/nuvu_hnu_128_omega.toml +29 -0
- getframes-2.1.0/src/getframes/presets/data/nuvu_hnu_240.toml +33 -0
- getframes-2.1.0/src/getframes/presets/data/photometrics_prime_95b.toml +54 -0
- getframes-2.1.0/src/getframes/presets/data/princeton_instruments_kuro_1200b.toml +55 -0
- getframes-2.1.0/src/getframes/presets/data/qhy530_pro_ii.toml +49 -0
- getframes-2.1.0/src/getframes/presets/data/scimeasure_little_joe_ccd39.toml +50 -0
- getframes-2.1.0/src/getframes/presets/data/tucsen_aries_6504_pro.toml +78 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/scene/photometry.py +1 -1
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/scene/psf.py +1 -1
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/scene/thermal.py +2 -2
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/spectral.py +4 -4
- getframes-2.1.0/tests/test_analysis.py +112 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_calibrate.py +9 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_detector.py +75 -0
- getframes-2.1.0/tests/test_frame.py +46 -0
- getframes-2.1.0/tests/test_presets.py +114 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_spectral.py +15 -0
- getframes-2.0.0/src/getframes/analysis/apertures.py +0 -92
- getframes-2.0.0/tests/test_analysis.py +0 -56
- getframes-2.0.0/tests/test_presets.py +0 -37
- {getframes-2.0.0 → getframes-2.1.0}/LICENSE +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/benchmarks/run.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/examples/01_basic_dark_frame.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/examples/02_custom_camera.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/examples/03_master_dark.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/examples/04_browse_presets.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/examples/05_visualise.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/examples/06_photon_transfer_curve.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/examples/07_star_field_exposure.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/examples/08_ao_limiting_magnitude.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/examples/09_transit_photometry.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/examples/10_detector_realism.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/examples/11_radiometry_and_ir.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/examples/12_ml_dataset.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/examples/13_crowded_field.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/examples/_common.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/pyproject.toml +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/__init__.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/analysis/ptc.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/calibrate.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/cli.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/dataset.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/observation.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/presets/__init__.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/presets/data/__init__.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/presets/data/andor_ikon_m934.toml +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/presets/data/andor_ixon_ultra_888.toml +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/presets/data/generic_ccd.toml +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/presets/data/generic_cmos.toml +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/presets/data/generic_eapd.toml +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/presets/data/generic_emccd.toml +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/presets/data/generic_scmos.toml +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/presets/data/hamamatsu_orca_fusion.toml +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/presets/data/leonardo_saphira.toml +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/presets/data/zwo_asi2600mm.toml +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/py.typed +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/scene/__init__.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/scene/optics.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/scene/scene.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/scene/sources.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/src/getframes/scene/wcs.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_camera.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_cli.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_config.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_dataset.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_gain.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_noise.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_observation.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_radiometry.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_realism.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_scale.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_scene.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_scene_enrich.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_signal.py +0 -0
- {getframes-2.0.0 → getframes-2.1.0}/tests/test_validation.py +0 -0
|
@@ -6,6 +6,55 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [2.1.0] - 2026-07-19
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Five scientific-camera presets used by the Keck tip/tilt and low-bandwidth WFS
|
|
14
|
+
detector trade example: KURO 1200B, Prime 95B, Marana 4.2B-11, QHY530 Pro II,
|
|
15
|
+
and Aries 6504 Pro. All five now include a wavelength-resolved `qe_curve`:
|
|
16
|
+
Marana and Aries from Andor's/Gpixel's published data (the Aries
|
|
17
|
+
`QE x fill factor` trace is digitized from Gpixel's graph); KURO 1200B,
|
|
18
|
+
Prime 95B, and QHY530 Pro II are digitized from published manufacturer QE
|
|
19
|
+
plots.
|
|
20
|
+
- A `quantum_efficiency` override on `Camera.expose_series`, matching
|
|
21
|
+
`Camera.expose` and supporting pre-integrated spectral electron-rate series.
|
|
22
|
+
- A Keck/SciMeasure Little Joe CCD39 preset with the manufacturer CCD39-01
|
|
23
|
+
standard-AR/no-window spectral-response curve.
|
|
24
|
+
- `getframes.analysis.matched_filter_centroid`, a background-insensitive
|
|
25
|
+
cross-correlation centroid with sub-pixel peak refinement.
|
|
26
|
+
- `Frame.binned(factor, method=...)`, post-read digital binning of a frame into
|
|
27
|
+
`factor x factor` super-pixels (sum or mean).
|
|
28
|
+
- `CameraConfig.supported_binnings` and `CameraConfig.binning_method` — binning is
|
|
29
|
+
now a first-class config parameter. The Keck-trade presets set these directly and
|
|
30
|
+
drop the `extra.detector_modes` per-binning tables; cameras with more than one
|
|
31
|
+
read-noise operating point keep a slim `extra.read_modes` list instead.
|
|
32
|
+
- Native pixel binning in the signal chain: `Camera.expose`, `Camera.expose_series`,
|
|
33
|
+
and `noise.simulate_frame` accept `binning` and `binning_mode`. `"digital"`
|
|
34
|
+
(post-read, the default) reads each native pixel with its own read noise then sums,
|
|
35
|
+
so binned read noise grows as `binning`; `"on_chip"` (pre-read charge-domain /
|
|
36
|
+
hardware binning) sums the charge before the amplifier, so a single read noise is
|
|
37
|
+
applied per super-pixel. Exposed `noise.block_sum` for the super-pixel summation.
|
|
38
|
+
- `getframes.analysis.centroid` now accepts a per-pixel array `background` (e.g. a
|
|
39
|
+
master sky+dark frame) and an optional `threshold` (scalar or per-pixel noise
|
|
40
|
+
map), making it a calibrated thresholded centre-of-gravity estimator suitable
|
|
41
|
+
for a real-time controller. Both additions are backwards compatible.
|
|
42
|
+
- A Keck LGS tip/tilt and low-bandwidth wavefront-sensor detector trade-study
|
|
43
|
+
example, including physically sampled AO/sub-aperture PSFs, complete detector
|
|
44
|
+
Monte Carlo simulations, blackbody NGS weighting of each camera's QE curve
|
|
45
|
+
(`--ngs-teff`), the 600–950 nm TTS/LBWFS arm bandpass folded into the zero-point
|
|
46
|
+
bands, Monte Carlo standard errors on every point, a per-camera closed-loop
|
|
47
|
+
cadence optimisation (a physical `a·f + b·f²` noise model fitted to the Monte
|
|
48
|
+
Carlo data, saturation-aware, against a Tyler tilt-lag disturbance model), and
|
|
49
|
+
a best/worst-performer frame gallery figure beside the trade curves.
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
|
|
53
|
+
- Type-checking compatibility with newer NumPy (2.2): tightened stub types for
|
|
54
|
+
`_stamp_bounds`/`_radial_grid` shape arguments, pinned `float64` on a few
|
|
55
|
+
`np.linspace` constructions, and dropped now-unused `type: ignore` comments
|
|
56
|
+
around the `trapz`/`trapezoid` shim. No behavioural change.
|
|
57
|
+
|
|
9
58
|
## [2.0.0] - 2026-06-29
|
|
10
59
|
|
|
11
60
|
The 2.0 cut promotes the full surface grown across 1.1–1.6 to **stable** and lands
|
|
@@ -248,6 +297,8 @@ together in 1.0.
|
|
|
248
297
|
- Documentation, runnable examples, and CI (lint, type-check, test matrix, PyPI
|
|
249
298
|
release via Trusted Publishing).
|
|
250
299
|
|
|
251
|
-
[Unreleased]: https://github.com/jacotay7/getframes/compare/
|
|
252
|
-
[1.0
|
|
253
|
-
[0.
|
|
300
|
+
[Unreleased]: https://github.com/jacotay7/getframes/compare/2.1.0...HEAD
|
|
301
|
+
[2.1.0]: https://github.com/jacotay7/getframes/compare/2.0.0...2.1.0
|
|
302
|
+
[2.0.0]: https://github.com/jacotay7/getframes/compare/1.0.0...2.0.0
|
|
303
|
+
[1.0.0]: https://github.com/jacotay7/getframes/compare/0.1.0...1.0.0
|
|
304
|
+
[0.1.0]: https://github.com/jacotay7/getframes/releases/tag/0.1.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: getframes
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.1.0
|
|
4
4
|
Summary: Generate physically realistic synthetic camera frames (CCD/CMOS/EMCCD/eAPD/sCMOS) — dark, bias, flat, and rendered star fields — with auditable noise physics for scientific imaging pipelines.
|
|
5
5
|
Project-URL: Homepage, https://github.com/jacotay7/getframes
|
|
6
6
|
Project-URL: Documentation, https://jacotay7.github.io/getframes/
|
|
@@ -165,6 +165,11 @@ preset_info() # rich descriptors for each preset
|
|
|
165
165
|
| `leonardo_saphira` | EAPD | HgCdTe avalanche IR array (AO wavefront sensing) |
|
|
166
166
|
| `zwo_asi2600mm` | CMOS | Sony IMX571 cooled CMOS |
|
|
167
167
|
| `hamamatsu_orca_fusion` | sCMOS | Back-thinned sCMOS with per-pixel read noise |
|
|
168
|
+
| `andor_marana_4_2b_11` | sCMOS | 11 µm-pixel, back-illuminated scientific CMOS |
|
|
169
|
+
| `photometrics_prime_95b` | sCMOS | 11 µm-pixel, 95% peak-QE scientific CMOS |
|
|
170
|
+
| `princeton_instruments_kuro_1200b` | sCMOS | Back-illuminated scientific CMOS |
|
|
171
|
+
| `qhy530_pro_ii` | CMOS | Global-shutter Sony IMX530 scientific camera |
|
|
172
|
+
| `tucsen_aries_6504_pro` | sCMOS | Sub-electron sensitive-mode read noise |
|
|
168
173
|
| `generic_ccd` / `generic_cmos` / `generic_emccd` / `generic_eapd` / `generic_scmos` | — | Idealised references for teaching/testing |
|
|
169
174
|
|
|
170
175
|
## How the dark-frame model works
|
|
@@ -121,6 +121,11 @@ preset_info() # rich descriptors for each preset
|
|
|
121
121
|
| `leonardo_saphira` | EAPD | HgCdTe avalanche IR array (AO wavefront sensing) |
|
|
122
122
|
| `zwo_asi2600mm` | CMOS | Sony IMX571 cooled CMOS |
|
|
123
123
|
| `hamamatsu_orca_fusion` | sCMOS | Back-thinned sCMOS with per-pixel read noise |
|
|
124
|
+
| `andor_marana_4_2b_11` | sCMOS | 11 µm-pixel, back-illuminated scientific CMOS |
|
|
125
|
+
| `photometrics_prime_95b` | sCMOS | 11 µm-pixel, 95% peak-QE scientific CMOS |
|
|
126
|
+
| `princeton_instruments_kuro_1200b` | sCMOS | Back-illuminated scientific CMOS |
|
|
127
|
+
| `qhy530_pro_ii` | CMOS | Global-shutter Sony IMX530 scientific camera |
|
|
128
|
+
| `tucsen_aries_6504_pro` | sCMOS | Sub-electron sensitive-mode read noise |
|
|
124
129
|
| `generic_ccd` / `generic_cmos` / `generic_emccd` / `generic_eapd` / `generic_scmos` | — | Idealised references for teaching/testing |
|
|
125
130
|
|
|
126
131
|
## How the dark-frame model works
|