SurvivalSignature

Computation and numerical approximation of survival signatures.

https://github.com/friesischscott/survivalsignature.jl

Science Score: 77.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 13 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    1 of 5 committers (20.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.7%) to scientific vocabulary

Keywords

monte-carlo-simulation reliability survival-signature

Keywords from Contributors

standardization meshing pipeline-testing datacleaner data-profilers pde pinn interpretability bridges parallel
Last synced: 6 months ago · JSON representation ·

Repository

Computation and numerical approximation of survival signatures.

Basic Info
  • Host: GitHub
  • Owner: FriesischScott
  • License: mit
  • Language: Julia
  • Default Branch: master
  • Homepage:
  • Size: 500 KB
Statistics
  • Stars: 5
  • Watchers: 1
  • Forks: 1
  • Open Issues: 4
  • Releases: 4
Topics
monte-carlo-simulation reliability survival-signature
Created about 6 years ago · Last pushed over 1 year ago
Metadata Files
Readme License Citation

README.md

SurvivalSignature.jl

CI codecov DOI

Julia package for the computation of survival signatures as introduced by Coolen et al. (2013).

In addition to the regular analytical computations, this package contains a Monte Carlo simulation based algorithms to approximate the survival signature for systems where the computational demand for the standard approach is too high.

Examples

Exact computation

Consider a simple system of six components divided into two types.

Computing the survival signature for any system requires three definitions: the system, the component types, and a structure function. Start by defining the system as an adjacency matrix and the types as a dictionary.

```julia A = zeros(6, 6) A[1, [2, 3]] .= 1.0 A[2, [4, 5]] .= 1.0 A[3, [4, 6]] .= 1.0 A[4, [5, 6]] .= 1.0

types = Dict(1 => [1, 2, 5], 2 => [3, 4, 6]) ```

SurvivalSignature.jl provides a simple structure function to check s-t-connectivity, suitable for reliability block diagrams. The function s_t_connectivity(nodes, source, target) returns new function which accepts a system and vector of functioning components as arguments.

```julia

returns a new function (system::Array{Float64,2}, x::Vector)

φ = stconnectivity([1:6;], [1], [5, 6]) ```

Next, the survival signature is calculated by running

julia Φ = survivalsignature(A, types, φ)

resulting in the following signature

julia 4×4 Matrix{Float64}: 0.0 0.0 0.0 0.0 0.0 0.0 0.111111 0.333333 0.0 0.0 0.444444 0.666667 1.0 1.0 1.0 1.0

Approximation

If exact computation of the survival signature is not possible for the desired system, it can be approximated using Monte Carlo simulation by providing a desired number of samples to use per entry of the survival signature and optional target coefficient of variation.

julia Φ, cov = survivalsignature(A, types, φ, 10000, 0.001)

In addition to the survival signature this will return the coefficients of variation for each entry.

Preprocessing

Both the analytical solution and the Monte Carlo approximation accept an optional preprocessor to exclude entries of the survival signature based on some prior knowledge.

julia Φ, cov = survivalsignature(A, types, φ, preprocessor) Φ = survivalsignature(A, types, φ, 10000, 0.001, preprocessor)

A valid preprocessor is a function which takes the survival signature and a system as arguments. At the time of preprocessing the signature passed to the function will be Inf for all entries. Entries are excluded from computation by setting them to zero. The preprocessor must modify the signature in place and return nothing.

julia function preprocessor!(Φ, system) # exclude entries by setting them to 0 return nothing end

A preprocessor using percolation is included as percolation_preprocessor!(Φ, A).

Reliability Analysis

If the cdfs of the failure time distributions for each component type are known, the reliability can be computed analytically using distributions from Distributions.jl.

```julia distributions = Dict(1 => Exponential(1), 2 => Weibull(2, 1)) time = [0:0.001:1;]

P = reliability(time, distributions, Φ) ```

Alternatively, the reliability can be approximated by providing a NxM Matrix{Float64} of failure times where N is the number of samples and M the number of components.

julia P = reliability(time, Φ, types, failures)

Interval Predictor Model

For complex examples with a lot of components and component types even the Monte Carlo approximation will have difficulties estimating the complete survival signature. For these cases we provide an alternative presented in Behrensdorf et al. (2024), where a surrogate model of the survival signature is used instead of the full approximation. This surrogate is based on radial basis function networks and interval predictor models (IPM). By strategically selecting a few values of the signature to approximate with the MC approximation it significantly reduces the numerical demand. The IPM captures the uncertainty of the approximation and as a result the surrogate returns imprecise bounds on the survival signature. The following code will compute the IPMSurvivalSignature.

```julia N = 1000 covtol = 1e-3 wtol = 1e-3

ci = [15, 15, 10]

ipmsignature = survivalsignature(A, types, φ, ci; samples=N, covtol=covtol, wtol=wtol) ```

Here, ci refers to the number of center points used in each dimension of the underlying radial basis function network and wtol is the tolerance used to end the adaptive refinement of the surrogate. For more information please refer to the paper.

The reliability analysis returns the upper and lower bound of the reliability when used with the interval predictor model.

julia P_l, P_u = reliability(time, distributions, ipmsignature)

References

Behrensdorf, J., Regenhardt, T.-E., Broggi, M., Beer, M. (2021) Numerically efficient computation of the survival signature for the reliability analysis of large networks, Reliability Engineering & System Safety, 107935, https://doi.org/10.1016/j.ress.2021.107935.

Behrensdorf, J., Broggi, M., & Beer, M. (2024). Interval Predictor Model for the Survival Signature Using Monotone Radial Basis Functions. ASCE-ASME Journal of Risk and Uncertainty in Engineering Systems, Part A: Civil Engineering, 10(3), 04024034. https://doi.org/10.1061/AJRUA6.RUENG-1219

Coolen F.P.A., Coolen-Maturi T. (2013) Generalizing the Signature to Systems with Multiple Types of Components. In: Zamojski W., Mazurkiewicz J., Sugier J., Walkowiak T., Kacprzyk J. (eds) Complex Systems and Dependability. Advances in Intelligent and Soft Computing, 170. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-30662-4_8

Owner

  • Name: Jasper Behrensdorf
  • Login: FriesischScott
  • Kind: user
  • Location: Hannover, Germany
  • Company: Leibniz University Hannover

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
  - family-names: "Behrensdorf"
    given-names: "Jasper"
    orcid: "https://orcid.org/0000-0001-9628-7250"
title: "SurvivalSignature.jl"
version: 0.2.0
doi: 10.5281/zenodo.5156750
date-released: 2021-08-03
license: MIT
url: "https://github.com/FriesischScott/SurvivalSignature.jl"
preferred-citation:
  type: article
  authors:
    - family-names: "Behrensdorf"
      given-names: "Jasper"
      orcid: "https://orcid.org/0000-0001-9628-7250"
    - family-names: "Regenhardt"
      given-names: "Tobias-Emanuel"
      orcid: "https://orcid.org/0000-0003-0295-3385"
    - family-names: "Broggi"
      given-names: "Matteo"
      orcid: "https://orcid.org/0000-0002-3683-3907"
    - family-names: "Beer"
      given-names: "Michael"
      orcid: "https://orcid.org/0000-0002-0611-0345"
  doi: "10.1016/j.ress.2021.107935"
  journal: "Reliability Engineering & System Safety"
  title: "Numerically efficient computation of the survival signature for the reliability analysis of large networks"
  start: 107935
  volume: 216
  year: 2021

GitHub Events

Total
Last Year

Committers

Last synced: about 2 years ago

All Time
  • Total Commits: 35
  • Total Committers: 5
  • Avg Commits per committer: 7.0
  • Development Distribution Score (DDS): 0.429
Past Year
  • Commits: 1
  • Committers: 1
  • Avg Commits per committer: 1.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Jasper Behrensdorf b****f@i****e 20
Jasper Behrensdorfm j****f@g****m 6
github-actions[bot] 4****] 4
Jasper Behrensdorf j****r@b****e 3
dependabot[bot] 4****] 2
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 9 months ago

All Time
  • Total issues: 4
  • Total pull requests: 12
  • Average time to close issues: 3 days
  • Average time to close pull requests: about 2 months
  • Total issue authors: 2
  • Total pull request authors: 4
  • Average comments per issue: 6.25
  • Average comments per pull request: 0.67
  • Merged pull requests: 9
  • Bot issues: 0
  • Bot pull requests: 9
Past Year
  • Issues: 0
  • Pull requests: 4
  • Average time to close issues: N/A
  • Average time to close pull requests: about 1 month
  • Issue authors: 0
  • Pull request authors: 3
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 2
Top Authors
Issue Authors
  • FriesischScott (3)
  • JuliaTagBot (1)
Pull Request Authors
  • dependabot[bot] (8)
  • github-actions[bot] (4)
  • FriesischScott (3)
  • MJRyanDE (1)
Top Labels
Issue Labels
documentation (2)
Pull Request Labels
dependencies (8) enhancement (2)

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 4
juliahub.com: SurvivalSignature

Computation and numerical approximation of survival signatures.

  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 9.9%
Average: 37.7%
Dependent packages count: 38.9%
Stargazers count: 48.5%
Forks count: 53.5%
Last synced: 7 months ago

Dependencies

.github/workflows/CompatHelper.yml actions
  • julia-actions/setup-julia v1 composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/ci.yml actions
  • actions/checkout v3 composite
  • codecov/codecov-action v3 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest latest composite
  • julia-actions/setup-julia v1 composite