# 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. 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) L0 ball projection. L1BallProj(n, radius[, maxiter, xtol]) L1 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]) L0 norm proximal operator. L0Ball(radius) L0 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. Quadratic envelope of the $$\ell_0$$-penalty. 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#

 Common interface for bilinear operator of a function. LowRankFactorizedMatrix(X, Y, d[, Op]) Low-Rank Factorized Matrix 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, x0) 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[, tau, ...]) Proximal gradient (optionally accelerated) ProximalPoint(prox, x0, tau[, niter, ...]) 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
 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