› Publications › Software


SParse Optimization Research COde (SPORCO)

This library provides functions for sparse coding and dictionary learning, together with miscellaneous support functions for signal and image processing with sparse representations. The sparse coding algorithms are based on the ADMM framework; while similar codes for some of these functions can be found elsewhere, those provided here include enhancements that are not present in other publicly available codes.

There are two versions of SPORCO, one implemented in Matlab, and the other in Python (the Matlab version is indicated by an 'M' in the version number). Note that the Python version is under far more active development, and supports a number of features that the Matlab version does not.

Matlab Version

The Matlab version is available from the download link at the bottom of this page. Please read the instructions in the ReadMe file in the distribution before using the library.

Python Version

The Python version is available on GitHub and on PyPI. The current release can be installed using the source package available from PyPI or by doing "pip install sporco" (assuming that pip is installed and the command is issued with root privileges). Documentation is available at ReadTheDocs.

Convolutional Sparse Representations

The most significant contribution of this library is the inclusion of implementations of recent efficient algorithms for convolutional sparse coding and dictionary learning. These algorithms are described in the papers

This library has been used in a variety of signal and image processing applications of convolutional sparse coding methods, including


This library was developed at Los Alamos National Laboratory, and has been approved for public release under the approval number LA-CC-14-057. It is made available under the terms of the BSD 3-Clause License.


Download sporco-m0.0.8.tar.gz (gzipped tar file, 628k)