LSST Applications  22.0.1,22.0.1+01bcf6a671,22.0.1+046ee49490,22.0.1+05c7de27da,22.0.1+0c6914dbf6,22.0.1+1220d50b50,22.0.1+12fd109e95,22.0.1+1a1dd69893,22.0.1+1c910dc348,22.0.1+1ef34551f5,22.0.1+30170c3d08,22.0.1+39153823fd,22.0.1+611137eacc,22.0.1+771eb1e3e8,22.0.1+94e66cc9ed,22.0.1+9a075d06e2,22.0.1+a5ff6e246e,22.0.1+a7db719c1a,22.0.1+ba0d97e778,22.0.1+bfe1ee9056,22.0.1+c4e1e0358a,22.0.1+cc34b8281e,22.0.1+d640e2c0fa,22.0.1+d72a2e677a,22.0.1+d9a6b571bd,22.0.1+e485e9761b,22.0.1+ebe8d3385e
LSST Data Management Base Package
Public Member Functions | Static Public Attributes | List of all members
lsst.pipe.base.connectionTypes.PrerequisiteInput Class Reference
Inheritance diagram for lsst.pipe.base.connectionTypes.PrerequisiteInput:
lsst.pipe.base.connectionTypes.BaseInput lsst.pipe.base.connectionTypes.DimensionedConnection lsst.pipe.base.connectionTypes.BaseConnection

Public Member Functions

def __post_init__ (self)
 
def makeDatasetType (self, DimensionUniverse universe, Optional[StorageClass] parentStorageClass=None)
 
def __get__ (self, inst, klass)
 

Static Public Attributes

 bool
 
 str
 

Detailed Description

Class used for declaring PipelineTask prerequisite connections

Parameters
----------
name : `str`
    The default name used to identify the dataset type
storageClass : `str`
    The storage class used when (un)/persisting the dataset type
multiple : `bool`
    Indicates if this connection should expect to contain multiple objects
    of the given dataset type
dimensions : iterable of `str`
    The `lsst.daf.butler.Butler` `lsst.daf.butler.Registry` dimensions used
    to identify the dataset type identified by the specified name
deferLoad : `bool`
    Indicates that this dataset type will be loaded as a
    `lsst.daf.butler.DeferredDatasetHandle`. PipelineTasks can use this
    object to load the object at a later time.
lookupFunction: `typing.Callable`, optional
    An optional callable function that will look up PrerequisiteInputs
    using the DatasetType, registry, quantum dataId, and input collections
    passed to it. If no function is specified, the default temporal spatial
    lookup will be used.

Notes
-----
Prerequisite inputs are used for datasets that must exist in the data
repository before a pipeline including this is run; they cannot be produced
by another task in the same pipeline.

In exchange for this limitation, they have a number of advantages relative
to regular `Input` connections:

- The query used to find them then during `QuantumGraph` generation can be
  fully customized by providing a ``lookupFunction``.
- Failed searches for prerequisites during `QuantumGraph` generation will
  usually generate more helpful diagnostics than those for regular `Input`
  connections.
- The default query for prerequisite inputs relates the quantum dimensions
  directly to the dimensions of its dataset type, without being constrained
  by any of the other dimensions in the pipeline.  This allows them to be
  used for temporal calibration lookups (which regular `Input` connections
  cannot do at present) and to work around `QuantumGraph` generation
  limitations involving cases where naive spatial overlap relationships
  between dimensions are not desired (e.g. a task that wants all detectors
  in each visit for which the visit overlaps a tract, not just those where
  that detector+visit combination overlaps the tract).

Definition at line 204 of file connectionTypes.py.

Member Function Documentation

◆ __get__()

def lsst.pipe.base.connectionTypes.BaseConnection.__get__ (   self,
  inst,
  klass 
)
inherited
Descriptor method

This is a method used to turn a connection into a descriptor.
When a connection is added to a connection class, it is a class level
variable. This method makes accessing this connection, on the
instance of the connection class owning this connection, return a
result specialized for that instance. In the case of connections
this specifically means names specified in a config instance will
be visible instead of the default names for the connection.

Definition at line 63 of file connectionTypes.py.

63  def __get__(self, inst, klass):
64  """Descriptor method
65 
66  This is a method used to turn a connection into a descriptor.
67  When a connection is added to a connection class, it is a class level
68  variable. This method makes accessing this connection, on the
69  instance of the connection class owning this connection, return a
70  result specialized for that instance. In the case of connections
71  this specifically means names specified in a config instance will
72  be visible instead of the default names for the connection.
73  """
74  # If inst is None, this is being accessed by the class and not an
75  # instance, return this connection itself
76  if inst is None:
77  return self
78  # If no object cache exists, create one to track the instances this
79  # connection has been accessed by
80  if not hasattr(inst, '_connectionCache'):
81  object.__setattr__(inst, '_connectionCache', {})
82  # Look up an existing cached instance
83  idSelf = id(self)
84  if idSelf in inst._connectionCache:
85  return inst._connectionCache[idSelf]
86  # Accumulate the parameters that define this connection
87  params = {}
88  for field in dataclasses.fields(self):
89  params[field.name] = getattr(self, field.name)
90  # Get the name override defined by the instance of the connection class
91  params['name'] = inst._nameOverrides[self.varName]
92  # Return a new instance of this connection specialized with the
93  # information provided by the connection class instance
94  return inst._connectionCache.setdefault(idSelf, self.__class__(**params))
95 
table::Key< int > id
Definition: Detector.cc:162

◆ __post_init__()

def lsst.pipe.base.connectionTypes.DimensionedConnection.__post_init__ (   self)
inherited

Definition at line 144 of file connectionTypes.py.

144  def __post_init__(self):
145  if isinstance(self.dimensions, str):
146  raise TypeError("Dimensions must be iterable of dimensions, got str,"
147  "possibly omitted trailing comma")
148  if not isinstance(self.dimensions, typing.Iterable):
149  raise TypeError("Dimensions must be iterable of dimensions")
150 

◆ makeDatasetType()

def lsst.pipe.base.connectionTypes.DimensionedConnection.makeDatasetType (   self,
DimensionUniverse  universe,
Optional[StorageClass]   parentStorageClass = None 
)
inherited
Construct a true `DatasetType` instance with normalized dimensions.

Parameters
----------
universe : `lsst.daf.butler.DimensionUniverse`
    Set of all known dimensions to be used to normalize the dimension
    names specified in config.
parentStorageClass : `lsst.daf.butler.StorageClass`, optional
    Parent storage class for component datasets; `None` otherwise.

Returns
-------
datasetType : `DatasetType`
    The `DatasetType` defined by this connection.

Reimplemented from lsst.pipe.base.connectionTypes.BaseConnection.

Definition at line 151 of file connectionTypes.py.

152  parentStorageClass: Optional[StorageClass] = None):
153  """Construct a true `DatasetType` instance with normalized dimensions.
154 
155  Parameters
156  ----------
157  universe : `lsst.daf.butler.DimensionUniverse`
158  Set of all known dimensions to be used to normalize the dimension
159  names specified in config.
160  parentStorageClass : `lsst.daf.butler.StorageClass`, optional
161  Parent storage class for component datasets; `None` otherwise.
162 
163  Returns
164  -------
165  datasetType : `DatasetType`
166  The `DatasetType` defined by this connection.
167  """
168  return DatasetType(self.name,
169  universe.extract(self.dimensions),
170  self.storageClass, isCalibration=self.isCalibration,
171  parentStorageClass=parentStorageClass)
172 
173 
174 @dataclasses.dataclass(frozen=True)

Member Data Documentation

◆ bool

lsst.pipe.base.connectionTypes.BaseInput.bool
staticinherited

Definition at line 195 of file connectionTypes.py.

◆ str

lsst.pipe.base.connectionTypes.BaseConnection.str
staticinherited

Definition at line 60 of file connectionTypes.py.


The documentation for this class was generated from the following file: