pylops_mpi.proximal.proximal.MPIL21#

class pylops_mpi.proximal.proximal.MPIL21(ndim, sigma=1.0)[source]#

\(L_{2,1}\) proximal operator.

Implement a distributed version of the \(L_{2,1}\) matrix norm.

Parameters:
ndimint

Number of dimensions \(N_{dim}\). Used to reshape the input array in a matrix of size \(N_{dim} \times N'_{x}\) where \(N'_x = \frac{N_x}{N_{dim}}\). Note that the input vector x must be a pylops_mpi.StackedDistributedArray that contains ndim pylops_mpi.DistributedArray.

sigmafloat, optional

Multiplicative coefficient of \(L_{2,1}\) norm

Notes

This is a distributed implementation of the \(L_{2,1}\) norm.

The matrix is here represented as a pylops_mpi.StackedDistributedArray with each column corresponding to a pylops_mpi.DistributedArray.

The norm evaluation simply requires the creation of an intermediate pylops_mpi.DistributedArray that contains the sum of the square root of the sum of the squares of the corresponding elements in the pylops_mpi.DistributedArray of the pylops_mpi.StackedDistributedArray the underlying distributed array. This is further reduced by computing the L1 norm.

The proximal operator requires once again the creation of the same intermediate pylops_mpi.DistributedArray, followed by a per-element independent re-scaling.

Methods

__init__(ndim[, sigma])

postcomposition(sigma)

Postcomposition

precomposition(a, b)

Precomposition

prox(**kwargs)

proxdual(**kwargs)

sum_squared(x)