-
Notifications
You must be signed in to change notification settings - Fork 169
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
Move common resample code to stcal #8986
base: main
Are you sure you want to change the base?
Conversation
adc3ca4
to
c7286ee
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #8986 +/- ##
==========================================
- Coverage 73.77% 73.57% -0.21%
==========================================
Files 372 372
Lines 37273 37108 -165
==========================================
- Hits 27498 27302 -196
- Misses 9775 9806 +31 ☔ View full report in Codecov by Sentry. |
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 for putting this together.
I'd like to see the CI run and regression tests for this PR. I added one comment about psutil
which should fix one of the issues preventing the CI from running.
Would you update the pyproject.toml
to point to the source branch of spacetelescope/stcal#320? That should (hopefully) allow the CI to run so we can see the coverage and test results with this PR.
Also would you queue up a regtest run?
Regression tests pass: https://github.com/spacetelescope/RegressionTests/actions/runs/12059744878 |
3df4da3
to
3553412
Compare
1db5ba1
to
679aa51
Compare
Initial regression tests that were using the new code only for imaging are: https://github.com/spacetelescope/RegressionTests/actions/runs/12146883313 After switching spectral code to use the new class, here are the results of regression tests: https://github.com/spacetelescope/RegressionTests/actions/runs/12155412170 I most failures that I see are unrelated to my code, I think (such as |
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 looking great Mihai! Thanks for all the hard work. Most of these comments are minor.
It still feels a bit sad to have to convert the datamodels into dictionaries to pass into stcal, but I can't really think of a better way to do it while maintaining the observatory-agnostic nature of stcal. So I guess I'm happy with it. Maybe it's a bit easier on the romancal side when working with asdf files as compared with fits?
jwst/resample/resample_spec.py
Outdated
# delete these to reduce the number of failures in the regression tests | ||
# TODO: this is helpful info that should be stored in products. | ||
# del model.meta.resample.pixel_scale_ratio | ||
# del model.meta.resample.pixfrac | ||
# del model.meta.resample.weight_type | ||
# del model.meta.resample.pointings | ||
# del model.meta.cal_step.resample |
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.
Can you elaborate on why these cause failures? should these be reinstated before merge?
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.
It seems like currently for spectral data none of the above fields related to resample info are being set. So, if I turn this ON right now, you will see multiple failures in the regression tests. I think these should be turned on before merging, if @melanieclarke is not against storing this info for spectral data.
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 am all for storing this info for spectral data! I thought these were added, though, in the ResampleSpecStep? There may be some weirdness around what happens with MultiSlitModels.
bb0839e
to
aff1ded
Compare
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
a4301e9
to
b37078e
Compare
fa6feda
to
b13bd51
Compare
jwst/resample/resample.py
Outdated
weight_type=weight_type, | ||
good_bits=good_bits, | ||
output_wcs=output_wcs, | ||
output_model=None, |
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 this ever not None?
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.
Not at this moment but if Roman will want to be able to "resume" adding new images to an existing resampled image - this is how it would be done.
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.
My vote is to not add that complexity to these PRs.
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.
Roman decided against this mode of operation.
What is needed for Roman is to be able to pass an output WCS object to resample - essentially something like the "custom WCS" but as an object, not file read from disk.
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.
We definitely need to be able to specify the output WCS in normal operations in Roman.
Re adding to an existing stack, I don't think we've really figured out how we want to handle very deep stacks for Roman (GBTDS, HLTDS, general astrophysics). This kind of resume operation would be a good approach, but it's unclear to me when to turn it on and how to change outlier detection when it gets turned on, and it's easy to imagine weird observation patterns that could lead the outlier rejection to be compromised. The alternative we've talked about for deep stacks is "stack of stack" approaches which have appeal but will only scale so far with our current single intermediate "pass" layer.
So on the Roman side I would have described it more as not being part of our nominal baseline and being uncertain than as a clear decision against, FWIW. But I realize that's vague and I don't know what level of complexity supporting it adds to the code!
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.
My preference would be to keep this code. However, given strong feelings for not supporting the ability to continue adding new models to an existing resampled image and given high uncertainty that this will ever be needed I have removed all the code from this and stcal
(747e319) PR that supports this.
417bc89
to
2c53ccc
Compare
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'd like to understand why in_memory
is no longer being applied in some conditions with the current PR.
025406c
to
ee16194
Compare
ee16194
to
727ec4b
Compare
Latest regression tests: https://github.com/spacetelescope/RegressionTests/actions/runs/13193971330 |
Closes #8695
This PR add the common resample code used by both JWST and Roman pipelines to stcal. For now only imaging mode was switched to the new code. This PR supersedes #8695
This work is related to https://jira.stsci.edu/browse/AL-835
The code in this PR requires the code from spacetelescope/stcal#320
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