Skip to content
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

DM-26629: update to use calibration collections #54

Merged
merged 3 commits into from Sep 26, 2020
Merged

Conversation

TallJimbo
Copy link
Member

No description provided.

This removes the need for all "*Proposal" dataset types, and massively
simplifies certification, because that's now a registry-only operation
that doesn't involve any other I/O.
These tasks are trying to do something ill-defined according to our
data model: get a camera with no temporal information.  This workaround
should work for now, but we need a better solution, and I'm not sure if
that's a change to the tasks or a change to the data model.
Copy link
Contributor

@czwa czwa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My comment on _lookupStaticCalibration.py is I think just me not fully understanding the butler level changes.

inputCollection=args.inputCollection,
outputCollection=args.outputCollection)
outputCollection=args.outputCollection,
lastRunOnly=not args.lastRunOnly)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a bit confusing, but I see it's because of the user-facing option and the CertifyCalibration option having different meanings.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You were right to be confused; it's wrong, and it's how I broke this script (I added the command-line option after I tested ci_cpp_gen3 with the value defaulted to True in the task). Fixing it now.

surprising by users (but will usually go unnoticed because the dataset
returned _is_ actually in those given input colllections, too). It may
stop working entirely once we have data repositories with multiple
calibration collections; a better workaround or a more principled change
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This implies that multiple calibration collections are not allowed? And that writeCuratedCalibrations puts those calibrations into a RUN collection? Does that mean they need to be certified into the calibration collection?
Typo on line 5: "colllections".

Copy link
Member Author

@TallJimbo TallJimbo Sep 25, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Multiple calibration collections are allowed, but we lack both naming conventions and a good workflow for populating more than one with curated calibrations, and this function essentially relies on those inadequate naming conventions.

More precisely, writeCuratedCalibrations first puts to multiple RUN collections (one for each calibDate + one for all unbounded datasets) and then certifies them all into one CALIBRATION collection. It has a suffix parameter for the collection names, to make it possible to write to a totally distinct suite of collections each time it is invoked, but nothing changes the suffix right now (see the comment from Tim that I pinged you on in obs_base). This workaround will be fine as long writeCuratedCalibrations has been invoked with no suffix argument on the repo, and it will do the right thing as long as this is actually the version of the curated calibrations the user wants - it'll pick up the version created with no suffix regardless.

And, of course, it will only work as long as the camera's validity range actually is unbounded.

@timj
Copy link
Member

timj commented Sep 25, 2020

The certifyCalibration script does not match the current approach for scripts. It should be minimalist (a couple of lines) and have the actual content inside the module (conventially in lsst.cp.cpp.script or somewhere) where you can pull the argument parser out in a separate function so that the sphinx documentation can include it. I realize that it was already wrong before this ticket.

@TallJimbo TallJimbo merged commit a9337b4 into master Sep 26, 2020
@TallJimbo TallJimbo deleted the tickets/DM-26629 branch September 26, 2020 05:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants