SurvivalSignature
Computation and numerical approximation of survival signatures.
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
Keywords from Contributors
Repository
Computation and numerical approximation of survival signatures.
Basic Info
Statistics
- Stars: 5
- Watchers: 1
- Forks: 1
- Open Issues: 4
- Releases: 4
Topics
Metadata Files
README.md
SurvivalSignature.jl
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
- Website: https://www.irz.uni-hannover.de/de/institut/team/behrensdorf
- Repositories: 7
- Profile: https://github.com/FriesischScott
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
Top Committers
| Name | 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
Pull Request Labels
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.
- Documentation: https://docs.juliahub.com/General/SurvivalSignature/stable/
- License: MIT
-
Latest release: 0.3.0
published over 1 year ago
Rankings
Dependencies
- julia-actions/setup-julia v1 composite
- JuliaRegistries/TagBot v1 composite
- 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