nifty8.operators.sandwich_operator module#
- class SandwichOperator(bun, cheese, op, _callingfrommake=False)[source]#
Bases:
EndomorphicOperator
Operator which is equivalent to the expression bun.adjoint(cheese(bun)).
Note
This operator should always be called using the make method.
- apply(x, mode)[source]#
Applies the Operator to a given x, in a specified mode.
- Parameters:
x (
nifty8.field.Field
) – The input Field, defined on the Operator’s domain or target, depending on mode.mode (int) –
TIMES
: normal applicationADJOINT_TIMES
: adjoint applicationINVERSE_TIMES
: inverse applicationADJOINT_INVERSE_TIMES
orINVERSE_ADJOINT_TIMES
: adjoint inverse application
- Returns:
The processed Field defined on the Operator’s target or domain, depending on mode.
- Return type:
- draw_sample(from_inverse=False)[source]#
Generates a sample from a Gaussian distribution with zero mean and covariance given by the operator.
May or may not be implemented. Only optional.
- Parameters:
from_inverse (bool (default : False)) – if True, the sample is drawn from the inverse of the operator
- Returns:
A sample from the Gaussian of given covariance.
- Return type:
- get_sqrt()[source]#
Return operator op which obeys self == op.adjoint @ op.
Note that this function is only implemented for operators with real spectrum.
- Returns:
Operator which is the square root of self
- Return type:
- static make(bun, cheese=None, sampling_dtype=None)[source]#
Build a SandwichOperator (or something simpler if possible)
- Parameters:
bun (LinearOperator) – the bun part
cheese (EndomorphicOperator) – the cheese part
sampling_dtype – If this operator represents the covariance of a Gaussian probabilty distribution and cheese is None, sampling_dtype specifies if it is real or complex Gaussian. If sampling_dtype and cheese are None, the operator cannot be used as a covariance, i.e. no samples can be drawn. Default: None.