This part of the documentation explains the code structure and describes each function, class, and method in detail.
The key concepts of the Tike code structure are the following:
- Solvers are based on forward and adjoint operators
- Solvers are organized into modules based on problem-type
An operator is a transforms data from one space to another. For example, the tomography forward operator is the radon transform; it maps a 2D Cartesian space to the sinogram space. The adjoint operator maps data from sinogram space back to 2D Cartesian.
Solutions to inverse problems may be formulated in terms of forward and adjoint operations. This formulation is not only familiar to mathematicians, but we also avoid code duplication by reusing same forward and adjoint operators for all approaches to solving a given inverse problem.
The solvers for each problem-type (ptychography, tomography, etc) are separated into modules of their respective names.
Forward and adjoint operations in Tike are implemented as a Python class called Operator. This allows a natural linking of the forward and adjoint methods and for Operators to be composed of other Operators.
The chart below is a class diagram. It shows the inheritance and composition relationships between the Operators in. For example, :pyPtycho
is an :pyOperator
which is composed of :pyConvolution
and :pyPropagation
(which are also Operators).
The modules in Tike are as follows:
operators align communicators opt ptycho lamino scan view