Skip to content

Commit

Permalink
Fix regression tests for flat field inversion (spacetelescope#7986)
Browse files Browse the repository at this point in the history
Co-authored-by: Howard Bushouse <[email protected]>
  • Loading branch information
melanieclarke and hbushouse authored Sep 29, 2023
1 parent 369a543 commit 5fd7905
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 3 deletions.
7 changes: 6 additions & 1 deletion jwst/regtest/test_nirspec_brightobj.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,4 +89,9 @@ def test_ff_inv(rtdata, fitsdiff_default_kwargs):
flatted = FlatFieldStep.call(data)
unflatted = FlatFieldStep.call(flatted, inverse=True)

assert np.allclose(data.data, unflatted.data), 'Inversion failed'
# flat fielding may set some new NaN values - ignore these in test
is_nan = np.isnan(unflatted.data)
assert np.allclose(data.data[~is_nan], unflatted.data[~is_nan]), 'Inversion failed'

# make sure NaNs are only at do_not_use pixels
assert np.all(unflatted.dq[is_nan] & dm.dqflags.pixel['DO_NOT_USE'])
10 changes: 9 additions & 1 deletion jwst/regtest/test_nirspec_mos_spec2_steps.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,15 @@ def test_ff_inv(rtdata, fitsdiff_default_kwargs):
bad_slits = []
for idx, slits in enumerate(zip(data.slits, unflatted.slits)):
data_slit, unflatted_slit = slits
if not np.allclose(data_slit.data, unflatted_slit.data):

# flat fielding may set some new NaN values - ignore these in test
is_nan = np.isnan(unflatted_slit.data)
test1 = np.allclose(data_slit.data[~is_nan], unflatted_slit.data[~is_nan])

# make sure NaNs are only at do_not_use pixels
test2 = np.all(unflatted_slit.dq[is_nan] & dm.dqflags.pixel['DO_NOT_USE'])

if not test1 and test2:
bad_slits.append(idx)

assert not bad_slits, f'Inversion failed for slits {bad_slits}'
Expand Down
6 changes: 5 additions & 1 deletion jwst/regtest/test_nirspec_steps_spec2.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,12 @@ def test_ff_inv(rtdata, fitsdiff_default_kwargs):
flatted = FlatFieldStep.call(data)
unflatted = FlatFieldStep.call(flatted, inverse=True)

assert np.allclose(data.data, unflatted.data), 'Inversion failed'
# flat fielding may set some new NaN values - ignore these in test
is_nan = np.isnan(unflatted.data)
assert np.allclose(data.data[~is_nan], unflatted.data[~is_nan]), 'Inversion failed'

# make sure NaNs are only at do_not_use pixels
assert np.all(unflatted.dq[is_nan] & dm.dqflags.pixel['DO_NOT_USE'])

@pytest.mark.slow
@pytest.mark.bigdata
Expand Down

0 comments on commit 5fd7905

Please sign in to comment.