mrpro.operators.ProximableFunctionalSeparableSum

class mrpro.operators.ProximableFunctionalSeparableSum[source]

Bases: Operator[Unpack[tuple[Tensor, …]], tuple[Tensor]]

Separable Sum of Proximable Functionals.

This is a separable sum of the functionals. The forward method returns the sum of the functionals evaluated at the inputs, \(\sum_i f_i(x_i)\).

__init__(*functionals: ProximableFunctional) None[source]

Initialize the separable sum of proximable functionals.

Parameters:

functionals (ProximableFunctional) – The proximable functionals to be summed.

__call__(*args: Unpack) Tout[source]

Apply the forward operator.

For more information, see forward.

Note

Prefer using operator_instance(*parameters), i.e. using __call__ over using forward.

forward(*x: Tensor) tuple[Tensor][source]

Apply the functionals to the inputs.

Parameters:

x (Tensor) – The inputs to the functionals

Returns:

The sum of the functionals applied to the inputs

prox(*x: Tensor, sigma: float | Tensor = 1) tuple[Tensor, ...][source]

Apply the proximal operators of the functionals to the inputs.

Parameters:
  • x (Tensor) – The inputs to the proximal operators

  • sigma (float | Tensor, default: 1) – The scaling factor for the proximal operators

Returns:

A tuple of the proximal operators applied to the inputs

prox_convex_conj(*x: Tensor, sigma: float | Tensor = 1) tuple[Tensor, ...][source]

Apply the proximal operators of the convex conjugate of the functionals to the inputs.

Parameters:
  • x (Tensor) – The inputs to the proximal operators

  • sigma (float | Tensor, default: 1) – The scaling factor for the proximal operators

Returns:

A tuple of the proximal convex conjugate operators applied to the inputs

__or__(other: ProximableFunctional | ProximableFunctionalSeparableSum) Self[source]

Separable sum functionals.

__ror__(other: ProximableFunctional) Self[source]

Separable sum functionals.

__add__(other: Operator[Unpack, Tout]) Operator[Unpack, Tout][source]
__add__(other: Tensor) Operator[Unpack, tuple[Unpack]]

Operator addition.

Returns lambda x: self(x) + other(x) if other is a operator, lambda x: self(x) + other*x if other is a tensor

__matmul__(other: Operator[Unpack, tuple[Unpack]]) Operator[Unpack, Tout][source]

Operator composition.

Returns lambda x: self(other(x))

__mul__(other: Tensor | complex) Operator[Unpack, Tout][source]

Operator multiplication with tensor.

Returns lambda x: self(x*other)

__radd__(other: Tensor) Operator[Unpack, tuple[Unpack]][source]

Operator right addition.

Returns lambda x: other*x + self(x)

__rmul__(other: Tensor | complex) Operator[Unpack, Tout][source]

Operator multiplication with tensor.

Returns lambda x: other*self(x)