PipelineTask¶
- class lsst.pipe.base.PipelineTask(*, config: PipelineTaskConfig | None = None, log: logging.Logger | LsstLogAdapter | None = None, initInputs: dict[str, Any] | None = None, **kwargs: Any)¶
- Bases: - Task- Base class for all pipeline tasks. - This is an abstract base class for PipelineTasks which represents an algorithm executed by framework(s) on data which comes from data butler, resulting data is also stored in a data butler. - PipelineTask inherits from a - Taskand uses the same configuration mechanism based on lsst.pex.config.- PipelineTaskclasses also have a- PipelineTaskConnectionsclass associated with their config which defines all of the IO a- PipelineTaskwill need to do. PipelineTask sub-class typically implements- run()method which receives Python-domain data objects and returns- lsst.pipe.base.Structobject with resulting data.- run()method is not supposed to perform any I/O, it operates entirely on in-memory objects.- runQuantum()is the method (can be re-implemented in sub-class) where all necessary I/O is performed, it reads all input data from data butler into memory, calls- run()method with that data, examines returned- Structobject and saves some or all of that data back to data butler.- runQuantum()method receives a- QuantumContextinstance to facilitate I/O, a- InputQuantizedConnectioninstance which defines all input- lsst.daf.butler.DatasetRef, and a- OutputQuantizedConnectioninstance which defines all the output- lsst.daf.butler.DatasetReffor a single invocation of PipelineTask.- Subclasses must be constructable with exactly the arguments taken by the PipelineTask base class constructor, but may support other signatures as well. - Parameters:
- configConfig, optional
- Configuration for this task (an instance of - self.ConfigClass, which is a task-specific subclass of- PipelineTaskConfig). If not specified then it defaults to- self.ConfigClass().
- loglogging.Logger, optional
- Logger instance whose name is used as a log name prefix, or - Nonefor no prefix.
- initInputsdict, optional
- A dictionary of objects needed to construct this PipelineTask, with keys matching the keys of the dictionary returned by - getInitInputDatasetTypesand values equivalent to what would be obtained by calling- getwith those DatasetTypes and no data IDs. While it is optional for the base class, subclasses are permitted to require this argument.
- **kwargsAny
- Arbitrary parameters, passed to base class constructor. 
 
- config
- Attributes:
- canMultiprocessbool, True by default (class attribute)
- This class attribute is checked by execution framework, sub-classes can set it to - Falsein case task does not support multiprocessing.
 
 - Attributes Summary - Methods Summary - Empty (clear) the metadata for this Task and all sub-Tasks. - Get metadata for all tasks. - Get the task name as a hierarchical name including parent task names. - getName()- Get the name of the task. - Get a dictionary of all tasks as a shallow copy. - makeField(doc)- Make a - lsst.pex.config.ConfigurableFieldfor this task.- makeSubtask(name, **keyArgs)- Create a subtask as a new instance as the - nameattribute of this task.- run(**kwargs)- Run task algorithm on in-memory data. - runQuantum(butlerQC, inputRefs, outputRefs)- Do butler IO and transform to provide in memory objects for tasks - runmethod.- timer(name[, logLevel])- Context manager to log performance data for an arbitrary block of code. - Attributes Documentation - Methods Documentation - getFullMetadata() TaskMetadata¶
- Get metadata for all tasks. - Returns:
- metadataTaskMetadata
- The keys are the full task name. Values are metadata for the top-level task and all subtasks, sub-subtasks, etc. 
 
- metadata
 - Notes - The returned metadata includes timing information (if - @timer.timeMethodis used) and any metadata set by the task. The name of each item consists of the full task name with- .replaced by- :, followed by- .and the name of the item, e.g.:- topLevelTaskName:subtaskName:subsubtaskName.itemName - using - :in the full task name disambiguates the rare situation that a task has a subtask and a metadata item with the same name.
 - getFullName() str¶
- Get the task name as a hierarchical name including parent task names. - Returns:
- fullNamestr
- The full name consists of the name of the parent task and each subtask separated by periods. For example: - The full name of top-level task “top” is simply “top”. 
- The full name of subtask “sub” of top-level task “top” is “top.sub”. 
- The full name of subtask “sub2” of subtask “sub” of top-level task “top” is “top.sub.sub2”. 
 
 
- fullName
 
 - getName() str¶
- Get the name of the task. - Returns:
- taskNamestr
- Name of the task. 
 
- taskName
 - See also - getFullName
- Get the full name of the task. 
 
 - getTaskDict() dict[str, weakref.ReferenceType[lsst.pipe.base.task.Task]]¶
- Get a dictionary of all tasks as a shallow copy. - Returns:
- taskDictdict
- Dictionary containing full task name: task object for the top-level task and all subtasks, sub-subtasks, etc. 
 
- taskDict
 
 - classmethod makeField(doc: str) ConfigurableField¶
- Make a - lsst.pex.config.ConfigurableFieldfor this task.- Parameters:
- docstr
- Help text for the field. 
 
- doc
- Returns:
- configurableFieldlsst.pex.config.ConfigurableField
- A - ConfigurableFieldfor this task.
 
- configurableField
 - Examples - Provides a convenient way to specify this task is a subtask of another task. - Here is an example of use: - class OtherTaskConfig(lsst.pex.config.Config): aSubtask = ATaskClass.makeField("brief description of task") 
 - makeSubtask(name: str, **keyArgs: Any) None¶
- Create a subtask as a new instance as the - nameattribute of this task.- Parameters:
- namestr
- Brief name of the subtask. 
- **keyArgs
- Extra keyword arguments used to construct the task. The following arguments are automatically provided and cannot be overridden: - config.
- parentTask.
 
 
- name
 - Notes - The subtask must be defined by - Task.config.name, an instance of- ConfigurableFieldor- RegistryField.
 - run(**kwargs: Any) Struct¶
- Run task algorithm on in-memory data. - This method should be implemented in a subclass. This method will receive keyword-only arguments whose names will be the same as names of connection fields describing input dataset types. Argument values will be data objects retrieved from data butler. If a dataset type is configured with - multiplefield set to- Truethen the argument value will be a list of objects, otherwise it will be a single object.- If the task needs to know its input or output DataIds then it also has to override the - runQuantummethod.- This method should return a - Structwhose attributes share the same name as the connection fields describing output dataset types.- Parameters:
- **kwargsAny
- Arbitrary parameters accepted by subclasses. 
 
- **kwargs
- Returns:
- structStruct
- Struct with attribute names corresponding to output connection fields. 
 
- struct
 - Examples - Typical implementation of this method may look like: - def run(self, *, input, calib): # "input", "calib", and "output" are the names of the # connection fields. # Assuming that input/calib datasets are `scalar` they are # simple objects, do something with inputs and calibs, produce # output image. image = self.makeImage(input, calib) # If output dataset is `scalar` then return object, not list return Struct(output=image) 
 - runQuantum(butlerQC: QuantumContext, inputRefs: InputQuantizedConnection, outputRefs: OutputQuantizedConnection) None¶
- Do butler IO and transform to provide in memory objects for tasks - runmethod.- Parameters:
- butlerQCQuantumContext
- A butler which is specialized to operate in the context of a - lsst.daf.butler.Quantum.
- inputRefsInputQuantizedConnection
- Datastructure whose attribute names are the names that identify connections defined in corresponding - PipelineTaskConnectionsclass. The values of these attributes are the- lsst.daf.butler.DatasetRefobjects associated with the defined input/prerequisite connections.
- outputRefsOutputQuantizedConnection
- Datastructure whose attribute names are the names that identify connections defined in corresponding - PipelineTaskConnectionsclass. The values of these attributes are the- lsst.daf.butler.DatasetRefobjects associated with the defined output connections.
 
- butlerQC