ReadEdge

class lsst.pipe.base.pipeline_graph.ReadEdge(dataset_type_key: NodeKey, task_key: NodeKey, *, storage_class_name: str, connection_name: str, is_calibration: bool, raw_dimensions: frozenset[str], is_prerequisite: bool, component: str | None, defer_query_constraint: bool)

Bases: Edge

Representation of an input connection (including init-inputs and prerequisites) in a pipeline graph.

Parameters:
dataset_type_keyNodeKey

Key for the dataset type node this edge is connected to. This should hold the parent dataset type name for component dataset types.

task_keyNodeKey

Key for the task node this edge is connected to.

storage_class_namestr

Name of the dataset type’s storage class as seen by the task.

connection_namestr

Internal name for the connection as seen by the task.

is_calibrationbool

Whether this dataset type can be included in CALIBRATION collections.

raw_dimensionsfrozenset [ str ]

Raw dimensions from the connection definition.

is_prerequisitebool

Whether this dataset must be present in the data repository prior to QuantumGraph generation.

componentstr or None

Component of the dataset type requested by the task.

defer_query_constraintbool

If True, by default do not include this dataset type’s existence as a constraint on the initial data ID query in QuantumGraph generation.

Notes

When included in an exported networkx graph (e.g. PipelineGraph.make_xgraph), read edges set the following edge attributes:

  • parent_dataset_type_name

  • storage_class_name

  • is_init

  • component

  • is_prerequisite

As with ReadEdge instance attributes, these descriptions of dataset types are those specific to a task, and may differ from the graph’s resolved dataset type or (if PipelineGraph.resolve has not been called) there may not even be a consistent definition of the dataset type.

Attributes Summary

INIT_TO_TASK_NAME

Edge key for the special edge that connects a task init node to the task node itself (for regular edges, this would be the connection name).

dataset_type_name

Complete dataset type name, as seen by the task.

is_init

Whether this dataset is read or written when the task is constructed, not when it is run.

key

Ordered tuple of node keys and connection name that uniquely identifies this edge in a pipeline graph.

nodes

The directed pair of NodeKey instances this edge connects.

parent_dataset_type_name

Name of the parent dataset type.

task_label

Label of the task.

Methods Summary

adapt_dataset_ref(ref)

Transform the graph's definition of a dataset reference (parent dataset type, with the registry or producer's storage class) to the one seen by this task.

adapt_dataset_type(dataset_type)

Transform the graph's definition of a dataset type (parent, with the registry or producer's storage class) to the one seen by this task.

diff(other[, connection_type])

Compare this edge to another one from a possibly-different configuration of the same task label.

Attributes Documentation

INIT_TO_TASK_NAME: ClassVar[str] = 'INIT'

Edge key for the special edge that connects a task init node to the task node itself (for regular edges, this would be the connection name).

dataset_type_name

Complete dataset type name, as seen by the task.

is_init

Whether this dataset is read or written when the task is constructed, not when it is run.

key

Ordered tuple of node keys and connection name that uniquely identifies this edge in a pipeline graph.

nodes
parent_dataset_type_name

Name of the parent dataset type.

All dataset type nodes in a pipeline graph are for parent dataset types; components are represented by additional ReadEdge state.

task_label

Label of the task.

Methods Documentation

adapt_dataset_ref(ref: DatasetRef) DatasetRef

Transform the graph’s definition of a dataset reference (parent dataset type, with the registry or producer’s storage class) to the one seen by this task.

adapt_dataset_type(dataset_type: DatasetType) DatasetType

Transform the graph’s definition of a dataset type (parent, with the registry or producer’s storage class) to the one seen by this task.

diff(other: ReadEdge, connection_type: str = 'connection') list[str]

Compare this edge to another one from a possibly-different configuration of the same task label.

Parameters:
otherEdge

Another edge of the same type to compare to.

connection_typestr

Human-readable name of the connection type of this edge (e.g. “init input”, “output”) for use in returned messages.

Returns:
differenceslist [ str ]

List of string messages describing differences between self and other. Will be empty if self == other or if the only difference is in the task label or connection name (which are not checked). Messages will use ‘A’ to refer to self and ‘B’ to refer to other.