Operator Discretization Library (ODL) is a python library for fast prototyping focusing on (but not restricted to) inverse problems. ODL is being developed at KTH, Royal Institute of Technology.
The main intent of ODL is to enable mathematicians and applied scientists to use different numerical methods on real-world problems without having to implement all necessary parts from the bottom up. ODL provides some of the most heavily used building blocks for numerical algorithms out of the box, which enables users to focus on real scientific issues.
- Efficient and well-tested data containers based on NumPy (default) or CUDA (optional)
- Objects to represent mathematical notions like vector spaces and operators including properties as expected from mathematics (inner product, norm, operator composition, ...)
- Standardized tests to validate implementations against expected behavior of the
corresponding mathematical object, e.g. if a user-defined norm satisfies
norm(x + y) <= norm(x) + norm(y)
for a number of input vectorsx
andy
.
To get ODL, clone the repository with the command
user$ git clone <repo>
where <repo>
is the clone link from the right navigation bar on the ODL GitHub page.
For installation in a local user folder, go to the ODL folder and run
user$ pip install --user --editable .
in the root folder of the package. For system-wide installation, run (as root)
root# pip install --editable .
We recommend to use the --editable
option since it installs a link instead of copying the files to
your Python packages location. This way local changes to the code (e.g. after a git pull
) take
immediate effect without reinstall.
After installing, you can check that everything was installed properly by running
user$ py.test
If you also wish to use the (optional) CUDA extensions you need to run
user$ git submodule update --init --recursive
user$ cd odlpp
From here follow the instructions in odlpp and install it. You then need to re-install ODL.
- numpy >= 1.9
- scipy >= 0.14
- python-future >= 0.14
- matplotlib for plotting.
The code is written in python 2/3 through the future
library. It is intended to work on all major platforms (GNU/Linux / Mac / Windows).
Current status (2015-11-05) is
Platform | Python | Works | CUDA |
---|---|---|---|
Windows 7 | 2.7 | ✔ | ✔ |
Ubuntu 14.04 | 2.7 | ✔ | ✔ |
Fedora 22 | 2.7 | ✔ | x (1) |
Fedora 22 | 3.4 | ✔ | x (1) |
Mac OSX | ?? | ?? | ?? |
(1) The GCC 5.x compiler is not compatible with current CUDA (7.5)
GPL Version 3. See LICENSE file.
If you would like to get the code under a different license, please contact the developers.
- Jonas Adler (jonas<ätt>kthse)
- Holger Kohr (kohr<ätt>kthse)