-
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
JP-3773: Store logs from calibration pipeline in datamodel #8857
base: main
Are you sure you want to change the base?
Conversation
c7cf01a
to
51837d1
Compare
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #8857 +/- ##
==========================================
+ Coverage 61.79% 61.81% +0.01%
==========================================
Files 377 377
Lines 38834 38849 +15
==========================================
+ Hits 23999 24015 +16
+ Misses 14835 14834 -1 ☔ View full report in Codecov by Sentry. |
These logs appear to include all log messages regardless of level, e.g.
This may be caused by the log setting that appears at the top of most jwst code files, but perhaps occurs in step |
I think this PR could benefit from some unit tests for the new behavior and documentation on what is contained in Looking at this PR (as it currently stands), Some questions I have are:
One issue I ran into was, if I run I'm trying to think of what a "minimally viable" version of this feature needs. I think what is in this PR is sufficient (with the known issues above) but tests and docs seem worthwhile. One final question, does it make sense to have this be "opt-in" for now perhaps adding a "save_cal_logs" to the spec and having it default to "False"? That way:
|
if hasattr(result, 'cal_logs'): | ||
tmpdict = result.cal_logs.instance | ||
else: | ||
tmpdict = dict() | ||
tmpdict[self.class_alias] = '\n'.join(self._log_records) | ||
result.cal_logs = tmpdict |
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.
if hasattr(result, 'cal_logs'): | |
tmpdict = result.cal_logs.instance | |
else: | |
tmpdict = dict() | |
tmpdict[self.class_alias] = '\n'.join(self._log_records) | |
result.cal_logs = tmpdict | |
if not hasattr(result, 'cal_logs'): | |
result.cal_logs = {} | |
setattr(result.cal_logs, self.class_alias, self._log_records) |
Some code golf and switching the cal_log
to a list of strings.
if hasattr(result, 'cal_logs'): | ||
tmpdict = result.cal_logs.instance | ||
else: | ||
tmpdict = dict() | ||
tmpdict[self.class_alias] = '\n'.join(self._log_records) | ||
|
||
for _, step in self.step_defs.items(): | ||
if step.class_alias in tmpdict.keys(): | ||
del tmpdict[step.class_alias] | ||
result.cal_logs = tmpdict |
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.
if hasattr(result, 'cal_logs'): | |
tmpdict = result.cal_logs.instance | |
else: | |
tmpdict = dict() | |
tmpdict[self.class_alias] = '\n'.join(self._log_records) | |
for _, step in self.step_defs.items(): | |
if step.class_alias in tmpdict.keys(): | |
del tmpdict[step.class_alias] | |
result.cal_logs = tmpdict | |
if not hasattr(result, 'cal_logs'): | |
result.cal_logs = {} | |
for _, step in self.step_defs.items(): | |
if hasattr(result.cal_logs, step.class_alias): | |
delattr(result.cal_logs, step.class_alias) | |
setattr(result.cal_logs, self.class_alias, self._log_records) |
Also switching cal_logs
to a list of strings and removing tmpdict
.
Resolves JP-3773
Closes #8855
This PR adds the log records during processing to a datamodel attribute
model.cal_logs
. This attribute is a dictionary, with keys equal to steps and/or pipelines applied to the data, and values associated with those keys equal to the log output.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