low pri features
This commit is contained in:
56
tests/node_tests/psf_estimation.py
Normal file
56
tests/node_tests/psf_estimation.py
Normal file
@@ -0,0 +1,56 @@
|
||||
import numpy as np
|
||||
from scipy.ndimage import gaussian_filter
|
||||
from tests.node_tests._shared import make_field
|
||||
|
||||
|
||||
def _make_test_pair(shape=(64, 64), sigma=2.0):
|
||||
"""Return (measured, ideal) where measured = gaussian_filter(ideal)."""
|
||||
ideal = make_field(shape=shape)
|
||||
measured_data = gaussian_filter(ideal.data, sigma=sigma)
|
||||
measured = make_field(data=measured_data)
|
||||
return measured, ideal
|
||||
|
||||
|
||||
def test_output_shape():
|
||||
from backend.nodes.psf_estimation import PSFEstimation
|
||||
|
||||
node = PSFEstimation()
|
||||
measured, ideal = _make_test_pair()
|
||||
psf_field, _ = node.process(measured, ideal, "wiener", 0.01, 32)
|
||||
assert psf_field.data.shape == (32, 32)
|
||||
|
||||
|
||||
def test_psf_normalized():
|
||||
from backend.nodes.psf_estimation import PSFEstimation
|
||||
|
||||
node = PSFEstimation()
|
||||
measured, ideal = _make_test_pair()
|
||||
for method in ("wiener", "least_squares", "gaussian_fit"):
|
||||
psf_field, _ = node.process(measured, ideal, method, 0.01, 32)
|
||||
assert abs(psf_field.data.sum() - 1.0) < 1e-6, (
|
||||
f"{method}: PSF sum = {psf_field.data.sum()}"
|
||||
)
|
||||
|
||||
|
||||
def test_gaussian_fit_parameters():
|
||||
from backend.nodes.psf_estimation import PSFEstimation
|
||||
|
||||
node = PSFEstimation()
|
||||
measured, ideal = _make_test_pair()
|
||||
_, parameters = node.process(measured, ideal, "gaussian_fit", 0.01, 32)
|
||||
names = {row["quantity"] for row in parameters}
|
||||
assert "sigma_x" in names
|
||||
assert "sigma_y" in names
|
||||
assert "amplitude" in names
|
||||
|
||||
|
||||
def test_all_methods_finite():
|
||||
from backend.nodes.psf_estimation import PSFEstimation
|
||||
|
||||
node = PSFEstimation()
|
||||
measured, ideal = _make_test_pair()
|
||||
for method in ("wiener", "least_squares", "gaussian_fit"):
|
||||
psf_field, _ = node.process(measured, ideal, method, 0.01, 32)
|
||||
assert np.isfinite(psf_field.data).all(), (
|
||||
f"{method}: PSF contains non-finite values"
|
||||
)
|
||||
Reference in New Issue
Block a user