PyProximal API#

The Application Programming Interface (API) of PyProximal is composed of 3 elements:

  • Orthogonal projections

  • Proximal operators

  • Solvers

Orthogonal projections#

AffineSetProj(Op, b, niter)

Affine set projection.

BoxProj([lower, upper])

Box orthogonal projection.

EuclideanBallProj(center, radius)

Euclidean ball projection.

HankelProj()

Hankel matrix projection.

HyperPlaneBoxProj(coeffs, scalar[, lower, ...])

Orthogonal projection of the intersection between a Hyperplane and a Box.

IntersectionProj(k, n, sigma[, niter, tol])

Intersection of multiple convex sets

L0BallProj(radius)

\(L_0\) ball projection.

L01BallProj(radius)

\(L_{0,1}\) ball projection.

L1BallProj(n, radius[, maxiter, xtol])

\(L_1\) ball projection.

NuclearBallProj(n, radius[, maxiter, xtol])

Nuclear ball projection

SimplexProj(n, radius[, maxiter, xtol])

Simplex projection.

Proximal operators#

Templates#

ProxOperator([Op, hasgrad])

Common interface for proximal operators of a function.

moreau(prox, x, tau[, tol, raiseerror, verb])

Moreau Identity.

Vector#

Convex#

AffineSet(Op, b, niter)

Affine set proximal operator.

Box([lower, upper])

Box proximal operator.

Euclidean([sigma])

Euclidean norm proximal operator.

EuclideanBall(center, radius)

Euclidean ball proximal operator.

Hankel(dim)

Hankel proximal operator.

Huber(alpha)

Huber norm proximal operator.

Intersection(k, n, sigma[, niter, tol, call])

Intersection of multiple convex sets operator.

L0([sigma])

\(L_0\) norm proximal operator.

L0Ball(radius)

\(L_0\) ball proximal operator.

L01Ball(ndim, radius)

\(L_{0,1}\) ball proximal operator.

L1([sigma, g])

L1 norm proximal operator.

L1Ball(n, radius[, maxiter, xtol])

L1 ball proximal operator.

L2([Op, b, q, sigma, alpha, qgrad, niter, ...])

L2 Norm proximal operator.

L2Convolve(h[, b, nfft, sigma, dims, dir])

L2 Norm proximal operator with convolution operator

L21(ndim[, sigma])

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

L21_plus_L1([sigma, rho])

L21 + L1 norm proximal operator.

Orthogonal(f, Q[, partial, b, alpha])

Proximal operator of any function of the product between an orthogonal matrix and a vector (plus summation of a vector).

Quadratic([Op, b, c, niter, x0, warm])

Quadratic function proximal operator.

Simplex(n, radius[, dims, axis, maxiter, ...])

Simplex proximal operator.

TV(dims[, sigma, niter, rtol])

TV Norm proximal operator.

Non-Convex#

ETP(sigma[, gamma])

Exponential-type penalty (ETP).

Geman(sigma[, gamma])

Geman penalty.

Log(sigma[, gamma])

Logarithmic penalty.

Log1(sigma[, delta])

Logarithmic penalty 2.

QuadraticEnvelopeCard(mu)

Quadratic envelope of the \(\ell_0\)-penalty.

QuadraticEnvelopeCardIndicator(r0)

Quadratic envelope of the indicator function of the \(\ell_0\)-penalty.

RelaxedMumfordShah([sigma, kappa])

Relaxed Mumford-Shah norm proximal operator.

SCAD(sigma[, a])

Smoothly clipped absolute deviation (SCAD) penalty.

Matrix-only#

Nuclear(dim[, sigma])

Nuclear norm proximal operator.

NuclearBall(dims, radius[, maxiter, xtol])

Nuclear ball proximal operator.

SingularValuePenalty(dim, penalty)

Proximal operator of a penalty acting on the singular values.

QuadraticEnvelopeRankL2(dim, r0, M)

Quadratic envelope of the rank function with an L2 misfit term.

Other#

Nonlinear(x0[, niter, warm])

Nonlinear function proximal operator.

VStack(ops[, nn, restr])

Vertical stacking.

Other operators#

BilinearOperator()

Common interface for bilinear operator of a function.

LowRankFactorizedMatrix(X, Y, d[, Op])

Low-Rank Factorized Matrix operator.

Utility functions#

gradtest_proximal(Op, n[, x, dtype, delta, ...])

Gradient test for Proximal operator.

gradtest_bilinear(Op[, delta, rtol, atol, ...])

Gradient test for Bilinear operator.

Solvers#

Primal#

AcceleratedProximalGradient(proxf, proxg, x0)

Accelerated Proximal gradient

ADMM(proxf, proxg, x0, tau[, niter, gfirst, ...])

Alternating Direction Method of Multipliers

ADMML2(proxg, Op, b, A, x0, tau[, niter, ...])

Alternating Direction Method of Multipliers for L2 misfit term

GeneralizedProximalGradient(proxfs, proxgs, ...)

Generalized Proximal gradient

HQS(proxf, proxg, x0, tau[, niter, z0, ...])

Half Quadratic splitting

LinearizedADMM(proxf, proxg, A, x0, tau, mu)

Linearized Alternating Direction Method of Multipliers

ProximalGradient(proxf, proxg, x0[, epsg, ...])

Proximal gradient (optionally accelerated)

ProximalPoint(prox, x0, tau[, niter, tol, ...])

Proximal point algorithm

TwIST(proxg, A, b, x0[, alpha, beta, eigs, ...])

Two-step Iterative Shrinkage/Threshold

PALM(H, proxf, proxg, x0, y0[, gammaf, ...])

Proximal Alternating Linearized Minimization

iPALM(H, proxf, proxg, x0, y0[, gammaf, ...])

Inertial Proximal Alternating Linearized Minimization

PlugAndPlay(proxf, denoiser, dims, x0[, solver])

Plug-and-Play Priors with any proximal algorithm of choice

SR3(Op, Reg, data, kappa, eps[, x0, ...])

Sparse Relaxed Regularized Regression

Primal-dual#

AdaptivePrimalDual(proxf, proxg, A, x0, tau, mu)

Adaptive Primal-dual algorithm

PrimalDual(proxf, proxg, A, x0, tau, mu[, ...])

Primal-dual algorithm

Other#

Bregman(proxf, proxg, x0, solver[, A, ...])

Bregman iterations with Proximal Solver

Segment(y, cl, sigma, alpha[, clsigmas, z, ...])

Primal-dual algorithm for image segmentation