What exactly are `columns` and `refCols` in the policy file / calib mapper?


I’ve been developing a custom obs package for a while now, but even though I seem to have things working, I do not fully understand the definition of columns and refCols in the policy file / calib mapper. I have searched the documentation thoroughly and stared at the code for a while, but am still unclear on this.

Can someone provide a definitive explanation?

Anything to do with mappers is part of the very-soon-to-be-deprecated “Gen2” Butler. I hope never to have to document those items in any more detail because that code will be disappearing :slight_smile: .

For the “Gen3” Butler you should focus on defining your Instrument subclass and metadata translators.


That seems to be the answer to a lot of my questions recently! Thanks though, I will start thinking about switching to Gen3.

I was probably the author that introduced the columns and refCols fields many years ago, and I have to look up the code every time I want to muddle with them. They have something to do with what columns from the registry to look at when finding calibrations. I regret not having documented them, but those were wild early days when it was written, and the code has been due for replacement for a long time. Fortunately, as KT says, the end is truly and finally nigh. I have held off of updating the PFS pipeline for a long time, waiting until Gen3 is actually being used regularly in production operations, and I think that point has been reached. PFS will upgrade to the next stable+supported LSST release that includes the current level of Gen3 functionality. If I was writing a pipeline now, I would start off with Gen3 and completely ignore Gen2.

We have a mostly-complete set of instructions on how to create a new gen3 obs package: How to create a new LSST obs package — LSST Science Pipelines

Please followup if you find anything missing from that guide.

1 Like