-
Notifications
You must be signed in to change notification settings - Fork 167
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
Wrap "process_slit" in try/except for "extract_2d.nirspec.nrs_extract2d" #8964
base: main
Are you sure you want to change the base?
Conversation
Hello, and thanks for sending this in! The try/except change to extract_2d sounds pretty benign, but I'm not sure why there are changes to set_telescope_pointing in this PR as well. Were those included in error? |
Oh, I guess that was an earlier commit to my fork where I had implemented providing an explicit MAST_TOKEN to various functions there. Is it possible to just remove the changes to that file from this PR and just keep the changes to extrac2d? I'm not sure I've ever done that before on GH. |
Yes, that's possible! Just make the changes in your own local version and push them up to the same branch - the PR will automatically update. If you make the changes via rebasing or editing old commits, you may need to add a force-push flag when you push up the changes to your fork ( |
Thanks for the help. I've removed the other change so now this PR is only for the small update to |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #8964 +/- ##
==========================================
- Coverage 64.52% 64.52% -0.01%
==========================================
Files 375 375
Lines 38739 38743 +4
==========================================
+ Hits 24997 24998 +1
- Misses 13742 13745 +3 ☔ View full report in Codecov by Sentry. 🚨 Try these New Features:
|
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 needs a change log entry - please add a one-line summary to a file called 8964.extract_2d.rst
, in the changes directory.
One quick suggestion for formatting the warning string, but other than that, I think this looks fine. I'll run regression tests. @hayescr - any objections from NIRSpec?
'process_slit failed for slit/subarray {0}, '.format(slit.name) | ||
+ 'probably because the cutout has no valid pixels' |
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 would be a little simpler formatted as an f-string:
'process_slit failed for slit/subarray {0}, '.format(slit.name) | |
+ 'probably because the cutout has no valid pixels' | |
f'process_slit failed for slit {slit.name}, ' | |
f'probably because the cutout has no valid pixels' |
This looks reasonable to me as well, though the only thought I have is whether it's possible to do a more specific catch that we could be doing when building the cutouts (e.g., checking whether the unpadded pixels fall on a detector). I'd be happy to take a look if you could let me know what data and PRISM wavelength range you were running into these errors @gbrammer. |
|
@gbrammer - just an update: we're still looking into this, but need to move it to the back burner for a week or two. We'll get back to you when we have availability again. |
Okay I took a look and it looks like the issue is that when assign_wcs determines which slits are valid and fall on the detector, it doesn't check to see if the 2D cutouts have valid wavelengths yet. When the assign_wcs step runs assign_wcs.nirspec.compute_bounding_box that it does not yet have an inverse for the slit2detector, so it won't run this block: https://github.com/gbrammer/jwst/blob/0e2337d88f7a11045a0c4e71161152deeebf84ce/jwst/assign_wcs/nirspec.py#L1392C1-L1398C1 For the slit that causes errors, extract_2d will run that block, and finds that the wavelengths are all NaNs because it's at the edge of the buffer region, and will therefore find that there is no valid updated y_range and crash. One possible solution would be to check y_range, and if it is empty, don't update the bounding box, and then instead of adding the try/except in extract_2d, run a check on input_model.wavelength and skip any slits that have no valid wavelengths, if that sounds reasonable? One other issue I ran into was that even with one of these two fixes, I am getting an error in resample_spec. I'm not sure if you ran into a problem there as well @gbrammer, but I'll continue to see if I can't sort out why this is happening. |
Thanks for diving into this @hayescr. Your proposed solution to check the y_range output and move on if there are no valid wavelengths sounds reasonable. We don't need to keep the empty bounding box for the offending slit, we just need |
This PR addresses behavior in
extract_2d.nirspec.nrs_extract2d
, which can fail if no valid pixels are found in a cutout that are then used to define the slit range of the bounding box.This behavior doesn't seem to occur in normal pipeline processing, but I'm working on tests to change (i.e., extend) the wavelength bounds of spectral cutouts. Nearly all pipeline functions seem to work perfectly fine after simply changing the values in the
wavelengthrange
reference file, but occasional problems can occur for PRISM slitlets where the padded extended cutout overlaps a particular detector but where there are no resulting valid unpadded pixels used to compute the slit coordinates of the bounding box injwst.assign_wcs.nirspec.compute_bounding_box
.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