api

class rail.CPI

Bases: object

A class to retrieve United States CPI data and calculate inflation

inflation(from_year: int, to_year: int) → float

A method to retrieve United States CPI data and calculate inflation

class rail.Control(name: str, cost: float, reduction: float, implemented: bool = True)

Bases: collections.UserDict

A class to represent Controls

evaluate_lognormal(iterations=1)
class rail.Controls

Bases: collections.UserDict

A class to hold multiple Controls

costs()

A method to compute the deterministic costs of implemented controls in a Controls class

costs_lognormal()

A method to compute the stochastic costs of implemented controls in a Controls class

new(name: str, cost: float, reduction: float) → rail.control.Control

A method to add a new controls to the Controls class

class rail.Impact(name: str, mu: float, sigma: float)

Bases: collections.UserDict

A class to represent an Impact

from_lower_90_upper_90(lower_90: float, upper_90: float)

A method to create an impact from the lower 90th and upper 90th percentiles

plot(num=1000, axes=None) → list

A method to plot the impact

class rail.Likelihood(lam: float)

Bases: collections.UserDict

A class to represent a Likelihood

plot(axes=None) → tuple

A method to plot the likelihood

class rail.Risk(vulnerability: rail.vulnerability.Vulnerability, likelihood: rail.likelihood.Likelihood, impact: rail.impact.Impact)

Bases: collections.UserDict

evaluate_deterministic() → float
evaluate_lognormal(iterations: int = 1000) → float
class rail.Risks

Bases: collections.UserDict

calculate_dataframe_deterministic_mean()
calculate_stochastic_risks(interations: int = 100000)
determine_optimum_controls(controls, controls_to_optimize, stochastic=False)
expected_loss_deterministic_mean() → float
expected_loss_stochastic_mean(interations: int = 1000) → float
new(vulnerability: rail.vulnerability.Vulnerability, likelihood: rail.likelihood.Likelihood, impact: rail.impact.Impact) → rail.risk.Risk
plot(axes=None)
plot_risk_cost_matrix(controls, axes=None)
sensitivity_test(controls, iterations=1000)
set_optimum_controls(controls)
class rail.ThreatEvent(name: str, threat_source: rail.threat_source.ThreatSource)

Bases: collections.UserDict

A class to represent Threat Events

class rail.ThreatEvents(**kwargs)

Bases: collections.UserDict

A class to hold multiple Threat Events

new(name: str, threat_source: rail.threat_source.ThreatSource) → rail.threat_event.ThreatEvent

A method to add a new threat event to the Threat Events class

class rail.ThreatSource(name: str)

Bases: collections.UserDict

A class to represent Threat Sources

class rail.ThreatSources(**kwargs)

Bases: collections.UserDict

A class to hold multiple Threat Sources

new(name: str) → rail.threat_source.ThreatSource

A method to add a new threat source to the Threat Sources class

class rail.Tree(name: str, parent=None, sort: bool = True)

Bases: collections.UserDict

A class to implement a tree structure

add_child(name: str) → rail.tree.Tree

Add a child to the tree

path() → str

Print the path from the root to the child

to_dict_list() → dict

Print a tree in an alternating dict list format

to_latex() → None

Print a tree in LaTeX format

to_print() → None

Print all of a tree

class rail.Vulnerabilities(**kwargs)

Bases: collections.UserDict

A class to hold multiple Vulnerabilities

new(threat_event: rail.threat_event.ThreatEvent, system: rail.tree.Tree, controls: [<class 'rail.control.Control'>] = []) → rail.vulnerability.Vulnerability
class rail.Vulnerability(threat_event: rail.threat_event.ThreatEvent, system: rail.tree.Tree, controls: [<class 'rail.control.Control'>] = [])

Bases: collections.UserDict

A class to represent Vulnerabilities