- Notifications
You must be signed in to change notification settings - Fork0
Slow Fault Tree Analyser (SFTA): fault tree analysis for coherent fault trees
License
yawnoc/sfta
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A slow (also shitty) fault tree analyser inspired by the idea presented in:
- Wheeler et al. (1977). Fault Tree Analysis Using Bit Manipulation.IEEE Transactions on Reliability, Volume R-26, Issue 2.<https://doi.org/10.1109/TR.1977.5220060>
SFTA reads a textual representation of a fault tree. For example:
- time_unit: yrGate: FB- label: Conway causeth floor to be buttered- type: OR- inputs: BF, TFBSDEvent: BF- label: Conway knocketh butter onto floor- rate: 0.1Gate: TFBSD- label: Conway knocketh toast onto floor butter side down- type: AND- inputs: TF, TB, BSDEvent: TF- label: Conway knocketh toast onto floor- rate: 0.2Event: TB- label: Falling toast is buttered- probability: 0.75Event: BSD- label: Buttered toast landeth butter side down- probability: 0.9
This allows for sensible diffing between two versions of a fault tree.
Output consists of:
- an events summary,
- a gates summary,
- cut set listings, and
- SVGs for all top gates and paged gates.
For the example above, we get the following SVG for the top gateFB
:
Only supports coherent fault trees, which have only AND gates and OR gates.
Enforces the naive "initiator-equals-rate" paradigm. Specifically:
- For an AND gate, the first input may be a probability or a rate,but all subsequent inputs must be probabilities.
- For an OR gate, all inputs must be the same type(all probability or all rate).
The probability or rate for a gate is approximated by simply summing thecontributions from each minimal cut set (rare event approximation).The higher-order terms (subtraction of pairwise intersections, addition oftriplet-wise intersections, etc.) have been neglected. This is conservative,as the first-order sum is an upper bound for the actual probability or rate.
$ pip3 install sfta
- If simply using as a command line tool, do
pipx
instead ofpip3
to avoid having to set up a virtual environment. - If using Windows, do
pip
instead ofpip3
.
$ sfta [-h] [-v] ft.txtPerform a slow fault tree analysis.positional arguments: ft.txt name of fault tree text file; output is written unto the directory`{ft.txt}.out/`optional arguments: -h, --help show thishelp message andexit -v, --version show program's version number and exit
fromsfta.coreimportFaultTree,Gatefault_tree=FaultTree('''Event: A- rate: 0.9Event: B- probability: 0.7Event: C- rate: 1e-4Gate: AB- label: This be an AND gate.- type: AND- inputs: A, BGate: AB_C- label: This be an OR gate.- type: OR- inputs: AB, C''')fault_tree.gate_from_id['AB'].quantity_value# 0.63fault_tree.gate_from_id['AB_C'].quantity_value# 0.6301fault_tree.gate_from_id['AB_C'].input_ids# ['AB', 'C']fault_tree.gate_from_id['AB_C'].type_==Gate.TYPE_OR# True
Copyright 2022–2024 Conway
Licensed under the GNU General Public License v3.0 (GPL-3.0-only).
This is free software with NO WARRANTY etc. etc., see LICENSE.
About
Slow Fault Tree Analyser (SFTA): fault tree analysis for coherent fault trees