diff --git a/doc/versionHistory.rst b/doc/versionHistory.rst index 19decac..a5aedf7 100644 --- a/doc/versionHistory.rst +++ b/doc/versionHistory.rst @@ -4,6 +4,15 @@ Version History ################## +.. _lsst.ts.donut.viz-1.1.1: + +------------- +1.1.1 +------------- + +* Add deferQueryConstraint=True to input connections that have no incoming data from an intrafocal DataId. +* Add dummyExposureJoiner to get ``exposure`` dimension into quantum graph generation to relate visit and group. + .. _lsst.ts.donut.viz-1.1.0: ------------- @@ -20,4 +29,4 @@ Version History 1.0.0 ------------- -* First official release of the donut_viz package \ No newline at end of file +* First official release of the donut_viz package diff --git a/python/lsst/donut/viz/aggregate_visit.py b/python/lsst/donut/viz/aggregate_visit.py index 8148409..0e4ef2c 100644 --- a/python/lsst/donut/viz/aggregate_visit.py +++ b/python/lsst/donut/viz/aggregate_visit.py @@ -38,6 +38,7 @@ class AggregateZernikeTablesTaskConnections( storageClass="AstropyQTable", name="zernikes", multiple=True, + deferGraphConstraint=True, ) camera = ct.PrerequisiteInput( name="camera", @@ -163,6 +164,7 @@ class AggregateDonutTablesTaskConnections( storageClass="AstropyQTable", name="donutQualityTable", multiple=True, + deferGraphConstraint=True, ) camera = ct.PrerequisiteInput( name="camera", @@ -178,6 +180,18 @@ class AggregateDonutTablesTaskConnections( name="aggregateDonutTable", multiple=True, ) + dummyExposureJoiner = ct.Input( + name="raw", + doc=( + "A dummy connection (datasets are never actually loaded) " + "that adds the 'exposure' dimension to the QG generation query " + "in order to relate 'visit' and 'group'." + ), + dimensions=("exposure", "detector"), + storageClass="Exposure", + deferLoad=True, + multiple=True, + ) def __init__(self, *, config=None): super().__init__(config=config) @@ -396,18 +410,21 @@ class AggregateAOSVisitTableTaskConnections( dimensions=("visit", "instrument"), storageClass="AstropyQTable", name="aggregateDonutTable", + deferGraphConstraint=True, ) aggregateZernikesRaw = ct.Input( doc="Visit-level table of donuts and Zernikes", dimensions=("visit", "instrument"), storageClass="AstropyTable", name="aggregateZernikesRaw", + deferGraphConstraint=True, ) aggregateZernikesAvg = ct.Input( doc="Visit-level table of donuts and Zernikes", dimensions=("visit", "instrument"), storageClass="AstropyTable", name="aggregateZernikesAvg", + deferGraphConstraint=True, ) aggregateAOSRaw = ct.Output( doc="Visit-level table of donuts and Zernikes", @@ -516,6 +533,7 @@ class AggregateDonutStampsTaskConnections( storageClass="StampsBase", name="donutStampsIntra", multiple=True, + deferGraphConstraint=True, ) donutStampsExtra = ct.Input( doc="Extrafocal Donut Stamps", @@ -523,6 +541,7 @@ class AggregateDonutStampsTaskConnections( storageClass="StampsBase", name="donutStampsExtra", multiple=True, + deferGraphConstraint=True, ) qualityTables = ct.Input( doc="Donut quality tables", @@ -530,6 +549,7 @@ class AggregateDonutStampsTaskConnections( storageClass="AstropyQTable", name="donutQualityTable", multiple=True, + deferGraphConstraint=True, ) donutStampsIntraVisit = ct.Output( doc="Intrafocal Donut Stamps",