All Projects → bwohlberg → Sporco

bwohlberg / Sporco

Licence: bsd-3-clause
Sparse Optimisation Research Code

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Sporco

Optim
OptimLib: a lightweight C++ library of numerical optimization methods for nonlinear functions
Stars: ✭ 411 (+150.61%)
Mutual labels:  optimization-algorithms, optimization
Solid
🎯 A comprehensive gradient-free optimization framework written in Python
Stars: ✭ 546 (+232.93%)
Mutual labels:  optimization-algorithms, optimization
Ensmallen
A header-only C++ library for numerical optimization --
Stars: ✭ 436 (+165.85%)
Mutual labels:  optimization-algorithms, optimization
dfogn
DFO-GN: Derivative-Free Optimization using Gauss-Newton
Stars: ✭ 20 (-87.8%)
Mutual labels:  optimization, optimization-algorithms
Hiop
HPC solver for nonlinear optimization problems
Stars: ✭ 75 (-54.27%)
Mutual labels:  cuda, optimization
ForBES
Generic and efficient MATLAB solver for nonsmooth optimization problems
Stars: ✭ 19 (-88.41%)
Mutual labels:  optimization, optimization-algorithms
Pagmo2
A C++ platform to perform parallel computations of optimisation tasks (global and local) via the asynchronous generalized island model.
Stars: ✭ 540 (+229.27%)
Mutual labels:  optimization-algorithms, optimization
FrankWolfe.jl
Julia implementation for various Frank-Wolfe and Conditional Gradient variants
Stars: ✭ 47 (-71.34%)
Mutual labels:  optimization, optimization-algorithms
Wheels
Performance-optimized wheels for TensorFlow (SSE, AVX, FMA, XLA, MPI)
Stars: ✭ 891 (+443.29%)
Mutual labels:  cuda, optimization
Pyswarms
A research toolkit for particle swarm optimization in Python
Stars: ✭ 742 (+352.44%)
Mutual labels:  optimization-algorithms, optimization
qpmad
ROS-compatible Eigen-based Goldfarb-Idnani quadratic programming solver
Stars: ✭ 41 (-75%)
Mutual labels:  optimization, optimization-algorithms
Nnvm
No description or website provided.
Stars: ✭ 1,639 (+899.39%)
Mutual labels:  cuda, optimization
gibbous
Convex optimization for java and scala, built on Apache Commons Math
Stars: ✭ 17 (-89.63%)
Mutual labels:  optimization, optimization-algorithms
Ojalgo
oj! Algorithms
Stars: ✭ 336 (+104.88%)
Mutual labels:  optimization-algorithms, optimization
Nonlinear-Optimization-Algorithms
MATLAB implementations of a variety of nonlinear programming algorithms.
Stars: ✭ 86 (-47.56%)
Mutual labels:  optimization, optimization-algorithms
Awesome Robotics
A curated list of awesome links and software libraries that are useful for robots.
Stars: ✭ 478 (+191.46%)
Mutual labels:  optimization-algorithms, optimization
procrustes
Python library for finding the optimal transformation(s) that makes two matrices as close as possible to each other.
Stars: ✭ 48 (-70.73%)
Mutual labels:  optimization, optimization-algorithms
GPU-Pathtracer
GPU Raytracer from scratch in C++/CUDA
Stars: ✭ 326 (+98.78%)
Mutual labels:  optimization, cuda
Cppnumericalsolvers
a lightweight C++17 library of numerical optimization methods for nonlinear functions (Including L-BFGS-B for TensorFlow)
Stars: ✭ 638 (+289.02%)
Mutual labels:  optimization-algorithms, optimization
Optimviz
Visualize optimization algorithms in MATLAB.
Stars: ✭ 106 (-35.37%)
Mutual labels:  optimization-algorithms, optimization

SParse Optimization Research COde (SPORCO)

.. image:: https://img.shields.io/pypi/pyversions/sporco.svg :target: https://github.com/bwohlberg/sporco :alt: Supported Python Versions .. image:: https://img.shields.io/github/license/bwohlberg/sporco.svg :target: https://github.com/bwohlberg/sporco/blob/master/LICENSE :alt: Package License .. image:: https://readthedocs.org/projects/sporco/badge/?version=latest :target: http://sporco.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status .. image:: https://travis-ci.org/bwohlberg/sporco.svg?branch=master :target: https://travis-ci.org/bwohlberg/sporco :alt: Linux and OSX Build Status .. image:: https://ci.appveyor.com/api/projects/status/evnk5t9whoh20s33?svg=true :target: https://ci.appveyor.com/project/bwohlberg/sporco :alt: Windows Build Status .. image:: https://codecov.io/gh/bwohlberg/sporco/branch/master/graph/badge.svg :target: https://codecov.io/gh/bwohlberg/sporco :alt: Test Coverage .. image:: http://mybinder.org/badge.svg :target: https://mybinder.org/v2/gh/bwohlberg/sporco-notebooks/master?filepath=index.ipynb :alt: Binder

.. image:: https://badge.fury.io/py/sporco.svg :target: https://badge.fury.io/py/sporco :alt: PyPi Release .. image:: https://img.shields.io/pypi/dm/sporco.svg?style=flat :target: https://pypi.org/project/sporco/ :alt: PyPi Downloads

.. image:: https://img.shields.io/conda/vn/conda-forge/sporco.svg :target: https://anaconda.org/conda-forge/sporco :alt: Conda Forge Release .. image:: https://img.shields.io/conda/dn/conda-forge/sporco.svg :target: https://anaconda.org/conda-forge/sporco :alt: Conda Forge Downloads

.. image:: https://img.shields.io/badge/DOI-10.25080%2Fshinma--7f4c6e7--001-blue.svg :target: https://dx.doi.org/10.25080/shinma-7f4c6e7-001 :alt: DOI

|

SPORCO is a Python package for solving optimisation problems with sparsity-inducing regularisation. These consist primarily of sparse coding and dictionary learning problems, including convolutional sparse coding and dictionary learning, but there is also support for other problems such as Total Variation regularisation and Robust PCA. The optimisation algorithms in the current version are based on the Alternating Direction Method of Multipliers (ADMM) or on the Proximal Gradient Method (PGM).

If you use this software for published work, please cite it <http://sporco.readthedocs.io/en/latest/overview.html#citing>__.

Documentation

Documentation is available online <http://sporco.rtfd.io/>_, or can be built from the root directory of the source distribution by the command

::

python setup.py build_sphinx

in which case the HTML documentation can be found in the build/sphinx/html directory (the top-level document is index.html). Although the SPORCO package itself is compatible with both Python 2.7 and 3.x, building the documention requires Python 3.3 or later due to the use of Jonga <https://github.com/bwohlberg/jonga>_ to construct call graph images for the SPORCO optimisation class hierarchies.

An overview of the package design and functionality is also available in

Brendt Wohlberg, SPORCO: A Python package for standard and convolutional sparse representations <http://conference.scipy.org/proceedings/scipy2017/brendt_wohlberg.html>, in Proceedings of the 15th Python in Science Conference, (Austin, TX, USA), doi:10.25080/shinma-7f4c6e7-001 <http://dx.doi.org/10.25080/shinma-7f4c6e7-001>, pp. 1--8, Jul 2017

Usage

Scripts illustrating usage of the package can be found in the examples directory of the source distribution. These examples can be run from the root directory of the package by, for example

::

python examples/scripts/sc/bpdn.py

To run these scripts prior to installing the package it will be necessary to first set the PYTHONPATH environment variable to include the root directory of the package. For example, in a bash shell

::

export PYTHONPATH=$PYTHONPATH:pwd

from the root directory of the package.

Jupyter Notebook <http://jupyter.org/>_ examples are also available <https://github.com/bwohlberg/sporco-notebooks>. These examples can be viewed online via nbviewer <https://nbviewer.jupyter.org/github/bwohlberg/sporco-notebooks/blob/master/index.ipynb>, or run interactively at binder <https://mybinder.org/v2/gh/bwohlberg/sporco-notebooks/master?filepath=index.ipynb>_.

Requirements

The primary requirements are Python itself, and modules future <http://python-future.org>, numpy <http://www.numpy.org>, scipy <https://www.scipy.org>, imageio <https://imageio.github.io/>, pyfftw <https://hgomersall.github.io/pyFFTW>, and matplotlib <http://matplotlib.org>. Module numexpr <https://github.com/pydata/numexpr>__ is not required, but some functions will be faster if it is installed. If module mpldatacursor <https://github.com/joferkington/mpldatacursor>__ is installed, functions plot.plot, plot.contour, and plot.imview will support the data cursor that it provides.

Instructions for installing these requirements are provided in the Requirements <http://sporco.rtfd.io/en/latest/install.html#requirements>__ section of the package documentation.

Installation

To install the most recent release of SPORCO from PyPI <https://pypi.python.org/pypi/sporco/>__ do

::

pip install sporco

The development version <https://github.com/bwohlberg/sporco>__ on GitHub can be installed by doing

::

pip install git+https://github.com/bwohlberg/sporco

or by doing

::

git clone https://github.com/bwohlberg/sporco.git

followed by

::

cd sporco python setup.py build python setup.py install

The install commands will usually have to be performed with root privileges.

SPORCO can also be installed as a conda <https://conda.io/docs/>__ package from the conda-forge <https://conda-forge.org/>__ channel

::

conda install -c conda-forge sporco

A summary of the most significant changes between SPORCO releases can be found in the CHANGES.rst file. It is strongly recommended to consult this summary when updating from a previous version.

Extensions

Some additional components of SPORCO are made available in separate repositories:

  • SPORCO-CUDA <https://github.com/bwohlberg/sporco-cuda>__: GPU-accelerated versions of selected convolutional sparse coding algorithms

  • SPORCO Notebooks <https://github.com/bwohlberg/sporco-notebooks>__: Jupyter Notebook versions of the example scripts distributed with SPORCO

  • SPORCO Extra <https://github.com/bwohlberg/sporco-extra>__: Additional examples, data, and contributed code

License

SPORCO is distributed as open-source software under a BSD 3-Clause License (see the LICENSE file for details).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].