-
Notifications
You must be signed in to change notification settings - Fork 171
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JP-3426: Ensure proper order of bitwise operations #8916
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #8916 +/- ##
==========================================
- Coverage 64.51% 63.67% -0.84%
==========================================
Files 376 376
Lines 38733 38694 -39
==========================================
- Hits 24990 24640 -350
- Misses 13743 14054 +311 ☔ View full report in Codecov by Sentry. |
rtdata = rtdata_module | ||
|
||
# Get the input data; load individual data files first, load ASN file last | ||
rtdata.get_data("nircam/wfss/jw01076-o101_t002_nircam_clear-f356w_spoof_cat.ecsv") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's the difference between this catalog and the original catalog in the test above?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is mentioned in the submission text above - it's truncated and has one sky region expanded to cover the full frame.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, sorry I didn't read that properly
@@ -32,6 +32,26 @@ def run_pipeline(rtdata_module): | |||
return rtdata | |||
|
|||
|
|||
@pytest.fixture(scope="module") | |||
def run_pipeline_skip_bkg(rtdata_module): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The name of this test is confusing because it explicitly sets bkg_subtract.skip
to False, maybe specify somehow with the name that you're trying to trigger a skip condition
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can alter the test name.
# Run the calwebb_spec2 pipeline; save results from intermediate steps | ||
args = ["calwebb_spec2", rtdata.input, | ||
"--output_file='skip_bkgsub'", | ||
"--steps.bkg_subtract.skip=False"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it necessary to test that the cal
and x1d
truth files are identical? Could you just skip all steps downstream of bkg_subtract and test that the result had bkg_subtract set to skipped?
Why is it necessary to make this test a regression test, instead of a unit test of subtract_wfss_bkg
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mostly because the additional computation required to test the pipeline end-to-end in this skipped case doesn't seem sufficiently obtrusive to warrant truncation of the pipeline.
I considered a unit test, but mocking both the rate file and its accompanying catalog file seemed like a headache. Perhaps I was too lazy in making it a regression test.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think the choice you made is lazy. It just feels like the bugfix in this PR is very specific, affecting one line of code that checks if a skip is need, and the test coverage is very non-specific, which may make it harder to isolate this bug or a similar one if it recurred.
The test for this skip condition could be very simple: you could write a helper function that takes in an input model, mask, and min_n_pixels parameter, then unit-test it by passing in a custom-made mask.
a27e7fc
to
da58617
Compare
After moving the change to a function and migrating the test coverage to a unit test, new RT run here: https://github.com/spacetelescope/RegressionTests/actions/runs/11578440989 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, I like this structure better. Thanks
Resolves JP-3426
Closes #8061
This PR addresses a reoccurrence of the issue initially seen in the above linked ticket, where the only pixels available for use in calculation of the background are reference pixels, which have the DO_NOT_USE flag set. The initial fix neglected to include some necessary parentheses to ensure that the bitwise operations are done in the correct order. This also exposed the lack of test coverage for this path in the code.
I found the difficulty in preparing a WFSS mock dataset, including a spec model and a source catalog for use in constructing the mask, to be high enough that a regression test seemed the simpler path forward. The new files copy the old files, except to truncate the source_catalog for faster processing and to enlarge the sky region of the first source to encompass the entire data array.
Tasks
Build 11.3
(use the latest build if not sure)no-changelog-entry-needed
)changes/
:echo "changed something" > changes/<PR#>.<changetype>.rst
(see below for change types)docs/
pageokify_regtests
to update the truth filesnews fragment change types...
changes/<PR#>.general.rst
: infrastructure or miscellaneous changechanges/<PR#>.docs.rst
changes/<PR#>.stpipe.rst
changes/<PR#>.datamodels.rst
changes/<PR#>.scripts.rst
changes/<PR#>.fits_generator.rst
changes/<PR#>.set_telescope_pointing.rst
changes/<PR#>.pipeline.rst
stage 1
changes/<PR#>.group_scale.rst
changes/<PR#>.dq_init.rst
changes/<PR#>.emicorr.rst
changes/<PR#>.saturation.rst
changes/<PR#>.ipc.rst
changes/<PR#>.firstframe.rst
changes/<PR#>.lastframe.rst
changes/<PR#>.reset.rst
changes/<PR#>.superbias.rst
changes/<PR#>.refpix.rst
changes/<PR#>.linearity.rst
changes/<PR#>.rscd.rst
changes/<PR#>.persistence.rst
changes/<PR#>.dark_current.rst
changes/<PR#>.charge_migration.rst
changes/<PR#>.jump.rst
changes/<PR#>.clean_flicker_noise.rst
changes/<PR#>.ramp_fitting.rst
changes/<PR#>.gain_scale.rst
stage 2
changes/<PR#>.assign_wcs.rst
changes/<PR#>.badpix_selfcal.rst
changes/<PR#>.msaflagopen.rst
changes/<PR#>.nsclean.rst
changes/<PR#>.imprint.rst
changes/<PR#>.background.rst
changes/<PR#>.extract_2d.rst
changes/<PR#>.master_background.rst
changes/<PR#>.wavecorr.rst
changes/<PR#>.srctype.rst
changes/<PR#>.straylight.rst
changes/<PR#>.wfss_contam.rst
changes/<PR#>.flatfield.rst
changes/<PR#>.fringe.rst
changes/<PR#>.pathloss.rst
changes/<PR#>.barshadow.rst
changes/<PR#>.photom.rst
changes/<PR#>.pixel_replace.rst
changes/<PR#>.resample_spec.rst
changes/<PR#>.residual_fringe.rst
changes/<PR#>.cube_build.rst
changes/<PR#>.extract_1d.rst
changes/<PR#>.resample.rst
stage 3
changes/<PR#>.assign_mtwcs.rst
changes/<PR#>.mrs_imatch.rst
changes/<PR#>.tweakreg.rst
changes/<PR#>.skymatch.rst
changes/<PR#>.exp_to_source.rst
changes/<PR#>.outlier_detection.rst
changes/<PR#>.tso_photometry.rst
changes/<PR#>.stack_refs.rst
changes/<PR#>.align_refs.rst
changes/<PR#>.klip.rst
changes/<PR#>.spectral_leak.rst
changes/<PR#>.source_catalog.rst
changes/<PR#>.combine_1d.rst
changes/<PR#>.ami.rst
other
changes/<PR#>.wfs_combine.rst
changes/<PR#>.white_light.rst
changes/<PR#>.cube_skymatch.rst
changes/<PR#>.engdb_tools.rst
changes/<PR#>.guider_cds.rst