dubfi.inversion.inversion_other =============================== .. py:module:: dubfi.inversion.inversion_other .. autoapi-nested-parse:: 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. .. codeauthor:: Valentin Bruch, DWD .. versionadded:: 0.1.5 Classes ------- .. autoapisummary:: dubfi.inversion.inversion_other.InvertorOptimizerTransformedPrior dubfi.inversion.inversion_other.InvertorOptimizerTransformedPriorNonnormalized dubfi.inversion.inversion_other.InvertorOptimizerLaplace dubfi.inversion.inversion_other.InvertorOptimizerLorentz dubfi.inversion.inversion_other.InvertorOptimizerSparseReconstruction Module Contents --------------- .. py:class:: 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: :py:obj:`dubfi.inversion.inversion.InvertorOptimizer` Abstract 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 :meth:`~cost_prior_transformed` as -log(P(x)) and its derivatives in :meth:`~cost_prior_grad_transformed` and :meth:`~cost_prior_hess_transformed`. .. versionadded:: 0.1.5 Solve inverse problem using full ensemble-estimated model uncertainty. :param y: vector of observations (usually minus model far-field or background) :type y: AbstractVector :param prior: a priori estimate for scaling factors :type prior: np.ndarray :param h: model equivalents depending on scaling factors :type h: ParametrizedVector :param b: error covariance matrix of prior scaling factors :type b: np.ndarray :param r: error covariance matrix of model-observation comparison, depends on scaling factors :type r: ParametrizedOperator :param norm_prefactor: prefactor of normalization term in cost function. prefactor of normalization term in cost function. :type norm_prefactor: float, default=0.0 .. py:property:: b :type: numpy.ndarray Prior error covariance matrix of scaling factors. .. py:method:: _check_before_solving() -> None Overwrite in inheriting classes to assert properties before solving. .. py:method:: cost_prior(s: numpy.ndarray) -> numpy.float64 Prior contribution to cost function. .. py:method:: cost_prior_grad(s: numpy.ndarray) -> numpy.ndarray Prior contribution to gradient of cost function. .. py:method:: cost_prior_hess(s: numpy.ndarray) -> numpy.ndarray Prior contribution to hessian of cost function. .. py:method:: cost_prior_transformed(x: numpy.ndarray) -> numpy.ndarray :abstractmethod: Prior contribution to cost function in transformed coordinates. .. py:method:: cost_prior_grad_transformed(x: numpy.ndarray) -> numpy.ndarray :abstractmethod: Gradient of prior cost function in transformed coordinates. .. py:method:: cost_prior_hess_transformed(x: numpy.ndarray) -> numpy.ndarray :abstractmethod: Diagonal of Hessian of prior cost function in transformed coordinates. .. py:class:: 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: :py:obj:`dubfi.inversion.inversion.InvertorOptimizer` Abstract 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 :meth:`~cost_prior_transformed` as -log(P(x)) and its derivatives in :meth:`~cost_prior_grad_transformed` and :meth:`~cost_prior_hess_transformed`. .. versionadded:: 0.1.5 Solve inverse problem using full ensemble-estimated model uncertainty. :param y: vector of observations (usually minus model far-field or background) :type y: AbstractVector :param prior: a priori estimate for scaling factors :type prior: np.ndarray :param h: model equivalents depending on scaling factors :type h: ParametrizedVector :param b: error covariance matrix of prior scaling factors :type b: np.ndarray :param r: error covariance matrix of model-observation comparison, depends on scaling factors :type r: ParametrizedOperator :param norm_prefactor: prefactor of normalization term in cost function. prefactor of normalization term in cost function. :type norm_prefactor: float, default=0.0 .. py:property:: b :type: numpy.ndarray Prior error covariance matrix of scaling factors. .. py:property:: x_stdev :type: numpy.ndarray Element-wise standard deviation of x. .. py:property:: x_prior :type: numpy.ndarray Prior of x. .. py:method:: _check_before_solving() -> None Overwrite in inheriting classes to assert properties before solving. .. py:method:: cost_prior(s: numpy.ndarray) -> numpy.float64 Prior contribution to cost function. .. py:method:: cost_prior_grad(s: numpy.ndarray) -> numpy.ndarray Prior contribution to gradient of cost function. .. py:method:: cost_prior_hess(s: numpy.ndarray) -> numpy.ndarray Prior contribution to hessian of cost function. .. py:method:: cost_prior_transformed(x: numpy.ndarray) -> numpy.ndarray :abstractmethod: Prior contribution to cost function in transformed coordinates. .. py:method:: cost_prior_grad_transformed(x: numpy.ndarray) -> numpy.ndarray :abstractmethod: Gradient of prior cost function in transformed coordinates. .. py:method:: cost_prior_hess_transformed(x: numpy.ndarray) -> numpy.ndarray :abstractmethod: Diagonal of Hessian of prior cost function in transformed coordinates. .. py:class:: 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: :py:obj:`InvertorOptimizerTransformedPrior` Numerical solver for flux inversion problem with Laplacian prior PDF. .. versionadded:: 0.1.5 Solve inverse problem using full ensemble-estimated model uncertainty. :param y: vector of observations (usually minus model far-field or background) :type y: AbstractVector :param prior: a priori estimate for scaling factors :type prior: np.ndarray :param h: model equivalents depending on scaling factors :type h: ParametrizedVector :param b: error covariance matrix of prior scaling factors :type b: np.ndarray :param r: error covariance matrix of model-observation comparison, depends on scaling factors :type r: ParametrizedOperator :param norm_prefactor: prefactor of normalization term in cost function. prefactor of normalization term in cost function. :type norm_prefactor: float, default=0.0 .. py:method:: cost_prior_transformed(x: numpy.ndarray) -> numpy.ndarray Prior contribution to cost function in transformed coordinates. .. py:method:: cost_prior_grad_transformed(x: numpy.ndarray) -> numpy.ndarray Gradient of prior cost function in transformed coordinates. .. py:method:: cost_prior_hess_transformed(x: numpy.ndarray) -> numpy.ndarray Diagonal of Hessian of prior cost function in transformed coordinates. .. py:class:: 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: :py:obj:`InvertorOptimizerTransformedPrior` Numerical solver for flux inversion problem with Lorentz/Cauchy/Breit-Wigner prior PDF. .. versionadded:: 0.1.5 Solve inverse problem using full ensemble-estimated model uncertainty. :param y: vector of observations (usually minus model far-field or background) :type y: AbstractVector :param prior: a priori estimate for scaling factors :type prior: np.ndarray :param h: model equivalents depending on scaling factors :type h: ParametrizedVector :param b: error covariance matrix of prior scaling factors :type b: np.ndarray :param r: error covariance matrix of model-observation comparison, depends on scaling factors :type r: ParametrizedOperator :param norm_prefactor: prefactor of normalization term in cost function. prefactor of normalization term in cost function. :type norm_prefactor: float, default=0.0 .. py:method:: cost_prior_transformed(x: numpy.ndarray) -> numpy.ndarray Prior contribution to cost function in transformed coordinates. .. py:method:: cost_prior_grad_transformed(x: numpy.ndarray) -> numpy.ndarray Gradient of prior cost function in transformed coordinates. .. py:method:: cost_prior_hess_transformed(x: numpy.ndarray) -> numpy.ndarray Diagonal of Hessian of prior cost function in transformed coordinates. .. py:class:: 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: :py:obj:`InvertorOptimizerTransformedPriorNonnormalized` Numerical solver for flux inversion problem for sparse reconstruction with zero prior. .. versionadded:: 0.1.5 Solve inverse problem using full ensemble-estimated model uncertainty. :param y: vector of observations (usually minus model far-field or background) :type y: AbstractVector :param prior: a priori estimate for scaling factors :type prior: np.ndarray :param h: model equivalents depending on scaling factors :type h: ParametrizedVector :param b: error covariance matrix of prior scaling factors :type b: np.ndarray :param r: error covariance matrix of model-observation comparison, depends on scaling factors :type r: ParametrizedOperator :param norm_prefactor: prefactor of normalization term in cost function. prefactor of normalization term in cost function. :type norm_prefactor: float, default=0.0 .. py:method:: cost_prior_transformed(x: numpy.ndarray) -> numpy.ndarray Prior contribution to cost function in transformed coordinates. .. py:method:: cost_prior_grad_transformed(x: numpy.ndarray) -> numpy.ndarray Gradient of prior cost function in transformed coordinates. .. py:method:: cost_prior_hess_transformed(x: numpy.ndarray) -> numpy.ndarray Diagonal of Hessian of prior cost function in transformed coordinates.