You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Fixed
MoffatPSF, EllipticalGaussianPSF and AiryPSF no longer put light that
falls off the frame back onto it. They normalised their stamp after
clipping it to the frame, so a source on the edge column deposited its full
flux instead of the part that lands on the detector (a Moffat star centred on
column 0 kept 100% of its light, where GaussianPSF correctly keeps about
half). The stamp is now normalised before clipping, which follows the AO stack
convention that light lost at a detector edge is lost, not renormalised
(aocore CONVENTIONS 3.3). Sources wholly inside the frame are unchanged.
Changed
Generic primitives now come from aocore. getframes is part of an
adaptive-optics stack whose shared conventions and primitives live in aocore, now a core dependency
(aocore>=0.1.2,<0.2). noise.block_sum is aocore.block_sum, re-exported
so existing imports keep working; it accepts everything it did before and now
also takes a (fy, fx) factor and leading batch axes, and raises a clear ValueError for a factor below 1 or a shape that does not divide (previously
a bare reshape error, or a ZeroDivisionError for a factor of 0). Frame.binned sums through it. AiryPSF and Thermal take their radians per
arcsecond from aocore.ARCSEC_TO_RAD, and Vignetting its centred grid from aocore.coordinate_grid. Every output is bit-for-bit unchanged.
Added
Conformance tests (tests/test_conformance.py) run the aocore.conformance checks that apply to a detector package: every PSF model
deposits unit flux, a source at (n - 1) / 2 and the vignetting pattern are
centred on the optical axis for odd and even windows.