Internals
For contributors. None of these names is public.
The two forms of DeltaApproximation, which the dependencies and rules dispatch on:
DeltaMessagePassingRules.UnknownInverse — Type
UnknownInverseThe type of a DeltaApproximation without a known inverse, DeltaApproximation{<:Any, Nothing}. Its dependencies read the joint over the inputs towards an input: (:in, k) => (m[:in][k], q[(:in,)]).
DeltaMessagePassingRules.KnownInverse — Type
KnownInverseThe type of a DeltaApproximation with a known inverse, a function or a tuple of functions, one per input. Its dependencies read the message from out and the other inputs' messages towards an input: (:in, k) => (m[:out], m[:in][!k]).
The routines the Gaussian rules share: the two methods differ only in these.
DeltaMessagePassingRules.approximate_normal — Function
approximate_normal(method, f, distributions::Tuple)The normal approximation of f(x₁, …, xₙ) for independent normal inputs distributions, by method, Unscented or Linearization: a normal with the pushforward's mean and covariance, univariate or multivariate as the output of f is. The message rules towards out, and towards an input through a known inverse, are this call.
DeltaMessagePassingRules.forward_statistics — Function
forward_statistics(method, f, μs, Σs, μ_in, Σ_in) -> (μ, Σ, C)The mean μ and covariance Σ of f of the inputs, and the cross-covariance C of the inputs with it, by method, for inputs with means μs and covariances Σs (tuples, one entry per input) whose joint has mean μ_in and covariance Σ_in. The rule for the joint over the inputs smooths these with the message from out, by smoothRTS.
The error of a method the node does not accept, and the projection families of CVIProjection:
DeltaMessagePassingRules.delta_method_hint — Function
delta_method_hint(method) -> Union{Nothing, String}A sentence on what to do about a method the Delta node does not accept, which the error of DeltaApproximation appends, or nothing. A method whose rules live in a package extension, such as CVIProjection, names the package to load.
DeltaMessagePassingRules.get_kth_in_form — Function
get_kth_in_form(method::CVIProjection, k::Int)The projection family method names for input k, its in_prjparams.in_k, or nothing when it names none.