Python Other
Clone or download
Latest commit e58cd33 Jul 4, 2018
Failed to load latest commit information.
conda REL: drop Numpy 1.9 support Mar 13, 2018
doc Merge pull request #1402 from kohr-h/fast_parse_version Jun 29, 2018
examples MAINT: Minor docfix to pdhg examples Jul 4, 2018
odl DOC: Improve docstring of nbytes Jul 4, 2018
tools REL: fix and simplify release script Oct 21, 2016
.coveragerc MAINT: make imports even more lazy to speed up import time Sep 5, 2017
.gitattributes removed all spaces except linearspace Aug 26, 2015
.gitignore REL: drop Numpy 1.9 support Mar 13, 2018
.gitmodules MAINT: update numpydoc and rename folder Nov 23, 2017
.pep8speaks.yml BLD: fix travis doc build and pep8speaks name warning May 9, 2018
.pylintrc STY: Fix many pylint warnings, add good names and remove local disables Jan 4, 2016
.pypirc REL: bump version to 0.5.1 Oct 22, 2016
.travis.yml REL: add packaging module to list of dependencies Jun 29, 2018 REL: change license to MPL-2.0, closes #967 Apr 19, 2017 MAINT: fix link to Matthias' GH profile Jun 25, 2018
LICENSE REL: change license to MPL-2.0, closes #967 Apr 19, 2017 REL: explicitly exclude examples from distribution Jun 12, 2017 MAINT: update README with a DOI. Feb 7, 2018
pytest.ini ENH: add pytest minversion to pytest.ini, closes #677 Nov 1, 2016
requirements.txt REL: add packaging module to list of dependencies Jun 29, 2018
setup.cfg REL: add more information and files required for releasing Mar 11, 2016 REL: change license to MPL-2.0, closes #967 Apr 19, 2017
test_requirements.txt BLD: fix conda requirements and pytest version Nov 1, 2016

PyPI version Build Status Coverage Status license DOI


Operator Discretization Library (ODL) is a Python library that enables research in inverse problems on realistic or real data. The framework allows to encapsulate a physical model into an Operator that can be used like a mathematical object in, e.g., optimization methods. Furthermore, ODL makes it easy to experiment with reconstruction methods and optimization algorithms for variational regularization, all without sacrificing performance.

For more details and an introduction into the inner workings of ODL, please refer to the documentation.


  • Well-tested data containers based on NumPy or CUDA allow high performance computing with minimal effort.
  • A versatile and efficient library of optimization routines for smooth and non-smooth problems, such as CGLS, BFGS, PDHG and Douglas-Rachford splitting.
  • Support for tomographic imaging with a unified geometry representation and bindings to external libraries for efficient computation of projections and back-projections.
  • And much more, including support for deep learning libraries, figures of merits, phantom generation, data handling, etc.


Installing ODL should be as easy as

conda install -c odlgroup odl


pip install odl

For more detailed instructions, check out the Installation guide.

ODL is compatible with Python 2/3 and all major platforms (GNU/Linux / Mac / Windows).



This is an incomplete list of articles and projects using ODL. If you want to add your project to the list, contact the maintainers or file a pull request.

Article Code
Learning to solve inverse problems using Wasserstein loss. NIPS OMT Workshop 2017. arXiv
Faster PET Reconstruction with a Stochastic Primal-Dual Hybrid Gradient Method. Article
Stochastic Primal-Dual Hybrid Gradient Algorithm with Arbitrary Sampling and Imaging Applications. arXiv
Learned Primal-Dual Reconstruction. arXiv, blog
Indirect Image Registration with Large Diffeomorphic Deformations. arXiv
High-level algorithm prototyping: an example extending the TVR-DART algorithm. DGCI, 2017. DOI
GPUMCI, a flexible platform for x-ray imaging on the GPU. Fully3D, 2017
Spectral CT reconstruction with anti-correlated noise model and joint prior. Fully3D, 2017
Solving ill-posed inverse problems using iterative deep neural networks. Inverse Problems, 2017 arXiv, DOI
Total variation regularization with variable Lebesgue prior. arXiv
Generalized Sinkhorn iterations for regularizing inverse problems using optimal mass transport. SIAM Journal on Imaging Sciences, 2017. arXiv, DOI
A modified fuzzy C means algorithm for shading correction in craniofacial CBCT images. CMBEBIH, 2017
The MAX IV imaging concept. Article
Shape Based Image Reconstruction Using Linearized Deformations. Inverse Problems, 2017. DOI
Project Code
Multigrid CT reconstruction
Inverse problems over Lie groups
Bindings for the EMRecon package for PET
ADF-STEM reconstruction using nuclear norm regularization


Mozilla Public License version 2.0 or later. See the LICENSE file.

ODL developers

Development of ODL started in 2014 as part of the project "Low complexity image reconstruction in medical imaging” by Ozan Öktem (@ozanoktem), Jonas Adler (@adler-j) and Holger Kohr (@kohr-h). Several others have made significant contributions, see the contributors list.

To contact the developers either open an issue on the issue tracker or send an email to


ODL has primarily been developed at KTH Royal Institute of Technology, Stockholm and Centrum Wiskunde & Informatica (CWI), Amsterdam. It is financially supported by the Swedish Foundation for Strategic Research as part of the project "Low complexity image reconstruction in medical imaging".

Some development time has also been financed by Elekta.