Source code for oasislmf.pytools.converters.csvtobin.utils.lossfactors
from pathlib import Path
import numpy as np
from oasislmf.pytools.pla.common import amp_factor_dtype
from oasislmf.pytools.pla.structure import read_lossfactors
[docs]
def lossfactors_tobin(stack, file_in, file_out, file_type):
if str(file_in) == "-":
plafactors = read_lossfactors(
ignore_file_type=set(["bin"]),
use_stdin=True
)
else:
lossfactors_fp = Path(file_in)
plafactors = read_lossfactors(
run_dir=lossfactors_fp.parent,
ignore_file_type=set(["bin"]),
filename=lossfactors_fp.name
)
# Write the 4-byte zero header
np.array([0], dtype="i4").tofile(file_out)
current_event_id = -1
counter = 0
factors = []
for k, v in plafactors.items():
if k[0] != current_event_id:
if current_event_id != -1:
np.array([current_event_id], dtype=np.int32).tofile(file_out)
np.array([counter], dtype=np.int32).tofile(file_out)
for af in factors:
np.array(af, dtype=amp_factor_dtype).tofile(file_out)
current_event_id = k[0]
counter = 0
factors = []
factors.append((k[1], v))
counter += 1
if current_event_id != -1:
np.array([current_event_id], dtype=np.int32).tofile(file_out)
np.array([counter], dtype=np.int32).tofile(file_out)
for af in factors:
np.array(af, dtype=amp_factor_dtype).tofile(file_out)