The core of UQpy is the RunModel module, which serves as the UQpy API to third-party software. The RunModel module is developed to be flexible and therefore allow simple and efficient interfacing with any commercial software and custom software alike. RunModel serves as both a conversion utility (translating information from UQpy into software input) as well as a driver for computational analyses (it will execute the code, repeated if necessary as in a Monte Carlo analysis).
All primary functionalities in UQpy are categorized according to the modules illustrated above. These modules are:
- SampleMethods: The SampleMethods module contains a set of classes for generating samples of random variables according to different techniques. SampleMethods is used for statistically-based approaches (i.e. Monte Carlo type) as well as numerical approaches (e.g. stochastic collocation). The current classes in SampleMethods are:
- MCS - Monte Carlo Sampling
- LHS - Latin Hypercube Sampling
- STS - Stratified Sampling
- MCMC - Markov Chain Monte Carlo
- Correlate - Impose correlation on standard normal samples
- Decorrelate - Remove correlation from correlated standard normal samples
- Nataf - Transform standard normal samples to a non-Gaussian distribution
- InvNataf - Transform non-Gaussian samples to a standard normal distribution
- Reliability: The Reliability module contains a set of classes aimed at performing reliability analysis / estimating probability of failure. The current classes in Reliability are:
- SubsetSimulation - Subset simulation using Metropolis-Hastings, Component-wise Modified Metropolis-Hastings, or Affine Invariant Ensemble Sampler.
- TaylorSeries - Reliability analysis based on a Taylor Series expansion of the limit surface, specifically including First Order Reliabilty Method (FORM) and Second Order Reliability Method (SORM).
- Inference (Coming soon): The inference module contains a set of classes for model selection (both Bayesian and information theoretic) and Bayesian parameter estimation.
- Surrogate: The Surrogate module contains a set of classes for developing surrogate models. UQpy currently offers two options for surrogate modeling:
- SROM - Stochastic Reduced Order Models
- Kriging - Gaussian Process Regression / Kriging
- Optimization (Coming soon): The optimization module contains a set of classes for optimization.
- StochasticProcess: The StochasticProcess module contains a set of classes for simulation (synthetic generation) of random processes and random fields. The current classes in StochasticProcess are:
- SRM - Spectral Representation Method
- BSRM - Bispectral Representation Method (Generalized third-order spectral representation method)
- KLE - Karhunen-Loeve Expansion
- Translate - Translation Process
- Inverse Translate - Identify the underlying Gaussian random process from a known non-Gaussian random process
- Sensitivity (Coming soon): The Sensitivity module contains a set of classes for performing global and local sensitivity analysis.
UQpy also contains two support modules:
- Distributions: The Distributions module specifies pre-defined probability distributions and enables user-defined probability distributions for use in UQpy.
- Utilities: The Utilities module contains a set of functions and classes that are broadly useful to support multiple core functionalities.