oasislmf.pytools.gulmc.items

This file contains specific functionality to read and process items files.

Attributes

Functions

read_items(input_path[, ignore_file_type])

Load the items from the items file.

generate_item_map(items, coverages, ...)

Generate item_map as a two-level jagged array; requires items to be sorted.

build_cdf_group_indices(vuln_ja_offsets, ...)

Assign a sequential index to each unique CDF-producing group.

get_dynamic_footprint_adjustments(input_path)

Generate intensity adjustment array for dynamic footprint models.

get_peril_id(input_path)

Get peril_id associated with item_id

Module Contents

oasislmf.pytools.gulmc.items.logger[source]
oasislmf.pytools.gulmc.items.read_items(input_path, ignore_file_type=set())[source]

Load the items from the items file.

Args:

input_path (str): the path pointing to the file ignore_file_type (Set[str]): file extension to ignore when loading.

Returns:

np.ndarray[items_dtype]: items table loaded from items.bin (memmap’d) or items.csv.

oasislmf.pytools.gulmc.items.generate_item_map(items, coverages, agg_vuln_id_ja_id_ind, agg_vuln_id_ja_offsets, agg_vuln_id_ja_vuln_ids)[source]

Generate item_map as a two-level jagged array; requires items to be sorted.

Items must be sorted by (areaperil_id, vulnerability_id). The function builds a two-level CSR structure that replaces the former Numba Dict item_map and areaperil_ids_map:

Level 0: areaperil_id → areaperil_ind (via id_index) Level 1: areaperil_ind → pair index range (areaperil_to_vuln_ja_offsets) Level 2: pair position → item indices (areaperil_to_vuln_ja_vuln_ja_offsets / areaperil_to_vuln_ja_vuln_ja_item_idxs)

Args:
items (numpy.ndarray): 1-d structured array storing item data, sorted by

(areaperil_id, vulnerability_id). Must have ‘areaperil_agg_vuln_idx’ field.

coverages (numpy.ndarray): coverage id to information on items. agg_vuln_id_ja_id_ind (np.array): id_index for aggregate vulnerability ids. agg_vuln_id_ja_offsets (np.array[oasis_int]): jagged array offsets for agg_vuln_id_ja_vuln_ids. agg_vuln_id_ja_vuln_ids (np.array[oasis_int]): flat jagged array of constituent vulnerability ids.

Returns:

areaperil_to_vuln_ja_areaperil_ids (np.array[areaperil_int]): sorted unique areaperil_ids. areaperil_to_vuln_ja_offsets (np.array[oasis_int]): L1 CSR offsets (N_areaperil + 1). areaperil_to_vuln_ja_vuln_ja_offsets (np.array[oasis_int]): L2 CSR offsets (N_pairs + 1). areaperil_to_vuln_ja_vuln_ja_item_idxs (np.array[oasis_int]): flat item indices into items array. vuln_map (np.ndarray[uint8]): packed hashmap table mapping vuln_id to dense index. vuln_map_keys (np.ndarray[int32]): array of unique vulnerability ids. areaperil_agg_vuln_idx_ja_offsets (np.array[oasis_int]): CSR offsets for aggregate vulns. areaperil_agg_vuln_idx_ja_data (np.array[agg_vuln_idx_weight_dtype]): merged (vuln_idx, weight) per entry. areaperil_agg_vuln_idx_ja_areaperil_ids (np.array[areaperil_int]): areaperil_id per aggregate entry.

oasislmf.pytools.gulmc.items.build_cdf_group_indices(vuln_ja_offsets, vuln_ja_item_idxs, items, dynamic_footprint)[source]

Assign a sequential index to each unique CDF-producing group.

A CDF group is a set of items that share identical vulnerability CDFs. For non-dynamic models, each (areaperil, vuln_id) pair — which corresponds to one position in the item_map jagged array — gets a single index. For dynamic models, items within the same pair may have different intensity_adjustment values that produce different CDFs, so each unique adjustment gets its own sub-index.

Numba compiles two specializations based on whether dynamic_footprint is None or not.

Args:

vuln_ja_offsets (np.array[oasis_int]): L2 CSR offsets (N_pairs + 1). vuln_ja_item_idxs (np.array[oasis_int]): flat item indices. items (np.ndarray): items table (must have ‘intensity_adjustment’ for dynamic). dynamic_footprint: None for static footprints, truthy for dynamic.

Returns:

item_cdf_group_idx (np.array[int64]): maps item_idx → CDF group index. n_cdf_groups (int): total number of unique CDF groups.

oasislmf.pytools.gulmc.items.get_dynamic_footprint_adjustments(input_path)[source]

Generate intensity adjustment array for dynamic footprint models.

Args:

input_path (str): location of the generated adjustments file.

Returns:

numpy array with itemid and adjustment factors

oasislmf.pytools.gulmc.items.get_peril_id(input_path)[source]

Get peril_id associated with item_id

Args:

input_path (str): The directory path where the ‘gul_summary_map.csv’ file is located.

Returns:
np.ndarray: A structured NumPy array with the following fields:
  • ‘item_id’ (oasis_int): The item ID as an integer.

  • ‘peril_id’ (oasis_int): The encoded peril ID as an integer.