-
Notifications
You must be signed in to change notification settings - Fork 170
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
Fix unsafe initialization of CubeModel from ImageModel #9192
Fix unsafe initialization of CubeModel from ImageModel #9192
Conversation
regression tests with stdatamodels main: https://github.com/spacetelescope/RegressionTests/actions/runs/13313758378 regression tests with stdatamodels PR branch: https://github.com/spacetelescope/RegressionTests/actions/runs/13313793079 Expecting both to pass before this can be merged. edit: failures in both are unrelated. They match expected failures from an unrelated fix, see https://github.com/spacetelescope/RegressionTests/actions/runs/13294000215, now ok-ified |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #9192 +/- ##
==========================================
- Coverage 73.67% 73.61% -0.07%
==========================================
Files 372 368 -4
Lines 37091 36298 -793
==========================================
- Hits 27328 26719 -609
+ Misses 9763 9579 -184 ☔ 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.
This looks fine to me. It's uncovered by unit tests though - do the regression tests cover the input ImageModel case?
Yes, thankfully they do, otherwise I'd have probably assumed the fix in stdatamodels doesn't affect any existing JWST code at all. See https://github.com/spacetelescope/RegressionTests/actions/runs/13311698850 which had failures due to this pattern when pointing to the PR branch in stdatamodels |
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.
Oh, of course, you mentioned that. In that case, LGTM!
spacetelescope/stdatamodels#403 will fix a bug where initializing DataModelA from a different-type DataModelB (e.g.
model = DataModelA(DataModelB(shape))
fails to raise a ValidationError in cases where the shape of DataModelB is incompatible withndim
ormax_ndim
in the schema ofDataModelA
.This bug was taken advantage of in one place in the JWST pipeline (see the regression test run here), where
ami_analyze
accepts either anImageModel
or aCubeModel
. To do so, anImageModel
was being fed directly intoCubeModel
, then the data array shapes were expanded on the next lines to look more like aCubeModel
. This led to a situation where theCubeModel
contained a data array withndim=2
, which is incompatible with the schema (albeit only for one line before it was fixed).It's just as easy, and a better pattern, to expand the dimensions before initializing the CubeModel. This PR changes the code to do so.
The fix should not modify the code behavior before the stdatamodels change, nor after it - running regression tests on both.
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#>.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