Odl

Latest version: v0.8.1

Safety actively analyzes 714736 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 3

0.8.1

This release mostly fixes a small incompatibility with the PyFFTW library versions >=0.13 involving wrong normalisation constants.

0.8.0

Despite the long time that has passed since [v0.7.0](https://github.com/odlgroup/odl/tree/v0.7.0), this is a _minor_ release. Its sole purpose is to provide an easily installable form of ODL as it was in 0.7, but updated to be compatible with modern versions of the libraries we depend on (in particular NumPy and SciPy, which have made several breaking changes since).

The reason this version is still numbered 0.x is that ODL itself will soon have to undergo changes that may break existing user code. The upcoming version 1.0 is intended to move away from the current status where essentially all computational objects are wrappers around NumPy arrays, and instead be more agnostic with respect to the backend. This will both allow faster execution of existing inverse-modelling setups by keeping data on e.g. a GPU, as well as tighter integration with deep learning frameworks. The implementation of this for PyTorch is work in progress. It does however require forgoing some of the convenience utilities that made ODL space-elements almost perfect drop-in replacements for NumPy arrays.<br>This is the final release which prioritises allowing NumPy-designed algorithms to be used on ODL objects.

0.7.0

This release is a big one as it includes the cumulative work over a period of 1 1/2 years. It is planned to be the last release before version 1.0.0 where we expect to land a number of exciting new features.

What follows are the **highlights** of the release. For a more detailed list of all changes, please refer to [the release notes in the documentation](http://odlgroup.github.io/odl/release_notes.html#odl-0-7-0-release-notes-2018-09-09).

Native multi-indexing of ODL space elements

The `DiscreteLpElement` and `Tensor` (renamed from `FnBaseVector`) data structures now natively support almost all kinds of Numpy "fancy" indexing.
At the same time, the spaces `DiscreteLp` and `Tensorspace` (renamed from `FnBase`) have more advanced indexing capabilities as well. Up to few exceptions, `elem[indices] in space[indices]` is always fulfilled.
Alongside, `ProductSpace` and its elements also support more advanced indexing, in particular in the case of power spaces.

Furthermore, integration with Numpy has been further improved with the implementation of the `__array_ufunc__` interface. This allows to transparently use ODL objects in calls to Numpy UFuncs, e.g., `np.cos(odl_obj, out=odl_obj)` or `np.add.reduce(odl_in, axis=0, out=odl_out)` — both these examples were not possible with the `__array__` and `__array_wrap__` interfaces.

Unfortunately, this changeset makes the `odlcuda` plugin unusable since it only supports linear indexing. A much more powerful replacement based on CuPy will be added in version 1.0.0.

Integration with deep learning frameworks

ODL is now integrated with three major deep learning frameworks: [TensorFlow](https://www.tensorflow.org/), [PyTorch](https://pytorch.org/) and [Theano](http://www.deeplearning.net/software/theano/). In particular, ODL `Operator` and `Functional` objects can be used as layers in neural networks, with support for automatic differentiation and backpropagation. This makes a lot of (inverse) problems that ODL can handle well, e.g., tomography, accessible to the computation engines of the deep learning field, and opens up a wide range of possibilities to combine the two.

The implementation of this functionality and examples of its usage can be found in the packages [`tensorflow`](https://github.com/odlgroup/odl/tree/master/odl/contrib/tensorflow), [`torch`](https://github.com/odlgroup/odl/tree/master/odl/contrib/torch) and [`theano`](https://github.com/odlgroup/odl/tree/master/odl/contrib/theano) in the `odl.contrib` sub-package (see below).

New `contrib` sub-package

The core ODL library is intended to stay focused on general-purpose classes and data structures, and good code quality is a major goal. This implies that contributions need to undergo scrutiny in a review process, and that some contributions might not be a good fit if they are too specific for certain applications.

For this reason, we have created a new [`contrib`](https://github.com/odlgroup/odl/tree/master/odl/contrib) sub-package that is intended for exactly this kind of code. As of writing this, `contrib` already contains a number of highly useful modules:

- [`datasets`](https://github.com/odlgroup/odl/tree/master/odl/contrib/datasets): Loaders and utility code for publicly available datasets (currently FIPS CT, Mayo clinic human CT, Tu Graz MRI and some image data)
- [`fom`](https://github.com/odlgroup/odl/tree/master/odl/contrib/fom): Implementations of Figures-of-Merit for image quality assessment
- [`mrc`](https://github.com/odlgroup/odl/tree/master/odl/contrib/mrc): Reader and writer for the MRC 2014 data format in electron microscopy
- [`param_opt`](https://github.com/odlgroup/odl/tree/master/odl/contrib/param_opt): Optimization strategies for method hyperparameters
- [`pyshearlab`](https://github.com/odlgroup/odl/tree/master/odl/contrib/pyshearlab): Integration of the [`pyshearlab`](https://github.com/stefanloock/pyshearlab) Python library for shearlet decomposition and analysis
- [`shearlab`](https://github.com/odlgroup/odl/tree/master/odl/contrib/shearlab): Integration of the [`Shearlab.jl`](https://github.com/arsenal9971/Shearlab.jl) Julia shearlet library
- [`solvers`](https://github.com/odlgroup/odl/tree/master/odl/contrib/solvers): More exotic functionals and optimization methods than in the core ODL library
- [`tomo`](https://github.com/odlgroup/odl/tree/master/odl/contrib/tomo): Vendor- or application-specific geometries (currently Elekta ICON and XIV)
- [`tensorflow`](https://github.com/odlgroup/odl/tree/master/odl/contrib/tensorflow): Integration of ODL with TensorFlow
- [`theano`](https://github.com/odlgroup/odl/tree/master/odl/contrib/theano): Integration of ODL with Theano
- [`torch`](https://github.com/odlgroup/odl/tree/master/odl/contrib/torch): Integration of ODL with PyTorch

Overhaul of tomographic geometries

The classes for representing tomographic geometries in `odl.tomo` have undergone a major update, resulting in a consistent definition of coordinate systems across all cases, [proper documentation](https://odlgroup.github.io/odl/guide/geometry_guide.html), vectorization and broadcasting semantics in all methods that compute vectors, and significant speed-up of backprojection due to better axis handling.
Additionally, factory functions `cone_beam_geometry` and `helical_geometry` have been added as a simpler and more accessible way to create cone beam geometries.

0.6.0

Besides many small improvements and additions, this release is the first one under the new Mozilla Public License 2.0 (MPL-2.0).

For a more detailed list of changes, see the [release notes](https://odlgroup.github.io/odl/release_notes.html).

0.5.3

Lots of small improvements and feature additions in this release. Most notable are the remarkable performance improvements to the ASTRA bindings (up to **10x**), the addition of `fbp_op` to create filtered back-projection operators with several filter and windowing options, as well as further performance improvements to operator compositions and the `show` methods.

For a more detailed list of changes, see the [release notes](https://odlgroup.github.io/odl/release_notes.html).

0.5.2

Another maintenance release that fixes a number of issues with installation and testing, see 674, 679 692 and 696.

Page 1 of 3

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.