Source code for oasislmf.computation.run.generate_losses


__all__ = [
    'GenerateOasisLosses'
]

from tqdm import tqdm

from ..base import ComputationStep
from ..generate.losses import GenerateLosses
from ..hooks.pre_loss import PreLoss
from ..hooks.post_analysis import PostAnalysis


[docs] class GenerateOasisLosses(ComputationStep): """ Run Oasis file geneartion with optional PreAnalysis hook. """ # Override params
[docs] step_params = [ {'name': 'pre_loss_module', 'required': False, 'is_path': True, 'pre_exist': True, 'help': 'Pre-Loss module path'}, {'name': 'post_analysis_module', 'required': False, 'is_path': True, 'pre_exist': True, 'help': 'Post-Analysis module path'}, ]
# Add params from each sub command not in 'step_params'
[docs] chained_commands = [ PreLoss, GenerateLosses, PostAnalysis, ]
[docs] def run(self): # setup output dir if not self.model_run_dir: self.model_run_dir = GenerateLosses._get_output_dir(self) self.kwargs['model_run_dir'] = self.model_run_dir # Run chain if self.pre_loss_module: cmds = [(PreLoss, self.kwargs)] else: cmds = [] cmds += [(GenerateLosses, self.kwargs)] if self.post_analysis_module: cmds += [(PostAnalysis, self.kwargs)] with tqdm(total=len(cmds)) as pbar: for cmd in cmds: cmd[0](**cmd[1]).run() pbar.update(1) self.logger.info(f'Losses generated in {self.model_run_dir}')