diff options
author | Jakob Jorgensen <jakob.jorgensen@manchester.ac.uk> | 2018-04-09 13:43:06 +0100 |
---|---|---|
committer | Jakob Jorgensen <jakob.jorgensen@manchester.ac.uk> | 2018-04-09 13:43:06 +0100 |
commit | dc958934237623296deca7ff04f25451ced25055 (patch) | |
tree | 6120de6d50b149381cfd4a21628cdf73d6e5594f | |
parent | a193b0766d5821f0c3699c757495db6c3bf1face (diff) | |
download | framework-dc958934237623296deca7ff04f25451ced25055.tar.gz framework-dc958934237623296deca7ff04f25451ced25055.tar.bz2 framework-dc958934237623296deca7ff04f25451ced25055.tar.xz framework-dc958934237623296deca7ff04f25451ced25055.zip |
First opti doc
-rw-r--r-- | README.md | 48 |
1 files changed, 45 insertions, 3 deletions
@@ -41,10 +41,52 @@ In `ccpi.framework` we define a number of common classes normally used in tomogr ### `ccpi.optimisation` - This package allows writing of optimisation algorithms. The main actors here are: + This package allows rapid prototyping of optimisation-based reconstruction problems, + i.e. defining and solving different optimization problems to enforce different properties + on the reconstructed image. - * `Function` - * `Operator` + Firstly, it provides an object-oriented framework for defining mathematical operators and functions + as well a collection of useful example operators and functions. Both smooth and + non-smooth functions can be used. + + Further, it provides a number of high-level generic + implementations of optimisation algorithms to solve genericlly formulated + optimisation problems constructed from operator and function objects. + + The fundamental components are: + + * `Operator`: A class specifying a (currently linear) operator + * `Function`: A class specifying mathematical functions such as a least squares data fidelity. + * `Algorithm`: Implementation of an optimisation algorithm to solve a particular generic optimisation problem. These are currently python functions by may be changed to operators in another release. + + #### `Operator` + + The two most important methods are `direct` and `adjoint` methods that describe the result of + applying the operator, and its adjoint respectively, onto a compatible `DataContainer` input. + The output is another `DataContainer` object or subclass hereof. An important + special case is to represent the tomographic forward and backprojection operations. + + #### `Function` + + A `function` represents a mathematical function of one or more inputs is intended + to accept `DataContainer`s as input as well as any additional parameters. + Its methods reflect the properties of the function, for example, + if the function represented is differentiable + the `function` should contain a method `grad` which should return the gradient of the function evaluated at + an input point. If the function is not differentiable but allows a simple proximal operator, the method + `prox` should return the proxial operator evaluated at an input point. It is also possible + to evaluate the function value using the method `fun`. + + #### `Algorithm` + + A number of generic algorithm implementations are provided including CGLS and FISTA. An algorithm + is designed for a particular generic optimisation problem accepts and number of `function`s and/or + `operator`s as input to define a specific instance of the generic optimisation problem to be solved. + + #### Examples + + Please see the demos for examples of defining and using operators, functions and algorithms + to specify and solve optimisation-based reconstruction problems. |