VulnerabilityCalculator#
VulnerabilityCalculator converts damage-state probabilities into an expected
damage-ratio curve for one building type and one resistance configuration. Use
it when you need a wind vulnerability curve rather than the full probability
surface.
Inputs#
| Input | Type | Units or indexing |
|---|---|---|
prob_ds_file_path |
str |
Pickle containing dict[(m, c), ProbDS_wfd]. |
building_type |
int |
Building type key m; default 1. |
resistance_type |
int |
Resistance/configuration key c; default 1, 1-based. |
wind_scale_lines |
list[int] |
Optional wind-speed guide lines in mph. |
Loaded arrays:
| Value | Shape | Notes |
|---|---|---|
prob_damage_states[(m, c)] |
[wind, flood, damage_state] |
Usually produced by DamageProbabilityCalculation.aggregate_results(). |
wind_speed |
[25, 3] |
Vulnerability curve uses column 1, mph. |
damage_state |
[50, 2] |
Expected damage ratio uses column 1. |
Outputs And Returns#
calculate_vulnerability_curve() returns
(expected_damage_ratio, vulnerability_curve).
| Output | Shape | Meaning |
|---|---|---|
expected_damage_ratio |
[wind] |
Dot product of wind-only damage-state probabilities and damage ratios. |
vulnerability_curve["wind_speed"] |
[wind] |
Wind speeds in mph. |
vulnerability_curve["expected_damage_ratio"] |
[wind] |
Expected damage ratio. |
plot_vulnerability_curve(save_path=None) returns a matplotlib figure and
optionally saves it to save_path.
Configuration Behavior#
With AUTO_LOAD_DATASETS=True, datasets load during initialization. With
False, load them manually before calling calculate_vulnerability_curve().
With AUTO_EXECUTE_METHODS=True, initialization assigns
expected_damage_ratio and vulnerability_curve. With False, the method
returns those values and the caller decides whether to assign them.
Minimal Examples#
Automatic:
from cheersafe.config import Config
from cheersafe.damage_probability_analysis import VulnerabilityCalculator
Config.AUTO_LOAD_DATASETS = True
Config.AUTO_EXECUTE_METHODS = True
vulnerability = VulnerabilityCalculator(
building_type=1,
resistance_type=1,
prob_ds_file_path="Outputs/ProbDS_wfd_dictMaxIter50_aggregated.pkl",
)
curve = vulnerability.vulnerability_curve
Manual control:
from cheersafe.config import Config
from cheersafe.damage_probability_analysis import VulnerabilityCalculator
Config.AUTO_LOAD_DATASETS = False
Config.AUTO_EXECUTE_METHODS = False
vulnerability = VulnerabilityCalculator(
building_type=1,
resistance_type=1,
prob_ds_file_path="Outputs/ProbDS_wfd_dictMaxIter50_aggregated.pkl",
)
vulnerability.load_prob_damage_states()
vulnerability.load_wind_speed()
vulnerability.load_flood_depth()
vulnerability.load_damage_state()
expected, curve = vulnerability.calculate_vulnerability_curve()
Related References#
- API: Damage Probability Analysis
- Related notebook: Fragility Curve Calculation