Source code for oasislmf.pytools.converters.bintocsv.utils.coverages

from pathlib import Path
import numpy as np
from oasislmf.pytools.common.data import DEFAULT_BUFFER_SIZE, write_ndarray_to_fmt_csv
from oasislmf.pytools.common.input_files import read_coverages
from oasislmf.pytools.converters.data import TOOL_INFO


[docs] def coverages_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) == "-": coverages = read_coverages( ignore_file_type=set(["csv"]), use_stdin=True ) else: cov_fp = Path(file_in) coverages = read_coverages( run_dir=cov_fp.parent, ignore_file_type=set(["csv"]), filename=cov_fp.name ) n = len(coverages) if not noheader: file_out.write(",".join(headers) + "\n") buf = np.empty(min(DEFAULT_BUFFER_SIZE, n), dtype=dtype) for start in range(0, n, DEFAULT_BUFFER_SIZE): end = min(start + DEFAULT_BUFFER_SIZE, n) batch = buf[:end - start] batch["coverage_id"] = np.arange(start + 1, end + 1) batch["tiv"] = coverages[start:end] write_ndarray_to_fmt_csv(file_out, batch, headers, fmt)