Source code for oasislmf.pytools.converters.csvtobin.manager
#!/usr/bin/env python
from contextlib import ExitStack
import logging
from oasislmf.pytools.common.data import resolve_file
from oasislmf.pytools.converters.csvtobin.utils import (
amplifications_tobin,
complex_items_tobin,
coverages_tobin,
damagebin_tobin,
fm_tobin,
footprint_tobin,
gul_tobin,
lossfactors_tobin,
occurrence_tobin,
returnperiods_tobin,
summarycalc_tobin,
vulnerability_tobin,
)
from oasislmf.pytools.converters.csvtobin.utils.common import read_csv_as_ndarray
from oasislmf.pytools.converters.data import TOOL_INFO
[docs]
logger = logging.getLogger(__name__)
[docs]
TOBIN_FUNC_MAP = {
"amplifications": amplifications_tobin,
"complex_items": complex_items_tobin,
"coverages": coverages_tobin,
"damagebin": damagebin_tobin,
"fm": fm_tobin,
"footprint": footprint_tobin,
"gul": gul_tobin,
"lossfactors": lossfactors_tobin,
"occurrence": occurrence_tobin,
"returnperiods": returnperiods_tobin,
"summarycalc": summarycalc_tobin,
"vulnerability": vulnerability_tobin,
}
[docs]
def default_tobin(stack, file_in, file_out, file_type):
headers = TOOL_INFO[file_type]["headers"]
dtype = TOOL_INFO[file_type]["dtype"]
data = read_csv_as_ndarray(stack, file_in, headers, dtype)
data.tofile(file_out)
[docs]
def csvtobin(file_in, file_out, file_type, **kwargs):
"""Convert csv file to bin file based on file type
Args:
file_in (str | os.PathLike): Input file path
file_out (str | os.PathLike): Output file path
file_type (str): File type str from SUPPORTED_CSVTOBIN
"""
with ExitStack() as stack:
file_out = resolve_file(file_out, "wb", stack)
tobin_func = TOBIN_FUNC_MAP.get(file_type, default_tobin)
tobin_func(stack, file_in, file_out, file_type, **kwargs)