Software Open Access

odlgroup/odl: ODL 0.7.0

Jonas Adler; Holger Kohr; Axel Ringh; Julian Moosmann; sbanert; Matthias J. Ehrhardt; Gregory R. Lee; niinimaki; bgris; Olivier Verdier; Johan Karlsson; zickert; Willem Jan Palenstijn; Ozan Öktem; Chong Chen; Hector Andrade Loarca; Michael Lohmann


Citation Style Language JSON Export

{
  "publisher": "Zenodo", 
  "DOI": "10.5281/zenodo.1442734", 
  "title": "odlgroup/odl: ODL 0.7.0", 
  "issued": {
    "date-parts": [
      [
        2018, 
        9, 
        9
      ]
    ]
  }, 
  "abstract": "<p>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.</p>\n<p>What follows are the <strong>highlights</strong> of the release. For a more detailed list of all changes, please refer to <a href=\"https://odlgroup.github.io/odl/release_notes.html\">the release notes in the documentation</a>.</p>\nNative multi-indexing of ODL space elements\n<p>The <code>DiscreteLpElement</code> and <code>Tensor</code> (renamed from <code>FnBaseVector</code>) data structures now natively support almost all kinds of Numpy \"fancy\" indexing. \nAt the same time, the spaces <code>DiscreteLp</code> and <code>Tensorspace</code> (renamed from <code>FnBase</code>) have more advanced indexing capabilities as well. Up to few exceptions, <code>elem[indices] in space[indices]</code> is always fulfilled.\nAlongside, <code>ProductSpace</code> and its elements also support more advanced indexing, in particular in the case of power spaces.</p>\n<p>Furthermore, integration with Numpy has been further improved with the implementation of the <code>__array_ufunc__</code> interface. This allows to transparently use ODL objects in calls to Numpy UFuncs, e.g., <code>np.cos(odl_obj, out=odl_obj)</code> or <code>np.add.reduce(odl_in, axis=0, out=odl_out)</code> \u2014 both these examples were not possible with the <code>__array__</code> and <code>__array_wrap__</code> interfaces.</p>\n<p>Unfortunately, this changeset makes the <code>odlcuda</code> plugin unusable since it only supports linear indexing. A much more powerful replacement based on CuPy will be added in version 1.0.0.</p>\nIntegration with deep learning frameworks\n<p>ODL is now integrated with three major deep learning frameworks: TensorFlow, PyTorch and Theano. In particular, ODL <code>Operator</code> and <code>Functional</code> 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.</p>\n<p>The implementation of this functionality and examples of its usage can be found in the packages <a href=\"https://github.com/odlgroup/odl/tree/master/odl/contrib/tensorflow\"><code>tensorflow</code></a>, <a href=\"https://github.com/odlgroup/odl/tree/master/odl/contrib/torch\"><code>torch</code></a> and <a href=\"https://github.com/odlgroup/odl/tree/master/odl/contrib/theano\"><code>theano</code></a> in the <code>odl.contrib</code> sub-package (see below).</p>\nNew <code>contrib</code> sub-package\n<p>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.</p>\n<p>For this reason, we have created a new <a href=\"https://github.com/odlgroup/odl/tree/master/odl/contrib\"><code>contrib</code></a> sub-package that is intended for exactly this kind of code. As of writing this, <code>contrib</code> already contains a number of highly useful modules:</p>\n<ul>\n<li><a href=\"https://github.com/odlgroup/odl/tree/master/odl/contrib/datasets\"><code>datasets</code></a>: Loaders and utility code for publicly available datasets (currently FIPS CT, Mayo clinic human CT, Tu Graz MRI and some image data)</li>\n<li><a href=\"https://github.com/odlgroup/odl/tree/master/odl/contrib/fom\"><code>fom</code></a>: Implementations of Figures-of-Merit for image quality assessment</li>\n<li><a href=\"https://github.com/odlgroup/odl/tree/master/odl/contrib/mrc\"><code>mrc</code></a>: Reader and writer for the MRC 2014 data format in electron microscopy</li>\n<li><a href=\"https://github.com/odlgroup/odl/tree/master/odl/contrib/param_opt\"><code>param_opt</code></a>: Optimization strategies for method hyperparameters</li>\n<li><a href=\"https://github.com/odlgroup/odl/tree/master/odl/contrib/pyshearlab\"><code>pyshearlab</code></a>: Integration of the <code>pyshearlab</code> Python library for shearlet decomposition and analysis</li>\n<li><a href=\"https://github.com/odlgroup/odl/tree/master/odl/contrib/shearlab\"><code>shearlab</code></a>: Integration of the <code>Shearlab.jl</code> Julia shearlet library</li>\n<li><a href=\"https://github.com/odlgroup/odl/tree/master/odl/contrib/solvers\"><code>solvers</code></a>: More exotic functionals and optimization methods than in the core ODL library</li>\n<li><a href=\"https://github.com/odlgroup/odl/tree/master/odl/contrib/tomo\"><code>tomo</code></a>: Vendor- or application-specific geometries (currently Elekta ICON and XIV)</li>\n<li><a href=\"https://github.com/odlgroup/odl/tree/master/odl/contrib/tensorflow\"><code>tensorflow</code></a>: Integration of ODL with TensorFlow</li>\n<li><a href=\"https://github.com/odlgroup/odl/tree/master/odl/contrib/theano\"><code>theano</code></a>: Integration of ODL with Theano</li>\n<li><a href=\"https://github.com/odlgroup/odl/tree/master/odl/contrib/torch\"><code>torch</code></a>: Integration of ODL with PyTorch</li>\n</ul>\nOverhaul of tomographic geometries\n<p>The classes for representing tomographic geometries in <code>odl.tomo</code> have undergone a major update, resulting in a consistent definition of coordinate systems across all cases, proper documentation, vectorization and broadcasting semantics in all methods that compute vectors, and significant speed-up of backprojection due to better axis handling.\nAdditionally, factory functions <code>cone_beam_geometry</code> and <code>helical_geometry</code> have been added as a simpler and more accessible way to create cone beam geometries.</p>", 
  "author": [
    {
      "family": "Jonas Adler"
    }, 
    {
      "family": "Holger Kohr"
    }, 
    {
      "family": "Axel Ringh"
    }, 
    {
      "family": "Julian Moosmann"
    }, 
    {
      "family": "sbanert"
    }, 
    {
      "family": "Matthias J. Ehrhardt"
    }, 
    {
      "family": "Gregory R. Lee"
    }, 
    {
      "family": "niinimaki"
    }, 
    {
      "family": "bgris"
    }, 
    {
      "family": "Olivier Verdier"
    }, 
    {
      "family": "Johan Karlsson"
    }, 
    {
      "family": "zickert"
    }, 
    {
      "family": "Willem Jan Palenstijn"
    }, 
    {
      "family": "Ozan \u00d6ktem"
    }, 
    {
      "family": "Chong Chen"
    }, 
    {
      "family": "Hector Andrade Loarca"
    }, 
    {
      "family": "Michael Lohmann"
    }
  ], 
  "version": "v0.7.0", 
  "type": "article", 
  "id": "1442734"
}
647
35
views
downloads
All versions This version
Views 647359
Downloads 3518
Data volume 59.1 MB32.1 MB
Unique views 550316
Unique downloads 2213

Share

Cite as