mrpro.operators.ProximableFunctional
- class mrpro.operators.ProximableFunctional[source]
Bases:
Operator
[Tensor
,tuple
[Tensor
]],ABC
ProximableFunctional Base Class.
A proximable functional is a functional \(f(x)\) that has a prox implementation, i.e. a function that yields \(\mathrm{argmin}_x \sigma f(x) + 1/2 ||x - y||_2^2\) and a prox_convex_conjugate, yielding the prox of the convex conjugate.
- abstract prox(x: Tensor, sigma: Tensor | float = 1.0) tuple[Tensor] [source]
Apply proximal operator.
Yields \(\mathrm{prox}_{\sigma f}(x) = \mathrm{argmin}_{p} \sigma f(p) + 1/2 \|x-p\|_2^2\) given \(x\) and \(\sigma\).
- prox_convex_conj(x: Tensor, sigma: Tensor | float = 1.0) tuple[Tensor] [source]
Apply proximal operator of convex conjugate of functional.
Yields \(\mathrm{prox}_{\sigma f^*}(x) = \mathrm{argmin}_{p} \sigma f^*(p) + 1/2 \|x-p\|_2^2\), where \(f^*\) denotes the convex conjugate of \(f\), given \(x\) and \(\sigma\).
- __or__(other: ProximableFunctional) ProximableFunctionalSeparableSum[Tensor, Tensor] [source]
Create a ProximableFunctionalSeparableSum object from two proximable functionals.
- Parameters:
other (
ProximableFunctional
) – second functional to be summed- Returns:
ProximableFunctionalSeparableSum object
- __rmul__(scalar: Tensor | complex) ProximableFunctional [source]
Multiply functional with scalar.
- __add__(other: Operator[Unpack[Tin], Tout]) Operator[Unpack[Tin], Tout] [source]
- __add__(other: Tensor | complex) Operator[Unpack[Tin], tuple[Unpack[Tin]]]
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[Tin2], tuple[Unpack[Tin]]] | Operator[Unpack[Tin2], tuple[Tensor, ...]]) Operator[Unpack[Tin2], Tout] [source]
Operator composition.
Returns
lambda x: self(other(x))