ctwrap Handler¶
The handler module defines a SimulationHandler object
that handles batch jobs of wrapped Simulation module runs.
Usage¶
SimulationHandler objects run batch jobs based on YAML configuration
files. A simple example for a YAML configuration is:
strategy: # parameter variation
  sequence-1:
    spam: [0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8]
  sequence-2:
    eggs: [1, 2, 3]
defaults: # default parameters
  spam: 0.5
  eggs: 1
output:
  format: h5
In the following, a SimulationHandler object is used to run
batch simulations of a Simulation module defined in my_test.py,
where the run method takes two arguments (spam and eggs).
Assuming that the YAML configuration file my_test.yaml corresponds to the
YAML block above, the simulation strategy sequence-2 is loaded by issuing
import ctwrap as cw
seq = cw.SimulationHandler('my_test.yaml', strategy='sequence-2')
tasks = seq.tasks # dictionary with entries 'eggs_1', 'eggs_2', 'eggs_3'
Once loaded, tasks are passed to a Simulation object wrapping my_test.py:
sim = cw.Simulation.from_module('my_test.py')
seq.configuration('eggs_2) # return task configuration
seq.run_task(sim, 'eggs_2') # run a single simulation task
seq.run_serial(sim) # run all tasks in series
seq.run_parallel(sim) # run all tasks as parallel processes
Class Definition¶
- 
class 
ctwrap.handler.SimulationHandler(strategy=None, defaults=None, output=None, verbosity=0)[source]¶ Class handling parameter variations. Class adds methods to switch between multiple configurations.
Note
SimulationHandlerobjects should be instantiated using factory methodsfrom_yaml()orfrom_dict().- Parameters
 strategy (
Optional[Strategy]) – Batch simulation strategydefaults (
Optional[Dict[str,Any]]) – Dictionary containing simulation defaultsoutput (
Optional[Dict[str,Any]]) – Dictionary specifying file outputverbosity (
Optional[int]) – Verbosity level
- 
classmethod 
from_yaml(yaml_file, strategy=None, output_name=None, database=None, **kwargs)[source]¶ Alternate constructor using YAML file as input.
The
from_yaml()method is intended as the main route for the creation ofSimulationHandlerobjects.- Parameters
 yaml_file (
str) – YAML file located in current folder, database (argument), or ctwrap’s preconfigured YAML database (yamlfolder)strategy (
Optional[str]) – Batch job strategy name (only needed if more than one are defined)output_name (
Optional[str]) – Output name (overrides YAML configuration)database (
Optional[str]) – File database (both YAML configuration and output)**kwargs – Dependent on implementation
- 
classmethod 
from_dict(content, strategy=None, output_name=None, output_path=None, **kwargs)[source]¶ Alternate constructor using a dictionary as input.
- Parameters
 content (
Dict[str,Any]) – Dictionary from YAML inputstrategy (
Optional[str]) – Batch job strategy name (only needed if more than one are defined)output_name (
Optional[str]) – Output name (overrides YAML configuration)output_path (
Optional[str]) – Output path (overrides YAML configuration)**kwargs – Dependent on implementation
- Return type
 Union[SimulationHandler,Dict[str,Any],str]
- 
configuration(task)[source]¶ Return configuration.
- Parameters
 task (
str) – Task to do- Returns
 updated configuration dictionary based on the task
- 
property 
verbose¶ verbosity
- 
property 
output_name¶ return output name
- 
property 
tasks¶ tasks defined in terms of the variation entry and values
- 
run_task(sim, task, **kwargs)[source]¶ Function to run a specific task.
The
run_task()method calls the module’s run method and saves the resulting output and metadata. A simple example is:# Runs the task `sleep_0.4` using `sim` object sh.run_task(sim, 'sleep_0.4' )
- Parameters
 sim (
Simulation) – instance ofSimulationclasstask (
str) – task to do**kwargs – dependent on implementation
- 
run_serial(sim, verbosity=None, **kwargs)[source]¶ Run variation in series.
The
run_serial()method runs all the strategy entries in the input file in serial and also saves metadata. A simple usage example is:# Runs all the variations serially sh.run_serial(sim)
- Parameters
 sim (
Simulation) – instance ofSimulationclassverbosity (
Optional[int]) – verbosity**kwargs – dependent on implementation
- Return type
 bool- Returns
 True when task is completed
- 
run_parallel(sim, number_of_processes=None, verbosity=None, **kwargs)[source]¶ Run variation using multiprocessing.
The
run_parallel()method runs all the strategy entries in the input file in parallel using python multiprocessing. and also saves metadata.# Runs all the variations in parallel sh.run_parallel(sim) # run
- Parameters
 sim (
Simulation) – instance of Simulation classnumber_of_processes (
Optional[int]) – number of processesverbosity (
Optional[int]) – verbosity level**kwargs – dependent on implementation
- Return type
 bool- Returns
 True when task is completed