djura.vulnerability_modeller

Seismic vulnerability and loss modelling.

djura.vulnerability_modeller.fragility.mlefit(param1, param2, total_count, count, data)[source]

Maximum likelihood method Performs a lognormal cumulative distribution function fit to the data points based on maximum likelihood method

Parameters:
  • param1 (float) – Median of the function, parameter of a statistical model to be found

  • param2 (float) – Standard deviation of the function, parameter of a statistical model to be found

  • total_count (int) – Number of data points

  • count (int) – Number of failures

  • data (Union[List, np.ndarray]) – The function, data points

Returns:

Negative Log likelihood to be minimized

Return type:

float

djura.vulnerability_modeller.fragility.fit_fragility(xs, counts, total_count, iml_range=None, beta=0.0)[source]
class djura.vulnerability_modeller.backbone.SPOModel(**data)[source]

Bases: BaseModel

displacement: List[float] | List[List[float]]
force: List[float]
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class djura.vulnerability_modeller.backbone.DispForceModel(**data)[source]

Bases: BaseModel

displacement: List[float] | None
force: List[float] | None
mstar: float | None
gamma: float | None
sdof: bool | None
spo: Dict | None
damping: float | None
residual: float | None
model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class djura.vulnerability_modeller.backbone.Backbone(data, method='backbone', model='bilin')[source]

Bases: object

property backbone
djura.vulnerability_modeller.backbone.get_infill_spo(data)[source]
class djura.vulnerability_modeller.demands.Demands(data)[source]

Bases: object

g = 9.81
async estimate_drifts()[source]
async estimate_accelerations()[source]
class djura.vulnerability_modeller.eal.EAL(elr, mafe)[source]

Bases: object

fit_loss_curve()[source]

Fitting of a refined loss curve that passes through the performance limit states

Returns:

Coefficients of the analytical form Fitted ELRs Fitted MAFEs

Return type:

tuple[ndarray, ndarray, ndarray]

Notes

The analytical form is defined as:

\[MAFE = \mathrm{coef}_0 * exp( -\mathrm{coef}_1 * log(ELR) - \mathrm{coef}_2 * log(ELR)^2)\]

# noqa: E501, W605

get_eal(im_range, elr=None, mafe=None)[source]

Computes approximate EAL using the ELRs and MAFEs associated with the performance limit states

Parameters:
  • elr (List[float]) – Expected loss ratio (ELR), by default EAL.elr

  • mafe (List[float]) – Mean annual frequency of exceedance (MAFE) of a limit state, by default EAL.mafe

Returns:

EAL

Return type:

float

class djura.vulnerability_modeller.pfa_profile.PFAProfile(method, bldg_type, psd, period, heights)[source]

Bases: object

omega = array([], dtype=float64)
pfa_coefs = {'muho': {'rc-infill': {'2-4': [[0.645, -0.178, -0.148, -0.09, 0.136], [0.308, -0.46, 0.055, -0.168, 0.259]], '5-20': [[1.159, -0.027, -0.17, -0.048, 0.076], [0.708, -0.145, -0.206, -0.103, 0.087], [0.161, -0.463, -0.336, -0.291, 0.145], [0.259, -0.438, -0.256, -0.27, 0.196]]}, 'rc-mrf': {'2-4': [[0.23, -0.355, 0.213], [0.046, -0.77, 0.297]], '5-20': [[0.923, -0.029, -0.1], [0.636, -0.151, -0.154], [0.254, -0.34, -0.026], [0.135, -0.537, -0.025]]}}}
djura.vulnerability_modeller.utilities.cdf_lognormal(xs, median, beta)[source]
Return type:

ndarray

djura.vulnerability_modeller.utilities.uncensored_regression(pars, x, y)[source]

Uncensored regression to estimate the expected EDP given IM and the respective uncertainty due to record-to-record variability

Parameters:
  • pars (List[float]) – Fitting function parameters

  • x (ndarray) – For example, Intensity measure [im] values in m/s

  • y (ndarray) – For example, Engineering demand parameters (EDPs)

Returns:

loss value to minimize

Return type:

float

djura.vulnerability_modeller.utilities.censored_regression(pars, x_unc, x_cens, y_unc, y_cens)[source]

Censored regression to estimate the expected EDP given IM and the respective uncertainty due to record-to-record variability

Parameters:
  • pars (List[float]) – Fitting function parameters

  • x_unc (ndarray) – For example, uncensored Intensity measure [im] values in m/s

  • x_cens (ndarray) – For example, censored Intensity measure [im] values in m/s

  • y_unc (ndarray) – For example, uncensored Engineering demand parameters (EDPs)

  • y_cens (float) – For example, censored Engineering demand parameters (EDPs)

Returns:

loss value to minimize

Return type:

float

djura.vulnerability_modeller.utilities.residual_log_dist(pars, x, y)[source]
djura.vulnerability_modeller.utilities.get_loss_uncertainties(loss)[source]

Estimate uncertainties

References

Silva, V. (2019) Uncertainty and correlation in seismic vulnerability functions of building classes. Earthquake Spectra. DOI: 10.1193/013018eqs031m.

Parameters:

loss (ndarray) – Loss values

Returns:

Uncertainties

Return type:

ndarray

djura.vulnerability_modeller.utilities.get_cdf(theta, beta, iml_range=None)[source]
djura.vulnerability_modeller.utilities.set_ductilities(ductility_f)[source]
djura.vulnerability_modeller.utilities.deep_merge(dict1, dict2)[source]

Recursively merge dict2 into dict1