oasislmf.pytools.gulmc.items¶
This file contains specific functionality to read and process items files.
Attributes¶
Functions¶
|
Load the items from the items file. |
|
Generate item_map as a two-level jagged array; requires items to be sorted. |
|
Assign a sequential index to each unique CDF-producing group. |
|
Generate intensity adjustment array for dynamic footprint models. |
|
Get peril_id associated with item_id |
Module Contents¶
- 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.