StepDefinitions

class lsst.pipe.base.pipeline_graph.StepDefinitions(universe: DimensionUniverse | None = None, dimensions_by_label: dict[str, frozenset[str]] | None = None, verified: bool = False)

Bases: object

A collection of the ‘steps’ defined in a pipeline graph.

Steps are special task subsets that must be executed separately. They may also be associated with “sharding dimensions”, which are the dimensions of data IDs that are independent within the step: splitting up a quantum graph along a step’s sharding dimensions produces groups that can be safely executed independently.

Parameters:
universelsst.daf.butler.DimensionUniverse, optional

Definitions for data dimensions.

dimensions_by_labeldict [ str, frozenset [ str ] ], optional

Sharding dimensions for step subsets, as dictionary with task labels as keys and sets of dimension names as values.

verifiedbool, optional

Whether the step definitions have been checked since the last time they or some other relevant aspect of the pipeline graph was changed.

Notes

This class only models collections.abc.Collection (it is iterable, sized, and can be used with in tests on label names), but it also supports append, remove, and reset for modifications.

Attributes Summary

verified

Whether the step definitions have been checked since the last time they or some other relevant aspect of the pipeline graph was changed.

Methods Summary

append(label[, dimensions])

Append a new step.

assign(labels)

Set all step definitions to the given labels.

clear()

Remove all step definitions.

copy()

Create a new instance that does not share any mutable state with this one.

get_dimensions(label)

Return the dimensions that can be used to split up a step's quanta into independent groups.

remove(label)

Remove a named step.

set_dimensions(label, dimensions)

Set the dimensions that can be used to split up a step's quanta into independent groups.

Attributes Documentation

verified

Whether the step definitions have been checked since the last time they or some other relevant aspect of the pipeline graph was changed.

This is always True if there are no step definitions.

Methods Documentation

append(label: str, dimensions: Iterable[str] | DimensionGroup = ()) None

Append a new step.

Parameters:
labelstr

Task subset label for the new step.

dimensionsIterable [ str ] or DimensionGroup, optional

Dimensions that can be used to split up the step’s quanta into independent groups.

assign(labels: Iterable[str]) None

Set all step definitions to the given labels.

Parameters:
labelsIterable [ str ]

Subset labels to use as the new steps.

Notes

Sharding dimensions are preserved for any label that was previously a step. If labels is a StepDefinitions` instance, sharding dimensions from that instance will be used.

clear() None

Remove all step definitions.

copy() StepDefinitions

Create a new instance that does not share any mutable state with this one.

get_dimensions(label: str) DimensionGroup

Return the dimensions that can be used to split up a step’s quanta into independent groups.

Parameters:
labelstr

Label for the step.

Returns:
dimensionslsst.daf.butler.DimensionGroup

Dimensions that can be used to split up this step’s quanta.

remove(label: str) None

Remove a named step.

Parameters:
labelstr

Task subset label to remove from the list of steps.

Notes

This does not remove the task subset itself; it just “demotes” it to a non-step subset.

set_dimensions(label: str, dimensions: Iterable[str] | DimensionGroup) None

Set the dimensions that can be used to split up a step’s quanta into independent groups.

Parameters:
labelstr

Label for the step.

dimensionslsst.daf.butler.DimensionGroup

Dimensions that can be used to split up this step’s quanta.