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.

__init__(bun, cheese, op, _callingfrommake=False)[source]#
__repr__()[source]#

Return repr(self).

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 application

    • ADJOINT_TIMES: adjoint application

    • INVERSE_TIMES: inverse application

    • ADJOINT_INVERSE_TIMES or INVERSE_ADJOINT_TIMES: adjoint inverse application

Returns:

The processed Field defined on the Operator’s target or domain, depending on mode.

Return type:

nifty8.field.Field

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:

nifty8.field.Field or nifty8.multi_field.MultiField

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:

EndomorphicOperator

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.