SingleQuantumExecutor¶
-
class
lsst.ctrl.mpexec.SingleQuantumExecutor(taskFactory, skipExisting=False, clobberPartialOutputs=False, enableLsstDebug=False)¶ Bases:
lsst.ctrl.mpexec.QuantumExecutorExecutor class which runs one Quantum at a time.
- Parameters
- butler
Butler Data butler.
- taskFactory
TaskFactory Instance of a task factory.
- skipExisting
bool, optional If True then quanta with all existing outputs are not executed.
- clobberPartialOutputs
bool, optional If True then delete any partial outputs from quantum execution. If complete outputs exists then exception is raise if
skipExistingis False.- enableLsstDebug
bool, optional Enable debugging with
lsstDebugfacility for a task.
- butler
Methods Summary
checkExistingOutputs(quantum, butler, taskDef)Decide whether this quantum needs to be executed.
execute(taskDef, quantum, butler)Execute single quantum.
initGlobals(quantum, butler)Initialize global state needed for task execution.
makeTask(taskClass, config, butler)Make new task instance.
runQuantum(task, quantum, taskDef, butler)Execute task on a single quantum.
setupLogging(taskDef, quantum)Configure logging system for execution of this task.
updatedQuantumInputs(quantum, butler)Update quantum with extra information, returns a new updated Quantum.
Methods Documentation
-
checkExistingOutputs(quantum, butler, taskDef)¶ Decide whether this quantum needs to be executed.
If only partial outputs exist then they are removed if
clobberPartialOutputsis True, otherwise an exception is raised.- Parameters
- Returns
- exist
bool True if all quantum’s outputs exist in a collection and
skipExistingis True, False otherwise.
- exist
- Raises
- RuntimeError
Raised if some outputs exist and some not.
-
execute(taskDef, quantum, butler)¶ Execute single quantum.
- Parameters
Notes
Any exception raised by the task or code that wraps task execution is propagated to the caller of this method.
-
initGlobals(quantum, butler)¶ Initialize global state needed for task execution.
Notes
There is an issue with initializing filters singleton which is done by instrument, to avoid requiring tasks to do it in runQuantum() we do it here when any dataId has an instrument dimension. Also for now we only allow single instrument, verify that all instrument names in all dataIds are identical.
This will need revision when filter singleton disappears.
-
makeTask(taskClass, config, butler)¶ Make new task instance.
- Parameters
- taskClass
type Sub-class of
PipelineTask.- config
PipelineTaskConfig Configuration object for this task
- taskClass
- Returns
- task
PipelineTask Instance of
taskClasstype.- butler
Butler Data butler.
- task
-
runQuantum(task, quantum, taskDef, butler)¶ Execute task on a single quantum.
- Parameters
- task
PipelineTask Task object.
- quantum
Quantum Single Quantum instance.
- taskDef
TaskDef Task definition structure.
- butler
Butler Data butler.
- task
-
setupLogging(taskDef, quantum)¶ Configure logging system for execution of this task.
Ths method can setup logging to attach task- or quantum-specific information to log messages. Potentially this can take into account some info from task configuration as well.
- Parameters
- taskDef
lsst.pipe.base.TaskDef The task definition.
- quantum
Quantum Single Quantum instance.
- taskDef
-
updatedQuantumInputs(quantum, butler)¶ Update quantum with extra information, returns a new updated Quantum.
Some methods may require input DatasetRefs to have non-None
dataset_id, but in case of intermediate dataset it may not be filled during QuantumGraph construction. This method will retrieve missing info from registry.