dubfi.inversion.inversion_other¶
Inversion for arbitrary single-variant a priori probability distributions.
Mathematical construction¶
Consider an arbitrary probability density function (PDF) P(x) of a scalar variable x with mean 0 and variance 1. This can be used as a priori PDF for the state vector s with (positive definite, real- symmetric) error covariance matrix B using the transformation s = Q x + s0 where Q Q^T = B. The PDF of s is P’(s) = P(Q^-1 (s - s0)).
Similarly, we can consider a PDF P(x) with mean x0 and standard deviation xstd. Then one can define s = O x where B = O D O^T is the (orthogonal) eigenvalue decomposition of B and D is a diagonal matrix with entries xstd^2. The prior of the state vector is s0 = O x0.
This module implements two helper classes for using almost arbitrary P(x) to construct P’(s) for these two transformations.
Added in version 0.1.5.
Classes¶
Abstract solver for flux inversion problem with prior cost computed in transformed coordinates. |
|
Abstract solver for flux inversion problem with prior cost computed in transformed coordinates. |
|
Numerical solver for flux inversion problem with Laplacian prior PDF. |
|
Numerical solver for flux inversion problem with Lorentz/Cauchy/Breit-Wigner prior PDF. |
|
Numerical solver for flux inversion problem for sparse reconstruction with zero prior. |
Module Contents¶
- class dubfi.inversion.inversion_other.InvertorOptimizerTransformedPrior(y: dubfi.linalg.types.AbstractVector, prior: numpy.ndarray, h: dubfi.linalg.generic.ParametrizedVector, b: numpy.ndarray, r: dubfi.linalg.generic.ParametrizedOperator, norm_prefactor: float = 0.0)¶
Bases:
dubfi.inversion.inversion.InvertorOptimizerAbstract solver for flux inversion problem with prior cost computed in transformed coordinates.
Helper for arbitrary prior probability density functions P(x) that are applied to the uncertainty-normalized deviation from the prior. Implement
cost_prior_transformed()as -log(P(x)) and its derivatives incost_prior_grad_transformed()andcost_prior_hess_transformed().Added in version 0.1.5.
Solve inverse problem using full ensemble-estimated model uncertainty.
- Parameters:
y (AbstractVector) – vector of observations (usually minus model far-field or background)
prior (np.ndarray) – a priori estimate for scaling factors
h (ParametrizedVector) – model equivalents depending on scaling factors
b (np.ndarray) – error covariance matrix of prior scaling factors
r (ParametrizedOperator) – error covariance matrix of model-observation comparison, depends on scaling factors
norm_prefactor (float, default=0.0) –
- prefactor of normalization term in cost function.
prefactor of normalization term in cost function.
- property b: numpy.ndarray¶
Prior error covariance matrix of scaling factors.
- _check_before_solving() None¶
Overwrite in inheriting classes to assert properties before solving.
- cost_prior(s: numpy.ndarray) numpy.float64¶
Prior contribution to cost function.
- cost_prior_grad(s: numpy.ndarray) numpy.ndarray¶
Prior contribution to gradient of cost function.
- cost_prior_hess(s: numpy.ndarray) numpy.ndarray¶
Prior contribution to hessian of cost function.
- abstractmethod cost_prior_transformed(x: numpy.ndarray) numpy.ndarray¶
Prior contribution to cost function in transformed coordinates.
- abstractmethod cost_prior_grad_transformed(x: numpy.ndarray) numpy.ndarray¶
Gradient of prior cost function in transformed coordinates.
- abstractmethod cost_prior_hess_transformed(x: numpy.ndarray) numpy.ndarray¶
Diagonal of Hessian of prior cost function in transformed coordinates.
- class dubfi.inversion.inversion_other.InvertorOptimizerTransformedPriorNonnormalized(y: dubfi.linalg.types.AbstractVector, prior: numpy.ndarray, h: dubfi.linalg.generic.ParametrizedVector, b: numpy.ndarray, r: dubfi.linalg.generic.ParametrizedOperator, norm_prefactor: float = 0.0)¶
Bases:
dubfi.inversion.inversion.InvertorOptimizerAbstract solver for flux inversion problem with prior cost computed in transformed coordinates.
Helper for arbitrary prior probability density functions P(x). In this case, x is the full prior and not normalized to uncertainty. Implement
cost_prior_transformed()as -log(P(x)) and its derivatives incost_prior_grad_transformed()andcost_prior_hess_transformed().Added in version 0.1.5.
Solve inverse problem using full ensemble-estimated model uncertainty.
- Parameters:
y (AbstractVector) – vector of observations (usually minus model far-field or background)
prior (np.ndarray) – a priori estimate for scaling factors
h (ParametrizedVector) – model equivalents depending on scaling factors
b (np.ndarray) – error covariance matrix of prior scaling factors
r (ParametrizedOperator) – error covariance matrix of model-observation comparison, depends on scaling factors
norm_prefactor (float, default=0.0) –
- prefactor of normalization term in cost function.
prefactor of normalization term in cost function.
- property b: numpy.ndarray¶
Prior error covariance matrix of scaling factors.
- property x_stdev: numpy.ndarray¶
Element-wise standard deviation of x.
- property x_prior: numpy.ndarray¶
Prior of x.
- _check_before_solving() None¶
Overwrite in inheriting classes to assert properties before solving.
- cost_prior(s: numpy.ndarray) numpy.float64¶
Prior contribution to cost function.
- cost_prior_grad(s: numpy.ndarray) numpy.ndarray¶
Prior contribution to gradient of cost function.
- cost_prior_hess(s: numpy.ndarray) numpy.ndarray¶
Prior contribution to hessian of cost function.
- abstractmethod cost_prior_transformed(x: numpy.ndarray) numpy.ndarray¶
Prior contribution to cost function in transformed coordinates.
- abstractmethod cost_prior_grad_transformed(x: numpy.ndarray) numpy.ndarray¶
Gradient of prior cost function in transformed coordinates.
- abstractmethod cost_prior_hess_transformed(x: numpy.ndarray) numpy.ndarray¶
Diagonal of Hessian of prior cost function in transformed coordinates.
- class dubfi.inversion.inversion_other.InvertorOptimizerLaplace(y: dubfi.linalg.types.AbstractVector, prior: numpy.ndarray, h: dubfi.linalg.generic.ParametrizedVector, b: numpy.ndarray, r: dubfi.linalg.generic.ParametrizedOperator, norm_prefactor: float = 0.0)¶
Bases:
InvertorOptimizerTransformedPriorNumerical solver for flux inversion problem with Laplacian prior PDF.
Added in version 0.1.5.
Solve inverse problem using full ensemble-estimated model uncertainty.
- Parameters:
y (AbstractVector) – vector of observations (usually minus model far-field or background)
prior (np.ndarray) – a priori estimate for scaling factors
h (ParametrizedVector) – model equivalents depending on scaling factors
b (np.ndarray) – error covariance matrix of prior scaling factors
r (ParametrizedOperator) – error covariance matrix of model-observation comparison, depends on scaling factors
norm_prefactor (float, default=0.0) –
- prefactor of normalization term in cost function.
prefactor of normalization term in cost function.
- cost_prior_transformed(x: numpy.ndarray) numpy.ndarray¶
Prior contribution to cost function in transformed coordinates.
- cost_prior_grad_transformed(x: numpy.ndarray) numpy.ndarray¶
Gradient of prior cost function in transformed coordinates.
- cost_prior_hess_transformed(x: numpy.ndarray) numpy.ndarray¶
Diagonal of Hessian of prior cost function in transformed coordinates.
- class dubfi.inversion.inversion_other.InvertorOptimizerLorentz(y: dubfi.linalg.types.AbstractVector, prior: numpy.ndarray, h: dubfi.linalg.generic.ParametrizedVector, b: numpy.ndarray, r: dubfi.linalg.generic.ParametrizedOperator, norm_prefactor: float = 0.0)¶
Bases:
InvertorOptimizerTransformedPriorNumerical solver for flux inversion problem with Lorentz/Cauchy/Breit-Wigner prior PDF.
Added in version 0.1.5.
Solve inverse problem using full ensemble-estimated model uncertainty.
- Parameters:
y (AbstractVector) – vector of observations (usually minus model far-field or background)
prior (np.ndarray) – a priori estimate for scaling factors
h (ParametrizedVector) – model equivalents depending on scaling factors
b (np.ndarray) – error covariance matrix of prior scaling factors
r (ParametrizedOperator) – error covariance matrix of model-observation comparison, depends on scaling factors
norm_prefactor (float, default=0.0) –
- prefactor of normalization term in cost function.
prefactor of normalization term in cost function.
- cost_prior_transformed(x: numpy.ndarray) numpy.ndarray¶
Prior contribution to cost function in transformed coordinates.
- cost_prior_grad_transformed(x: numpy.ndarray) numpy.ndarray¶
Gradient of prior cost function in transformed coordinates.
- cost_prior_hess_transformed(x: numpy.ndarray) numpy.ndarray¶
Diagonal of Hessian of prior cost function in transformed coordinates.
- class dubfi.inversion.inversion_other.InvertorOptimizerSparseReconstruction(y: dubfi.linalg.types.AbstractVector, prior: numpy.ndarray, h: dubfi.linalg.generic.ParametrizedVector, b: numpy.ndarray, r: dubfi.linalg.generic.ParametrizedOperator, norm_prefactor: float = 0.0)¶
Bases:
InvertorOptimizerTransformedPriorNonnormalizedNumerical solver for flux inversion problem for sparse reconstruction with zero prior.
Added in version 0.1.5.
Solve inverse problem using full ensemble-estimated model uncertainty.
- Parameters:
y (AbstractVector) – vector of observations (usually minus model far-field or background)
prior (np.ndarray) – a priori estimate for scaling factors
h (ParametrizedVector) – model equivalents depending on scaling factors
b (np.ndarray) – error covariance matrix of prior scaling factors
r (ParametrizedOperator) – error covariance matrix of model-observation comparison, depends on scaling factors
norm_prefactor (float, default=0.0) –
- prefactor of normalization term in cost function.
prefactor of normalization term in cost function.
- cost_prior_transformed(x: numpy.ndarray) numpy.ndarray¶
Prior contribution to cost function in transformed coordinates.
- cost_prior_grad_transformed(x: numpy.ndarray) numpy.ndarray¶
Gradient of prior cost function in transformed coordinates.
- cost_prior_hess_transformed(x: numpy.ndarray) numpy.ndarray¶
Diagonal of Hessian of prior cost function in transformed coordinates.