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


DataCite XML Export

<?xml version='1.0' encoding='utf-8'?>
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://datacite.org/schema/kernel-4" xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.1/metadata.xsd">
  <identifier identifierType="DOI">10.5281/zenodo.1442734</identifier>
  <creators>
    <creator>
      <creatorName>Jonas Adler</creatorName>
      <affiliation>KTH Royal institute of Technology</affiliation>
    </creator>
    <creator>
      <creatorName>Holger Kohr</creatorName>
      <affiliation>Thermo Fisher Scientific (@thermofisher)</affiliation>
    </creator>
    <creator>
      <creatorName>Axel Ringh</creatorName>
      <affiliation>KTH Royal Institute of Technology</affiliation>
    </creator>
    <creator>
      <creatorName>Julian Moosmann</creatorName>
      <affiliation>Helmholtz-Zentrum Geesthacht</affiliation>
    </creator>
    <creator>
      <creatorName>sbanert</creatorName>
      <affiliation>KTH Royal Institute of Technology</affiliation>
    </creator>
    <creator>
      <creatorName>Matthias J. Ehrhardt</creatorName>
      <affiliation>University of Bath</affiliation>
    </creator>
    <creator>
      <creatorName>Gregory R. Lee</creatorName>
      <affiliation>Cincinnati Children's Hospital Medical Center</affiliation>
    </creator>
    <creator>
      <creatorName>niinimaki</creatorName>
      <affiliation></affiliation>
    </creator>
    <creator>
      <creatorName>bgris</creatorName>
      <affiliation></affiliation>
    </creator>
    <creator>
      <creatorName>Olivier Verdier</creatorName>
      <affiliation>Mathematician</affiliation>
    </creator>
    <creator>
      <creatorName>Johan Karlsson</creatorName>
      <affiliation>KTH Royal Institute of Technology</affiliation>
    </creator>
    <creator>
      <creatorName>zickert</creatorName>
      <affiliation></affiliation>
    </creator>
    <creator>
      <creatorName>Willem Jan Palenstijn</creatorName>
      <affiliation></affiliation>
    </creator>
    <creator>
      <creatorName>Ozan Öktem</creatorName>
      <affiliation>KTH - Royal Institute of Technology</affiliation>
    </creator>
    <creator>
      <creatorName>Chong Chen</creatorName>
      <affiliation>LSEC, ICMSEC, Academy of Mathematics and Systems Science, Chinese Academy of Sciences</affiliation>
    </creator>
    <creator>
      <creatorName>Hector Andrade Loarca</creatorName>
      <affiliation>Technische Universität Berlin (TUB)</affiliation>
    </creator>
    <creator>
      <creatorName>Michael Lohmann</creatorName>
      <affiliation></affiliation>
    </creator>
  </creators>
  <titles>
    <title>odlgroup/odl: ODL 0.7.0</title>
  </titles>
  <publisher>Zenodo</publisher>
  <publicationYear>2018</publicationYear>
  <dates>
    <date dateType="Issued">2018-09-09</date>
  </dates>
  <resourceType resourceTypeGeneral="Software"/>
  <alternateIdentifiers>
    <alternateIdentifier alternateIdentifierType="url">https://zenodo.org/record/1442734</alternateIdentifier>
  </alternateIdentifiers>
  <relatedIdentifiers>
    <relatedIdentifier relatedIdentifierType="URL" relationType="IsSupplementTo">https://github.com/odlgroup/odl/tree/v0.7.0</relatedIdentifier>
    <relatedIdentifier relatedIdentifierType="DOI" relationType="IsVersionOf">10.5281/zenodo.592765</relatedIdentifier>
  </relatedIdentifiers>
  <version>v0.7.0</version>
  <rightsList>
    <rights rightsURI="info:eu-repo/semantics/openAccess">Open Access</rights>
  </rightsList>
  <descriptions>
    <description descriptionType="Abstract">&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;What follows are the &lt;strong&gt;highlights&lt;/strong&gt; of the release. For a more detailed list of all changes, please refer to &lt;a href="https://odlgroup.github.io/odl/release_notes.html"&gt;the release notes in the documentation&lt;/a&gt;.&lt;/p&gt;
Native multi-indexing of ODL space elements
&lt;p&gt;The &lt;code&gt;DiscreteLpElement&lt;/code&gt; and &lt;code&gt;Tensor&lt;/code&gt; (renamed from &lt;code&gt;FnBaseVector&lt;/code&gt;) data structures now natively support almost all kinds of Numpy "fancy" indexing. 
At the same time, the spaces &lt;code&gt;DiscreteLp&lt;/code&gt; and &lt;code&gt;Tensorspace&lt;/code&gt; (renamed from &lt;code&gt;FnBase&lt;/code&gt;) have more advanced indexing capabilities as well. Up to few exceptions, &lt;code&gt;elem[indices] in space[indices]&lt;/code&gt; is always fulfilled.
Alongside, &lt;code&gt;ProductSpace&lt;/code&gt; and its elements also support more advanced indexing, in particular in the case of power spaces.&lt;/p&gt;
&lt;p&gt;Furthermore, integration with Numpy has been further improved with the implementation of the &lt;code&gt;__array_ufunc__&lt;/code&gt; interface. This allows to transparently use ODL objects in calls to Numpy UFuncs, e.g., &lt;code&gt;np.cos(odl_obj, out=odl_obj)&lt;/code&gt; or &lt;code&gt;np.add.reduce(odl_in, axis=0, out=odl_out)&lt;/code&gt; — both these examples were not possible with the &lt;code&gt;__array__&lt;/code&gt; and &lt;code&gt;__array_wrap__&lt;/code&gt; interfaces.&lt;/p&gt;
&lt;p&gt;Unfortunately, this changeset makes the &lt;code&gt;odlcuda&lt;/code&gt; plugin unusable since it only supports linear indexing. A much more powerful replacement based on CuPy will be added in version 1.0.0.&lt;/p&gt;
Integration with deep learning frameworks
&lt;p&gt;ODL is now integrated with three major deep learning frameworks: TensorFlow, PyTorch and Theano. In particular, ODL &lt;code&gt;Operator&lt;/code&gt; and &lt;code&gt;Functional&lt;/code&gt; 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.&lt;/p&gt;
&lt;p&gt;The implementation of this functionality and examples of its usage can be found in the packages &lt;a href="https://github.com/odlgroup/odl/tree/master/odl/contrib/tensorflow"&gt;&lt;code&gt;tensorflow&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/odlgroup/odl/tree/master/odl/contrib/torch"&gt;&lt;code&gt;torch&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/odlgroup/odl/tree/master/odl/contrib/theano"&gt;&lt;code&gt;theano&lt;/code&gt;&lt;/a&gt; in the &lt;code&gt;odl.contrib&lt;/code&gt; sub-package (see below).&lt;/p&gt;
New &lt;code&gt;contrib&lt;/code&gt; sub-package
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;For this reason, we have created a new &lt;a href="https://github.com/odlgroup/odl/tree/master/odl/contrib"&gt;&lt;code&gt;contrib&lt;/code&gt;&lt;/a&gt; sub-package that is intended for exactly this kind of code. As of writing this, &lt;code&gt;contrib&lt;/code&gt; already contains a number of highly useful modules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/odlgroup/odl/tree/master/odl/contrib/datasets"&gt;&lt;code&gt;datasets&lt;/code&gt;&lt;/a&gt;: Loaders and utility code for publicly available datasets (currently FIPS CT, Mayo clinic human CT, Tu Graz MRI and some image data)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/odlgroup/odl/tree/master/odl/contrib/fom"&gt;&lt;code&gt;fom&lt;/code&gt;&lt;/a&gt;: Implementations of Figures-of-Merit for image quality assessment&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/odlgroup/odl/tree/master/odl/contrib/mrc"&gt;&lt;code&gt;mrc&lt;/code&gt;&lt;/a&gt;: Reader and writer for the MRC 2014 data format in electron microscopy&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/odlgroup/odl/tree/master/odl/contrib/param_opt"&gt;&lt;code&gt;param_opt&lt;/code&gt;&lt;/a&gt;: Optimization strategies for method hyperparameters&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/odlgroup/odl/tree/master/odl/contrib/pyshearlab"&gt;&lt;code&gt;pyshearlab&lt;/code&gt;&lt;/a&gt;: Integration of the &lt;code&gt;pyshearlab&lt;/code&gt; Python library for shearlet decomposition and analysis&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/odlgroup/odl/tree/master/odl/contrib/shearlab"&gt;&lt;code&gt;shearlab&lt;/code&gt;&lt;/a&gt;: Integration of the &lt;code&gt;Shearlab.jl&lt;/code&gt; Julia shearlet library&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/odlgroup/odl/tree/master/odl/contrib/solvers"&gt;&lt;code&gt;solvers&lt;/code&gt;&lt;/a&gt;: More exotic functionals and optimization methods than in the core ODL library&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/odlgroup/odl/tree/master/odl/contrib/tomo"&gt;&lt;code&gt;tomo&lt;/code&gt;&lt;/a&gt;: Vendor- or application-specific geometries (currently Elekta ICON and XIV)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/odlgroup/odl/tree/master/odl/contrib/tensorflow"&gt;&lt;code&gt;tensorflow&lt;/code&gt;&lt;/a&gt;: Integration of ODL with TensorFlow&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/odlgroup/odl/tree/master/odl/contrib/theano"&gt;&lt;code&gt;theano&lt;/code&gt;&lt;/a&gt;: Integration of ODL with Theano&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/odlgroup/odl/tree/master/odl/contrib/torch"&gt;&lt;code&gt;torch&lt;/code&gt;&lt;/a&gt;: Integration of ODL with PyTorch&lt;/li&gt;
&lt;/ul&gt;
Overhaul of tomographic geometries
&lt;p&gt;The classes for representing tomographic geometries in &lt;code&gt;odl.tomo&lt;/code&gt; 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.
Additionally, factory functions &lt;code&gt;cone_beam_geometry&lt;/code&gt; and &lt;code&gt;helical_geometry&lt;/code&gt; have been added as a simpler and more accessible way to create cone beam geometries.&lt;/p&gt;</description>
  </descriptions>
</resource>
649
35
views
downloads
All versions This version
Views 649360
Downloads 3518
Data volume 59.1 MB32.1 MB
Unique views 552317
Unique downloads 2213

Share

Cite as