Skip to main content

Python interface for SPAMS

Project description

SPAMS 2.6.2 and python

Python interface for SPArse Modeling Software (SPAMS).

SPAMS is an optimization toolbox for solving various sparse estimation problems.

  • Dictionary learning and matrix factorization:
    • NMF
    • sparse PCA
  • Solving sparse decomposition problems:
    • LARS
    • coordinate descent
    • OMP
    • proximal methods
  • Solving structured sparse decomposition problems:
    • l1/l2
    • l1/linf
    • sparse group lasso
    • tree-structured regularization
    • structured sparsity with overlapping groups.



  • Julien Mairal (Inria) with the collaboration of Francis Bach (Inria),
  • Jean Ponce (Ecole Normale Supérieure),
  • Guillermo Sapiro (University of Minnesota),
  • Guillaume Obozinski (Inria),
  • Rodolphe Jenatton (Inria).


  • R and Python interfaces by Jean-Paul Chieze (Inria).
  • Archetypal analysis implementation by Yuansi Chen (internship at Inria) with the collaboration of Zaid Harchaoui.
  • Porting to Python 3 (version 2.6 and 2.6.1) by Ghislain Durif (Inria).
  • Library reorganization and installation pipeline improvement (version 2.6.2) by François Rheault and Samuel Saint-Jean (


  • Maintenance is done by Ghislain Durif (Inria).

Licence: GPL v3

Manipulated objects are imported from numpy and scipy. Matrices should be stored by columns, and sparse matrices should be "column compressed".

Installation from PyPI:

The standard installation uses the BLAS and LAPACK libraries used by Numpy:

pip install spams

Installation from sources

Make sure you have install libblas & liblapack (see below)

pip install -e .

Testing the interface

python tests/ -h # to get help
python tests/    # will run all the tests


Carefully install libblas & liblapack. For example, on Ubuntu, it is necessary to do sudo apt-get -y install libblas-dev liblapack-dev gfortran. For MacOS, you most likely need to do brew install gcc openblas lapack.

For better performance, we recommend to use the MKL Intel library that is available for instance in the Anaconda Python distribution.

SPAMS for Python was tested on Linux and MacOS. It is not available for Windows at the moment. For MacOS users, the install setup detects if OpenMP is available on your system and enable/disable OpenMP support accordingly. For better performance, we recommend to install an OpenMP-compatible compiler on your system (e.g. gcc or llvm).

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

spams- (1.6 MB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page