Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: OasisLMF/OasisLMF
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 2.5.0
Choose a base ref
...
head repository: OasisLMF/OasisLMF
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 2.5.1
Choose a head ref
  • 17 commits
  • 49 files changed
  • 10 contributors

Commits on Feb 8, 2026

  1. Update changelog

    awsbuild committed Feb 8, 2026
    Configuration menu
    Copy the full SHA
    992803c View commit details
    Browse the repository at this point in the history
  2. Merge pull request #1848 from OasisLMF/release/2.5.0

    Release 2.5.0
    sambles authored Feb 8, 2026
    Configuration menu
    Copy the full SHA
    116afb3 View commit details
    Browse the repository at this point in the history

Commits on Feb 9, 2026

  1. Configuration menu
    Copy the full SHA
    612b2bd View commit details
    Browse the repository at this point in the history

Commits on Feb 13, 2026

  1. Fix typos and incorrect CLI docstrings (#1866)

    Co-authored-by: Richard Smythe <[email protected]>
    richardsmythe and Richard Smythe authored Feb 13, 2026
    Configuration menu
    Copy the full SHA
    298e50d View commit details
    Browse the repository at this point in the history

Commits on Feb 26, 2026

  1. Fix CI failing tests (#1880)

    * placeholder
    
    * issue with NumPy 2.4.x update
    
    * change list to numpy array for numba
    
    * Fix/ci issues test (#1883)
    
    * test with limited numba version
    
    * try and alter oasis_exec_monitor.sh script
    
    * change error log checking in bash.py
    
    * pep8
    
    * update chardet code
    
    * revert log file warning checks
    
    * revert previous commit
    
    * test adding warning redirect sooner for gulmc
    
    * does bash fail with redirect added
    
    * Revert "does bash fail with redirect added"
    
    This reverts commit 733fe2f.
    
    ---------
    
    Co-authored-by: SkylordA <[email protected]>
    Co-authored-by: Anish Kothikar <[email protected]>
    3 people authored Feb 26, 2026
    Configuration menu
    Copy the full SHA
    1586cda View commit details
    Browse the repository at this point in the history
  2. Optimize il_inputs and improve gul/il_inputs documentation (#1862)

    * Optimize il_inputs and improve gul/il_inputs documentation
    
    Performance:
    - Add optimized path in get_il_input_items when no layered inputs exist
    - Skip expensive split/concat operations when all rows have layer_id=0
    - Still perform deduplication to remove premature layering
    - Achieves ~23% speedup (832s -> 638s on 30M row dataset)
    
    Documentation:
    - Rewrite docstrings for get_il_input_items and get_gul_input_items
    - Add section comments explaining processing flow
    - Document key concepts: layered vs non-layered merging, premature
      layering removal, agg_id assignment, disaggregation
    
    * pep8
    
    * remove unused import
    sstruzik authored Feb 26, 2026
    Configuration menu
    Copy the full SHA
    2a7ca61 View commit details
    Browse the repository at this point in the history
  3. perf: Optimize GULMC performance - 4.5% faster standard, 76% faster d…

    …ynamic footprint (#1869)
    
    * gulmc Vectorize RNG inner loops
    
    * Optimize GULMC CDF cache keys and improve documentation
    
    Performance optimizations for the GULMC loss computation pipeline:
    
    - Replace 5-element tuple CDF cache keys with int64 composite keys
      (eff_cdf_id << 32 | discriminator), eliminating per-item tuple
      allocation and multi-element hashing in the hot loop (~23% reduction
      in loss computation phase).
    - Assign sequential eff_cdf_id per (areaperil, vulnerability) group
      during reconstruct_coverages, avoiding areaperil_id (uint64) in keys.
    - Hoist cached_vuln_cdfs allocation out of the per-event loop (allocate
      once with np.empty, reuse across events).
    - Replace per-event Numba Dict creation with pre-allocated array lookups
      for group_id -> rng_index mapping in reconstruct_coverages (O6).
    - Vectorize inner loops in Latin Hypercube and Mersenne Twister RNG (O3).
    - Add comprehensive docstrings to gen_empty_vuln_cdf_lookup, cache_cdf,
      compute_event_losses, and reconstruct_coverages.
    - Add technical README.md for the gulmc module.
    
    * gulmc Eliminate  Copy in Output Writing
    
    * remove implementation history from readme
    
    * set perms using arange
    sstruzik authored Feb 26, 2026
    Configuration menu
    Copy the full SHA
    793c1f5 View commit details
    Browse the repository at this point in the history
  4. Refactor/fmpy naming conventions (#1871)

    * Refactor fmpy variable naming conventions
    
    Improve readability and consistency of variable names in the FM
    loss computation module:
    
    - Use _i suffix for indices/iterators (e.g., profile_i, layer_i, val_i)
    - Use _count suffix for counts/lengths (e.g., children_count, node_val_count)
    - Add descriptive prefixes for context (e.g., profile_, layer_, node_)
    - Rename EXTRA_VALUES to EXTRA_SIDX_COUNT for clarity
    
    Files modified:
    - common.py: EXTRA_VALUES -> EXTRA_SIDX_COUNT
    - compare.py: Updated import
    - compute_sparse.py: Renamed loop variables and parameters
    - back_allocation.py: Renamed allocation variables
    - stream_sparse.py: Renamed stream handling variables
    - manager.py: Renamed event loop counter
    
    * Add comprehensive documentation comments to fmpy computation
    
    Add module-level docstrings and detailed function comments explaining:
    - FM computation architecture and algorithm flow
    - CSR-like sparse storage model for memory efficiency
    - Bottom-up level traversal with aggregation and back allocation
    - Profile application (per-layer vs cross-layer)
    - Back allocation rules and extras handling
    - Stream I/O format and parsing state machine
    
    This improves code maintainability by documenting the complex
    financial module computation logic.
    
    * Add FM documentation: technical details and user guide
    
    TECHNICAL.md:
    - Detailed CSR-inspired sparse storage format
    - Data structure documentation (nodes, compute_idx, extras)
    - Complete computation flow with algorithms
    - Aggregation and back allocation explanations
    - Stream I/O format specification
    - Memory management and performance tips
    - Debugging guidance
    
    README.md:
    - Quick start examples (Python API and CLI)
    - Configuration options (allocation rules, net loss, memory)
    - Input file requirements
    - Output format explanation
    - Supported financial terms
    - Performance optimization tips
    - Troubleshooting guide
    - Architecture overview
    
    * fixup
    
    * fixup
    
    * pep8
    sstruzik authored Feb 26, 2026
    Configuration menu
    Copy the full SHA
    220f087 View commit details
    Browse the repository at this point in the history
  5. Update package readme (#1874)

    * update stable versions
    
    * update linked packages
    sambles authored Feb 26, 2026
    Configuration menu
    Copy the full SHA
    90f20a0 View commit details
    Browse the repository at this point in the history
  6. Refactor extract_financial_structure to use NumPy arrays and CSR form…

    …at (#1864)
    
    * Refactor extract_financial_structure to use NumPy arrays and CSR format
    
    Replace all Numba typed Dict and List objects with memory-efficient
    NumPy arrays and CSR (Compressed Sparse Row) format.
    
    Changes:
    - Replace node_layers dict with node_layers_arr (1D array)
    - Replace node_cross_layers dict with node_cross_layers_arr (1D array)
    - Replace node_to_output_id nested dict with output_id_arr (2D array)
    - Replace programme_node_to_layers dict with layer_source array
    - Replace parent_to_children dict with children_indptr/children_data CSR
    - Replace child_to_parents dict with parents_indptr/parents_data CSR
    - Replace programme_node_to_profiles dict with profiles_indptr/profiles_data CSR
    - Replace has_tiv_policy dict with is_tiv_profile array
    
    Implementation approach:
    - Use two-pass algorithms (count then fill) to build CSR structures
      directly without intermediate dicts
    - Use node_level_start[level] + agg_id for flat node indexing
    - Add CSR-based helper functions: get_all_children_csr, get_all_parent_csr,
      get_tiv_csr
    
    Add documentation describing the 11-phase data transformation pipeline.
    sstruzik authored Feb 26, 2026
    Configuration menu
    Copy the full SHA
    f788d0e View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    adab561 View commit details
    Browse the repository at this point in the history
  8. enhancement/root analysis_settings.json not updated when run is com…

    …plete (#1875)
    
    * wip - save anlaysis settings during file gen
    
    * move settings gen to computation step
    
    * make sure root anlaysis settings same as output
    
    * move rundir/analysis_settings -> rundir/input/analysis_settings
    vinulw authored Feb 26, 2026
    Configuration menu
    Copy the full SHA
    2200fbd View commit details
    Browse the repository at this point in the history

Commits on Feb 27, 2026

  1. Logs in main and tests in footprint_layer.py (#1886)

    * added tests for footprint layer and moved logs to main
    
    * clean
    
    * hidden logger bug
    
    ---------
    
    Co-authored-by: Sam Gamble <[email protected]>
    Ha-Ree and sambles authored Feb 27, 2026
    Configuration menu
    Copy the full SHA
    8af4a43 View commit details
    Browse the repository at this point in the history
  2. Write binary files directly, bypass CSV intermediary (#1876)

    * Write binary files directly, bypass CSV intermediary
    
    Eliminate the CSV intermediary step for GUL, IL/FM, and RI input files.
    Previously the pipeline wrote DataFrames to CSV, then converted CSV to
    binary at runtime. Now binary files are written directly from DataFrames
    during preparation, with CSV output only when intermediary_csv=True
    (for debugging).
    
    Preparation changes:
    - Refactor csvtobin converters to decouple CSV reading from binary
      writing: extract df_to_ndarray(), amplifications_write_bin(), and
      complex_items_write_bin() as reusable functions.
    - write_gul_input_files(): replace per-column pop/prepare dicts with a
      unified files_write_info dict that drives binary+CSV output.
    - get_il_input_items(): write FM binary files directly, rename pandas
      dtype dicts to avoid shadowing numpy dtypes, return .bin paths.
    - write_files_for_reinsurance(): write RI binary files directly using
      df_to_ndarray().tofile().
    - Thread intermediary_csv parameter through GenerateFiles, RunExposure,
      and all preparation functions.
    
    Execution changes:
    - Replace csv_to_bin/\_csv_to_bin with move_bin() which relocates
      pre-built .bin files to the run output directory.
    - Update IL/RI detection in GenerateLossesDir and
      GenerateLossesDeterministic to check for .bin files (not just .csv).
    - Update _check_each_inputs_directory to accept either .csv or .bin.
    - Remove unused step_flag from deterministic loss commands.
    - Use np.memmap(mode='r') instead of np.fromfile in load_as_ndarray
      and load_as_array for demand-paged binary reads.
    
    Test updates:
    - Remove CsvToBin test class and associated test helpers.
    - Update test_generate_files expected paths from .csv to .bin.
    sstruzik authored Feb 27, 2026
    Configuration menu
    Copy the full SHA
    43f200f View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    5cd702e View commit details
    Browse the repository at this point in the history
  4. moves join-summary-info commands to end of kat/aal/lec, gives them ow…

    …n jpids for multiprocessing (#1889)
    
    Co-authored-by: Sam Gamble <[email protected]>
    SkylordA and sambles authored Feb 27, 2026
    Configuration menu
    Copy the full SHA
    07e7327 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    4e65b10 View commit details
    Browse the repository at this point in the history
Loading