Reliability Engineering Toolkit for Python
reliability is a Python library for reliability engineering and survival analysis, significantly extending `scipy.stats` functionality. It provides specialist tools for distribution fitting (including censored data and mixture models), survival analysis (Kaplan-Meier, Nelson-Aalen), reliability testing, and physics of failure. The library is actively maintained, with regular updates and improvements.
Warnings
- breaking The API and functionality can change significantly between minor versions. For instance, version 0.8.1 is noted to be 'significantly different' from more recent versions. Users should consult the latest documentation when upgrading.
- gotcha Plotting functions in `reliability` are built upon `matplotlib`. To display plots, you must explicitly import `matplotlib.pyplot` and often call `plt.show()` after generating plots. Expecting plots to appear automatically without this setup is a common mistake.
- gotcha The library primarily uses an object-oriented paradigm where distributions are first instantiated as objects (e.g., `Weibull_Distribution`), and then methods are called on these objects for operations like sampling, fitting, or plotting. Users accustomed to a purely functional style (like parts of `scipy.stats`) might initially miss this pattern.
Install
-
pip install reliability
Imports
- Weibull_Distribution
from reliability.Distributions import Weibull_Distribution
- Fit_Weibull_2P
from reliability.Fitters import Fit_Weibull_2P
- plot_points
from reliability.Probability_plotting import plot_points
Quickstart
import matplotlib.pyplot as plt
from reliability.Distributions import Weibull_Distribution
from reliability.Fitters import Fit_Weibull_2P
# Create a Weibull Distribution object
dist = Weibull_Distribution(alpha=30, beta=2)
# Draw 20 random samples
data = dist.random_samples(20, seed=42)
plt.figure(figsize=(10, 5))
plt.subplot(121)
# Fit a 2-parameter Weibull Distribution to the samples
fit = Fit_Weibull_2P(failures=data, show_probability_plot=True)
plt.title('Weibull Probability Plot')
plt.subplot(122)
# Plot the survival function from the fitted distribution
fit.distribution.SF()
plt.title('Survival Function')
plt.tight_layout()
plt.show()