I am using weekly w.2022.45
of the science pipelines. I’d like to remove an exposure dimension record from the Butler registry. I am ingesting a second version of a DECam fits file where some of the metadata (at the least exposure timespan) has changed, but exposure number is the same. This produces a conflict when ingesting with butler ingest-raws
:
lsst.ingest WARNING: Exposure DECam:ct4m20140331t051219 could not be registered: Conflict in sync for table exposure on column(s) timespan: Timespan(begin=astropy.time.Time('2014-03-31 05:12:54.091401', scale='tai', format='iso'), end=astropy.time.Time('2014-03-31 05:14:24.091401', scale='tai', format='iso')) != Timespan(begin=astropy.time.Time('2014-03-31 05:12:54.091401', scale='tai', format='iso'), end=astropy.time.Time('2014-03-31 05:15:18.000000', scale='tai', format='iso')).
I can’t find a good way to remove a dimension record from the registry, no butler remove-dimension-record
or in Python no butler.registry.removeDimensionRecord()
. How should I go about this?
As an aside, I am finding the ingestion code extremely opaque to find and search though for relevant configs that would set e.g. update=True
in butler.Registry.syncDimensionData that I think would solve my issue.
Long log hints I should start looking at line 1182 of ingest.py
:
WARNING 2022-11-21T13:54:40.498-08:00 lsst.ingest ()(ingest.py:1182) - Exposure DECam:ct4m20140331t051219 could not be registered: Conflict in sync for table exposure on column(s) timespan: Timespan(begin=astropy.time.Time('2014-03-31 05:12:54.091401', scale='tai', format='iso'), end=astropy.time.Time('2014-03-31 05:14:24.091401', scale='tai', format='iso')) != Timespan(begin=astropy.time.Time('2014-03-31 05:12:54.091401', scale='tai', format='iso'), end=astropy.time.Time('2014-03-31 05:15:18.000000', scale='tai', format='iso')).
But I can’t find a relevant ingest.py
(or lsst.ingest package) on GitHub. Additionally, I can’t find any source code for DecamParseTask
(github and docs) which I was hoping would give me insight into how the ingestion code is working.
Does anyone have tips or links with a high level overview of how fits ingestion (through dataset registration with the registry) is done in the science pipelines?
Thanks.