Installing ODL using conda

Anaconda is a binary distribution package that allows user to install pre-compiled python packages in a very simple manner. It works on all platforms and is the recommended way of installing ODL as a user. If you already have anaconda installed, you can go directly to Installing ODL and its dependencies, otherwise you need to begin by installing anaconda.

TL;DR

Instructions for the impatient:

  • Download and install Miniconda

  • Create conda environment:

    $ conda create -n odl-py310 python=3.10 conda-forge::odl matplotlib pytest scikit-image spyder
    
  • Activate the conda enviroment and start working!

Installing Anaconda

Even though a Python interpreter is included by default in virtually all Linux distributions, it is advisable to use Anaconda's Python ecosystem since it gives you full flexibility in the Python version you use and which packages you install.

Download Anaconda from the Continuum Analytics home page. You may choose to download the full Anaconda variant, but we recommend the slim Miniconda distribution since many of the packages included in full Anaconda are out of date anyway and need to be updated. Note that the choice of Python version (2 vs. 3) of the Anaconda installer is not very important since you can later choose to create conda environments with any Python version (see below).

Make sure that during installation, your PATH variable is adapted such that conda and other scripts can be found by your shell:

Do you wish the installer to prepend the Miniconda3 install location
to PATH in your /home/user/.bashrc ? [yes|no]
[no] >>> yes

After restarting the terminal (for the changed PATH variable to take effect), you can run

$ conda update --all

to make sure you have the latest versions of all packages.

Optionally, create a new conda environment to work with ODL. This is a very convenient way to have several "ecosystems" of Python packages in parallel without mutual interference:

$ conda create --name odl-py310 python=3.10

Enter the newly created conda environment by running source activate odl-py310 (Linux/MacOS) or activate odl-py310 (Windows). If you want to exit later on, run source deactivate (Linux/MacOS) or deactivate (Windows), respectively. See the Managing conda environments documentation for further information.

Note

If you want to use Spyder as integrated development environment (IDE, see Development environment) on Linux or MacOS, you should also install it in the new conda environment and run it from there. Otherwise, Spyder may not able to use the packages in the conda environment:

$ conda install spyder

On Windows, you can install Spyder in the root conda environment (run deactivate to get there), but you need to change its default Python interpreter. To do this, open Spyder and use the navigation bar to open "Tools -> Preferences". Click on "Python interpreter" and change the first setting "Select the Python interpreter for all Spyder consoles" from the default setting to "Use the following Python interpreter:". In the text field, fill in the path to the Python executable in your newly created conda environment. For example, if you installed Miniconda (or Anaconda) in C:\Programs\Miniconda3, then the environment's Python interpreter is C:\Programs\Miniconda3\envs\odl-py310\bin\python.exe. You can use the file system browser (symbol to the right of the text field) to find the interpreter on your system.

Installing ODL and its dependencies

Install ODL and all its (minimal) dependencies in a conda environment of your choice by running

$ conda install -c conda-forge odl

Note

To skip the -c conda-forge option in the future, you can permanently add the conda-forge conda channel (see Managing conda channels):

$ conda config --append channels conda-forge

After that, conda install odl and conda update odl work without the -c option.

Alternatively, you can always directly refer to the conda-forge version of odl by writing

$ conda install conda-forge::odl

Extra dependencies

The following packages are optional and extend the functionality of ODL. Some of them require pip in order to be installed. See install pip for further instructions.

  • Image and plot displaying capabilities using matplotlib:

    $ conda install matplotlib
    
  • Faster FFT back-end using FFTW (currently not in mainstream conda):

    • Install the FFTW C library version 3 (all possible precisions). Use your Linux package manager for this task or consult the Windows or MacOS instructions, respectively.

    • Install the python backend pyFFTW by running:

      $ pip install pyfftw
      
  • Wavelet transforms (currently not in mainstream conda) using PyWavelets:

    $ pip install pywavelets
    
  • Simple backend for ray transforms using scikit-image:

    $ conda install scikit-image
    
  • Fast ASTRA ray transform backend:

    $ conda install -c astra-toolbox astra-toolbox
    

    If this doesn't work, or if you want a more recent version, see the ASTRA GitHub page.

  • Bindings to the ProxImaL convex optimization package, an extension of CVXPY:

    $ pip install proximal
    

More information can be found in Installing ODL extensions.

Running the tests

Unit tests in ODL are based on pytest. To run the tests, you first need to install the testing framework:

$ conda install pytest

Now you can check that everything was installed properly by running

$ python -c "import odl; odl.test()"

Note

If you have several versions of ODL and run this command in the top-level directory of an ODL clone, the tests in the repository will be run, not the ones in the installed package.