Source code for oasislmf.pytools.converters.csvtobin.utils.amplifications

import numpy as np
from oasislmf.pytools.converters.csvtobin.utils.common import read_csv_as_ndarray
from oasislmf.pytools.converters.data import TOOL_INFO


[docs] def amplifications_write_bin(data, file_out): """Validate and write amplification data to a binary file. Args: data (np.ndarray): Structured array with an 'item_id' field. file_out: Writable binary file object. Raises: ValueError: If item IDs do not start from 1 or are not contiguous. """ # Check item IDs start from 1 and are contiguous if len(data) > 0 and data["item_id"][0] != 1: raise ValueError(f'First item ID is {data["item_id"][0]}. Expected 1.') if len(data) > 0 and not np.all(data["item_id"][1:] - data["item_id"][:-1] == 1): raise ValueError('Item IDs are not contiguous') # Write the 4-byte zero header np.array([0], dtype="i4").tofile(file_out) data.tofile(file_out)
[docs] def amplifications_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) amplifications_write_bin(data, file_out)