Inverse Problems

SPORCO provides a set of classes supporting the construction of new optimisation algorithms within the ADMM [6] and FISTA [4] frameworks, as well as a set of complete algorithms, based on these frameworks, for solving optimisation problems within the following categories:

Standard Sparse Representations

  • bpdn (Basis Pursuit DeNoising)

  • cmod (Constrained Method of Optimal Directions)

  • bpdndl (Basis Pursuit DeNoising Dictionary Learning)

Convolutional Sparse Representations

  • cbpdn (Convolutional Basis Pursuit DeNoising)

  • ccmod (Convolutional Constrained Method of Optimal Directions)

  • cbpdndl (Convolutional Basis Pursuit DeNoising Dictionary Learning)

Dictionary Learning

The DictLearn class in the dictlrn.dictlrn module provides a flexible framework for more general dictionary learning problems than those in modules bpdndl and cbpdndl / cbpdndlmd / prlcnscdl.


  • tvl1 (\(\ell_1\) Total Variation)

  • tvl2 (\(\ell_2\) Total Variation)

  • spline (\(\ell_1\) Spline)

  • rpca (Robust Principal Component Analysis)

  • ppp (Plug and Play Priors)


The ADMM and FISTA classes are designed to for ease of implementation of new problems and simplicity of extension of existing problems. See admm.bpdn.BPDN as an example of the methods that need to be defined to implement a complete ADMM algorithm, and BPDNJoint as an example of the minor additional code required to extend an existing problem.