🔧 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.

GenericIntersectionProj(projections[, ...])

Convex projection of the intersection of convex sets using Dykstra's algorithm.

HankelProj()

Hankel matrix projection.

HalfSpaceProj(w, b)

Half space 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.

L10BallProj(radius)

\(L_{1,0}\) 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, sigmame])

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.

GenericIntersectionProx(projections[, ...])

The proximal operator corresponding to the convex projection to the intersection of convex sets using Dykstra's algorithm.

HalfSpace(w, b)

Half space proximal operator.

Hankel(dim)

Hankel proximal operator.

Huber(alpha)

Huber norm proximal operator.

HuberCircular(alpha)

Circular 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.

L10Ball(ndim, radius)

\(L_{1,0}\) 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.

Sum(ops[, weights, niter, tol, ...])

Proximal operator of the sum of proximable functions using Dykstra-like algorithm.

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, z0, ...])

Alternating Direction Method of Multipliers

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

Alternating Direction Method of Multipliers for L2 misfit term

AndersonProximalGradient(proxf, proxg, x0[, ...])

Proximal gradient with Anderson acceleration

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

DouglasRachfordSplitting(proxf, proxg, x0, tau)

Douglas-Rachford Splitting

PPXA(proxfs, x0, tau[, eta, weights, niter, ...])

Parallel Proximal Algorithm (PPXA)

ConsensusADMM(proxfs, x0, tau[, niter, tol, ...])

Consensus ADMM

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, ...], ...)

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