def tpsf_mutate(): x = y = np.linspace(-LIM, LIM, SAMPLES) xx, yy = np.meshgrid(x, y) rho, phi = cart_to_polar(xx, yy) dat = psf.airydisk(rho, 10, 0.55) _psf = psf.PSF(data=dat, x=x, y=y) _psf.fno = 10 _psf.wavelength = 0.55 return _psf
def test_diffprop_matches_airydisk(efl, epd, wvl): fno = efl / epd p = Pupil(wavelength=wvl, epd=epd) psf = PSF.from_pupil(p, efl) u, sx = psf.slice_x u, sy = psf.slice_y analytic = airydisk(u, fno, wvl) assert np.allclose(sx, analytic, rtol=PRECISION, atol=PRECISION) assert np.allclose(sy, analytic, rtol=PRECISION, atol=PRECISION)
def test_diffprop_matches_airydisk(efl, epd, wvl): fno = efl / epd p = Pupil(wavelength=wvl, dia=epd) psf = PSF.from_pupil(p, efl, Q=3) # use Q=3 not Q=4 for improved accuracy u, sx = psf.slice_x u, sy = psf.slice_y analytic = airydisk(u, fno, wvl) assert np.allclose(sx, analytic, atol=PRECISION) assert np.allclose(sy, analytic, atol=PRECISION)
def test_diffprop_matches_airydisk(efl, epd, wvl): fno = efl / epd p = Pupil(dia=epd, xy_unit=u.mm, z_unit=u.nm, wavelength=mkwvl(wvl, u.um)) psf = PSF.from_pupil(p, efl, Q=3) # use Q=3 not Q=4 for improved accuracy s = psf.slices() u_, sx = s.x u_, sy = s.y analytic = airydisk(u_, fno, wvl) assert np.allclose(sx, analytic, atol=PRECISION) assert np.allclose(sy, analytic, atol=PRECISION)
def test_diffprop_matches_airydisk(efl, epd, wvl): fno = efl / epd x, y = make_xy_grid(128, diameter=epd) r, t = cart_to_polar(x, y) amp = circle(epd/2, r) wf = Wavefront.from_amp_and_phase(amp/amp.sum(), None, wvl, x[0, 1] - x[0, 0]) psf = wf.focus(efl, Q=3) s = psf.intensity.slices() u_, sx = s.x u_, sy = s.y analytic = airydisk(u_, fno, wvl) assert np.allclose(sx, analytic, atol=PRECISION) assert np.allclose(sy, analytic, atol=PRECISION)
def tpsf(): x = y = np.linspace(-LIM, LIM, SAMPLES) xx, yy = np.meshgrid(x, y) rho, phi = cart_to_polar(xx, yy) dat = psf.airydisk(rho, 10, 0.55) return psf.PSF(data=dat, x=x, y=y)
def test_airydisk_has_unit_peak(fno, wvl): assert airydisk(0, fno=fno, wavelength=wvl) == 1