spacetelescope / jwst

Python library for science observations from the James Webb Space Telescope
https://jwst-pipeline.readthedocs.io/en/latest/
Other
570 stars 167 forks source link

JP-2928, JP-3792: MIRI LRS master background #8927

Closed melanieclarke closed 2 weeks ago

melanieclarke commented 3 weeks ago

Partially addresses JP-2928 Resolves JP-3792

Update MIRI LRS regression test data to in-flight examples.

While working with these tests, I noticed a few small bugs relating to master background correction:

  1. If a single spectrum is passed to combine1d, the wavelength array for the input spectrum is sorted in place instead of being copied for the output spectrum. For MIRI, this has the effect of reversing the order of the wavelength array compared to the order of the data, which corrupts the spectrum in the output "combined" product. I added a .copy() to the place where the input wavelength array is read. The combined output spectrum is then the same as the input single spectrum.

  2. The 'mbsub' suffix is used in calwebb_spec3 for the master background output, but it is not recorded as a known suffix, so it does not get properly removed for the next product in the pipeline. I added 'mbsub' to the list of known suffixes.

  3. In the master_background step, when a user background is provided, there were a couple small bugs relating to changes to the ModelContainer in #8831. There was an overlooked container.update call that crashed if the input was also a ModelContainer, since ModelContainers no longer have their own metadata (so no update function exists). There was also a place where a single model was passed to a function that expected a container when save_background=True, also causing a crash. I fixed these small issues.

For the tests themselves:

For test_miri_lrs_dedicated_mbkg and test_miri_lrs_masterbg_user, I used data from PID 1529 obs 3 and 4, a LRS fixed slit observation with a dedicated background. The background spectrum is from a standard spec3 reduction of obs 4. I added intermediate file saving (save_background = True) for both tests to exercise the above fixes.

For test_miri_lrs_nod_masterbg, I used the standard spec3 ASN file for PID 1530 obs 5, already in artifactory, which specifies background spectra from the alternate nods for the observations, but ignores them for a standard spec3 reduction. To get a non-trivial background subtraction in master_background with these members, it's necessary to run spec2 in a non-standard way:

For the latter, I created nod1 and nod2 extraction files that swap source and background locations by nod.

Then, it's also necessary to explicitly enable the master_background step in spec3: MIRI param ref files turn it off by default. Instead of just running this whole process offline and storing the inputs to spec3, to mimic the way the current test works, I added a full spec2 run to the master background test with the non-default extraction files. I think this should help make the test for the intended functionality clearer, as well as exercising the background extraction option for the spec2 pipeline -- I'm not sure if that's covered anywhere else in the regression tests.

With these changes, the output products from the test_miri_lrs_nod_masterbg test are comparable to the products from the standard processing of the same inputs in test_miri_lrs_slit_spec3.

Tasks

news fragment change types... - ``changes/.general.rst``: infrastructure or miscellaneous change - ``changes/.docs.rst`` - ``changes/.stpipe.rst`` - ``changes/.datamodels.rst`` - ``changes/.scripts.rst`` - ``changes/.fits_generator.rst`` - ``changes/.set_telescope_pointing.rst`` - ``changes/.pipeline.rst`` ## stage 1 - ``changes/.group_scale.rst`` - ``changes/.dq_init.rst`` - ``changes/.emicorr.rst`` - ``changes/.saturation.rst`` - ``changes/.ipc.rst`` - ``changes/.firstframe.rst`` - ``changes/.lastframe.rst`` - ``changes/.reset.rst`` - ``changes/.superbias.rst`` - ``changes/.refpix.rst`` - ``changes/.linearity.rst`` - ``changes/.rscd.rst`` - ``changes/.persistence.rst`` - ``changes/.dark_current.rst`` - ``changes/.charge_migration.rst`` - ``changes/.jump.rst`` - ``changes/.clean_flicker_noise.rst`` - ``changes/.ramp_fitting.rst`` - ``changes/.gain_scale.rst`` ## stage 2 - ``changes/.assign_wcs.rst`` - ``changes/.badpix_selfcal.rst`` - ``changes/.msaflagopen.rst`` - ``changes/.nsclean.rst`` - ``changes/.imprint.rst`` - ``changes/.background.rst`` - ``changes/.extract_2d.rst`` - ``changes/.master_background.rst`` - ``changes/.wavecorr.rst`` - ``changes/.srctype.rst`` - ``changes/.straylight.rst`` - ``changes/.wfss_contam.rst`` - ``changes/.flatfield.rst`` - ``changes/.fringe.rst`` - ``changes/.pathloss.rst`` - ``changes/.barshadow.rst`` - ``changes/.photom.rst`` - ``changes/.pixel_replace.rst`` - ``changes/.resample_spec.rst`` - ``changes/.residual_fringe.rst`` - ``changes/.cube_build.rst`` - ``changes/.extract_1d.rst`` - ``changes/.resample.rst`` ## stage 3 - ``changes/.assign_mtwcs.rst`` - ``changes/.mrs_imatch.rst`` - ``changes/.tweakreg.rst`` - ``changes/.skymatch.rst`` - ``changes/.exp_to_source.rst`` - ``changes/.outlier_detection.rst`` - ``changes/.tso_photometry.rst`` - ``changes/.stack_refs.rst`` - ``changes/.align_refs.rst`` - ``changes/.klip.rst`` - ``changes/.spectral_leak.rst`` - ``changes/.source_catalog.rst`` - ``changes/.combine_1d.rst`` - ``changes/.ami.rst`` ## other - ``changes/.wfs_combine.rst`` - ``changes/.white_light.rst`` - ``changes/.cube_skymatch.rst`` - ``changes/.engdb_tools.rst`` - ``changes/.guider_cds.rst``
melanieclarke commented 3 weeks ago

Regression tests here: https://github.com/spacetelescope/RegressionTests/actions/runs/11562865273

codecov[bot] commented 3 weeks ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 63.67%. Comparing base (1cb213a) to head (952846a). Report is 2 commits behind head on main.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #8927 +/- ## ========================================== + Coverage 61.92% 63.67% +1.74% ========================================== Files 376 376 Lines 38691 38691 ========================================== + Hits 23961 24638 +677 + Misses 14730 14053 -677 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

melanieclarke commented 3 weeks ago

Regression tests for test_miri_lrs_nod_masterbg show small differences between the truth products I made on my Mac and the test products on Linux. These are very similar to differences between architectures for the reduction of the same products in test_miri_lrs_slit_spec2 and test_miri_lrs_slit_spec3, so I will okify the Linux results and run again.

New run is here: https://github.com/spacetelescope/RegressionTests/actions/runs/11575966848

No failures.