Source code for oasislmf.pytools.gul.common

"""This file defines the data types that are loaded from the data files."""
import numba as nb
import numpy as np

from oasislmf.pytools.common.data import areaperil_int, oasis_int, oasis_float
from oasislmf.pytools.common.event_stream import MAX_LOSS_IDX, CHANCE_OF_LOSS_IDX, TIV_IDX, STD_DEV_IDX, MEAN_IDX

[docs] items_data_type = nb.from_dtype(np.dtype([('item_id', oasis_int), ('damagecdf_i', oasis_int), ('rng_index', oasis_int) ]))
[docs] VulnCdfLookup = nb.from_dtype(np.dtype([('start', oasis_int), ('length', oasis_int)]))
[docs] coverage_type = nb.from_dtype(np.dtype([('tiv', np.float64), ('max_items', oasis_int), ('start_items', oasis_int), ('cur_items', oasis_int) ]))
[docs] NP_BASE_ARRAY_SIZE = 8
# Gul stream special sample idx
[docs] SPECIAL_SIDX = np.array([MAX_LOSS_IDX, CHANCE_OF_LOSS_IDX, TIV_IDX, STD_DEV_IDX, MEAN_IDX], dtype=oasis_int)
[docs] NUM_IDX = SPECIAL_SIDX.shape[0]
[docs] AREAPERIL_TO_EFF_VULN_KEY_TYPE = nb.types.Tuple((nb.from_dtype(areaperil_int), nb.types.int64))
[docs] AREAPERIL_TO_EFF_VULN_VALUE_TYPE = nb.types.UniTuple(nb.types.int32, 2)
# compute the relative size of oasis_float and areaperil_int vs int32
[docs] oasis_float_to_int32_size = oasis_float.itemsize // np.int32().itemsize
[docs] areaperil_int_to_int32_size = areaperil_int.itemsize // np.int32().itemsize
[docs] haz_cdf_type = nb.from_dtype(np.dtype([('probability', oasis_float), ('intensity_bin_id', np.int32)]))
[docs] ProbMean = nb.from_dtype(np.dtype([('prob_to', oasis_float), ('bin_mean', oasis_float) ]))
[docs] ProbMean_size = ProbMean.size
[docs] damagecdfrec_stream = nb.from_dtype(np.dtype([('event_id', np.int32), ('areaperil_id', areaperil_int), ('vulnerability_id', np.int32) ]))
[docs] damagecdfrec = nb.from_dtype(np.dtype([('areaperil_id', areaperil_int), ('vulnerability_id', np.int32) ]))
[docs] gulSampleslevelHeader = nb.from_dtype(np.dtype([('event_id', 'i4'), ('item_id', 'i4'), ]))
[docs] gulSampleslevelHeader_size = gulSampleslevelHeader.size
[docs] gulSampleslevelRec = nb.from_dtype(np.dtype([('sidx', 'i4'), ('loss', oasis_float), ]))
[docs] gulSampleslevelRec_size = gulSampleslevelRec.size
[docs] Keys = {'LocID': np.int32, 'PerilID': 'category', 'CoverageTypeID': np.int32, 'AreaPerilID': areaperil_int, 'VulnerabilityID': np.int32}