Source code for oasislmf.pytools.pla.cli
#!/usr/bin/env python
from . import manager, logger
import argparse
import logging
[docs]
parser = argparse.ArgumentParser()
parser.add_argument(
'-f', '--secondary-factor',
help='optional relative secondary factor within range [0, 1]', default=1.0,
type=float
)
parser.add_argument(
'-F', '--uniform-factor',
help='optional uniform post loss amplification factor', default=0.0,
type=float
)
parser.add_argument('-i', '--file-in', help='name of the input file')
parser.add_argument('-o', '--file-out', help='name of the output file')
parser.add_argument(
'-P', '--input-path', help='path to amplifications.bin',
default='input'
)
parser.add_argument(
'-p', '--static-path', help='path to lossfactors.bin', default='static'
)
parser.add_argument(
'-r', '--run-dir', help='path to the run directory', default='.'
)
parser.add_argument(
'-v', '--logging-level',
help='logging level (debug:10, info:20, warning:30, error:40, critical:50)',
default=30, type=int
)
[docs]
def main():
kwargs = vars(parser.parse_args())
# Add handler to pla logger
ch = logging.StreamHandler()
formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
ch.setFormatter(formatter)
logger.addHandler(ch)
logging_level = kwargs.pop('logging_level')
logger.setLevel(logging_level)
if kwargs['secondary_factor'] < 0.0 or kwargs['secondary_factor'] > 1.0:
logger.error(f'Secondary factor {kwargs["secondary_factor"]} must lie within range [0, 1]')
SystemExit(1)
if kwargs['uniform_factor'] < 0.0:
logger.error(f'Uniform factor {kwargs["uniform_factor"]} must be positive value')
SystemExit(1)
if kwargs['secondary_factor'] < 1.0 and kwargs['uniform_factor'] > 0.0:
logger.warning('Relative secondary and uniform factors are incompatible')
logger.info('Ignoring relative secondary factor')
kwargs['secondary_factor'] = 1.0
manager.run(**kwargs)
if __name__ == '__main__':
main()