Belle II Software  release-06-01-15
SeqAlgorithmsRunner Class Reference
Inheritance diagram for SeqAlgorithmsRunner:
Collaboration diagram for SeqAlgorithmsRunner:

Public Member Functions

def __init__ (self, name)
 
def run (self, iov, iteration)
 
def run (self)
 

Public Attributes

 final_state
 
 name
 The name of this runner instance.
 
 input_files
 All of the output files made by the collector job and recovered by the "output_patterns".
 
 database_chain
 User set databases, can be used to apply your own constants and global tags.
 
 dependent_databases
 List of local databases created by previous CAF calibrations/iterations.
 
 output_database_dir
 The directory of the local database we use to store algorithm payloads from this execution.
 
 results
 Algorithm results from each algorithm we execute.
 
 algorithms
 The list of algorithms that this runner executes.
 
 output_dir
 Output directory of these algorithms, for logging mostly.
 

Static Public Attributes

string FAILED = "FAILED"
 
string COMPLETED = "COMPLETED"
 

Static Private Member Functions

def _run_strategy (strategy, iov, iteration, queue)
 

Detailed Description

 

Definition at line 93 of file runners.py.

Constructor & Destructor Documentation

◆ __init__()

def __init__ (   self,
  name 
)
 

Reimplemented from AlgorithmsRunner.

Definition at line 97 of file runners.py.

Member Function Documentation

◆ _run_strategy()

def _run_strategy (   strategy,
  iov,
  iteration,
  queue 
)
staticprivate
Runs the AlgorithmStrategy sends back the results

Definition at line 186 of file runners.py.

◆ run() [1/2]

def run (   self)
inherited
Abstract Base Class for Runner type object.
 

Definition at line 23 of file runners.py.

◆ run() [2/2]

def run (   self,
  iov,
  iteration 
)
 

Definition at line 102 of file runners.py.

Member Data Documentation

◆ FAILED

string FAILED = "FAILED"
staticinherited
Base class for `AlgorithmsRunner` classes. Defines the necessary information that will be provided to every
`AlgorithmsRunner` used by the `framework.CAF`

An `AlgorithmsRunner` will be given a list of `framework.Algorithm` objects defined during the setup of a
`framework.Calibration` instance. The `AlgorithmsRunner` describes how to run each of the `strategies.AlgorithmStrategy`
objects. As an example, assume that a single `framework.Calibration` was given and list of two `framework.Algorithm`
instances to run.

In this example the chosen :py:meth:`AlgorithmsRunner.run()` is simple and just loops over the list of `caf.framework.Algorithm`
calling each one's :py:meth:`caf.strategies.AlgorithmStrategy.run()` methods in order.
Thereby generating a localdb with the only communication between the `strategies.AlgorithmStrategy` instances coming from the
database payloads being available from one algorithm to the next.

But you could imagine a more complex situation. The `AlgorithmsRunner` might take the first `framework.Algorithm` and
call its `AlgorithmStrategy.run` for only the first (exp,run) in the collected data. Then it might not commit the payloads
to a localdb but instead pass some calculated values to the next algorithm to run on the same IoV. Then it might go back
and re-run the first AlgorithmStrategy with new information and commit payloads this time. Then move onto the next IoV.

Hopefully you can see that while the default provided `AlgorithmsRunner` and `AlgorithmStrategy` classes should be good for
most situations, you have lot of freedom to define your own strategy if needed. By following the basic requirements for the
interface to the `framework.CAF` you can easily plugin a different special case, or mix and match a custom class with
default CAF ones.

The run(self) method should be defined for every derived `AlgorithmsRunner`. It will be called once and only once for each
iteration of (collector -> algorithm).

Input files are automatically given via the `framework.Calibration.output_patterns` which constructs
a list of all files in the collector output directories that match the output_patterns. If you have multiple types of
output data it is your job to filter through the input files and assign them correctly.

A list of local database paths are given to the `AlgorithmsRunner` based on the `framework.Calibration` dependencies and
any overall database chain given to the Calibration before running.
By default you can call the "setup_algorithm" transition of the `caf.state_machines.AlgorithmMachine` to automatically
set a database chain based on this list.
But you have freedom to not call this at all in `run`, or to implement a different method to deal with this.

Definition at line 67 of file runners.py.


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