API Reference

Analysis API

Analysis API

UQPyL.analysis

The analysis module evaluates how input variables affect objective or constraint outputs.

Import

python
from UQPyL.analysis import RBDFAST, Sobol, Morris
from UQPyL.analysis.runtime import AnaReader

Public Objects

ObjectRole
SobolVariance-based global sensitivity analysis using Saltelli samples.
FASTFourier amplitude sensitivity test using FAST design samples.
RBDFASTRandom balance design FAST for first-order sensitivity.
MorrisScreening method based on elementary effects.
RSARegional sensitivity analysis.
DeltaTestNearest-neighbor delta test for variable sensitivity.
MARSMARS-based sensitivity analysis. May be None if optional dependencies are unavailable.

Runtime result objects are available from UQPyL.analysis.runtime.

ObjectRole
AnaResultStandard result object returned by analyze().
AnaMetricOne metric matrix in an AnaResult.
AnaReaderReader for sqlite results saved with saveFlag=True.

Analysis Workflow

All analysis methods use the same public workflow.

python
result = method.analyze(
    problem,
    X,
    Y=None,
    meta=None,
    target="objs",
    index="all",
)
ParameterMeaning
problemA ProblemBase instance.
XInput sample matrix.
YOptional output matrix corresponding to X. If omitted, the method evaluates problem.
metaOptional sampling metadata from sampleWithMeta(). Required by some methods.
targetOutput block to analyze. Usually "objs" or "cons".
indexOutput column selection. Use "all", an integer, or a list of integers.

Constructor runtime flags are shared by all analysis methods:

ParameterMeaning
verboseFlagPrint compact runtime summaries.
logFlagWrite a text log when enabled.
saveFlagPersist result data to sqlite when enabled.

Example:

python
from UQPyL.analysis import RBDFAST
from UQPyL.doe import LHS
from UQPyL.problem import Sphere


problem = Sphere(nInput=3)
X = LHS("classic").sample(problem, nSamples=128, seed=123)
Y = problem.evaluate(X, target="objs").objs

method = RBDFAST(verboseFlag=False)
result = method.analyze(problem, X, Y=Y, target="objs")

print(result.metricNames)
print(result.getMetric("S1").values)

AnaResult

AnaResult is returned by every analysis method.

FieldTypeMeaning
runIdstr or NoneSaved run id when saveFlag=True.
methodstrAnalysis method name.
problemNamestrProblem name.
nInputintNumber of input variables.
nOutputintNumber of objectives.
nConintNumber of constraints.
targetstrAnalyzed target, such as "objs" or "cons".
settingsdictMethod settings.
metadictSampling metadata recorded with the result.
metricslist[AnaMetric]Analysis metrics.
Xnp.ndarray or NoneRecorded input matrix.
Ynp.ndarray or NoneRecorded output matrix.
runtimefloatRuntime in seconds.
createdAtstrCreation timestamp.
extradictExtra method-specific payload.

Methods and Properties

APIReturnsMeaning
metricNameslist[str]Names of recorded metrics.
metricMapdict[str, AnaMetric]Metric lookup by name.
getMetric(name)AnaMetricReturn one metric by name.
result[name]AnaMetricAlias for getMetric(name).
summary()dictRuntime summary.
toDict()dictFull serializable result dictionary.

AnaMetric

AnaMetric stores one analysis metric matrix.

FieldTypeMeaning
namestrMetric name, such as "S1", "ST", or "mu_star".
valuesnp.ndarrayMetric values. Rows are analyzed outputs; columns are input variables or input pairs.
rowLabelslist[str]Output labels, such as obj1.
colLabelslist[str]Input labels or input-pair labels.
colDimstrColumn dimension type, such as "decsDim1" or "decsDim2".

Method:

APIReturnsMeaning
toDict()dictDictionary representation of the metric.

Sobol

Variance-based global sensitivity analysis.

python
Sobol(verboseFlag=True, logFlag=False, saveFlag=False)

Use with SaltelliDesign.sampleWithMeta().

python
from UQPyL.analysis import Sobol
from UQPyL.doe import SaltelliDesign


X, meta = SaltelliDesign(secondOrder=True).sampleWithMeta(problem, N=512, seed=123)
Y = problem.evaluate(X, target="objs").objs

result = Sobol(verboseFlag=False).analyze(problem, X, Y=Y, meta=meta)

Required metadata:

KeyRequired value
designType"saltelli"
secondOrderTrue or False

Metrics:

MetricMeaning
S1First-order Sobol index.
S1_normFirst-order index normalized by row sum.
STTotal-order Sobol index.
ST_normTotal-order index normalized by row sum.
S2Second-order Sobol index. Present only when secondOrder=True.

FAST

Fourier amplitude sensitivity test.

python
FAST(verboseFlag=True, logFlag=False, saveFlag=False)

Use with FASTDesign.sampleWithMeta().

python
from UQPyL.analysis import FAST
from UQPyL.doe import FASTDesign


X, meta = FASTDesign(M=4).sampleWithMeta(problem, N=256, seed=123)
result = FAST(verboseFlag=False).analyze(problem, X, meta=meta)

Required metadata:

KeyRequired value
designType"fast"
MFAST interference parameter.

Metrics:

MetricMeaning
S1First-order FAST index.
S1_normFirst-order index normalized by row sum.
STTotal-order FAST index.
ST_normTotal-order index normalized by row sum.

RBDFAST

Random balance design FAST.

python
RBDFAST(M=4, verboseFlag=True, logFlag=False, saveFlag=False)
ParameterMeaning
MNumber of harmonics used in the periodogram estimate.

RBDFAST can analyze ordinary sample matrices. It does not require metadata.

python
from UQPyL.analysis import RBDFAST
from UQPyL.doe import LHS


X = LHS("classic").sample(problem, nSamples=500, seed=123)
Y = problem.evaluate(X, target="objs").objs

result = RBDFAST(M=4, verboseFlag=False).analyze(problem, X, Y=Y)

Metrics:

MetricMeaning
S1First-order RBD-FAST index.

Morris

Morris screening analysis based on elementary effects.

python
Morris(verboseFlag=True, logFlag=False, saveFlag=False)

Use with MorrisDesign.sampleWithMeta().

python
from UQPyL.analysis import Morris
from UQPyL.doe import MorrisDesign


X, meta = MorrisDesign(numLevels=4).sampleWithMeta(problem, numTrajectory=20, seed=123)
Y = problem.evaluate(X, target="objs").objs

result = Morris(verboseFlag=False).analyze(problem, X, Y=Y, meta=meta)

Required metadata:

KeyRequired value
designType"morris"
numLevelsEven integer greater than or equal to 4.

Metrics:

MetricMeaning
muMean elementary effect.
mu_starMean absolute elementary effect.
sigmaStandard deviation of elementary effects.
S1_normmu_star normalized by row sum.

RSA

Regional sensitivity analysis.

python
RSA(nRegion=20, verboseFlag=True, logFlag=False, saveFlag=False)
ParameterMeaning
nRegionNumber of output regions used by RSA.

Metrics:

MetricMeaning
S1Regional sensitivity statistic.
S1_normS1 normalized by row sum.

DeltaTest

Nearest-neighbor delta test for variable sensitivity.

python
DeltaTest(nNeighbors=2, verboseFlag=True, logFlag=False, saveFlag=False)
ParameterMeaning
nNeighborsNumber of nearest neighbors used by the delta estimate.

Methods

MethodReturnsMeaning
analyze(problem, X, Y=None, meta=None, target="objs", index="all")AnaResultRun the delta test.
findCombEA(problem, X, Y=None, FEs=10000, verboseFlag=True, saveFlag=True)optimization resultSearch for a variable subset with GA.
findCombVio(problem, X, Y=None)list[str]Brute-force variable subset search.

Metrics:

MetricMeaning
S1Delta-test variable contribution.
S1_normS1 normalized by row sum.

MARS

MARS-based sensitivity analysis.

python
MARS(verboseFlag=True, logFlag=False, saveFlag=False)

MARS can be None when optional surrogate dependencies are unavailable.

Metrics:

MetricMeaning
S1Absolute change in MARS GCV when one variable is removed.
S1_normS1 normalized by row sum.

AnaReader

Use AnaReader to read sqlite results saved by analysis methods with saveFlag=True.

python
from UQPyL.analysis.runtime import AnaReader


with AnaReader("Result/rbdfast_Sphere_20260509_1200_0000.sqlite3") as reader:
    result = reader.load_result()
    print(result.metricNames)
MethodReturnsMeaning
AnaReader.list_runs(result_dir)table-like dataList saved analysis runs in a result directory.
get_run()dict or NoneReturn raw run metadata.
get_run_summary()dictReturn compact run summary.
get_run_params()dictReturn raw stored run parameters.
get_metrics()list[AnaMetric]Load all metrics.
get_metric(name)AnaMetricLoad one metric by name.
get_artifacts()dictLoad saved artifacts such as X, Y, settings, meta, and extra.
load_problem()problem objectLoad the saved problem payload.
load_result()AnaResultReconstruct the full analysis result.
close()NoneClose the sqlite connection.