Source code for oasislmf.pytools.converters.bintocsv.utils.lossfactors
from pathlib import Path
import numpy as np
from oasislmf.pytools.common.data import write_ndarray_to_fmt_csv
from oasislmf.pytools.converters.data import TOOL_INFO
from oasislmf.pytools.pla.structure import read_lossfactors
[docs]
def lossfactors_tocsv(stack, file_in, file_out, file_type, noheader):
headers = TOOL_INFO[file_type]["headers"]
dtype = TOOL_INFO[file_type]["dtype"]
fmt = TOOL_INFO[file_type]["fmt"]
if str(file_in) == "-":
plafactors = read_lossfactors(
ignore_file_type=set(["csv"]),
use_stdin=True
)
else:
lossfactors_fp = Path(file_in)
plafactors = read_lossfactors(
run_dir=lossfactors_fp.parent,
ignore_file_type=set(["csv"]),
filename=lossfactors_fp.name
)
data = np.empty(len(plafactors), dtype=dtype)
for i, (k, v) in enumerate(plafactors.items()):
data[i] = (k[0], k[1], v)
if not noheader:
file_out.write(",".join(headers) + "\n")
write_ndarray_to_fmt_csv(file_out, data, headers, fmt)