diff --git a/nightly/.doctrees/environment.pickle b/nightly/.doctrees/environment.pickle index debbabb2a6..f2ff769e42 100644 Binary files a/nightly/.doctrees/environment.pickle and b/nightly/.doctrees/environment.pickle differ diff --git a/nightly/.doctrees/optimisation.doctree b/nightly/.doctrees/optimisation.doctree index 1f850c1ba9..202ddaa0ca 100644 Binary files a/nightly/.doctrees/optimisation.doctree and b/nightly/.doctrees/optimisation.doctree differ diff --git a/nightly/.doctrees/plugins.doctree b/nightly/.doctrees/plugins.doctree index 5528d51dc2..701e22d26d 100644 Binary files a/nightly/.doctrees/plugins.doctree and b/nightly/.doctrees/plugins.doctree differ diff --git a/nightly/_modules/cil/optimisation/algorithms/Algorithm.html b/nightly/_modules/cil/optimisation/algorithms/Algorithm.html index 5f4871abf7..647b5e0b83 100644 --- a/nightly/_modules/cil/optimisation/algorithms/Algorithm.html +++ b/nightly/_modules/cil/optimisation/algorithms/Algorithm.html @@ -232,7 +232,7 @@

Source code for cil.optimisation.algorithms.Algorithm

method will stop when the stopping criterion is met. ''' -
[docs] def __init__(self, **kwargs): + def __init__(self, **kwargs): '''Constructor Set the minimal number of parameters: @@ -259,7 +259,7 @@

Source code for cil.optimisation.algorithms.Algorithm

# self.x = None self.iter_string = 'Iter' self.logger = None - self.__set_up_logger(kwargs.get('log_file', None))
+ self.__set_up_logger(kwargs.get('log_file', None))
[docs] def set_up(self, *args, **kwargs): '''Set up the algorithm''' @@ -287,15 +287,15 @@

Source code for cil.optimisation.algorithms.Algorithm

'''default stop criterion for iterative algorithm: max_iteration reached''' return self.iteration > self.max_iteration
-
[docs] def __iter__(self): + def __iter__(self): '''Algorithm is an iterable''' - return self
+ return self
[docs] def next(self): '''Algorithm is an iterable python2 backwards compatibility''' return self.__next__()
-
[docs] def __next__(self): + def __next__(self): '''Algorithm is an iterable calling this method triggers update and update_objective @@ -321,10 +321,10 @@

Source code for cil.optimisation.algorithms.Algorithm

self.iteration % self.update_objective_interval == 0: self._iteration.append(self.iteration) - self.update_objective()
+ self.update_objective() -
[docs] def _update_previous_solution(self): + def _update_previous_solution(self): """ Update the previous solution with the current one The concrete algorithm calls update_previous_solution. Normally this would @@ -339,7 +339,7 @@

Source code for cil.optimisation.algorithms.Algorithm

""" - pass
+ pass
[docs] def get_output(self): " Returns the current solution. " diff --git a/nightly/_modules/cil/optimisation/functions/Function.html b/nightly/_modules/cil/optimisation/functions/Function.html index e3f9e173be..958ca961c0 100644 --- a/nightly/_modules/cil/optimisation/functions/Function.html +++ b/nightly/_modules/cil/optimisation/functions/Function.html @@ -219,32 +219,32 @@

Source code for cil.optimisation.functions.Function

[docs]class Function(object): - """ Abstract class representing a function + r""" Abstract class representing a function - :param L: Lipschitz constant of the gradient of the function F(x), when it is differentiable. - :type L: number, positive, default None - :param domain: The domain of the function. - - Lipschitz of the gradient of the function; it is a positive real number, such that |f'(x) - f'(y)| <= L ||x-y||, assuming f: IG --> R + Parameters + ---------- + + L: number, positive, default None + Lipschitz constant of the gradient of the function F(x), when it is differentiable. + + Note + ----- + The Lipschitz of the gradient of the function is a positive real number, such that :math:`\|f'(x) - f'(y)\| \leq L \|x-y\|`, assuming :math:`f: IG \rightarrow \mathbb{R}` """ -
[docs] def __init__(self, L = None): + def __init__(self, L = None): # overrides the type check to allow None as initial value - self._L = L
+ self._L = L -
[docs] def __call__(self,x): - - r"""Returns the value of the function F at x: :math:`F(x)` - - """ + def __call__(self,x): - raise NotImplementedError
+ raise NotImplementedError
[docs] def gradient(self, x, out=None): - r"""Returns the value of the gradient of function F at x, if it is differentiable + r"""Returns the value of the gradient of function :math:`F` at :math:`x`, if it is differentiable .. math:: F'(x) @@ -254,14 +254,16 @@

Source code for cil.optimisation.functions.Function

[docs] def proximal(self, x, tau, out=None): r"""Returns the proximal operator of function :math:`\tau F` at x - .. math:: \mathrm{prox}_{\tau F}(x) = \underset{z}{\mathrm{argmin}} \frac{1}{2}\|z - x\|^{2} + \tau F(z) + + .. math:: \text{prox}_{\tau F}(x) = \underset{z}{\text{argmin}} \frac{1}{2}\|z - x\|^{2} + \tau F(z) + """ raise NotImplementedError
[docs] def convex_conjugate(self, x): r""" Returns the convex conjugate of function :math:`F` at :math:`x^{*}`, - .. math:: F^{*}(x^{*}) = \underset{x^{*}}{\sup} <x^{*}, x> - F(x) + .. math:: F^{*}(x^{*}) = \underset{x^{*}}{\sup} \langle x^{*}, x \rangle - F(x) """ raise NotImplementedError
@@ -270,11 +272,11 @@

Source code for cil.optimisation.functions.Function

r"""Returns the proximal operator of the convex conjugate of function :math:`\tau F` at :math:`x^{*}` - .. math:: \mathrm{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\mathrm{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*}) + .. math:: \text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*}) Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate :math:`F^{*}` - .. math:: \mathrm{prox}_{\tau F^{*}}(x) = x - \tau\mathrm{prox}_{\tau^{-1} F}(\tau^{-1}x) + .. math:: \text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x) """ try: @@ -309,7 +311,7 @@

Source code for cil.optimisation.functions.Function

# Add/Substract with Scalar # Multiply with Scalar -
[docs] def __add__(self, other): + def __add__(self, other): """ Returns the sum of the functions. @@ -323,20 +325,20 @@

Source code for cil.optimisation.functions.Function

elif isinstance(other, (SumScalarFunction, ConstantFunction, Number)): return SumScalarFunction(self, other) else: - raise ValueError('Not implemented')
+ raise ValueError('Not implemented') -
[docs] def __radd__(self, other): + def __radd__(self, other): """ Making addition commutative. """ - return self + other
+ return self + other -
[docs] def __sub__(self, other): + def __sub__(self, other): """ Returns the subtraction of the functions.""" - return self + (-1) * other
+ return self + (-1) * other -
[docs] def __rmul__(self, scalar): + def __rmul__(self, scalar): """Returns a function multiplied by a scalar.""" - return ScaledFunction(self, scalar)
+ return ScaledFunction(self, scalar) def __mul__(self, scalar): return self.__rmul__(scalar) @@ -353,9 +355,9 @@

Source code for cil.optimisation.functions.Function

@property def L(self): - '''Lipschitz of the gradient of function f. + r'''Lipschitz of the gradient of function f. - L is positive real number, such that |f'(x) - f'(y)| <= L ||x-y||, assuming f: IG --> R''' + L is positive real number, such that :math:`\|f'(x) - f'(y)\| \leq L\|x-y\|`, assuming :math:`f: IG \rightarrow \mathbb{R}`''' return self._L # return self._L @L.setter @@ -401,12 +403,12 @@

Source code for cil.optimisation.functions.Function

""" -
[docs] def __init__(self, *functions ): + def __init__(self, *functions ): super(SumFunction, self).__init__() if len(functions) < 2: raise ValueError('At least 2 functions need to be passed') - self.functions = functions
+ self.functions = functions @property def L(self): @@ -462,7 +464,7 @@

Source code for cil.optimisation.functions.Function

# call base class setter super(SumFunction, self.__class__).Lmax.fset(self, value ) -
[docs] def __call__(self,x): + def __call__(self,x): r"""Returns the value of the sum of functions at :math:`x`. .. math:: (F_{1} + F_{2} + ... + F_{n})(x) = F_{1}(x) + F_{2}(x) + ... + F_{n}(x) @@ -471,7 +473,7 @@

Source code for cil.optimisation.functions.Function

ret = 0. for f in self.functions: ret += f(x) - return ret
+ return ret
[docs] def gradient(self, x, out=None): @@ -496,7 +498,7 @@

Source code for cil.optimisation.functions.Function

else: out += f.gradient(x)
-
[docs] def __add__(self, other): + def __add__(self, other): """ Addition for the SumFunction. @@ -514,7 +516,7 @@

Source code for cil.optimisation.functions.Function

functions.append(other) return SumFunction(*functions) else: - return super(SumFunction, self).__add__(other)
+ return super(SumFunction, self).__add__(other)
[docs]class ScaledFunction(Function): @@ -528,10 +530,10 @@

Source code for cil.optimisation.functions.Function

1. :math:`G(x) = \alpha F(x)` ( __call__ method ) 2. :math:`G'(x) = \alpha F'(x)` ( gradient method ) 3. :math:`G^{*}(x^{*}) = \alpha F^{*}(\frac{x^{*}}{\alpha})` ( convex_conjugate method ) - 4. :math:`\mathrm{prox}_{\tau G}(x) = \mathrm{prox}_{(\tau\alpha) F}(x)` ( proximal method ) + 4. :math:`\text{prox}_{\tau G}(x) = \text{prox}_{(\tau\alpha) F}(x)` ( proximal method ) """ -
[docs] def __init__(self, function, scalar): + def __init__(self, function, scalar): super(ScaledFunction, self).__init__() @@ -539,7 +541,7 @@

Source code for cil.optimisation.functions.Function

raise TypeError('expected scalar: got {}'.format(type(scalar))) self.scalar = scalar - self.function = function
+ self.function = function @property def L(self): if self._L is None: @@ -562,13 +564,13 @@

Source code for cil.optimisation.functions.Function

self._scalar = value else: raise TypeError('Expecting scalar type as a number type. Got {}'.format(type(value))) -
[docs] def __call__(self,x, out=None): + def __call__(self,x, out=None): r"""Returns the value of the scaled function. .. math:: G(x) = \alpha F(x) """ - return self.scalar * self.function(x)
+ return self.scalar * self.function(x)
[docs] def convex_conjugate(self, x): r"""Returns the convex conjugate of the scaled function. @@ -606,7 +608,7 @@

Source code for cil.optimisation.functions.Function

r"""Returns the proximal operator of the scaled function. - .. math:: \mathrm{prox}_{\tau G}(x) = \mathrm{prox}_{(\tau\alpha) F}(x) + .. math:: \text{prox}_{\tau G}(x) = \text{prox}_{(\tau\alpha) F}(x) """ @@ -655,11 +657,11 @@

Source code for cil.optimisation.functions.Function

""" -
[docs] def __init__(self, function, constant): + def __init__(self, function, constant): super(SumScalarFunction, self).__init__(function, ConstantFunction(constant)) self.constant = constant - self.function = function
+ self.function = function
[docs] def convex_conjugate(self,x): @@ -674,7 +676,7 @@

Source code for cil.optimisation.functions.Function

""" Returns the proximal operator of :math:`F+scalar` - .. math:: \mathrm{prox}_{\tau (F+scalar)}(x) = \mathrm{prox}_{\tau F} + .. math:: \text{prox}_{\tau (F+scalar)}(x) = \text{prox}_{\tau F} """ return self.function.proximal(x, tau, out=out)
@@ -699,16 +701,16 @@

Source code for cil.optimisation.functions.Function

""" -
[docs] def __init__(self, constant = 0): + def __init__(self, constant = 0): self.constant = constant - super(ConstantFunction, self).__init__(L=0)
+ super(ConstantFunction, self).__init__(L=0) -
[docs] def __call__(self,x): + def __call__(self,x): """ Returns the value of the function, :math:`F(x) = constant`""" - return self.constant
+ return self.constant
[docs] def gradient(self, x, out=None): @@ -745,7 +747,7 @@

Source code for cil.optimisation.functions.Function

"""Returns the proximal operator of the constant function, which is the same element, i.e., - .. math:: \mathrm{prox}_{\tau F}(x) = x + .. math:: \text{prox}_{\tau F}(x) = x """ if out is None: @@ -764,20 +766,20 @@

Source code for cil.optimisation.functions.Function

@property def L(self): return 0. -
[docs] def __rmul__(self, other): + def __rmul__(self, other): '''defines the right multiplication with a number''' if not isinstance (other, Number): raise NotImplemented constant = self.constant * other - return ConstantFunction(constant)
+ return ConstantFunction(constant)
[docs]class ZeroFunction(ConstantFunction): """ ZeroFunction represents the zero function, :math:`F(x) = 0` """ -
[docs] def __init__(self): - super(ZeroFunction, self).__init__(constant = 0.)
+ def __init__(self): + super(ZeroFunction, self).__init__(constant = 0.)
[docs]class TranslateFunction(Function): @@ -792,11 +794,11 @@

Source code for cil.optimisation.functions.Function

1. :math:`G(x) = F(x - b)` ( __call__ method ) 2. :math:`G'(x) = F'(x - b)` ( gradient method ) 3. :math:`G^{*}(x^{*}) = F^{*}(x^{*}) + <x^{*}, b >` ( convex_conjugate method ) - 4. :math:`\mathrm{prox}_{\tau G}(x) = \mathrm{prox}_{\tau F}(x - b) + b` ( proximal method ) + 4. :math:`\text{prox}_{\tau G}(x) = \text{prox}_{\tau F}(x - b) + b` ( proximal method ) """ -
[docs] def __init__(self, function, center): + def __init__(self, function, center): try: L = function.L except NotImplementedError as nie: @@ -804,9 +806,9 @@

Source code for cil.optimisation.functions.Function

super(TranslateFunction, self).__init__(L = L) self.function = function - self.center = center
+ self.center = center -
[docs] def __call__(self, x): + def __call__(self, x): r"""Returns the value of the translated function. @@ -824,7 +826,7 @@

Source code for cil.optimisation.functions.Function

if id(tmp) == id(x): x.add(self.center, out = x) - return val
+ return val
[docs] def gradient(self, x, out = None): @@ -856,7 +858,7 @@

Source code for cil.optimisation.functions.Function

r"""Returns the proximal operator of the translated function. - .. math:: \mathrm{prox}_{\tau G}(x) = \mathrm{prox}_{\tau F}(x-b) + b + .. math:: \text{prox}_{\tau G}(x) = \text{prox}_{\tau F}(x-b) + b """ try: diff --git a/nightly/_modules/cil/optimisation/functions/IndicatorBox.html b/nightly/_modules/cil/optimisation/functions/IndicatorBox.html index 970f0e7ffe..29c039f649 100644 --- a/nightly/_modules/cil/optimisation/functions/IndicatorBox.html +++ b/nightly/_modules/cil/optimisation/functions/IndicatorBox.html @@ -280,15 +280,15 @@

Source code for cil.optimisation.functions.IndicatorBox

ib.set_num_threads(num_threads) ''' -
[docs] def __new__(cls, lower=None, upper=None, accelerated=True): + def __new__(cls, lower=None, upper=None, accelerated=True): if accelerated: logging.info("Numba backend is used.") return super(IndicatorBox, cls).__new__(IndicatorBox_numba) else: logging.info("Numpy backend is used.") - return super(IndicatorBox, cls).__new__(IndicatorBox_numpy)
+ return super(IndicatorBox, cls).__new__(IndicatorBox_numpy) -
[docs] def __init__(self, lower=None, upper=None, accelerated=True): + def __init__(self, lower=None, upper=None, accelerated=True): '''__init__''' super(IndicatorBox, self).__init__() @@ -304,7 +304,7 @@

Source code for cil.optimisation.functions.IndicatorBox

self._suppress_evaluation = False # optional parameter to track the number of threads used by numba - self._num_threads = None
+ self._num_threads = None @property def suppress_evaluation(self): @@ -322,7 +322,7 @@

Source code for cil.optimisation.functions.IndicatorBox

raise ValueError('Value must be boolean') self._suppress_evaluation = value
-
[docs] def __call__(self, x): + def __call__(self, x): '''Evaluates IndicatorBox at x Parameters @@ -334,7 +334,7 @@

Source code for cil.optimisation.functions.IndicatorBox

''' if not self.suppress_evaluation: return self.evaluate(x) - return 0.0
+ return 0.0
[docs] def proximal(self, x, tau, out=None): r'''Proximal operator of IndicatorBox at x diff --git a/nightly/_modules/cil/optimisation/functions/KullbackLeibler.html b/nightly/_modules/cil/optimisation/functions/KullbackLeibler.html index 04ab283672..83c3498b0c 100644 --- a/nightly/_modules/cil/optimisation/functions/KullbackLeibler.html +++ b/nightly/_modules/cil/optimisation/functions/KullbackLeibler.html @@ -282,7 +282,7 @@

Source code for cil.optimisation.functions.KullbackLeibler

""" -
[docs] def __new__(cls, b, eta = None, mask = None, backend = 'numba'): + def __new__(cls, b, eta = None, mask = None, backend = 'numba'): # default backend numba cls.backend = backend @@ -296,9 +296,9 @@

Source code for cil.optimisation.functions.KullbackLeibler

return super(KullbackLeibler, cls).__new__(KullbackLeibler_numba) else: logging.info("Numpy backend is used.") - return super(KullbackLeibler, cls).__new__(KullbackLeibler_numpy)
+ return super(KullbackLeibler, cls).__new__(KullbackLeibler_numpy) -
[docs] def __init__(self, b, eta = None, mask = None, backend = 'numba'): + def __init__(self, b, eta = None, mask = None, backend = 'numba'): self.b = b self.eta = eta @@ -318,7 +318,7 @@

Source code for cil.optimisation.functions.KullbackLeibler

if mask is not None: self.mask = mask.as_array() - super(KullbackLeibler, self).__init__(L = None)
+ super(KullbackLeibler, self).__init__(L = None)
class KullbackLeibler_numpy(KullbackLeibler): diff --git a/nightly/_modules/cil/optimisation/functions/L1Norm.html b/nightly/_modules/cil/optimisation/functions/L1Norm.html index df0c75edaf..aaeb9316c6 100644 --- a/nightly/_modules/cil/optimisation/functions/L1Norm.html +++ b/nightly/_modules/cil/optimisation/functions/L1Norm.html @@ -244,7 +244,7 @@

Source code for cil.optimisation.functions.L1Norm

""" -
[docs] def __init__(self, **kwargs): + def __init__(self, **kwargs): '''creator Cases considered (with/without data): @@ -255,9 +255,9 @@

Source code for cil.optimisation.functions.L1Norm

:type b: :code:`DataContainer`, optional ''' super(L1Norm, self).__init__() - self.b = kwargs.get('b',None)
+ self.b = kwargs.get('b',None) -
[docs] def __call__(self, x): + def __call__(self, x): r"""Returns the value of the L1Norm function at x. @@ -270,7 +270,7 @@

Source code for cil.optimisation.functions.L1Norm

y = x if self.b is not None: y = x - self.b - return y.abs().sum()
+ return y.abs().sum()
[docs] def convex_conjugate(self,x): @@ -350,10 +350,10 @@

Source code for cil.optimisation.functions.L1Norm

""" -
[docs] def __init__(self, **kwargs): - super(MixedL11Norm, self).__init__(**kwargs)
+ def __init__(self, **kwargs): + super(MixedL11Norm, self).__init__(**kwargs) -
[docs] def __call__(self, x): + def __call__(self, x): r"""Returns the value of the MixedL11Norm function at x. @@ -362,7 +362,7 @@

Source code for cil.optimisation.functions.L1Norm

if not isinstance(x, BlockDataContainer): raise ValueError('__call__ expected BlockDataContainer, got {}'.format(type(x))) - return x.abs().sum()
+ return x.abs().sum()
[docs] def proximal(self, x, tau, out = None): diff --git a/nightly/_modules/cil/optimisation/functions/L2NormSquared.html b/nightly/_modules/cil/optimisation/functions/L2NormSquared.html index d14a5e6225..10ed87480b 100644 --- a/nightly/_modules/cil/optimisation/functions/L2NormSquared.html +++ b/nightly/_modules/cil/optimisation/functions/L2NormSquared.html @@ -215,72 +215,59 @@

Source code for cil.optimisation.functions.L2NormSquared

from cil.framework import DataContainer from cil.optimisation.operators import DiagonalOperator +
[docs]class L2NormSquared(Function): - + r""" L2NormSquared function: :math:`F(x) = \| x\|^{2}_{2} = \underset{i}{\sum}x_{i}^{2}` - + Following cases are considered: - + a) :math:`F(x) = \|x\|^{2}_{2}` b) :math:`F(x) = \|x - b\|^{2}_{2}` + + Parameters + ---------- + + b:`DataContainer`, optional + Translation of the function + - .. note:: For case b) case we can use :code:`F = L2NormSquared().centered_at(b)`, - see *TranslateFunction*. - - :Example: - + Note + ----- + + For case b) we can use :code:`F = L2NormSquared().centered_at(b)`, see *TranslateFunction*. + + Example + ------- + >>> F = L2NormSquared() >>> F = L2NormSquared(b=b) >>> F = L2NormSquared().centered_at(b) - - """ - -
[docs] def __init__(self, **kwargs): - '''creator - - Cases considered (with/without data): - a) .. math:: f(x) = \|x\|^{2}_{2} - b) .. math:: f(x) = \|\|x - b\|\|^{2}_{2} - - :param b: translation of the function - :type b: :code:`DataContainer`, optional - ''' - super(L2NormSquared, self).__init__(L = 2) - self.b = kwargs.get('b',None)
- - -
[docs] def __call__(self, x): - - r"""Returns the value of the L2NormSquared function at x. - - Following cases are considered: - - a) :math:`F(x) = \|x\|^{2}_{2}` - b) :math:`F(x) = \|x - b\|^{2}_{2}` - - :param: :math:`x` - :returns: :math:`\underset{i}{\sum}x_{i}^{2}` - - """ - + + """ + + def __init__(self, **kwargs): + super(L2NormSquared, self).__init__(L=2) + self.b = kwargs.get('b', None) + + def __call__(self, x): y = x - if self.b is not None: + if self.b is not None: y = x - self.b try: return y.squared_norm() except AttributeError as ae: - # added for compatibility with SIRF - return (y.norm()**2)
- -
[docs] def gradient(self, x, out=None): - + # added for compatibility with SIRF + return (y.norm()**2) + +
[docs] def gradient(self, x, out=None): r"""Returns the value of the gradient of the L2NormSquared function at x. - + Following cases are considered: - + a) :math:`F'(x) = 2x` b) :math:`F'(x) = 2(x-b)` - + """ if self.b is None: @@ -290,37 +277,33 @@

Source code for cil.optimisation.functions.L2NormSquared

if out is None: return ret
- - +
[docs] def convex_conjugate(self, x): - r"""Returns the value of the convex conjugate of the L2NormSquared function at x. - + Consider the following cases: - + a) .. math:: F^{*}(x^{*}) = \frac{1}{4}\|x^{*}\|^{2}_{2} - b) .. math:: F^{*}(x^{*}) = \frac{1}{4}\|x^{*}\|^{2}_{2} + <x^{*}, b> - - """ + b) .. math:: F^{*}(x^{*}) = \frac{1}{4}\|x^{*}\|^{2}_{2} + \langle x^{*}, b\rangle + + """ tmp = 0 - + if self.b is not None: - tmp = x.dot(self.b) - - return 0.25 * x.squared_norm() + tmp
+ tmp = x.dot(self.b) + return 0.25 * x.squared_norm() + tmp
-
[docs] def proximal(self, x, tau, out = None): - +
[docs] def proximal(self, x, tau, out=None): r"""Returns the value of the proximal operator of the L2NormSquared function at x. - - + + Consider the following cases: - - a) .. math:: \mathrm{prox}_{\tau F}(x) = \frac{x}{1+2\tau} - b) .. math:: \mathrm{prox}_{\tau F}(x) = \frac{x-b}{1+2\tau} + b - - """ + + a) .. math:: \text{prox}_{\tau F}(x) = \frac{x}{1+2\tau} + b) .. math:: \text{prox}_{\tau F}(x) = \frac{x-b}{1+2\tau} + b + + """ mult = 1/(1+2*tau) @@ -333,76 +316,84 @@

Source code for cil.optimisation.functions.L2NormSquared

return ret
-
[docs]class WeightedL2NormSquared(Function): - - r""" WeightedL2NormSquared function: :math:`F(x) = \| x\|_{w}^{2}_{2} = \underset{i}{\sum}w_{i}*x_{i}^{2} = <x, w*x> = x^{T}*w*x` - - """ - -
[docs] def __init__(self, **kwargs): - - # Weight can be either a scalar or a DataContainer - # Lispchitz constant L = 2 *||weight|| - - self.weight = kwargs.get('weight', 1.0) - self.b = kwargs.get('b', None) - tmp_norm = 1.0 - self.tmp_space = self.weight*0. - - if isinstance(self.weight, DataContainer): - self.operator_weight = DiagonalOperator(self.weight) - tmp_norm = self.operator_weight.norm() - self.tmp_space = self.operator_weight.domain_geometry().allocate() - - if (self.weight<0).any(): - raise ValueError('Weigth contains negative values') - - super(WeightedL2NormSquared, self).__init__(L = 2 * tmp_norm )
- -
[docs] def __call__(self, x): - - self.operator_weight.direct(x, out = self.tmp_space) - y = x.dot(self.tmp_space) - - if self.b is not None: - self.operator_weight.direct(x - self.b, out = self.tmp_space) - y = (x - self.b).dot(self.tmp_space) - return y
- - -
[docs] def gradient(self, x, out=None): - - + + r""" WeightedL2NormSquared function: :math:`F(x) = \|x\|_{W,2}^2 = \Sigma_iw_ix_i^2 = \langle x, Wx\rangle = x^TWx` + where :math:`W=\text{diag}(weight)` if `weight` is a `DataContainer` or :math:`W=\text{weight} I` if `weight` is a scalar. + + Parameters + ----------- + **kwargs + + weight: a `scalar` or a `DataContainer` with the same shape as the intended domain of this `WeightedL2NormSquared` function + b: a `DataContainer` with the same shape as the intended domain of this `WeightedL2NormSquared` function + A shift so that the function becomes :math:`F(x) = \| x-b\|_{W,2}^2 = \Sigma_iw_i(x_i-b_i)^2 = \langle x-b, W(x-b) \rangle = (x-b)^TW(x-b)` + + + """ + + def __init__(self, **kwargs): + + # Weight can be either a scalar or a DataContainer + # Lispchitz constant L = 2 *||weight|| + + self.weight = kwargs.get('weight', 1.0) + self.b = kwargs.get('b', None) + tmp_norm = 1.0 + self.tmp_space = self.weight*0. + + if isinstance(self.weight, DataContainer): + self.operator_weight = DiagonalOperator(self.weight) + tmp_norm = self.operator_weight.norm() + self.tmp_space = self.operator_weight.domain_geometry().allocate() + + if (self.weight < 0).any(): + raise ValueError('Weight contains negative values') + + super(WeightedL2NormSquared, self).__init__(L=2 * tmp_norm) + + def __call__(self, x): + self.operator_weight.direct(x, out=self.tmp_space) + y = x.dot(self.tmp_space) + + if self.b is not None: + self.operator_weight.direct(x - self.b, out=self.tmp_space) + y = (x - self.b).dot(self.tmp_space) + return y + +
[docs] def gradient(self, x, out=None): + r""" Returns the value of :math:`F'(x) = 2Wx` or, if `b` is defined, :math:`F'(x) = 2W(x-b)` + where :math:`W=\text{diag}(weight)` if `weight` is a `DataContainer` or :math:`\text{weight}I` if `weight` is a scalar. + + """ + if out is not None: - - out.fill(x) + + out.fill(x) if self.b is not None: out -= self.b - self.operator_weight.direct(out, out=out) + self.operator_weight.direct(out, out=out) out *= 2 - + else: - + y = x if self.b is not None: y = x - self.b return 2*self.weight*y
- +
[docs] def convex_conjugate(self, x): - + r"""Returns the value of the convex conjugate of the WeightedL2NormSquared function at x.""" tmp = 0 - if self.b is not None: - tmp = x.dot(self.b) - + tmp = x.dot(self.b) + return (1./4) * (x/self.weight.sqrt()).squared_norm() + tmp
- -
[docs] def proximal(self, x, tau, out = None): - +
[docs] def proximal(self, x, tau, out=None): + r"""Returns the value of the proximal operator of the WeightedL2NormSquared function at x.""" if out is None: - + if self.b is None: return x/(1+2*tau*self.weight) else: @@ -412,14 +403,13 @@

Source code for cil.optimisation.functions.L2NormSquared

return tmp else: - + if self.b is not None: x.subtract(self.b, out=out) out /= (1+2*tau*self.weight) out += self.b else: - x.divide((1+2*tau*self.weight), out=out)
- + x.divide((1+2*tau*self.weight), out=out)
diff --git a/nightly/_modules/cil/optimisation/functions/LeastSquares.html b/nightly/_modules/cil/optimisation/functions/LeastSquares.html index 5f09d94941..baf2e50cd5 100644 --- a/nightly/_modules/cil/optimisation/functions/LeastSquares.html +++ b/nightly/_modules/cil/optimisation/functions/LeastSquares.html @@ -219,9 +219,7 @@

Source code for cil.optimisation.functions.LeastSquares

import numpy as np -
[docs]class LeastSquares(Function): - - +
[docs]class LeastSquares(Function): r""" (Weighted) Least Squares function .. math:: F(x) = c\|Ax-b\|_2^2 @@ -230,30 +228,23 @@

Source code for cil.optimisation.functions.LeastSquares

.. math:: F(x) = c\|Ax-b\|_{2,W}^{2} - Parameters: + where :math:`W=\text{diag}(weight)`. + + Parameters ----------- + A : LinearOperator + b : Data, DataContainer + c : Scaling Constant, float, default 1.0 + weight: DataContainer with all positive elements of size of the range of operator A, default None - A : LinearOperator - - b : Data, DataContainer - - c : Scaling Constant, float, default 1.0 - - weight: DataContainer with all positive elements of size of the range of operator A, default None - - Members: + Note -------- - L : Lipshitz Constant of the gradient of :math:`F` which is :math:`2 c ||A||_2^2 = 2 c s1(A)^2`, or - - L : Lipshitz Constant of the gradient of :math:`F` which is :math:`2 c ||weight|| ||A||_2^2 = 2s1(A)^2`, - - where s1(A) is the largest singular value of A. + L is the Lipshitz Constant of the gradient of :math:`F` which is :math:`2 c ||A||_2^2 = 2 c \sigma_1(A)^2`, or :math:`2 c ||W|| ||A||_2^2 = 2c||W|| \sigma_1(A)^2`, where :math:`\sigma_1(A)` is the largest singular value of :math:`A` and :math:`W=\text{diag}(weight)`. - """ -
[docs] def __init__(self, A, b, c=1.0, weight = None): + def __init__(self, A, b, c=1.0, weight = None): super(LeastSquares, self).__init__() self.A = A # Should be a LinearOperator @@ -266,12 +257,12 @@

Source code for cil.optimisation.functions.LeastSquares

if weight is not None: if (self.weight<0).any(): - raise ValueError('Weight contains negative values')
+ raise ValueError('Weight contains negative values') -
[docs] def __call__(self, x): + def __call__(self, x): - r""" Returns the value of :math:`F(x) = c\|Ax-b\|_2^2` or c\|Ax-b\|_{2,weight}^2 + r""" Returns the value of :math:`F(x) = c\|Ax-b\|_2^2` or :math:`c\|Ax-b\|_{2,W}^2`, where :math:`W=\text{diag}(weight)`: """ # c * (A.direct(x)-b).dot((A.direct(x) - b)) @@ -282,16 +273,20 @@

Source code for cil.optimisation.functions.LeastSquares

return self.c * y.dot(y) else: wy = self.weight.multiply(y) - return self.c * y.dot(wy)
+ return self.c * y.dot(wy)
[docs] def gradient(self, x, out=None): - r""" Returns the value of the gradient of :math:`F(x) = c*\|A*x-b\|_2^2` + r""" Returns the value of the gradient of :math:`F(x)`: - .. math:: F'(x) = 2cA^T(Ax-b) + .. math:: F'(x) = 2cA^T(Ax-b) + + or - .. math:: F'(x) = 2cA^T(weight(Ax-b)) + .. math:: F'(x) = 2cA^T(W(Ax-b)) + where :math:`W=\text{diag}(weight)`. + """ should_return = True if out is not None: @@ -349,13 +344,14 @@

Source code for cil.optimisation.functions.LeastSquares

self._weight_norm = 1.0 return self._weight_norm -
[docs] def __rmul__(self, other): + def __rmul__(self, other): '''defines the right multiplication with a number''' + if not isinstance (other, Number): raise NotImplemented constant = self.c * other - return LeastSquares(A=self.A, b=self.b, c=constant, weight=self.weight)
+ return LeastSquares(A=self.A, b=self.b, c=constant, weight=self.weight)
diff --git a/nightly/_modules/cil/optimisation/functions/MixedL21Norm.html b/nightly/_modules/cil/optimisation/functions/MixedL21Norm.html index 6d8fec5c36..38125dda7d 100644 --- a/nightly/_modules/cil/optimisation/functions/MixedL21Norm.html +++ b/nightly/_modules/cil/optimisation/functions/MixedL21Norm.html @@ -294,12 +294,12 @@

Source code for cil.optimisation.functions.MixedL21Norm

""" -
[docs] def __init__(self, **kwargs): + def __init__(self, **kwargs): - super(MixedL21Norm, self).__init__()
+ super(MixedL21Norm, self).__init__() -
[docs] def __call__(self, x): + def __call__(self, x): r"""Returns the value of the MixedL21Norm function at x. @@ -308,7 +308,7 @@

Source code for cil.optimisation.functions.MixedL21Norm

if not isinstance(x, BlockDataContainer): raise ValueError('__call__ expected BlockDataContainer, got {}'.format(type(x))) - return x.pnorm(p=2).sum()
+ return x.pnorm(p=2).sum()
[docs] def convex_conjugate(self,x): @@ -385,7 +385,7 @@

Source code for cil.optimisation.functions.MixedL21Norm

""" -
[docs] def __init__(self, epsilon): + def __init__(self, epsilon): r''' :param epsilon: smoothing parameter making MixedL21Norm differentiable @@ -395,9 +395,9 @@

Source code for cil.optimisation.functions.MixedL21Norm

self.epsilon = epsilon if self.epsilon==0: - raise ValueError('We need epsilon>0. Otherwise, call "MixedL21Norm" ')
+ raise ValueError('We need epsilon>0. Otherwise, call "MixedL21Norm" ') -
[docs] def __call__(self, x): + def __call__(self, x): r"""Returns the value of the SmoothMixedL21Norm function at x. """ @@ -405,7 +405,7 @@

Source code for cil.optimisation.functions.MixedL21Norm

raise ValueError('__call__ expected BlockDataContainer, got {}'.format(type(x))) - return (x.pnorm(2).power(2) + self.epsilon**2).sqrt().sum()
+ return (x.pnorm(2).power(2) + self.epsilon**2).sqrt().sum()
[docs] def gradient(self, x, out=None): diff --git a/nightly/_modules/cil/optimisation/functions/OperatorCompositionFunction.html b/nightly/_modules/cil/optimisation/functions/OperatorCompositionFunction.html index 6e645f847f..e8fa11d56e 100644 --- a/nightly/_modules/cil/optimisation/functions/OperatorCompositionFunction.html +++ b/nightly/_modules/cil/optimisation/functions/OperatorCompositionFunction.html @@ -229,7 +229,7 @@

Source code for cil.optimisation.functions.OperatorCompositionFunction

< """ -
[docs] def __init__(self, function, operator): + def __init__(self, function, operator): '''creator :param A: operator @@ -241,7 +241,7 @@

Source code for cil.optimisation.functions.OperatorCompositionFunction

< super(OperatorCompositionFunction, self).__init__() self.function = function - self.operator = operator
+ self.operator = operator @property def L(self): @@ -252,12 +252,12 @@

Source code for cil.optimisation.functions.OperatorCompositionFunction

< self._L = None return self._L -
[docs] def __call__(self, x): + def __call__(self, x): """ Returns :math:`F(Ax)` """ - return self.function(self.operator.direct(x))
+ return self.function(self.operator.direct(x))
[docs] def gradient(self, x, out=None): diff --git a/nightly/_modules/cil/optimisation/functions/Rosenbrock.html b/nightly/_modules/cil/optimisation/functions/Rosenbrock.html index 17e127960e..b0c950e397 100644 --- a/nightly/_modules/cil/optimisation/functions/Rosenbrock.html +++ b/nightly/_modules/cil/optimisation/functions/Rosenbrock.html @@ -225,19 +225,19 @@

Source code for cil.optimisation.functions.Rosenbrock

The function has a global minimum at .. math:: (x,y)=(\alpha, \alpha^2) ''' -
[docs] def __init__(self, alpha, beta): + def __init__(self, alpha, beta): super(Rosenbrock, self).__init__() self.alpha = alpha - self.beta = beta
+ self.beta = beta -
[docs] def __call__(self, x): + def __call__(self, x): if not isinstance(x, VectorData): raise TypeError('Rosenbrock function works on VectorData only') vec = x.as_array() a = (self.alpha - vec[0]) b = (vec[1] - (vec[0]*vec[0])) - return a * a + self.beta * b * b
+ return a * a + self.beta * b * b
[docs] def gradient(self, x, out=None): r'''Gradient of the Rosenbrock function diff --git a/nightly/_modules/cil/optimisation/functions/TotalVariation.html b/nightly/_modules/cil/optimisation/functions/TotalVariation.html index e00d2eb5ea..b39bd2a914 100644 --- a/nightly/_modules/cil/optimisation/functions/TotalVariation.html +++ b/nightly/_modules/cil/optimisation/functions/TotalVariation.html @@ -349,7 +349,7 @@

Source code for cil.optimisation.functions.TotalVariation

""" -
[docs] def __init__(self, + def __init__(self, max_iteration=10, tolerance=None, correlation="Space", @@ -409,7 +409,7 @@

Source code for cil.optimisation.functions.TotalVariation

if self.isotropic: self.func = MixedL21Norm() else: - self.func = MixedL11Norm()
+ self.func = MixedL11Norm() def _get_p2(self): r"""The initial value for the dual in the proximal calculation - allocated to zero in the case of warm_start=False @@ -431,7 +431,7 @@

Source code for cil.optimisation.functions.TotalVariation

"regularisation_parameter: expected a number, got {}".format(type(value))) self._regularisation_parameter = value -
[docs] def __call__(self, x): + def __call__(self, x): r""" Returns the value of the TotalVariation function at :code:`x` .""" try: @@ -450,7 +450,7 @@

Source code for cil.optimisation.functions.TotalVariation

else: strongly_convex_term = 0 - return self.regularisation_parameter * self.func(self.gradient.direct(x)) + strongly_convex_term
+ return self.regularisation_parameter * self.func(self.gradient.direct(x)) + strongly_convex_term
[docs] def proximal(self, x, tau, out=None): r""" Returns the proximal operator of the TotalVariation function at :code:`x` .""" @@ -585,12 +585,12 @@

Source code for cil.optimisation.functions.TotalVariation

return self._gradient -
[docs] def __rmul__(self, scalar): + def __rmul__(self, scalar): if not isinstance(scalar, Number): raise TypeError( "scalar: Expected a number, got {}".format(type(scalar))) self.regularisation_parameter *= scalar - return self
+ return self
diff --git a/nightly/_sources/optimisation.rst.txt b/nightly/_sources/optimisation.rst.txt index 8b92feb669..c3234c46cf 100644 --- a/nightly/_sources/optimisation.rst.txt +++ b/nightly/_sources/optimisation.rst.txt @@ -73,8 +73,7 @@ Base class ---------- .. autoclass:: cil.optimisation.algorithms.Algorithm :members: - :private-members: - :special-members: + :inherited-members: GD -- @@ -236,37 +235,37 @@ Base classes .. autoclass:: cil.optimisation.functions.Function :members: - :special-members: + :inherited-members: .. autoclass:: cil.optimisation.functions.SumFunction :members: - :special-members: + :inherited-members: .. autoclass:: cil.optimisation.functions.ScaledFunction :members: - :special-members: + :inherited-members: .. autoclass:: cil.optimisation.functions.SumScalarFunction :members: - :special-members: + :inherited-members: .. autoclass:: cil.optimisation.functions.TranslateFunction :members: - :special-members: + :inherited-members: Simple functions ---------------- .. autoclass:: cil.optimisation.functions.ConstantFunction :members: - :special-members: + :inherited-members: .. autoclass:: cil.optimisation.functions.ZeroFunction :members: - :special-members: + :inherited-members: .. autoclass:: cil.optimisation.functions.Rosenbrock :members: - :special-members: + :inherited-members: Composition of operator and a function -------------------------------------- @@ -293,14 +292,14 @@ be expressed as .. autoclass:: cil.optimisation.functions.OperatorCompositionFunction :members: - :special-members: + :inherited-members: Indicator box ------------- .. autoclass:: cil.optimisation.functions.IndicatorBox :members: - :special-members: + :inherited-members: KullbackLeibler @@ -308,14 +307,14 @@ KullbackLeibler .. autoclass:: cil.optimisation.functions.KullbackLeibler :members: - :special-members: + :inherited-members: L1 Norm ------- .. autoclass:: cil.optimisation.functions.L1Norm :members: - :special-members: + :inherited-members: Squared L2 norm squared ----------------------- @@ -323,11 +322,11 @@ Squared L2 norm squared .. autoclass:: cil.optimisation.functions.L2NormSquared :members: - :special-members: + :inherited-members: .. autoclass:: cil.optimisation.functions.WeightedL2NormSquared :members: - :special-members: + :inherited-members: Least Squares @@ -335,35 +334,35 @@ Least Squares .. autoclass:: cil.optimisation.functions.LeastSquares :members: - :special-members: + :inherited-members: Mixed L21 norm -------------- .. autoclass:: cil.optimisation.functions.MixedL21Norm :members: - :special-members: + :inherited-members: Smooth Mixed L21 norm --------------------- .. autoclass:: cil.optimisation.functions.SmoothMixedL21Norm :members: - :special-members: + :inherited-members: Mixed L11 norm --------------------- .. autoclass:: cil.optimisation.functions.MixedL11Norm :members: - :special-members: + :inherited-members: Total variation --------------- .. autoclass:: cil.optimisation.functions.TotalVariation :members: - :special-members: + :inherited-members: Block Framework *************** diff --git a/nightly/genindex.html b/nightly/genindex.html index a48d17e2f4..475bfd8305 100644 --- a/nightly/genindex.html +++ b/nightly/genindex.html @@ -225,47 +225,9 @@

Index

_

- +
@@ -685,8 +575,46 @@

C

  • (cil.optimisation.operators.ZeroOperator method)
  • -
  • centered_at() (cil.optimisation.functions.Function method) +
  • centered_at() (cil.optimisation.functions.ConstantFunction method) + +
  • CentreOfRotationCorrector (class in cil.processors)
  • CGLS (class in cil.optimisation.algorithms) @@ -722,12 +650,12 @@

    C

  • (cil.framework.VectorData method)
  • + + -
  • get_metadata() (cil.io.ZEISSDataReader method)
  • - - + +
  • GradientOperator (class in cil.optimisation.operators) @@ -1244,22 +1202,48 @@

    L

  • (cil.optimisation.functions.ConstantFunction property)
  • (cil.optimisation.functions.Function property) +
  • +
  • (cil.optimisation.functions.IndicatorBox property) +
  • +
  • (cil.optimisation.functions.KullbackLeibler property) +
  • +
  • (cil.optimisation.functions.L1Norm property) +
  • +
  • (cil.optimisation.functions.L2NormSquared property)
  • (cil.optimisation.functions.LeastSquares property) +
  • +
  • (cil.optimisation.functions.MixedL11Norm property) +
  • +
  • (cil.optimisation.functions.MixedL21Norm property)
  • (cil.optimisation.functions.OperatorCompositionFunction property) +
  • +
  • (cil.optimisation.functions.Rosenbrock property)
  • (cil.optimisation.functions.ScaledFunction property) +
  • +
  • (cil.optimisation.functions.SmoothMixedL21Norm property)
  • (cil.optimisation.functions.SumFunction property)
  • (cil.optimisation.functions.SumScalarFunction property) +
  • +
  • (cil.optimisation.functions.TotalVariation property) +
  • +
  • (cil.optimisation.functions.TranslateFunction property) +
  • +
  • (cil.optimisation.functions.WeightedL2NormSquared property) +
  • +
  • (cil.optimisation.functions.ZeroFunction property)
  • L1Norm (class in cil.optimisation.functions)
  • L2NormSquared (class in cil.optimisation.functions)
  • + + @@ -1600,9 +1600,43 @@

    P

  • proximal_conjugate() (cil.optimisation.functions.BlockFunction method)
  • psnr() (in module cil.utilities.quality_measures) diff --git a/nightly/objects.inv b/nightly/objects.inv index 81748d8d7b..935f0aba87 100644 Binary files a/nightly/objects.inv and b/nightly/objects.inv differ diff --git a/nightly/optimisation.html b/nightly/optimisation.html index 53d5dd1771..04fa23f902 100644 --- a/nightly/optimisation.html +++ b/nightly/optimisation.html @@ -496,22 +496,6 @@

    Base classcallback function that receives the current iteration number and the actual objective value and can be used to trigger print to screens and other user interactions. The run method will stop when the stopping criterion is met.

    -
    -
    -__init__(**kwargs)[source]#
    -

    Constructor

    -

    Set the minimal number of parameters:

    -
    -
    Parameters
    -
      -
    • max_iteration (int, optional, default 0) – maximum number of iterations

    • -
    • update_objective_interval (int, optional, default 1) – the interval every which we would save the current objective. 1 means every iteration, 2 every 2 iteration and so forth. This is by default 1 and should be increased when evaluating the objective is computationally expensive.

    • -
    • log_file (str, optional, default None) – log verbose output to file

    • -
    -
    -
    -
    -
    set_up(*args, **kwargs)[source]#
    @@ -531,24 +515,12 @@

    Base class -
    -__set_up_logger(fname)#
    -

    Set up the logger if desired

    -

    -
    max_iteration_stop_criterion()[source]#

    default stop criterion for iterative algorithm: max_iteration reached

    -
    -
    -__iter__()[source]#
    -

    Algorithm is an iterable

    -
    -
    next()[source]#
    @@ -556,26 +528,6 @@

    Base class -
    -__next__()[source]#
    -

    Algorithm is an iterable

    -

    calling this method triggers update and update_objective

    -

    - -
    -
    -_update_previous_solution()[source]#
    -

    Update the previous solution with the current one

    -

    The concrete algorithm calls update_previous_solution. Normally this would -entail the swapping of pointers:

    -
    tmp = self.x_old
    -self.x_old = self.x
    -self.x = tmp
    -
    -
    -
    -
    get_output()[source]#
    @@ -655,12 +607,6 @@

    Base class -
    -__weakref__#
    -

    list of weak references to the object (if defined)

    -

    -
    verbose_output(verbose=False)[source]#
    @@ -2733,7 +2679,7 @@

    Operator base classes

    Does a dot linearity test on the operator Evaluates if the following equivalence holds .. math:

    -
    Ax\times y = y \times A^Tx
    +
    Ax\times y = y \times A^Tx
     
    @@ -2749,7 +2695,7 @@

    Operator base classes:type : int, default = 1 :param tolerance: Check if the following expression is below the tolerance .. math:

    -

    -

    Lipschitz of the gradient of the function; it is a positive real number, such that |f'(x) - f'(y)| <= L ||x-y||, assuming f: IG –> R

    -
    -
    -__init__(L=None)[source]#
    -

    Initialize self. See help(type(self)) for accurate signature.

    -
    - -
    -
    -__call__(x)[source]#
    -

    Returns the value of the function F at x: \(F(x)\)

    -
    - +
    +

    Note

    +

    The Lipschitz of the gradient of the function is a positive real number, such that \(\|f'(x) - f'(y)\| \leq L \|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    +
    gradient(x, out=None)[source]#
    -

    Returns the value of the gradient of function F at x, if it is differentiable

    +

    Returns the value of the gradient of function \(F\) at \(x\), if it is differentiable

    \[F'(x)\]
    @@ -3294,8 +3228,9 @@

    Base classes
    proximal(x, tau, out=None)[source]#
    -

    Returns the proximal operator of function \(\tau F\) at x -.. math:: mathrm{prox}_{tau F}(x) = underset{z}{mathrm{argmin}} frac{1}{2}|z - x|^{2} + tau F(z)

    +

    Returns the proximal operator of function \(\tau F\) at x

    +
    +\[\text{prox}_{\tau F}(x) = \underset{z}{\text{argmin}} \frac{1}{2}\|z - x\|^{2} + \tau F(z)\]

    @@ -3303,7 +3238,7 @@

    Base classesconvex_conjugate(x)[source]#

    Returns the convex conjugate of function \(F\) at \(x^{*}\),

    -\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} <x^{*}, x> - F(x)\]
    +\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} \langle x^{*}, x \rangle - F(x)\]

  • @@ -3311,40 +3246,10 @@

    Base classesproximal_conjugate(x, tau, out=None)[source]#

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    -\[\mathrm{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\mathrm{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    -\[\mathrm{prox}_{\tau F^{*}}(x) = x - \tau\mathrm{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    - - -
    -
    -__add__(other)[source]#
    -

    Returns the sum of the functions.

    -
    -
    Cases: a) the sum of two functions \((F_{1}+F_{2})(x) = F_{1}(x) + F_{2}(x)\)
      -
    1. the sum of a function with a scalar \((F_{1}+scalar)(x) = F_{1}(x) + scalar\)

    2. -
    -
    -
    -
    - -
    -
    -__radd__(other)[source]#
    -

    Making addition commutative.

    -
    - -
    -
    -__sub__(other)[source]#
    -

    Returns the subtraction of the functions.

    -
    - -
    -
    -__rmul__(scalar)[source]#
    -

    Returns a function multiplied by a scalar.

    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    @@ -3358,13 +3263,7 @@

    Base classes property L#

    Lipschitz of the gradient of function f.

    -

    L is positive real number, such that |f'(x) - f'(y)| <= L ||x-y||, assuming f: IG –> R

    -

    - -
    -
    -__weakref__#
    -

    list of weak references to the object (if defined)

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    @@ -3398,12 +3297,6 @@

    Base classes
    >>> F = SumFunction(*[L2NormSquared(b=i) for i in range(50)])
     

    -
    -
    -__init__(*functions)[source]#
    -

    Initialize self. See help(type(self)) for accurate signature.

    -
    -
    property L#
    @@ -3422,14 +3315,6 @@

    Base classes\(L_{i}\) is the Lipschitz constant of the smooth function \(F_{i}\).

    -
    -
    -__call__(x)[source]#
    -

    Returns the value of the sum of functions at \(x\).

    -
    -\[(F_{1} + F_{2} + ... + F_{n})(x) = F_{1}(x) + F_{2}(x) + ... + F_{n}(x)\]
    -
    -
    gradient(x, out=None)[source]#
    @@ -3439,13 +3324,37 @@

    Base classes -
    -__add__(other)[source]#
    -

    Addition for the SumFunction.

    -
      -
    • SumFunction + SumFunction is a SumFunction.

    • -
    • SumFunction + Function is a SumFunction.

    • -
    +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    +

    + +
    +
    +convex_conjugate(x)#
    +

    Returns the convex conjugate of function \(F\) at \(x^{*}\),

    +
    +\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} \langle x^{*}, x \rangle - F(x)\]
    +
    + +
    +
    +proximal(x, tau, out=None)#
    +

    Returns the proximal operator of function \(\tau F\) at x

    +
    +\[\text{prox}_{\tau F}(x) = \underset{z}{\text{argmin}} \frac{1}{2}\|z - x\|^{2} + \tau F(z)\]
    +
    + +
    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    @@ -3460,27 +3369,13 @@

    Base classes\(G(x) = \alpha F(x)\) ( __call__ method )

  • \(G'(x) = \alpha F'(x)\) ( gradient method )

  • \(G^{*}(x^{*}) = \alpha F^{*}(\frac{x^{*}}{\alpha})\) ( convex_conjugate method )

  • -
  • \(\mathrm{prox}_{\tau G}(x) = \mathrm{prox}_{(\tau\alpha) F}(x)\) ( proximal method )

  • +
  • \(\text{prox}_{\tau G}(x) = \text{prox}_{(\tau\alpha) F}(x)\) ( proximal method )

  • -
    -
    -__init__(function, scalar)[source]#
    -

    Initialize self. See help(type(self)) for accurate signature.

    -
    -
    property L#

    Lipschitz of the gradient of function f.

    -

    L is positive real number, such that |f'(x) - f'(y)| <= L ||x-y||, assuming f: IG –> R

    -
    - -
    -
    -__call__(x, out=None)[source]#
    -

    Returns the value of the scaled function.

    -
    -\[G(x) = \alpha F(x)\]
    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    @@ -3504,7 +3399,7 @@

    Base classesproximal(x, tau, out=None)[source]#

    Returns the proximal operator of the scaled function.

    -\[\mathrm{prox}_{\tau G}(x) = \mathrm{prox}_{(\tau\alpha) F}(x)\]
    +\[\text{prox}_{\tau G}(x) = \text{prox}_{(\tau\alpha) F}(x)\]

    @@ -3513,6 +3408,13 @@

    Base classes +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    +

    +
    @@ -3528,12 +3430,6 @@

    Base classes -
    -__init__(function, constant)[source]#
    -

    Initialize self. See help(type(self)) for accurate signature.

    -

    -
    convex_conjugate(x)[source]#
    @@ -3547,7 +3443,7 @@

    Base classesproximal(x, tau, out=None)[source]#

    Returns the proximal operator of \(F+scalar\)

    -\[\mathrm{prox}_{ au (F+scalar)}(x) = \mathrm{prox}_{ au F}\]
    +\[ext{prox}_{ au (F+scalar)}(x) = ext{prox}_{ au F}\]

    @@ -3559,6 +3455,41 @@

    Base classes\(L_{i}\) is the Lipschitz constant of the smooth function \(F_{i}\).

    +
    +
    +property Lmax#
    +

    Returns the maximum Lipschitz constant for the SumFunction

    +
    +\[L = \max_{i}\{L_{i}\}\]
    +

    where \(L_{i}\) is the Lipschitz constant of the smooth function \(F_{i}\).

    +
    + +
    +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    +
    + +
    +
    +gradient(x, out=None)#
    +

    Returns the value of the sum of the gradient of functions at \(x\), if all of them are differentiable.

    +
    +\[(F'_{1} + F'_{2} + ... + F'_{n})(x) = F'_{1}(x) + F'_{2}(x) + ... + F'_{n}(x)\]
    +
    + +
    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    +
    +
    @@ -3572,22 +3503,8 @@

    Base classes\(G(x) = F(x - b)\) ( __call__ method )

  • \(G'(x) = F'(x - b)\) ( gradient method )

  • \(G^{*}(x^{*}) = F^{*}(x^{*}) + <x^{*}, b >\) ( convex_conjugate method )

  • -
  • \(\mathrm{prox}_{\tau G}(x) = \mathrm{prox}_{\tau F}(x - b) + b\) ( proximal method )

  • +
  • \(\text{prox}_{\tau G}(x) = \text{prox}_{\tau F}(x - b) + b\) ( proximal method )

  • -
    -
    -__init__(function, center)[source]#
    -

    Initialize self. See help(type(self)) for accurate signature.

    -
    - -
    -
    -__call__(x)[source]#
    -

    Returns the value of the translated function.

    -
    -\[G(x) = F(x - b)\]
    -
    -
    gradient(x, out=None)[source]#
    @@ -3601,7 +3518,7 @@

    Base classesproximal(x, tau, out=None)[source]#

    Returns the proximal operator of the translated function.

    -\[\mathrm{prox}_{\tau G}(x) = \mathrm{prox}_{\tau F}(x-b) + b\]
    +\[\text{prox}_{\tau G}(x) = \text{prox}_{\tau F}(x-b) + b\]

    @@ -3612,6 +3529,31 @@

    Base classes +
    +property L#
    +

    Lipschitz of the gradient of function f.

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    +

    + +
    +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    +
    + +
    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    +
    +
    @@ -3621,18 +3563,6 @@

    Simple functions class cil.optimisation.functions.ConstantFunction(constant=0)[source]#

    ConstantFunction: \(F(x) = constant, constant\in\mathbb{R}\)

    -
    -
    -__init__(constant=0)[source]#
    -

    Initialize self. See help(type(self)) for accurate signature.

    -
    - -
    -
    -__call__(x)[source]#
    -

    Returns the value of the function, \(F(x) = constant\)

    -
    -
    gradient(x, out=None)[source]#
    @@ -3663,20 +3593,32 @@

    Simple functionsproximal(x, tau, out=None)[source]#

    Returns the proximal operator of the constant function, which is the same element, i.e.,

    -\[\mathrm{prox}_{ au F}(x) = x\]
    +\[ext{prox}_{ au F}(x) = x\]

    property L#

    Lipschitz of the gradient of function f.

    -

    L is positive real number, such that |f'(x) - f'(y)| <= L ||x-y||, assuming f: IG –> R

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    +
    + +
    +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    -
    -__rmul__(other)[source]#
    -

    defines the right multiplication with a number

    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    @@ -3686,9 +3628,61 @@

    Simple functionsclass cil.optimisation.functions.ZeroFunction[source]#

    ZeroFunction represents the zero function, \(F(x) = 0\)

    -
    -__init__()[source]#
    -

    Initialize self. See help(type(self)) for accurate signature.

    +
    +property L#
    +

    Lipschitz of the gradient of function f.

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    +
    + +
    +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    +
    + +
    +
    +convex_conjugate(x)#
    +

    The convex conjugate of constant function \(F(x) = c\in\mathbb{R}\) is

    +
    +\[\begin{split}F(x^{*}) += +\begin{cases} + -c, & if x^{*} = 0\\ + \infty, & \mbox{otherwise} +\end{cases}\end{split}\]
    +

    However, \(x^{*} = 0\) only in the limit of iterations, so in fact this can be infinity. +We do not want to have inf values in the convex conjugate, so we have to penalise this value accordingly. +The following penalisation is useful in the PDHG algorithm, when we compute primal & dual objectives +for convergence purposes.

    +
    +\[F^{*}(x^{*}) = \sum \max\{x^{*}, 0\}\]
    +
    + +
    +
    +gradient(x, out=None)#
    +

    Returns the value of the gradient of the function, \(F'(x)=0\)

    +
    + +
    +
    +proximal(x, tau, out=None)#
    +

    Returns the proximal operator of the constant function, which is the same element, i.e.,

    +
    +\[ext{prox}_{ au F}(x) = x\]
    +
    + +
    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    @@ -3702,24 +3696,53 @@

    Simple functions -
    -__init__(alpha, beta)[source]#
    -

    Initialize self. See help(type(self)) for accurate signature.

    +
    +gradient(x, out=None)[source]#
    +

    Gradient of the Rosenbrock function

    +
    +\[\]
    +

    nabla f(x,y) = left[ 2*((x-alpha) - 2beta x(y-x^2)) ; 2beta (y - x^2) right]

    -
    -__call__(x)[source]#
    -

    Returns the value of the function F at x: \(F(x)\)

    +
    +property L#
    +

    Lipschitz of the gradient of function f.

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    -
    -gradient(x, out=None)[source]#
    -

    Gradient of the Rosenbrock function

    +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    +
    + +
    +
    +convex_conjugate(x)#
    +

    Returns the convex conjugate of function \(F\) at \(x^{*}\),

    -\[\]
    -

    nabla f(x,y) = left[ 2*((x-alpha) - 2beta x(y-x^2)) ; 2beta (y - x^2) right]

    +\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} \langle x^{*}, x \rangle - F(x)\]

    + + +
    +
    +proximal(x, tau, out=None)#
    +

    Returns the proximal operator of function \(\tau F\) at x

    +
    +\[\text{prox}_{\tau F}(x) = \underset{z}{\text{argmin}} \frac{1}{2}\|z - x\|^{2} + \tau F(z)\]
    +
    + +
    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    @@ -3730,7 +3753,7 @@

    Composition of operator and a function \[F ( x ) = G ( Ax )\]

    -

    where \(A\) is an operator. For instance the least squares function l2norm_ Norm2Sq can +

    where \(A\) is an operator. For instance the least squares function l2norm_ Norm2Sq can be expressed as

    \[F(x) = || Ax - b ||^2_2\]
    @@ -3750,31 +3773,11 @@

    Composition of operator and a function -
    -__init__(function, operator)[source]#
    -

    creator

    -
    -
    Parameters
    -
      -
    • A (Operator) – operator

    • -
    • f (Function) – function

    • -
    -
    -
    -
    -
    property L#

    Lipschitz of the gradient of function f.

    -

    L is positive real number, such that |f'(x) - f'(y)| <= L ||x-y||, assuming f: IG –> R

    -
    - -
    -
    -__call__(x)[source]#
    -

    Returns \(F(Ax)\)

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    @@ -3784,6 +3787,40 @@

    Composition of operator and a function +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    +

    + +
    +
    +convex_conjugate(x)#
    +

    Returns the convex conjugate of function \(F\) at \(x^{*}\),

    +
    +\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} \langle x^{*}, x \rangle - F(x)\]
    +
    + +
    +
    +proximal(x, tau, out=None)#
    +

    Returns the proximal operator of function \(\tau F\) at x

    +
    +\[\text{prox}_{\tau F}(x) = \underset{z}{\text{argmin}} \frac{1}{2}\|z - x\|^{2} + \tau F(z)\]
    +
    + +
    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    +
    +

    @@ -3835,17 +3872,6 @@

    Indicator boxib.set_num_threads(num_threads)

    -
    -
    -static __new__(cls, lower=None, upper=None, accelerated=True)[source]#
    -

    Create and return a new object. See help(type) for accurate signature.

    -
    - -
    -
    -__init__(lower=None, upper=None, accelerated=True)[source]#
    -
    -
    set_suppress_evaluation(value)[source]#
    @@ -3857,18 +3883,6 @@

    Indicator box -
    -__call__(x)[source]#
    -

    Evaluates IndicatorBox at x

    -
    -
    Parameters
    -

    x (DataContainer) –

    -
    -
    -

    Evaluates the IndicatorBox at x. If suppress_evaluation is True, returns 0.

    -

    -
    proximal(x, tau, out=None)[source]#
    @@ -3910,6 +3924,39 @@

    Indicator boxaccelerated=False.

    +
    +
    +property L#
    +

    Lipschitz of the gradient of function f.

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    +
    + +
    +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    +
    + +
    +
    +convex_conjugate(x)#
    +

    Returns the convex conjugate of function \(F\) at \(x^{*}\),

    +
    +\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} \langle x^{*}, x \rangle - F(x)\]
    +
    + +
    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    +
    +
    @@ -3965,15 +4012,52 @@

    KullbackLeibler -
    -static __new__(cls, b, eta=None, mask=None, backend='numba')[source]#
    -

    Create and return a new object. See help(type) for accurate signature.

    +
    +property L#
    +

    Lipschitz of the gradient of function f.

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    -
    -__init__(b, eta=None, mask=None, backend='numba')[source]#
    -

    Initialize self. See help(type(self)) for accurate signature.

    +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    +
    + +
    +
    +convex_conjugate(x)#
    +

    Returns the convex conjugate of function \(F\) at \(x^{*}\),

    +
    +\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} \langle x^{*}, x \rangle - F(x)\]
    +
    + +
    +
    +gradient(x, out=None)#
    +

    Returns the value of the gradient of function \(F\) at \(x\), if it is differentiable

    +
    +\[F'(x)\]
    +
    + +
    +
    +proximal(x, tau, out=None)#
    +

    Returns the proximal operator of function \(\tau F\) at x

    +
    +\[\text{prox}_{\tau F}(x) = \underset{z}{\text{argmin}} \frac{1}{2}\|z - x\|^{2} + \tau F(z)\]
    +
    + +
    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    @@ -3996,37 +4080,6 @@

    L1 Norm -
    -__init__(**kwargs)[source]#
    -

    creator

    -

    Cases considered (with/without data): -a) \(f(x) = ||x||_{1}\) -b) \(f(x) = ||x - b||_{1}\)

    -
    -
    Parameters
    -

    b (DataContainer, optional) – translation of the function

    -
    -
    -
    - -
    -
    -__call__(x)[source]#
    -

    Returns the value of the L1Norm function at x.

    -
    -
    Consider the following cases:
      -
    1. -\[F(x) = ||x||_{1}\]
      -
    2. -
    3. -\[F(x) = ||x - b||_{1}\]
      -
    4. -
    -
    -
    -
    -
    convex_conjugate(x)[source]#
    @@ -4072,6 +4125,39 @@

    L1 Norm +
    +property L#
    +

    Lipschitz of the gradient of function f.

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    +

    + +
    +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    +
    + +
    +
    +gradient(x, out=None)#
    +

    Returns the value of the gradient of function \(F\) at \(x\), if it is differentiable

    +
    +\[F'(x)\]
    +
    + +
    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    +
    +

    @@ -4088,63 +4174,21 @@

    Squared L2 norm squared

    \(F(x) = \|x - b\|^{2}_{2}\)

    +
    +
    Parameters
    +

    b (DataContainer, optional) – Translation of the function

    +
    +

    Note

    -

    For case b) case we can use F = L2NormSquared().centered_at(b), -see TranslateFunction.

    +

    For case b) we can use F = L2NormSquared().centered_at(b), see TranslateFunction.

    -
    -
    Example
    -
    >>> F = L2NormSquared()
    +

    Example

    +
    >>> F = L2NormSquared()
     >>> F = L2NormSquared(b=b)
     >>> F = L2NormSquared().centered_at(b)
     
    -
    -
    -
    -
    -__init__(**kwargs)[source]#
    -

    creator

    -
    -
    Cases considered (with/without data):
      -
    1. -\[f(x) = \|x\|^{2}_{2}\]
      -
    2. -
    3. -\[f(x) = \|\|x - b\|\|^{2}_{2}\]
      -
    4. -
    -
    -
    -
    -
    Parameters
    -

    b (DataContainer, optional) – translation of the function

    -
    -
    -
    - -
    -
    -__call__(x)[source]#
    -

    Returns the value of the L2NormSquared function at x.

    -

    Following cases are considered:

    -
    -
      -
    1. \(F(x) = \|x\|^{2}_{2}\)

    2. -
    3. \(F(x) = \|x - b\|^{2}_{2}\)

    4. -
    -
    -
    -
    Param
    -

    \(x\)

    -
    -
    Returns
    -

    \(\underset{i}{\sum}x_{i}^{2}\)

    -
    -
    -
    -
    gradient(x, out=None)[source]#
    @@ -4169,7 +4213,7 @@

    Squared L2 norm squared
  • -\[F^{*}(x^{*}) = \frac{1}{4}\|x^{*}\|^{2}_{2} + <x^{*}, b>\]
    +\[F^{*}(x^{*}) = \frac{1}{4}\|x^{*}\|^{2}_{2} + \langle x^{*}, b\rangle\]
  • @@ -4183,54 +4227,98 @@

    Squared L2 norm squared
    1. -\[\mathrm{prox}_{\tau F}(x) = \frac{x}{1+2\tau}\]
      +\[\text{prox}_{\tau F}(x) = \frac{x}{1+2\tau}\]
  • -\[\mathrm{prox}_{\tau F}(x) = \frac{x-b}{1+2\tau} + b\]
    +\[\text{prox}_{\tau F}(x) = \frac{x-b}{1+2\tau} + b\]
  • +
    +
    +property L#
    +

    Lipschitz of the gradient of function f.

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    -
    -
    -class cil.optimisation.functions.WeightedL2NormSquared(**kwargs)[source]#
    -

    WeightedL2NormSquared function: \(F(x) = \| x\|_{w}^{2}_{2} = \underset{i}{\sum}w_{i}*x_{i}^{2} = <x, w*x> = x^{T}*w*x\)

    -
    -__init__(**kwargs)[source]#
    -

    Initialize self. See help(type(self)) for accurate signature.

    +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    -
    -__call__(x)[source]#
    -

    Returns the value of the function F at x: \(F(x)\)

    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    +
    +
    +
    +
    +class cil.optimisation.functions.WeightedL2NormSquared(**kwargs)[source]#
    +

    WeightedL2NormSquared function: \(F(x) = \|x\|_{W,2}^2 = \Sigma_iw_ix_i^2 = \langle x, Wx\rangle = x^TWx\) +where \(W=\text{diag}(weight)\) if weight is a DataContainer or \(W=\text{weight} I\) if weight is a scalar.

    +
    +
    Parameters
    +
      +
    • **kwargs

    • +
    • weight (a scalar or a DataContainer with the same shape as the intended domain of this WeightedL2NormSquared function) –

    • +
    • b (a DataContainer with the same shape as the intended domain of this WeightedL2NormSquared function) – A shift so that the function becomes \(F(x) = \| x-b\|_{W,2}^2 = \Sigma_iw_i(x_i-b_i)^2 = \langle x-b, W(x-b) \rangle = (x-b)^TW(x-b)\)

    • +
    +
    +
    gradient(x, out=None)[source]#
    -

    Returns the value of the gradient of function F at x, if it is differentiable

    -
    -\[F'(x)\]
    +

    Returns the value of \(F'(x) = 2Wx\) or, if b is defined, \(F'(x) = 2W(x-b)\) +where \(W=\text{diag}(weight)\) if weight is a DataContainer or \(\text{weight}I\) if weight is a scalar.

    convex_conjugate(x)[source]#
    -

    Returns the convex conjugate of function \(F\) at \(x^{*}\),

    -
    -\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} <x^{*}, x> - F(x)\]
    +

    Returns the value of the convex conjugate of the WeightedL2NormSquared function at x.

    +
    + +
    +
    +property L#
    +

    Lipschitz of the gradient of function f.

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    +
    + +
    +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    proximal(x, tau, out=None)[source]#
    -

    Returns the proximal operator of function \(\tau F\) at x -.. math:: mathrm{prox}_{tau F}(x) = underset{z}{mathrm{argmin}} frac{1}{2}|z - x|^{2} + tau F(z)

    +

    Returns the value of the proximal operator of the WeightedL2NormSquared function at x.

    +
    + +
    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    @@ -4247,50 +4335,72 @@

    Least Squares \[F(x) = c\|Ax-b\|_{2,W}^{2}\]

    -
    -

    A : LinearOperator

    -

    b : Data, DataContainer

    -

    c : Scaling Constant, float, default 1.0

    -

    weight: DataContainer with all positive elements of size of the range of operator A, default None

    -
    -
    -

    L : Lipshitz Constant of the gradient of \(F\) which is \(2 c ||A||_2^2 = 2 c s1(A)^2\), or

    -

    L : Lipshitz Constant of the gradient of \(F\) which is \(2 c ||weight|| ||A||_2^2 = 2s1(A)^2\),

    -
    -

    where s1(A) is the largest singular value of A.

    -
    -
    -__init__(A, b, c=1.0, weight=None)[source]#
    -

    Initialize self. See help(type(self)) for accurate signature.

    -
    - -
    -
    -__call__(x)[source]#
    -

    Returns the value of \(F(x) = c\|Ax-b\|_2^2\) or c|Ax-b|_{2,weight}^2

    -
    - +

    where \(W=\text{diag}(weight)\).

    +
    +
    Parameters
    +
      +
    • A (LinearOperator) –

    • +
    • b (Data, DataContainer) –

    • +
    • c (Scaling Constant, float, default 1.0) –

    • +
    • weight (DataContainer with all positive elements of size of the range of operator A, default None) –

    • +
    +
    +
    +
    +

    Note

    +

    L is the Lipshitz Constant of the gradient of \(F\) which is \(2 c ||A||_2^2 = 2 c \sigma_1(A)^2\), or \(2 c ||W|| ||A||_2^2 = 2c||W|| \sigma_1(A)^2\), where \(\sigma_1(A)\) is the largest singular value of \(A\) and \(W=\text{diag}(weight)\).

    +
    gradient(x, out=None)[source]#
    -

    Returns the value of the gradient of \(F(x) = c*\|A*x-b\|_2^2\)

    +

    Returns the value of the gradient of \(F(x)\):

    \[F'(x) = 2cA^T(Ax-b)\]
    +

    or

    -\[F'(x) = 2cA^T(weight(Ax-b))\]
    +\[F'(x) = 2cA^T(W(Ax-b))\]
    +

    where \(W=\text{diag}(weight)\).

    property L#

    Lipschitz of the gradient of function f.

    -

    L is positive real number, such that |f'(x) - f'(y)| <= L ||x-y||, assuming f: IG –> R

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    +
    + +
    +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    +
    + +
    +
    +convex_conjugate(x)#
    +

    Returns the convex conjugate of function \(F\) at \(x^{*}\),

    +
    +\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} \langle x^{*}, x \rangle - F(x)\]
    +
    + +
    +
    +proximal(x, tau, out=None)#
    +

    Returns the proximal operator of function \(\tau F\) at x

    +
    +\[\text{prox}_{\tau F}(x) = \underset{z}{\text{argmin}} \frac{1}{2}\|z - x\|^{2} + \tau F(z)\]
    -
    -__rmul__(other)[source]#
    -

    defines the right multiplication with a number

    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    @@ -4303,23 +4413,6 @@

    Mixed L21 normclass cil.optimisation.functions.MixedL21Norm(**kwargs)[source]#

    MixedL21Norm function: \(F(x) = ||x||_{2,1} = \sum |x|_{2} = \sum \sqrt{ (x^{1})^{2} + (x^{2})^{2} + \dots}\)

    where x is a BlockDataContainer, i.e., \(x=(x^{1}, x^{2}, \dots)\)

    -
    -
    -__init__(**kwargs)[source]#
    -

    Initialize self. See help(type(self)) for accurate signature.

    -
    - -
    -
    -__call__(x)[source]#
    -

    Returns the value of the MixedL21Norm function at x.

    -
    -
    Parameters
    -

    xBlockDataContainer

    -
    -
    -
    -
    convex_conjugate(x)[source]#
    @@ -4346,6 +4439,39 @@

    Mixed L21 norm +
    +property L#
    +

    Lipschitz of the gradient of function f.

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    +

    + +
    +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    +
    + +
    +
    +gradient(x, out=None)#
    +

    Returns the value of the gradient of function \(F\) at \(x\), if it is differentiable

    +
    +\[F'(x)\]
    +
    + +
    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    +
    +

    @@ -4358,26 +4484,51 @@

    Smooth Mixed L21 normwhere x is a BlockDataContainer, i.e., \(x=(x^{1}, x^{2}, \dots)\)

    Conjugate, proximal and proximal conjugate methods no closed-form solution

    -
    -__init__(epsilon)[source]#
    -
    -
    Parameters
    -

    epsilon – smoothing parameter making MixedL21Norm differentiable

    -
    -
    +
    +gradient(x, out=None)[source]#
    +

    Returns the value of the gradient of the SmoothMixedL21Norm function at x.

    +

    frac{x}{|x|}

    -
    -__call__(x)[source]#
    -

    Returns the value of the SmoothMixedL21Norm function at x.

    +
    +property L#
    +

    Lipschitz of the gradient of function f.

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    -
    -gradient(x, out=None)[source]#
    -

    Returns the value of the gradient of the SmoothMixedL21Norm function at x.

    -

    frac{x}{|x|}

    +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    +
    + +
    +
    +convex_conjugate(x)#
    +

    Returns the convex conjugate of function \(F\) at \(x^{*}\),

    +
    +\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} \langle x^{*}, x \rangle - F(x)\]
    +
    + +
    +
    +proximal(x, tau, out=None)#
    +

    Returns the proximal operator of function \(\tau F\) at x

    +
    +\[\text{prox}_{\tau F}(x) = \underset{z}{\text{argmin}} \frac{1}{2}\|z - x\|^{2} + \tau F(z)\]
    +
    + +
    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    @@ -4399,23 +4550,6 @@

    Mixed L11 normSee also

    L1Norm, MixedL21Norm

    -
    -
    -__init__(**kwargs)[source]#
    -

    Initialize self. See help(type(self)) for accurate signature.

    -
    - -
    -
    -__call__(x)[source]#
    -

    Returns the value of the MixedL11Norm function at x.

    -
    -
    Parameters
    -

    xBlockDataContainer

    -
    -
    -
    -
    proximal(x, tau, out=None)[source]#
    @@ -4427,6 +4561,47 @@

    Mixed L11 norm +
    +property L#
    +

    Lipschitz of the gradient of function f.

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    +

    + +
    +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    +
    + +
    +
    +convex_conjugate(x)#
    +

    Returns the convex conjugate of function \(F\) at \(x^{*}\),

    +
    +\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} \langle x^{*}, x \rangle - F(x)\]
    +
    + +
    +
    +gradient(x, out=None)#
    +

    Returns the value of the gradient of function \(F\) at \(x\), if it is differentiable

    +
    +\[F'(x)\]
    +
    + +
    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    +
    +
    @@ -4450,7 +4625,7 @@

    Total variation \[\mathrm{prox}_{\tau \mathrm{TV}}(b) := \underset{u}{\mathrm{argmin}} \frac{1}{2\tau}\|u - b\|^{2} + \mathrm{TV}(u)\]

    The algorithm used for the proximal operator of TV is the Fast Gradient Projection algorithm (or FISTA) -applied to the _dual problem_ of the above problem, see [1], [2], [9].

    +applied to the _dual problem_ of the above problem, see [1], [2], [9].

    See also “Multicontrast MRI Reconstruction with Structure-Guided Total Variation”, Ehrhardt, Betcke, 2016.

    Parameters
    @@ -4528,18 +4703,6 @@

    Total variation>>> sol = TV.proximal(b, tau = 1.0)

    -
    -
    -__init__(max_iteration=10, tolerance=None, correlation='Space', backend='c', lower=None, upper=None, isotropic=True, split=False, info=False, strong_convexity_constant=0, warm_start=True)[source]#
    -

    Initialize self. See help(type(self)) for accurate signature.

    -
    - -
    -
    -__call__(x)[source]#
    -

    Returns the value of the TotalVariation function at x .

    -
    -
    proximal(x, tau, out=None)[source]#
    @@ -4552,12 +4715,37 @@

    Total variationx .

    +
    +
    +property L#
    +

    Lipschitz of the gradient of function f.

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    +
    +
    calculate_Lipschitz()[source]#

    Default value for the Lipschitz constant.

    +
    +
    +centered_at(center)#
    +

    Returns a translated function, namely if we have a function \(F(x)\) the center is at the origin. +TranslateFunction is \(F(x - b)\) and the center is at point b.

    +
    + +
    +
    +proximal_conjugate(x, tau, out=None)#
    +

    Returns the proximal operator of the convex conjugate of function \(\tau F\) at \(x^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x^{*}) = \underset{z^{*}}{\text{argmin}} \frac{1}{2}\|z^{*} - x^{*}\|^{2} + \tau F^{*}(z^{*})\]
    +

    Due to Moreau’s identity, we have an analytic formula to compute the proximal operator of the convex conjugate \(F^{*}\)

    +
    +\[\text{prox}_{\tau F^{*}}(x) = x - \tau\text{prox}_{\tau^{-1} F}(\tau^{-1}x)\]
    +
    +
    property gradient#
    @@ -4565,12 +4753,6 @@

    Total variation -
    -__rmul__(scalar)[source]#
    -

    Returns a function multiplied by a scalar.

    -

    -
    @@ -4589,7 +4771,7 @@

    Block FrameworkBlockFunction

  • BlockOperator

  • -

    The block framework allows writing more advanced `optimisation problems`_. Consider the typical +

    The block framework allows writing more advanced `optimisation problems`_. Consider the typical Tikhonov regularisation:

    \[\underset{u}{\mathrm{argmin}}\begin{Vmatrix}A u - b \end{Vmatrix}^2_2 + \alpha^2\|Lu\|^2_2\]
    @@ -4620,7 +4802,7 @@

    Block FrameworkBlockFunction and BlockOperator.

    BlockDataContainer#

    -

    BlockDataContainer holds `DataContainer`_ as column vector. It is possible to +

    BlockDataContainer holds `DataContainer`_ as column vector. It is possible to do basic algebra between BlockDataContainer s and with numbers, list or numpy arrays.

    \[ \begin{align}\begin{aligned}x = [x_{1}, x_{2} ]\in (X_{1}\times X_{2})\\y = [y_{1}, y_{2}, y_{3} ]\in(Y_{1}\times Y_{2} \times Y_{3})\end{aligned}\end{align} \]
    @@ -4956,7 +5138,7 @@

    Block Function property L#

    Lipschitz of the gradient of function f.

    -

    L is positive real number, such that |f'(x) - f'(y)| <= L ||x-y||, assuming f: IG –> R

    +

    L is positive real number, such that \(\|f'(x) - f'(y)\| \leq L\|x-y\|\), assuming \(f: IG \rightarrow \mathbb{R}\)

    diff --git a/nightly/plugins.html b/nightly/plugins.html index 571227e1ad..4d513f96eb 100644 --- a/nightly/plugins.html +++ b/nightly/plugins.html @@ -388,7 +388,7 @@

    Other regularisation functions
    __call__(x)[source]#
    -

    Returns the value of the function F at x: \(F(x)\)

    +

    Call self as a function.

    @@ -396,7 +396,7 @@

    Other regularisation functionsconvex_conjugate(x)[source]#

    Returns the convex conjugate of function \(F\) at \(x^{*}\),

    -\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} <x^{*}, x> - F(x)\]
    +\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} \langle x^{*}, x \rangle - F(x)\]

    @@ -435,7 +435,7 @@

    Other regularisation functions
    __call__(x)[source]#
    -

    Returns the value of the function F at x: \(F(x)\)

    +

    Call self as a function.

    @@ -443,7 +443,7 @@

    Other regularisation functionsconvex_conjugate(x)[source]#

    Returns the convex conjugate of function \(F\) at \(x^{*}\),

    -\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} <x^{*}, x> - F(x)\]
    +\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} \langle x^{*}, x \rangle - F(x)\]

    @@ -476,7 +476,7 @@

    Other regularisation functions
    __call__(x)[source]#
    -

    Returns the value of the function F at x: \(F(x)\)

    +

    Call self as a function.

    @@ -484,7 +484,7 @@

    Other regularisation functionsconvex_conjugate(x)[source]#

    Returns the convex conjugate of function \(F\) at \(x^{*}\),

    -\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} <x^{*}, x> - F(x)\]
    +\[F^{*}(x^{*}) = \underset{x^{*}}{\sup} \langle x^{*}, x \rangle - F(x)\]

    diff --git a/nightly/searchindex.js b/nightly/searchindex.js index 5295d1d970..c95367e850 100644 --- a/nightly/searchindex.js +++ b/nightly/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["developer_guide","framework","index","introduction","io","optimisation","plugins","processors","recon","utilities"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,"sphinxcontrib.bibtex":9,sphinx:56},filenames:["developer_guide.rst","framework.rst","index.rst","introduction.rst","io.rst","optimisation.rst","plugins.rst","processors.rst","recon.rst","utilities.rst"],objects:{"cil.framework":{AcquisitionData:[1,0,1,""],AcquisitionGeometry:[1,0,1,""],BlockDataContainer:[5,0,1,""],BlockGeometry:[1,0,1,""],DataContainer:[1,0,1,""],DataOrder:[1,0,1,""],DataProcessor:[1,0,1,""],ImageData:[1,0,1,""],ImageGeometry:[1,0,1,""],Processor:[1,0,1,""],VectorData:[1,0,1,""]},"cil.framework.AcquisitionData":{as_array:[1,1,1,""],clone:[1,1,1,""],copy:[1,1,1,""],dot:[1,1,1,""],dtype:[1,1,1,""],exp:[1,1,1,""],fill:[1,1,1,""],get_data_axes_order:[1,1,1,""],get_dimension_axis:[1,1,1,""],get_slice:[1,1,1,""],log:[1,1,1,""],max:[1,1,1,""],mean:[1,1,1,""],min:[1,1,1,""],ndim:[1,1,1,""],norm:[1,1,1,""],number_of_dimensions:[1,1,1,""],partition:[1,1,1,""],reorder:[1,1,1,""],sapyb:[1,1,1,""],shape:[1,1,1,""],size:[1,1,1,""],squared_norm:[1,1,1,""],sum:[1,1,1,""]},"cil.framework.AcquisitionGeometry":{allocate:[1,1,1,""],create_Cone2D:[1,1,1,""],create_Cone3D:[1,1,1,""],create_Parallel2D:[1,1,1,""],create_Parallel3D:[1,1,1,""],get_ImageGeometry:[1,1,1,""],get_slice:[1,1,1,""],set_angles:[1,1,1,""],set_channels:[1,1,1,""],set_labels:[1,1,1,""],set_panel:[1,1,1,""]},"cil.framework.BlockDataContainer":{__iadd__:[5,1,1,""],__idiv__:[5,1,1,""],__imul__:[5,1,1,""],__isub__:[5,1,1,""],__iter__:[5,1,1,""],__itruediv__:[5,1,1,""],__neg__:[5,1,1,""],__radd__:[5,1,1,""],__rdiv__:[5,1,1,""],__rmul__:[5,1,1,""],__rpow__:[5,1,1,""],__rsub__:[5,1,1,""],__rtruediv__:[5,1,1,""],__weakref__:[5,2,1,""],add:[5,1,1,""],axpby:[5,1,1,""],binary_operations:[5,1,1,""],copy:[5,1,1,""],divide:[5,1,1,""],is_compatible:[5,1,1,""],maximum:[5,1,1,""],minimum:[5,1,1,""],multiply:[5,1,1,""],next:[5,1,1,""],power:[5,1,1,""],sapyb:[5,1,1,""],subtract:[5,1,1,""],unary_operations:[5,1,1,""]},"cil.framework.BlockGeometry":{allocate:[1,1,1,""],get_item:[1,1,1,""]},"cil.framework.DataContainer":{as_array:[1,1,1,""],clone:[1,1,1,""],copy:[1,1,1,""],dot:[1,1,1,""],dtype:[1,1,1,""],exp:[1,1,1,""],fill:[1,1,1,""],get_data_axes_order:[1,1,1,""],get_dimension_axis:[1,1,1,""],get_slice:[1,1,1,""],log:[1,1,1,""],max:[1,1,1,""],mean:[1,1,1,""],min:[1,1,1,""],ndim:[1,1,1,""],norm:[1,1,1,""],number_of_dimensions:[1,1,1,""],reorder:[1,1,1,""],sapyb:[1,1,1,""],shape:[1,1,1,""],size:[1,1,1,""],squared_norm:[1,1,1,""],sum:[1,1,1,""]},"cil.framework.DataProcessor":{check_input:[1,1,1,""],get_input:[1,1,1,""],get_output:[1,1,1,""],set_input:[1,1,1,""]},"cil.framework.ImageData":{apply_circular_mask:[1,1,1,""],as_array:[1,1,1,""],clone:[1,1,1,""],copy:[1,1,1,""],dot:[1,1,1,""],dtype:[1,1,1,""],exp:[1,1,1,""],fill:[1,1,1,""],get_data_axes_order:[1,1,1,""],get_dimension_axis:[1,1,1,""],get_slice:[1,1,1,""],log:[1,1,1,""],max:[1,1,1,""],mean:[1,1,1,""],min:[1,1,1,""],ndim:[1,1,1,""],norm:[1,1,1,""],number_of_dimensions:[1,1,1,""],reorder:[1,1,1,""],sapyb:[1,1,1,""],shape:[1,1,1,""],size:[1,1,1,""],squared_norm:[1,1,1,""],sum:[1,1,1,""]},"cil.framework.ImageGeometry":{allocate:[1,1,1,""],clone:[1,1,1,""],copy:[1,1,1,""],get_slice:[1,1,1,""]},"cil.framework.Processor":{check_input:[1,1,1,""],get_input:[1,1,1,""],get_output:[1,1,1,""],set_input:[1,1,1,""]},"cil.framework.VectorData":{as_array:[1,1,1,""],clone:[1,1,1,""],copy:[1,1,1,""],dot:[1,1,1,""],dtype:[1,1,1,""],exp:[1,1,1,""],fill:[1,1,1,""],get_data_axes_order:[1,1,1,""],get_dimension_axis:[1,1,1,""],get_slice:[1,1,1,""],log:[1,1,1,""],max:[1,1,1,""],mean:[1,1,1,""],min:[1,1,1,""],ndim:[1,1,1,""],norm:[1,1,1,""],number_of_dimensions:[1,1,1,""],reorder:[1,1,1,""],sapyb:[1,1,1,""],shape:[1,1,1,""],size:[1,1,1,""],squared_norm:[1,1,1,""],sum:[1,1,1,""]},"cil.io":{NEXUSDataReader:[4,0,1,""],NEXUSDataWriter:[4,0,1,""],NikonDataReader:[4,0,1,""],RAWFileWriter:[4,0,1,""],TIFFStackReader:[4,0,1,""],TIFFWriter:[4,0,1,""],ZEISSDataReader:[4,0,1,""]},"cil.io.NEXUSDataReader":{get_data_offset:[4,1,1,""],get_data_scale:[4,1,1,""],get_geometry:[4,1,1,""],load_data:[4,1,1,""],read:[4,1,1,""],read_as_original:[4,1,1,""],set_up:[4,1,1,""]},"cil.io.NEXUSDataWriter":{set_up:[4,1,1,""],write:[4,1,1,""]},"cil.io.NikonDataReader":{get_geometry:[4,1,1,""],get_roi:[4,1,1,""],load_projections:[4,1,1,""],read:[4,1,1,""]},"cil.io.RAWFileWriter":{write:[4,1,1,""]},"cil.io.TIFFStackReader":{read:[4,1,1,""],read_as_AcquisitionData:[4,1,1,""],read_as_ImageData:[4,1,1,""],read_rescaled:[4,1,1,""],read_scale_offset:[4,1,1,""]},"cil.io.TIFFWriter":{write:[4,1,1,""]},"cil.io.ZEISSDataReader":{get_geometry:[4,1,1,""],get_metadata:[4,1,1,""],read:[4,1,1,""],set_up:[4,1,1,""],slice_metadata:[4,1,1,""]},"cil.io.utilities":{HDF5_utilities:[4,0,1,""]},"cil.io.utilities.HDF5_utilities":{get_dataset_metadata:[4,1,1,""],print_metadata:[4,1,1,""],read:[4,1,1,""],read_to:[4,1,1,""]},"cil.optimisation.algorithms":{Algorithm:[5,0,1,""],CGLS:[5,0,1,""],FISTA:[5,0,1,""],GD:[5,0,1,""],ISTA:[5,0,1,""],LADMM:[5,0,1,""],PDHG:[5,0,1,""],SIRT:[5,0,1,""],SPDHG:[5,0,1,""]},"cil.optimisation.algorithms.Algorithm":{__init__:[5,1,1,""],__iter__:[5,1,1,""],__next__:[5,1,1,""],__set_up_logger:[5,1,1,""],__weakref__:[5,2,1,""],_update_previous_solution:[5,1,1,""],get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.algorithms.CGLS":{flag:[5,1,1,""],get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.algorithms.FISTA":{__delattr__:[5,1,1,""],__dir__:[5,1,1,""],__eq__:[5,1,1,""],__format__:[5,1,1,""],__ge__:[5,1,1,""],__getattribute__:[5,1,1,""],__gt__:[5,1,1,""],__hash__:[5,1,1,""],__init__:[5,1,1,""],__init_subclass__:[5,1,1,""],__iter__:[5,1,1,""],__le__:[5,1,1,""],__lt__:[5,1,1,""],__ne__:[5,1,1,""],__new__:[5,1,1,""],__next__:[5,1,1,""],__reduce__:[5,1,1,""],__reduce_ex__:[5,1,1,""],__repr__:[5,1,1,""],__setattr__:[5,1,1,""],__sizeof__:[5,1,1,""],__str__:[5,1,1,""],__subclasshook__:[5,1,1,""],__weakref__:[5,2,1,""],get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_step_size:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.algorithms.GD":{armijo_rule:[5,1,1,""],get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.algorithms.ISTA":{__delattr__:[5,1,1,""],__dir__:[5,1,1,""],__eq__:[5,1,1,""],__format__:[5,1,1,""],__ge__:[5,1,1,""],__getattribute__:[5,1,1,""],__gt__:[5,1,1,""],__hash__:[5,1,1,""],__init__:[5,1,1,""],__init_subclass__:[5,1,1,""],__iter__:[5,1,1,""],__le__:[5,1,1,""],__lt__:[5,1,1,""],__ne__:[5,1,1,""],__new__:[5,1,1,""],__next__:[5,1,1,""],__reduce__:[5,1,1,""],__reduce_ex__:[5,1,1,""],__repr__:[5,1,1,""],__setattr__:[5,1,1,""],__sizeof__:[5,1,1,""],__str__:[5,1,1,""],__subclasshook__:[5,1,1,""],__weakref__:[5,2,1,""],get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_step_size:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.algorithms.LADMM":{get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.algorithms.PDHG":{check_convergence:[5,1,1,""],get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_gamma_fconj:[5,1,1,""],set_gamma_g:[5,1,1,""],set_step_sizes:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],update_step_sizes:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.algorithms.SIRT":{get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_relaxation_parameter:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.algorithms.SPDHG":{get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.functions":{BlockFunction:[5,0,1,""],ConstantFunction:[5,0,1,""],Function:[5,0,1,""],IndicatorBox:[5,0,1,""],KullbackLeibler:[5,0,1,""],L1Norm:[5,0,1,""],L2NormSquared:[5,0,1,""],LeastSquares:[5,0,1,""],MixedL11Norm:[5,0,1,""],MixedL21Norm:[5,0,1,""],OperatorCompositionFunction:[5,0,1,""],Rosenbrock:[5,0,1,""],ScaledFunction:[5,0,1,""],SmoothMixedL21Norm:[5,0,1,""],SumFunction:[5,0,1,""],SumScalarFunction:[5,0,1,""],TotalVariation:[5,0,1,""],TranslateFunction:[5,0,1,""],WeightedL2NormSquared:[5,0,1,""],ZeroFunction:[5,0,1,""]},"cil.optimisation.functions.BlockFunction":{L:[5,1,1,""],__call__:[5,1,1,""],__init__:[5,1,1,""],__rmul__:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.ConstantFunction":{L:[5,1,1,""],__call__:[5,1,1,""],__init__:[5,1,1,""],__rmul__:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""]},"cil.optimisation.functions.Function":{L:[5,1,1,""],__add__:[5,1,1,""],__call__:[5,1,1,""],__init__:[5,1,1,""],__radd__:[5,1,1,""],__rmul__:[5,1,1,""],__sub__:[5,1,1,""],__weakref__:[5,2,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.IndicatorBox":{__call__:[5,1,1,""],__init__:[5,1,1,""],__new__:[5,1,1,""],gradient:[5,1,1,""],num_threads:[5,1,1,""],proximal:[5,1,1,""],set_num_threads:[5,1,1,""],set_suppress_evaluation:[5,1,1,""]},"cil.optimisation.functions.KullbackLeibler":{__init__:[5,1,1,""],__new__:[5,1,1,""]},"cil.optimisation.functions.L1Norm":{__call__:[5,1,1,""],__init__:[5,1,1,""],convex_conjugate:[5,1,1,""],proximal:[5,1,1,""]},"cil.optimisation.functions.L2NormSquared":{__call__:[5,1,1,""],__init__:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""]},"cil.optimisation.functions.LeastSquares":{L:[5,1,1,""],__call__:[5,1,1,""],__init__:[5,1,1,""],__rmul__:[5,1,1,""],gradient:[5,1,1,""]},"cil.optimisation.functions.MixedL11Norm":{__call__:[5,1,1,""],__init__:[5,1,1,""],proximal:[5,1,1,""]},"cil.optimisation.functions.MixedL21Norm":{__call__:[5,1,1,""],__init__:[5,1,1,""],convex_conjugate:[5,1,1,""],proximal:[5,1,1,""]},"cil.optimisation.functions.OperatorCompositionFunction":{L:[5,1,1,""],__call__:[5,1,1,""],__init__:[5,1,1,""],gradient:[5,1,1,""]},"cil.optimisation.functions.Rosenbrock":{__call__:[5,1,1,""],__init__:[5,1,1,""],gradient:[5,1,1,""]},"cil.optimisation.functions.ScaledFunction":{L:[5,1,1,""],__call__:[5,1,1,""],__init__:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.SmoothMixedL21Norm":{__call__:[5,1,1,""],__init__:[5,1,1,""],gradient:[5,1,1,""]},"cil.optimisation.functions.SumFunction":{L:[5,1,1,""],Lmax:[5,1,1,""],__add__:[5,1,1,""],__call__:[5,1,1,""],__init__:[5,1,1,""],gradient:[5,1,1,""]},"cil.optimisation.functions.SumScalarFunction":{L:[5,1,1,""],__init__:[5,1,1,""],convex_conjugate:[5,1,1,""],proximal:[5,1,1,""]},"cil.optimisation.functions.TotalVariation":{__call__:[5,1,1,""],__init__:[5,1,1,""],__rmul__:[5,1,1,""],calculate_Lipschitz:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""]},"cil.optimisation.functions.TranslateFunction":{__call__:[5,1,1,""],__init__:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""]},"cil.optimisation.functions.WeightedL2NormSquared":{__call__:[5,1,1,""],__init__:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""]},"cil.optimisation.functions.ZeroFunction":{__init__:[5,1,1,""]},"cil.optimisation.operators":{BlockOperator:[5,0,1,""],ChannelwiseOperator:[5,0,1,""],CompositionOperator:[5,0,1,""],DiagonalOperator:[5,0,1,""],FiniteDifferenceOperator:[5,0,1,""],GradientOperator:[5,0,1,""],IdentityOperator:[5,0,1,""],LinearOperator:[5,0,1,""],MaskOperator:[5,0,1,""],MatrixOperator:[5,0,1,""],Operator:[5,0,1,""],ScaledOperator:[5,0,1,""],SparseFiniteDifferenceOperator:[5,0,1,""],SymmetrisedGradientOperator:[5,0,1,""],ZeroOperator:[5,0,1,""]},"cil.optimisation.operators.BlockOperator":{T:[5,1,1,""],__getitem__:[5,1,1,""],__init__:[5,1,1,""],__rmul__:[5,1,1,""],adjoint:[5,1,1,""],column_wise_compatible:[5,1,1,""],direct:[5,1,1,""],domain_geometry:[5,1,1,""],get_as_list:[5,1,1,""],get_item:[5,1,1,""],get_norms_as_list:[5,1,1,""],get_output_shape:[5,1,1,""],is_linear:[5,1,1,""],norm:[5,1,1,""],range_geometry:[5,1,1,""],row_wise_compatible:[5,1,1,""],set_norms:[5,1,1,""]},"cil.optimisation.operators.ChannelwiseOperator":{__init__:[5,1,1,""],adjoint:[5,1,1,""],calculate_norm:[5,1,1,""],direct:[5,1,1,""]},"cil.optimisation.operators.CompositionOperator":{__init__:[5,1,1,""],calculate_norm:[5,1,1,""],direct:[5,1,1,""],is_linear:[5,1,1,""]},"cil.optimisation.operators.DiagonalOperator":{__init__:[5,1,1,""],adjoint:[5,1,1,""],calculate_norm:[5,1,1,""],direct:[5,1,1,""]},"cil.optimisation.operators.FiniteDifferenceOperator":{adjoint:[5,1,1,""],direct:[5,1,1,""]},"cil.optimisation.operators.GradientOperator":{adjoint:[5,1,1,""],calculate_norm:[5,1,1,""],direct:[5,1,1,""]},"cil.optimisation.operators.IdentityOperator":{__init__:[5,1,1,""],adjoint:[5,1,1,""],calculate_norm:[5,1,1,""],direct:[5,1,1,""]},"cil.optimisation.operators.LinearOperator":{PowerMethod:[5,1,1,""],__init__:[5,1,1,""],adjoint:[5,1,1,""],calculate_norm:[5,1,1,""],dot_test:[5,1,1,""],is_linear:[5,1,1,""]},"cil.optimisation.operators.MaskOperator":{__init__:[5,1,1,""]},"cil.optimisation.operators.MatrixOperator":{__init__:[5,1,1,""],adjoint:[5,1,1,""],direct:[5,1,1,""]},"cil.optimisation.operators.Operator":{__init__:[5,1,1,""],__neg__:[5,1,1,""],__rmul__:[5,1,1,""],__sub__:[5,1,1,""],__weakref__:[5,2,1,""],calculate_norm:[5,1,1,""],direct:[5,1,1,""],domain_geometry:[5,1,1,""],is_linear:[5,1,1,""],norm:[5,1,1,""],range_geometry:[5,1,1,""],set_norm:[5,1,1,""]},"cil.optimisation.operators.ScaledOperator":{__init__:[5,1,1,""],adjoint:[5,1,1,""],direct:[5,1,1,""],is_linear:[5,1,1,""],norm:[5,1,1,""]},"cil.optimisation.operators.SparseFiniteDifferenceOperator":{direct:[5,1,1,""]},"cil.optimisation.operators.SymmetrisedGradientOperator":{adjoint:[5,1,1,""],direct:[5,1,1,""]},"cil.optimisation.operators.ZeroOperator":{__init__:[5,1,1,""],adjoint:[5,1,1,""],calculate_norm:[5,1,1,""],direct:[5,1,1,""]},"cil.plugins.TomoPhantom":{get_ImageData:[6,3,1,""]},"cil.plugins.astra":{FBP:[6,0,1,""],ProjectionOperator:[6,0,1,""]},"cil.plugins.astra.FBP":{get_output:[6,1,1,""],set_input:[6,1,1,""]},"cil.plugins.ccpi_regularisation.functions":{FGP_TV:[6,0,1,""],FGP_dTV:[6,0,1,""],TGV:[6,0,1,""],TNV:[6,0,1,""]},"cil.plugins.ccpi_regularisation.functions.FGP_dTV":{__call__:[6,1,1,""],__init__:[6,1,1,""],__rmul__:[6,1,1,""],convex_conjugate:[6,1,1,""]},"cil.plugins.ccpi_regularisation.functions.TGV":{__call__:[6,1,1,""],__init__:[6,1,1,""],__rmul__:[6,1,1,""],convex_conjugate:[6,1,1,""]},"cil.plugins.ccpi_regularisation.functions.TNV":{__call__:[6,1,1,""],__init__:[6,1,1,""],__rmul__:[6,1,1,""],check_input:[6,1,1,""],convex_conjugate:[6,1,1,""]},"cil.plugins.tigre":{FBP:[6,0,1,""],ProjectionOperator:[6,0,1,""]},"cil.plugins.tigre.FBP":{get_output:[6,1,1,""],set_input:[6,1,1,""]},"cil.processors":{AbsorptionTransmissionConverter:[7,0,1,""],Binner:[7,0,1,""],CentreOfRotationCorrector:[7,0,1,""],MaskGenerator:[7,0,1,""],Masker:[7,0,1,""],Normaliser:[7,0,1,""],Padder:[7,0,1,""],RingRemover:[7,0,1,""],Slicer:[7,0,1,""],TransmissionAbsorptionConverter:[7,0,1,""]},"cil.processors.AbsorptionTransmissionConverter":{get_output:[7,1,1,""],set_input:[7,1,1,""]},"cil.processors.Binner":{get_output:[7,1,1,""],process:[7,1,1,""],set_input:[7,1,1,""]},"cil.processors.CentreOfRotationCorrector":{get_output:[7,1,1,""],image_sharpness:[7,1,1,""],set_input:[7,1,1,""],xcorrelation:[7,1,1,""]},"cil.processors.MaskGenerator":{get_output:[7,1,1,""],mean:[7,1,1,""],median:[7,1,1,""],quantile:[7,1,1,""],set_input:[7,1,1,""],special_values:[7,1,1,""],threshold:[7,1,1,""]},"cil.processors.Masker":{get_output:[7,1,1,""],interpolate:[7,1,1,""],mean:[7,1,1,""],median:[7,1,1,""],set_input:[7,1,1,""],value:[7,1,1,""]},"cil.processors.Normaliser":{estimate_normalised_error:[7,1,1,""],get_output:[7,1,1,""],set_input:[7,1,1,""]},"cil.processors.Padder":{constant:[7,1,1,""],edge:[7,1,1,""],get_output:[7,1,1,""],linear_ramp:[7,1,1,""],reflect:[7,1,1,""],set_input:[7,1,1,""],symmetric:[7,1,1,""],wrap:[7,1,1,""]},"cil.processors.RingRemover":{get_output:[7,1,1,""],set_input:[7,1,1,""],xRemoveStripesVertical:[7,1,1,""]},"cil.processors.Slicer":{get_output:[7,1,1,""],process:[7,1,1,""],set_input:[7,1,1,""]},"cil.processors.TransmissionAbsorptionConverter":{get_output:[7,1,1,""],set_input:[7,1,1,""]},"cil.recon":{FBP:[8,0,1,""],FDK:[8,0,1,""]},"cil.recon.FBP":{get_filter_array:[8,1,1,""],reset:[8,1,1,""],run:[8,1,1,""],set_fft_order:[8,1,1,""],set_filter:[8,1,1,""],set_filter_inplace:[8,1,1,""],set_image_geometry:[8,1,1,""],set_input:[8,1,1,""],set_split_processing:[8,1,1,""]},"cil.recon.FBP.FBP":{run:[0,1,1,""]},"cil.recon.FDK":{get_filter_array:[8,1,1,""],reset:[8,1,1,""],run:[8,1,1,""],set_fft_order:[8,1,1,""],set_filter:[8,1,1,""],set_filter_inplace:[8,1,1,""],set_image_geometry:[8,1,1,""],set_input:[8,1,1,""]},"cil.utilities":{quality_measures:[9,4,0,"-"]},"cil.utilities.dataexample":{SIMULATED_CONE_BEAM_DATA:[9,0,1,"id0"],SIMULATED_PARALLEL_BEAM_DATA:[9,0,1,""],SYNCHROTRON_PARALLEL_BEAM_DATA:[9,0,1,""],TestData:[9,0,1,""]},"cil.utilities.dataexample.SIMULATED_CONE_BEAM_DATA":{get:[9,1,1,"id1"]},"cil.utilities.dataexample.SIMULATED_PARALLEL_BEAM_DATA":{get:[9,1,1,""]},"cil.utilities.dataexample.SYNCHROTRON_PARALLEL_BEAM_DATA":{get:[9,1,1,""]},"cil.utilities.dataexample.TestData":{load:[9,1,1,""],random_noise:[9,1,1,""],scikit_random_noise:[9,1,1,""]},"cil.utilities.display":{show1D:[9,0,1,""],show2D:[9,0,1,""],show_geometry:[9,0,1,""]},"cil.utilities.display.show1D":{figure:[9,2,1,""],save:[9,1,1,""]},"cil.utilities.display.show2D":{save:[9,1,1,""]},"cil.utilities.display.show_geometry":{save:[9,1,1,""]},"cil.utilities.jupyter":{islicer:[9,0,1,""],link_islicer:[9,0,1,""]},"cil.utilities.quality_measures":{mae:[9,3,1,""],mse:[9,3,1,""],psnr:[9,3,1,""]}},objnames:{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","attribute","Python attribute"],"3":["py","function","Python function"],"4":["py","module","Python module"]},objtypes:{"0":"py:class","1":"py:method","2":"py:attribute","3":"py:function","4":"py:module"},terms:{"0000654846240296":5,"0005647295658866":5,"00186":5,"003":6,"005":7,"008":5,"008567":7,"010":5,"018":5,"0192":[2,5],"0193":[2,5],"020":5,"0251":5,"025129":6,"055010":6,"080716542":5,"09076934x":5,"100":[4,5,6],"1007":5,"1015":5,"1016":6,"1046":5,"1088":6,"1098":[2,5],"1102995080":5,"1109":5,"1137":5,"120":[5,7],"128":[6,7],"1321":5,"1364":[6,7],"145":5,"180":7,"183":5,"1887":8,"1976":6,"200":[4,7],"2001":5,"2008":8,"2009":5,"2010":5,"2011":5,"2016":5,"2017":8,"2018":[5,6],"2019":[5,6,9],"202":5,"2020":[2,5],"20200192":[2,5],"20200193":[2,5],"2021":[2,5],"2022":0,"2028250":5,"2057":6,"20channel":5,"2204":5,"2419":5,"2434":5,"255":9,"256":9,"2783":5,"2808":5,"2_2":[3,5],"2beta":5,"2ca":5,"2pi":6,"2s1":5,"300":4,"360":6,"360deg":7,"377":5,"379":5,"381":5,"400":5,"430":5,"48289":8,"4t_":5,"500":9,"550":4,"7142857142857":4,"9225":5,"9780898719277":5,"9ntwu9megq":2,"abstract":5,"boolean":[1,5,6,7,8,9],"byte":5,"case":[1,4,5,7,9],"class":[0,1,2,4,6,7,8,9],"default":[0,1,4,5,6,7,8,9],"final":5,"float":[1,4,5,6,7,8,9],"function":[1,2,3,4,8,9],"import":[4,5,6,7,8,9],"int":[0,1,4,5,6,7,8,9],"j\u00f8rgensen":2,"long":[1,5],"new":[1,2,5],"return":[0,1,4,5,6,7,8,9],"richt\u00e1rik":5,"sch\u00f6nlieb":5,"static":[1,4,5,7,9],"true":[1,4,5,6,7,8,9],"try":1,"var":9,"while":[2,5],AND:9,ARE:9,BUT:9,DLS:9,FOR:9,For:[0,1,2,4,5,6,7,9],IDEs:0,NOT:9,One:[7,9],SUCH:9,THE:9,The:[0,1,2,3,4,5,6,7,8,9],Then:5,There:1,These:[4,7],USE:9,Use:[0,2,5,9],Used:9,Uses:[5,7],Will:[1,9],With:[3,5],__add__:5,__array_priority__:5,__call__:[5,6],__delattr__:5,__dir__:5,__eq__:5,__format__:5,__ge__:5,__getattribute__:5,__getitem__:5,__gt__:5,__hash__:5,__iadd__:5,__idiv__:5,__imul__:5,__init__:[5,6],__init_subclass__:5,__isub__:5,__iter__:5,__itruediv__:5,__le__:5,__lt__:5,__mul__:5,__ne__:5,__neg__:5,__new__:5,__next__:5,__radd__:5,__rdiv__:5,__reduce__:5,__reduce_ex__:5,__repr__:5,__rmul__:[5,6],__rpow__:5,__rsub__:5,__rtruediv__:5,__set_up_logg:5,__setattr__:[1,5],__sizeof__:5,__str__:5,__sub__:5,__subclasscheck__:5,__subclasshook__:5,__weakref__:5,_as_gen:9,_dual:[5,6],_gradient:5,_po_class:0,_pre_filt:0,_process_chunk:0,_setup_po_for_chunk:0,_slices_per_chunk:0,_update_previous_solut:5,abc:5,abcmeta:5,abl:[3,5,6],about:[4,7],about_original_data:4,abov:[2,3,5,6,9],abs:[1,5,7],absolut:[5,7,9],absorpt:2,absorptiontransmissionconvert:7,abspath:4,acceler:[3,5,7],accept:[0,1,4,5,7],access:5,accord:1,accordingli:5,accumul:1,accur:[5,6,8],accuraci:7,achiev:[3,5,7],acquir:[3,5],acquisit:[1,2,3,4,5,6,8,9],acquisition_geometri:[0,4,6,9],acquisitiondata:[2,3,5,7,8,9],acquisitiondatasetn:7,acquisitiongeomerti:1,acquisitiongeometri:[2,3,4,5,6,7,9],across:[6,7],act:5,activ:0,actor:[3,5],actual:[0,5],ad1:4,adapt:9,add:[0,1,5,6,9],added:[5,6],addit:[0,1,5,7,8,9],adher:0,adjoint:[0,5,6],adjoint_weight:6,adjust:4,admm:5,advanc:[0,3,5],advis:9,after:[5,7,9],ag1:4,against:9,agre:0,aim:2,algebr:[1,5],algebra:[1,5,8],algorithm:[2,3,6,7,8],alia:[1,4,5,9],align:[1,5,7],all:[0,1,4,5,6,7,8,9],alloc:[0,1,5,8],allow:[1,3,4,5,6,7,8,9],alon:9,along:[1,4,5,7,9],alpha:[3,5,6],alphabet:4,also:[0,2,3,4,5],altern:[4,5],although:5,alwai:[4,5],ametova:5,amir:5,amount:[3,5,9],analyt:[2,5],ang_tol:7,angl:[1,4,6,7],angle_unit:[1,6],angular:[1,6,7],ani:[0,1,3,5,6,9],anisotrop:[5,6],anoth:5,antonin:5,aop:5,apach:0,apart:7,api:9,appear:7,append:5,appli:[1,3,4,5,6,7,8,9],applic:[0,5],apply_circular_mask:1,appropri:[0,1,5,6],approx:5,approxim:[4,6],arbitrari:5,area:[6,8],arg:[0,1,5,9],argmin:[3,5,6],argument:[0,1,5,9],aris:9,armijo:5,armijo_rul:5,around:5,arrai:[0,1,3,4,5,7,8,9],arrang:[3,4],artefact:1,articl:[2,6],artifact:7,arxiv:5,as_arrai:1,ascent:5,aspect:9,assembl:3,assign:7,assum:[5,9],astra:[1,2,3,7,8],asymmetr:7,asymptot:5,attribut:[1,3,4,7],augment:5,author:[0,9],auto:5,automat:7,avail:5,averag:[4,7],avinash:5,avoid:[5,7],axes:[1,4,7],axi:[1,4,7,9],axis_0:4,axis_1:4,axis_2:4,axis_label:[4,9],axis_labels_1:4,axis_labels_2:4,axis_nam:7,axis_name1:7,axis_name2:7,axpbi:[1,5],azimuth:9,back:[3,4,6,8,9],backend:[5,7,8],background:5,backproject:[5,8],backward:[1,4,5,6],backward_project:6,bar:5,base:[0,1,2,3,7,8,9],basi:0,basic:[1,2,4,5],basicconfig:7,batch:1,bdc1:[1,5],bdc2:[1,5],bdc:1,beam:[1,2,6,7,9],becaus:[5,9],beck:5,becom:5,been:[4,5,6,7],beer:7,befor:[4,5,7,9],begin:[0,3,5,7],behav:[1,5],behaviour:[4,5,7,9],being:[2,7,9],below:[3,5,7,9],berlin:8,best:[6,7],beta:5,betck:5,better:[3,5],between:[1,3,5,6,7,8],beyond:[3,9],bibian:5,big:5,bin:[4,7],binari:[1,4,9],binary_oper:[1,5],binner:2,binom:[3,5],biologi:5,bit:4,blob:[4,5,9],block:[1,2],blockdatacontain:[2,3,9],blockfunct:[3,5],blockgeometri:[2,3,5,6],blockoper:[3,5,6],blur:7,bmatrix:5,bnd_cond:5,boat:9,bool:[4,5,7,9],boolian:1,border:7,both:[1,2,3,5,7],bottom:[0,1],bound:5,boundari:[5,7],box:[2,9],broadcast:6,brows:4,build:[2,3,5],burca:5,busi:9,buzug:8,bypass:1,cach:5,calcul:[1,4,5,6,7,9],calculate_lipschitz:5,calculate_norm:5,call:[3,4,5,6,8],callback:5,camera:9,can:[0,1,2,3,4,5,6,7,8,9],cannot:9,cap:0,capabl:6,care:9,carola:5,cast:1,caus:[7,9],ccpi:[2,4],ccpi_regularis:6,cdot:5,ceil:[0,5],center:[3,5,7,9],center_i:1,center_x:1,center_z:1,centered_at:5,centr:[1,2,9],centreofrotationcorrector:7,cern:6,certain:5,cgl:[2,3],chambol:5,chan:5,chang:[0,4,5,6,9],channel:[1,2,5,6,7,9],channel_label:1,channelwiseoper:5,characterist:3,check:[1,4,5],check_converg:5,check_input:[1,6],choos:5,chosen:5,chunk:[0,4,8],cil:[1,3,4,5,7,8,9],cil_log_level:7,circ:5,circular:[1,3,6,8],clair:5,classmethod:9,clear:5,clearli:0,clip:9,clone:[0,1,5],close:[0,5],cls:5,cmake:0,cmap:9,code:[0,1,2,4,5,6,7,9],coincid:7,col:5,collect:[2,5],collim:3,color:9,colorbar:9,colormap:9,colour:9,column:[1,4,5,9],column_wise_compat:5,com:[0,2,5,6,9],comment:0,common:3,commonli:1,commut:[1,5],compar:9,comparison:[5,9],compat:[1,4,5,6,8],complex128:1,complex:[1,5],compli:0,complianc:0,compon:[5,7,8],composed_with_adjoint:5,composit:2,compositionoper:5,compress:4,compressed_data:4,compris:[3,5],comput:[5,6,8],computation:5,computer:5,concret:5,conda:0,conda_prefix:0,condit:[0,5,9],cone2d:2,cone3d:2,cone:[1,2,6,7,9],config:[0,4],configpars:4,configur:[0,2,4,5,6,7,8],conjug:[1,5,6],consecut:5,consequenti:9,consid:[2,3,5],consist:[1,5],constant:[5,6,7],constant_valu:7,constantfunct:5,constrain:5,constraint:[5,6],construct:[2,4,5,8],constructor:5,contain:[0,2,3,4,5,7,8,9],content:[4,5],continu:5,contract:9,contribut:[2,5,7],contributor:9,control:[0,5,8],convent:[2,3,5],converg:5,convert:[2,9],convex:[5,6],convex_conjug:[5,6],coordin:9,copi:[0,1,5],copyright:[0,9],core:[0,2,3,5],correct:[1,5,7,8],corrector:2,correl:[5,7],correlation_spac:5,correspond:[4,5,7,9],corrupt:9,cosin:8,costli:5,could:[1,5],counter_offset:4,courtesi:[4,5],cpu:[5,6],creat:[0,1,3,4,5,7,8,9],create_cone2d:[1,6],create_cone3d:[1,6],create_local_env_for_cil_development_test:0,create_parallel2d:1,create_parallel3d:1,creation:5,creator:[2,5,6],criteria:7,criterion:[5,6],crop:[4,7],cross:7,cubic:7,cuda:6,current:[0,1,5],custom:[5,8],customis:[6,8],cut:8,cutoff:8,damag:9,dark:7,dark_field:7,data:[2,4,5,6,8],data_bin:7,data_centr:7,data_channel0:9,data_channel1:9,data_dir:9,data_pad:7,data_rang:9,data_sl:7,data_typ:4,datacontain:[2,4,5,6,7,9],datacontainer0:1,datacontainer1:1,dataexampl:[8,9],dataord:2,dataprocessor:2,dataset:[0,1,2,3,4,6,7,8],date:2,davi:8,dc1:9,dc2:9,dcmake_install_prefix:0,dealloc:5,deblur:5,debug:7,decnum:7,decompos:5,deep_copi:1,def:[0,5],defin:[1,2,3,4,5,6,7,9],definit:[0,3,5,6],degre:[1,6,7,9],delattr:5,delplanck:5,delta:5,delta_dark:7,delta_flat:7,demo:[3,5],denois:5,denot:5,dens:5,depend:[0,3,4,7],deprec:[1,5,7],depth:4,deriv:[5,9],descent:5,describ:[1,3,4,5,6],descript:[3,6,7,8],design:[3,5],desir:[5,7],desiri:7,dest_sel:4,destin:4,detail:[1,2,7],detect:7,detector:[1,3,4,7,8],detector_direction_i:1,detector_direction_x:1,detector_i:1,detector_posit:1,detector_x:1,determin:[1,6],devaiat:7,devel:2,develop:[2,3,5],deviat:[7,9],devic:6,diagon:5,diagonaloper:5,diamond:2,dict:[4,5,7],dictionari:[1,4,7],differ:[2,3,5,6,7,9],differenti:5,digaonaloper:5,dimens:[0,1,4,5,6,7,9],dimension:[5,9],dimension_label:[1,5,7],dir:5,direct:[1,4,5,6,9],direct_method:6,direct_onli:5,direction0:9,direction1:9,directli:[1,4,5,7],directori:[0,4,9],discard:5,disclaim:9,discord:2,disk:4,displai:[2,3],distanc:[1,3,5,9],distribut:[0,5,9],divid:[0,1,5,7],divis:[1,5,7],doc:[0,4,5,7],docs_environ:0,docstr:2,document:[6,9],doe:[0,1,5,6,7,9],doi:[2,5,7],domain:[5,8,9],domain_geometri:5,domain_init:5,domin:5,done:[1,5],dot:[1,5],dot_test:5,doubl:7,down:9,download:5,downsampl:7,dset_path:4,dtype:[1,4,5,6,9],dual:5,dualiti:5,due:[5,7],dure:[0,1,5],dynam:[2,5],each:[0,1,4,5,7,9],earli:5,earlier:6,easiest:0,easili:5,edg:[1,7],edoardo:5,edu:5,effect:5,ehrhardt:5,eigenvalu:5,eigenvector:5,either:[0,3,5,7,9],element:[1,4,5,7],elev:9,elif:0,els:[0,6],email:0,embed:0,emiss:5,emit:3,emploi:2,empti:1,enabl:2,enclos:0,end:[0,3,4,5,7],end_valu:7,endors:9,enforc:[2,5],engin:[1,5],enough:2,ensur:7,entail:5,entri:4,env:0,environ:0,environment_nam:0,epsilon:5,eqnarrai:5,equal:[1,5,6,9],equival:[3,4,5],erfcinv:7,erni:5,error:[1,7,9],essenti:0,esser:5,estim:7,estimate_normalised_error:7,eta:[5,6],euclid:5,euclidean:[1,5],eval:4,evalu:5,evangelo:5,evelina:5,even:[1,5,9],event:[5,9],everi:[5,7,9],everyth:4,evolv:0,exact:[4,5],exampl:[1,4,5,6,7,8,9],except:0,excess:0,exclus:[7,9],execut:5,exemplari:9,exist:5,exp:1,expect:[1,7],expens:5,explicit:5,explicitli:9,expon:7,expos:9,express:[0,1,3,5,9],extend:[5,7,9],extens:4,extract:[4,9],extrapol:7,f_1:5,f_i:5,f_n:5,fact:[1,4,5],factor:[3,4,7],fail:[1,5],fals:[0,1,4,5,7,8,9],fan:2,fanbeam:2,fardel:5,fashion:5,fast:[5,6],faster:5,favour:0,fbp:[0,1,2,3,7],fdk:[2,3,6,7],fdk_cuda:6,feldkamp:8,fft:8,fft_order:8,fgp:[5,6],fgp_dtv:6,fgp_tv:6,fidel:[3,5],field:[0,3,7],figsiz:9,figur:9,file:[0,2,3,5],file_nam:4,filenam:[4,9],fill:[0,1,4,6,7,8],filter:[3,6,8],filter_inplac:0,find:[0,5,7],fine:7,finit:5,finitedifferenceoper:5,first:[3,4,5,6,7,9],firstli:[2,5],fista:2,fit:[1,5,7,9],fix:5,fix_rang:9,flag:5,flat:7,flat_field:7,flatten:[5,7],flip:4,fliplr:4,float32:[1,4,5,6],float64:1,fname:[4,5],folder:[0,4],follow:[0,1,4,5,7,8,9],fontsiz:9,forc:1,fork:7,form:[3,5,8,9],format:[0,3],format_spec:5,formatt:5,formul:[2,5],formula:5,forth:5,forward:[5,6],forward_project:6,found:[2,5,9],fourier:8,frac:[3,5,6],frame:1,framework:[2,4],frequenc:8,frequency_cutoff:8,from:[1,2,3,4,5,6,8],fromfil:4,full:[0,3,4,8],fulli:[0,4],fundament:5,further:[0,2,5,8],futher:[6,8],futur:5,gamma:[5,6],gamma_fconj:5,gamma_g:5,gantri:3,gap:[5,7],gaussian:9,gemma:5,gener:[0,1,2,4,5,6,9],generalis:[5,6],genericlli:5,geometr:6,geometri:[0,2,4,5,6,7],geometry_bin:7,geometry_sl:7,geq1:5,geq2:5,get:[4,5,8,9],get_as_list:5,get_data_axes_ord:1,get_data_offset:4,get_data_scal:4,get_dataset_metadata:4,get_dimension_axi:1,get_filter_arrai:8,get_geometri:4,get_imagedata:6,get_imagegeometri:[0,1,6],get_input:1,get_item:[1,5],get_last_loss:5,get_last_object:5,get_metadata:4,get_norms_as_list:5,get_ouput:[6,7],get_output:[1,5,6,7],get_output_shap:5,get_roi:4,get_slic:[1,9],getattr:5,getlogg:7,git:[0,2],github:[0,2,5,6,9],give:[1,3,7],given:5,global:[5,9],gm_domain:5,gm_rang:5,goal:3,good:9,govern:0,gpu:6,gradient:[5,6],gradientoper:2,grai:9,greater:[1,8],greatli:3,grid:9,ground_truth:9,group:[4,5],guarante:5,guess:5,guid:[2,5],guidelin:2,hadamard:5,half:[5,7],ham:8,handl:[1,2,3,8],hann:8,happen:1,hard:7,hardwar:8,has:[0,1,3,4,5,6,7],hash:5,have:[0,1,3,4,5,7,8],hdf5:2,hdf5_util:4,hdl:8,height:9,held:1,help:[0,5,6],helper:5,henc:5,here:[0,5],hereof:5,high:[2,5],higher:[8,9],highli:[5,8],hold:[1,5,7],home:[1,4,5,6,7,8,9],horizont:[1,4,7],horizontal_i:[1,5,7,9],horizontal_x:[1,5,7,9],hotdog:9,how:5,howev:[4,5,9],html:[0,4,5,7,9],http:[0,2,4,5,6,7,8,9],hybrid:5,i_0:4,ideal:7,ident:5,identifi:[0,7],identityoper:5,ieee:5,ignor:[5,6,7],illustr:3,ima:7,imag:[0,2,3,4,5,6,7,8],image_geometri:[0,4,6,8,9],image_sharp:7,imagedata:[0,2,3,5,6,7,8,9],imagegeometri:[2,3,4,5,6,7,8,9],implement:[2,5],impli:[0,9],impos:[3,5],in_plac:1,inch:9,incid:[3,7],incident:9,includ:[1,5,7,9],inclus:7,incorpar:6,incorrect:7,increas:[5,8],independ:[1,4,5],index:[1,4,5,7],indic:[1,2,4,7,8],indicatorbox:5,indirect:9,individu:5,industri:5,inequ:5,inexact:5,inf:[5,7],infin:5,infinit:5,influenc:3,info:[4,5,6,7],inform:[0,1,2,4,5,6,7,9],infrastructur:5,infti:5,ingredi:5,inherit:[1,5],ini:4,inifnam:4,initi:[4,5,6,7,9],initial_angl:1,initial_bin:7,initialis:[1,4,5,7],inlin:5,inner:[1,5],innov:0,inpaintingand:5,inplac:8,input:[0,1,2,5,6,7,8,9],insid:[1,5],instal:[0,5,6],instanc:[0,1,4,5],instanti:[1,5],instead:[0,5,7,9],instruct:0,instrument:[3,7],integ:[5,6,7,9],intend:5,intens:7,interact:[2,5],interest:[1,7],intermedi:9,intern:[1,4],interpoalt:7,interpol:[6,7],interpret:[5,7,8],interrupt:9,intersect:6,interv:[5,9],introduct:2,intuit:9,invers:5,invok:5,iop:6,iopscienc:6,ipywidget:9,irrespect:5,is_compat:[1,5],is_fortran:4,is_linear:5,is_provably_converg:5,is_virtu:4,islic:2,isotrop:[5,6],issubclass:5,ista:2,iter:[3,5,6,9],its:[0,5,9],itself:[0,5],jakob:5,januari:5,join:2,journal:5,json:4,julian:5,jun:5,jupyt:9,just:1,k_i:5,kak:5,keep:[5,9],kei:[0,1,4,7],keyward:5,keyword:[1,5],kind:0,kinemat:7,kingdom:0,kl_div:5,kmax:5,knowledg:[3,5],known:5,kress:8,kullback:5,kullbackleibl:2,kwarg:[0,1,5,6,7,9],l11:2,l1norm:5,l21:2,l2norm_:5,l2normsquar:5,lab:3,label:[1,4,5,9],ladmm:2,lagrangian:5,lak:[6,8],lambert:7,langl:5,languag:[0,6],larg:[1,5],larger:5,largest:5,last:[5,7],law:[0,7],layout:4,lead:[4,7],least:[1,2,3],leastsquar:5,left:[1,4,5,9],leftrightarrow:[5,6],legend:9,leibler:5,length:[1,5,8,9],leq1:5,leq:5,less:5,let:5,level:[2,4,5,7,9],liabil:9,liabl:9,librari:[0,1,2,3,5],licens:0,light:2,like:[3,4,5],limit:[0,5,6,9],line:[4,9],line_colour:9,line_styl:9,linear:[5,7],linear_ramp:7,linearoper:5,linestyl:9,link:[0,2,5],link_islic:2,linspac:6,lionheart:5,lipschitz:5,lipshitz:5,list:[1,2,4,5,8,9],lmax:5,load:[4,9],load_data:4,load_project:4,loader:3,local:[2,9],local_var:9,localvar:9,locat:[1,7],log0:5,log10:5,log:[0,1,5,7,8],log_fil:5,logan:8,logarithm:7,logger:5,look:4,loop:[4,5,7],loss:[5,7,9],lossi:4,low_val:9,lower:[5,6,7,9],lvert:5,machin:3,mad:7,mae:9,magnif:3,magnitud:5,mai:[0,1,2,5,7,8,9],mail:2,main:[2,3,5],mainli:3,maintain:9,make:[0,3,5],malcolm:5,manchest:0,mani:5,manipul:[2,3],manual:[4,9],map:[5,9],marc:5,markiewicz:5,martin:5,mask:[1,2,5],masker:7,maskgener:7,maskoper:5,master:[5,9],match:[1,5,6],materi:9,math:[1,5],mathbb:5,mathcal:5,mathemat:[2,5],mathrm:[3,5,6],matplotlib:9,matric:5,matrix:[3,5,9],matrixoper:5,matthia:5,max:[1,5,6,9],max_:5,max_iter:[5,6],max_iteration_stop_criterion:5,max_quantil:7,max_val:7,maximis:7,maximum:[1,5,6],mbox:[5,6],mean:[1,5,7,9],meant:0,measur:[3,5,7,8],median:7,medicin:5,medium:5,member:0,memori:[1,5,8],merchant:9,met:[5,9],meta:1,metadata:[2,4],method:[1,2,3,4,5,6,7,8],metric:2,midlin:7,might:5,min:[1,5,9],min_:5,min_intens:7,min_quantil:7,min_val:7,min_x:5,mingqiang:5,minim:[4,5],minimis:5,minimum:[1,5,6],minmax:9,mirror:7,misalign:7,miss:7,mix:2,mixedl11norm:5,mixedl21norm:5,mkdir:0,mode:[1,4,5,7,9],model:6,modern:8,modif:9,modifi:[1,8],modul:[3,5,6,7,8],modulu:5,moment:5,monitor:5,mop:5,mop_norm:5,more:[1,3,4,5,7,8,9],moreau:5,most:[1,5],mri:5,mse:9,multi:[2,4,5,9],multichannel:[2,5,6],multicontrast:5,multipl:[0,1,4,5,6,7,9],multiplc:5,multipli:[1,5,7],multiprocess:5,must:[0,1,4,5,7,8,9],mx1:5,my_data:4,nabla:5,name:[0,1,4,5,7,9],nan:[5,7],nbyte:4,ndarrai:[1,4,5,7,8,9],ndim:[1,4,6],nearest:7,necessari:[0,1,4],need:[0,4,5,7,9],neg:[4,5,6,7,8,9],neglig:9,neither:9,nest:[1,5,9],net:8,neumann:5,neutron:7,new_ord:1,newlin:5,next:[1,5,7,9],nexu:[2,3],nexusdataread:4,nexusdatawrit:4,nice:5,nikon:[2,3],nikondataread:4,nois:[5,9],noisy_data:5,non:[0,2,5,6],none:[0,1,4,5,6,7,8,9],nonneg:6,nor:9,norm2sq:5,norm:[1,2,6],normal:[1,5],normalis:[2,4],notat:5,note:[4,5,6,7,8,9],notebook:3,noth:5,notic:[4,5,9],notimpl:5,nov:5,now:[3,5,6],num_batch:1,num_channel:1,num_chunk:0,num_col:9,num_model:6,num_pixel:1,num_pixels_h:1,num_pixels_v:1,num_thread:[1,5],numba:5,number:[1,2,3,4,5,6,7,9],number_of_dimens:1,numer:1,numpi:[1,4,5,7,8,9],numpy_vers:0,numpydoc:0,nx1:5,nxs:4,object:[1,2,3,4,5,7],objective_funct:5,obtain:[0,4],occur:9,off:[5,8],offset:[0,1,4,6,7,8],often:0,omega:5,one:[1,2,3,5,7,9],ones:[4,5],onli:[0,1,4,5,6,7,8,9],onto:[3,5,7],op0:5,op1:5,op2:5,oper:[0,1,2,3,7],operatorcompositionfunct:5,optim:[2,5],optimis:[2,3,6,8],option:[0,1,4,5,6,7,8,9],orbit:8,order:[1,4,5,8,9],ordin:4,org:[0,2,4,5,6,7,9],orient:[0,2,5],origin:[0,1,4,5,9],original_data:4,other:[1,2,5,7,9],otherwis:[1,5,9],otim:5,our:[1,2,3,5],out:[0,1,4,5,6,7,8,9],outcom:5,outer:9,outlier:7,output:[0,1,2,4,5,7,8,9],outsid:[1,7,8,9],over:[1,5,7],overrid:5,overridden:5,overset:5,own:0,owner:0,p_i:5,pack:4,packag:[0,2,5],pad:7,pad_valu:7,pad_width:7,padder:2,page:[2,4],pair:[5,9],panel:[0,1,7],paper:2,papoutselli:[2,5],parallel2d:2,parallel3d:2,parallel:[1,2,6,7,9],param:[1,5,9],paramet:[0,1,3,4,5,6,7,8,9],parent:1,pars:4,part:[2,5,6],partial_:5,particular:[5,9],partit:1,pasca:5,pass:[0,1,5,6,7,8,9],path:[4,9],pawel:5,pbar:0,pdf:5,pdf_1:5,pdhg:2,pdhg_vs_spdhg:5,peak:9,penalis:5,pepper:9,per:[5,9],percent:9,percentag:1,perform:[1,5,7],period:5,permiss:[0,9],permit:9,permut:1,pet:5,peter:5,phantom:6,phil:2,philip:5,philosoph:5,photon:[7,8],physic:5,pickl:5,pixel:[1,3,4,6,7,8,9],pixel_num_v:0,pixel_s:1,pixel_size_h:1,pixel_size_v:1,pjm:5,place:[1,3,8],placehold:[1,5],plantagi:8,play_interv:9,pleas:[0,1,2,3,6,7],plot:9,plugin:[2,3,7],png:9,pock:5,point:[1,3,5,9],pointer:[1,5],poisson:[5,9],poissonloglikelihoodwithlinearmodelformean:5,poorli:9,popul:7,posit:[0,1,5,6,7,8,9],positron:5,possibl:[1,5,9],power:[1,2,5,8,9],powermethod:5,practic:[5,7],pre:[2,3,5,8],precalcul:5,preced:[1,5],precondit:5,predefin:8,prefix:4,prepar:8,prepend:5,present:[1,5,9],preserv:9,preval:9,previou:[5,6,7],primal:5,principl:5,print:[0,4,5,7],print_interv:5,print_metadata:4,prior:[3,5,9],prob:5,probabl:5,problem:[2,3,5,6,9],problem_:[5,6],process:[0,1,3,5,6,7,8],processor:[1,2,3,6],procur:9,produc:9,product:[1,5,9],profit:9,progress:7,proj:5,proj_filt:0,project:[2,3,4,5,7,8],projecteuclid:5,projection_index:7,projectionoper:6,projector:[3,6,8],promot:9,prompt:5,proper:9,properti:[1,2,5],proport:9,protect:0,protocol:5,prototyp:[2,5],provabl:5,provid:[0,1,2,3,4,5,6,7,8,9],prox:[5,6],prox_:5,proxim:[5,6],proximal_conjug:5,pseudo:9,psnr:9,purpos:[5,9],pydata:0,pyplot:9,python2:[1,5],python3:0,python:[2,5,7],python_vers:0,qeq0:6,quad:5,quadrat:[5,7],qualiti:[2,3],quality_measur:9,quantil:7,quarter:7,r_1:3,r_2:3,rad:8,radia:2,radian:1,radiat:3,radiu:1,rai:[1,3,6],rainbow:9,rais:[0,1,5],ral:5,ram:[6,8],ramp:7,random:[1,5,9],random_int:1,random_nois:9,random_permut:1,rang:[0,5,6,7,8,9],range_geometri:5,range_init:5,rangl:5,rapid:[2,5],rare:9,rasch:5,rate:5,rather:[5,7],ratio:[6,9],raw:2,rawfilewrit:4,ray_direct:1,reach:[3,5,6],read:[2,7],read_arrai:4,read_as_acquisitiondata:4,read_as_imagedata:4,read_as_origin:4,read_data:4,read_dtyp:4,read_resc:4,read_scale_offset:4,read_shap:4,read_to:4,reader:[2,3],real:[1,2,3,5],recal:5,receiv:5,recognis:[3,5],recommend:[7,8],recon:[0,2,3],reconstruct:[0,1,2,3,4,5,6,7],reconstructor:[0,2,3,6],recov:5,rect:8,recurs:[0,4],redistribut:9,reduc:[1,3,5,8,9],reduct:1,refer:[0,1,2,3,4,6,7,8,9],referenc:[0,1,6,7,8],reflect:[5,7],region:7,regular:5,regularis:[2,3,5],rel:[5,6,7],relat:[1,5],relax:5,relev:4,remain:7,remaind:0,remov:2,reorder:1,repeat:5,replac:[0,9],repo:0,repositori:[2,3],repositoryy:5,repr:5,repres:[1,4,5,7,9],reproduc:[2,9],request:[0,1,4,7,8,9],requir:[0,1,5,6,7,8],rescal:[4,6],rescaled_data:4,research:0,reserv:9,reset:8,reshap:[4,5],resid:4,resolut:[1,7],resolution_chart:9,resort:1,respect:[1,3,4,5,7,9],rest:5,restart:5,restor:5,resul:[1,5],result:[1,2,3,4,5,6,7,8,9],ret:0,retain:9,return_al:5,revers:[1,5],rewritten:5,rgensen:5,right:[1,4,5,9],rightarrow:5,ring:2,ringremov:7,rof:5,roi:[4,7],roll:7,root:[4,5],rosenbrock:5,rotat:[1,2,3,6],rotation_axis_direct:1,rotation_axis_posit:1,round:9,routin:[5,8],row:[0,1,3,4,5],row_wise_compat:5,royal:5,royalsocietypublish:5,rsta:[2,5],rule:5,run:[0,1,5,6,7,8],rvert_:5,ryan:5,s10107:5,s10589:5,s10851:5,saddl:5,sai:5,salt:9,salt_vs_pepp:9,same:[0,1,4,5,6,7,9],sampl:[3,5],sapyb:[1,5],satisfi:5,save:[3,4,5,9],savefig:9,scalar:[1,5,6],scale:[2,4,5,7,9],scaledfunct:5,scaledoper:5,scaleoffset:4,scan:[3,7],scatter:[3,5],schemat:9,schonlieb:5,scienc:5,scikit:9,scikit_random_nois:9,scipi:5,screen:5,script:0,search:[7,9],search_rang:7,second:[3,5,7,9],secondli:2,section:[4,5],see:[0,1,5,6,7,9],seed:[1,5,9],select:[3,4,8,9],selector:9,self:[0,1,5,6,8],sensibl:4,separ:[0,5,9],sequenti:[1,9],serial:5,serv:0,server:0,servic:9,set:[0,1,2,4,5,6,7,8],set_:0,set_angl:[1,6],set_channel:[1,6],set_fft_ord:8,set_filt:8,set_filter_inplac:8,set_gamma_fconj:5,set_gamma_g:5,set_image_geometri:8,set_input:[1,6,7,8],set_label:1,set_norm:5,set_num_thread:5,set_panel:[1,6],set_relaxation_paramet:5,set_split_process:[0,8],set_step_s:5,set_suppress_evalu:5,set_up:[4,5],setattr:5,setlevel:7,setter:2,sever:7,sgn:5,shall:9,shape:[0,1,4,5,9],share:5,sharp:7,shepp:8,shinkoper:5,shortcut:4,shorter:5,should:[0,1,4,5,6,7,8,9],should_stop:5,show1d:2,show2d:2,show:9,show_geometri:2,shown:9,shrinkag:5,siam:5,siddon:6,side:7,sigma:[5,7],sigma_:5,sign:[1,5,9],signal:9,signatur:[5,6],signific:3,simpl:[0,2,6,8],simple_phantom_2d:9,simpli:3,simplifi:5,simul:[2,3,5],simulated_cone_beam_data:[8,9],simulated_parallel_beam_data:[8,9],simulated_sphere_volum:9,simultan:5,singl:[1,3,4,5,7,8,9],singular:5,sinogram:[1,7],sirf:5,sirt:2,size:[0,1,4,5,6,7,9],skimag:9,skip:4,slanei:5,slice:[1,2,3,4,7,8],slice_index:7,slice_list:9,slice_metadata:4,slice_numb:9,slicer:2,slices_per_chunk:[0,8],slider:9,slight:7,small:[0,5,6,9],smooth:[2,6],smoothmixedl21norm:5,soc:2,societi:5,softwar:[0,5,9],softx:6,sol:[5,6],solut:[3,5,6],solv:[2,3,5,9],some:[5,7],some_data:1,someth:4,soon:5,sop:5,sort:1,sourc:[1,2,3,4,5,6,7,8],source_posit:1,source_sel:4,space:[5,6],spacechannel:5,spars:5,sparsefinitedifferenceoper:5,spatial:[1,5,7],spdhg:2,special:[5,7,9],special_valu:7,specif:[0,4,5,9],specifi:[1,4,5,7,9],speckl:9,spectral:[2,3,5],sphere:9,sphinx:0,split:[5,8],springer:[5,8],sqrt:[1,5,6,7],squar:[1,2,3,9],squared_norm:1,stabl:[4,7,9],stack:[4,7],stage:3,stagger:1,standard:[1,3,4,7,8,9],stanford:5,start:[0,4,5,7,9],statement:7,stationari:3,statist:8,statu:5,std:7,step:[0,3,4,5,6,7],step_siz:5,stephen:5,sting:1,stochast:5,stop:[5,6,7],store:[0,1,5],store_output:1,str:[1,4,5,6,7,9],strategi:5,strict:9,strictli:5,stride:1,string:[1,4,5,6,7,8,9],stripe:7,strong_convexity_const:[5,6],strongli:[5,6],structur:5,style:[0,7],sub:6,subclass:[1,4,5],subject:5,submodul:0,subplot:9,subproblem:5,subsequ:5,subset:5,substitut:9,subtract:[1,5],suffici:3,suit:3,suitabl:[0,1,7],sum:[1,5],sum_:5,sumfunct:5,sumscalarfunct:5,sup:[5,6],support:[5,7],suppress:[0,1,5,6,7,8,9],suppress_evalu:5,sure:[0,5],swap:5,symmetr:[5,7],symmetrisedgradientoper:5,sync:5,synchrotron:3,synchrotron_parallel_beam_data:9,syntax:0,system:[1,2,3,5],system_descript:0,tabul:5,take:[1,4,5,7,8],target:[0,7],task:6,tau:[5,6],tau_:5,team:9,teboul:5,techniqu:[3,5],tempor:[5,6],temporari:8,temporarili:9,term:[3,5,6],test:[0,2,3,5],testdata:9,text:[0,4,5],textbf:5,tgv:6,than:[4,5,6,7,8],thei:[0,1,5,7,9],them:[4,5,9],theme:0,theoret:7,theori:9,therefor:[1,5,6],theta:5,theta_:5,thi:[0,1,3,4,5,6,7,8,9],thieleman:5,thoma:5,those:1,thread:[1,5],three:[3,5],threshold:[5,7],threshold_factor:7,threshold_valu:7,through:[4,9],tiff:[2,9],tiffstackread:4,tiffwrit:4,tigr:[1,2,3,7,8],tikhonov:[3,5],tild:[3,5],time:[0,3,5,8,9],tip:5,titl:9,tmp:5,tmp_nexu:4,tnv:6,tofil:4,togeth:[4,7],toggl:5,toler:[5,6,7],tomograph:[1,2,5],tomographi:[2,5,8],tomographicimag:[0,2],tomophantom:[2,3],toni:5,too:8,tool:3,toolbox:[6,8],toolkit:[3,6],top:[1,9],tort:9,tot_slic:0,total:[0,2],totalvari:[5,6],tqdm:0,trade:5,trajectori:[3,6],tran:2,transact:5,transform:8,translat:[5,7],translatefunct:5,transmiss:[2,3],transmissionabsorptionconvert:7,transpos:[4,5],treat:5,trigger:5,trivial:2,truedivis:5,tune:[7,8],tupl:[1,4,5,7,9],turner:5,two:[1,5,7,8,9],txm:4,txrm:4,type:[0,1,3,4,5,6,7,8,9],typic:[3,5],uint16:4,uint8:4,unari:[1,5],unary_oper:[1,5],unbin:7,unchang:5,uncompress:4,under:[0,5],underbrac:5,underscor:0,underset:[3,5,6],understand:0,unexpect:9,uniform:[1,9],uniqu:[1,9],unit16:4,unit:[0,1,5],univers:0,unknown:[3,5],unless:[0,7],unmask:7,unpack:4,unreli:7,unsign:[4,9],until:5,updat:[0,5,7,8],update_object:5,update_objective_interv:5,update_previous_solut:5,update_step_s:5,upper:[5,7,9],url:5,usag:[5,6,7],use:[0,1,2,3,5,6,7,8,9],used:[0,1,2,3,4,5,6,7,8,9],useful:[1,2,5],user:[0,1,3,5,7,8],uses:[5,6,7,9],using:[0,1,3,4,5,6,7,8,9],util:[2,3,5,8],vai:5,valid:9,valu:[1,4,5,6,7,8,9],valueerror:[0,5],vararg:5,variabl:5,varianc:9,variat:2,variou:9,vaue:7,vector:[1,5,7],vectordata:2,verbos:[0,5,8],verbose_output:5,veri:5,versatil:[2,5],version:[0,5,6],vertic:[1,4,7],via:5,view:[0,1,3,9],view_dist:9,vision:5,visualis:2,vmatrix:[3,5],volum:[0,1,2,4,5,6,7,8],voxel:[5,6],voxel_num_i:1,voxel_num_x:1,voxel_num_z:1,voxel_size_i:1,voxel_size_x:[1,6],voxel_size_z:1,wai:[0,1,5,9],want:[1,5],warm:5,warm_start:5,warn:7,warr:5,warranti:[0,4,9],weak:5,web:5,websit:2,weight:[5,6],weightedl2normsquar:5,well:[2,3,5],were:7,wether:5,what:[0,4,5],when:[0,3,4,5,6,9],where:[1,3,5,7,9],wherea:5,whether:[1,4,5,6,9],which:[1,3,4,5,7,9],whichev:[1,8],white:4,white_level:7,whole:1,widget:9,width:[7,8,9],william:5,window:7,wise:[1,5],wither:5,within:0,without:[0,4,5,7,9],wname:7,word:0,work:[0,1,3,4,5],would:[4,5],wrap:[5,7],wright:5,write:[0,2,3,5],writer:[2,3],written:[3,4,5,6,9],wrt:5,www:0,x_0:5,x_1:5,x_axis_label:9,x_i:5,x_k:5,x_n:5,x_old:5,xcorrel:7,xiaoqun:5,xin:5,xremovestripesvert:7,xshape:5,xtekct:4,y_axis_label:9,year:0,yet:5,yield:[5,8],yml:0,you:[0,2,4,7],your:[0,6,7,8],yyyi:0,zeiss:2,zeissdataread:4,zero:[1,5,7],zerofunct:5,zerooper:5,zhang:5,zhu:5},titles:["Developers\u2019 Guide","Framework","Welcome to CIL\u2019s documentation!","Introduction","Read/ write AcquisitionData and ImageData","Optimisation framework","CIL Plugins","Processors","Recon","Utilities"],titleterms:{"class":5,"function":[5,6],"new":0,Use:1,absorpt:7,acquisitiondata:[1,4],acquisitiongeometri:1,algorithm:5,analyt:8,astra:6,base:5,beam:[3,8],binner:7,block:[3,5],blockdatacontain:[1,5],blockgeometri:1,box:5,build:0,ccpi:6,centr:7,cgl:5,channel:3,cil:[0,2,6],cite:2,composit:5,cone2d:1,cone3d:1,cone:[3,8],configur:1,contact:2,contain:1,content:2,contribut:0,convent:0,convert:7,corrector:7,creator:0,data:[1,3,7,9],datacontain:1,dataord:1,dataprocessor:1,dataset:9,demo:2,develop:0,diamond:9,displai:9,docstr:0,document:[0,2],exampl:[0,2],fan:3,fanbeam:1,fbp:[6,8],fdk:8,file:4,fista:5,framework:[1,3,5],from:[0,7,9],gener:7,geometri:[1,3,8,9],gradientoper:5,guid:0,guidelin:0,hdf5:4,imag:9,imagedata:[1,4],imagegeometri:1,index:[2,9],indic:5,interact:9,introduct:3,islic:9,ista:5,kullbackleibl:5,l11:5,l21:5,ladmm:5,least:5,light:9,link:9,link_islic:9,local:0,manipul:7,mask:7,method:0,metric:9,mix:5,multi:3,nexu:4,nikon:4,norm:5,normalis:7,object:[0,9],oper:[5,6],optimis:5,other:[0,6],padder:7,parallel2d:1,parallel3d:1,parallel:[3,8],pdhg:5,plugin:6,pre:7,processor:7,project:6,properti:0,qualiti:9,raw:4,read:4,reader:4,recon:8,reconstruct:8,reconstructor:8,refer:5,regularis:6,remov:7,render:0,ring:7,rotat:7,set:9,setter:0,show1d:9,show2d:9,show_geometri:9,simpl:5,simul:9,sirt:5,slice:9,slicer:7,smooth:5,softwar:2,sourc:[0,9],spdhg:5,squar:5,system:9,test:9,thi:2,tiff:4,tigr:6,todo:5,tomophantom:6,total:[5,6],transmiss:7,trivial:5,util:[4,9],variat:[5,6],vectordata:1,visualis:9,volum:9,welcom:2,work:2,write:4,writer:4,zeiss:4}}) \ No newline at end of file +Search.setIndex({docnames:["developer_guide","framework","index","introduction","io","optimisation","plugins","processors","recon","utilities"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,"sphinxcontrib.bibtex":9,sphinx:56},filenames:["developer_guide.rst","framework.rst","index.rst","introduction.rst","io.rst","optimisation.rst","plugins.rst","processors.rst","recon.rst","utilities.rst"],objects:{"cil.framework":{AcquisitionData:[1,0,1,""],AcquisitionGeometry:[1,0,1,""],BlockDataContainer:[5,0,1,""],BlockGeometry:[1,0,1,""],DataContainer:[1,0,1,""],DataOrder:[1,0,1,""],DataProcessor:[1,0,1,""],ImageData:[1,0,1,""],ImageGeometry:[1,0,1,""],Processor:[1,0,1,""],VectorData:[1,0,1,""]},"cil.framework.AcquisitionData":{as_array:[1,1,1,""],clone:[1,1,1,""],copy:[1,1,1,""],dot:[1,1,1,""],dtype:[1,1,1,""],exp:[1,1,1,""],fill:[1,1,1,""],get_data_axes_order:[1,1,1,""],get_dimension_axis:[1,1,1,""],get_slice:[1,1,1,""],log:[1,1,1,""],max:[1,1,1,""],mean:[1,1,1,""],min:[1,1,1,""],ndim:[1,1,1,""],norm:[1,1,1,""],number_of_dimensions:[1,1,1,""],partition:[1,1,1,""],reorder:[1,1,1,""],sapyb:[1,1,1,""],shape:[1,1,1,""],size:[1,1,1,""],squared_norm:[1,1,1,""],sum:[1,1,1,""]},"cil.framework.AcquisitionGeometry":{allocate:[1,1,1,""],create_Cone2D:[1,1,1,""],create_Cone3D:[1,1,1,""],create_Parallel2D:[1,1,1,""],create_Parallel3D:[1,1,1,""],get_ImageGeometry:[1,1,1,""],get_slice:[1,1,1,""],set_angles:[1,1,1,""],set_channels:[1,1,1,""],set_labels:[1,1,1,""],set_panel:[1,1,1,""]},"cil.framework.BlockDataContainer":{__iadd__:[5,1,1,""],__idiv__:[5,1,1,""],__imul__:[5,1,1,""],__isub__:[5,1,1,""],__iter__:[5,1,1,""],__itruediv__:[5,1,1,""],__neg__:[5,1,1,""],__radd__:[5,1,1,""],__rdiv__:[5,1,1,""],__rmul__:[5,1,1,""],__rpow__:[5,1,1,""],__rsub__:[5,1,1,""],__rtruediv__:[5,1,1,""],__weakref__:[5,2,1,""],add:[5,1,1,""],axpby:[5,1,1,""],binary_operations:[5,1,1,""],copy:[5,1,1,""],divide:[5,1,1,""],is_compatible:[5,1,1,""],maximum:[5,1,1,""],minimum:[5,1,1,""],multiply:[5,1,1,""],next:[5,1,1,""],power:[5,1,1,""],sapyb:[5,1,1,""],subtract:[5,1,1,""],unary_operations:[5,1,1,""]},"cil.framework.BlockGeometry":{allocate:[1,1,1,""],get_item:[1,1,1,""]},"cil.framework.DataContainer":{as_array:[1,1,1,""],clone:[1,1,1,""],copy:[1,1,1,""],dot:[1,1,1,""],dtype:[1,1,1,""],exp:[1,1,1,""],fill:[1,1,1,""],get_data_axes_order:[1,1,1,""],get_dimension_axis:[1,1,1,""],get_slice:[1,1,1,""],log:[1,1,1,""],max:[1,1,1,""],mean:[1,1,1,""],min:[1,1,1,""],ndim:[1,1,1,""],norm:[1,1,1,""],number_of_dimensions:[1,1,1,""],reorder:[1,1,1,""],sapyb:[1,1,1,""],shape:[1,1,1,""],size:[1,1,1,""],squared_norm:[1,1,1,""],sum:[1,1,1,""]},"cil.framework.DataProcessor":{check_input:[1,1,1,""],get_input:[1,1,1,""],get_output:[1,1,1,""],set_input:[1,1,1,""]},"cil.framework.ImageData":{apply_circular_mask:[1,1,1,""],as_array:[1,1,1,""],clone:[1,1,1,""],copy:[1,1,1,""],dot:[1,1,1,""],dtype:[1,1,1,""],exp:[1,1,1,""],fill:[1,1,1,""],get_data_axes_order:[1,1,1,""],get_dimension_axis:[1,1,1,""],get_slice:[1,1,1,""],log:[1,1,1,""],max:[1,1,1,""],mean:[1,1,1,""],min:[1,1,1,""],ndim:[1,1,1,""],norm:[1,1,1,""],number_of_dimensions:[1,1,1,""],reorder:[1,1,1,""],sapyb:[1,1,1,""],shape:[1,1,1,""],size:[1,1,1,""],squared_norm:[1,1,1,""],sum:[1,1,1,""]},"cil.framework.ImageGeometry":{allocate:[1,1,1,""],clone:[1,1,1,""],copy:[1,1,1,""],get_slice:[1,1,1,""]},"cil.framework.Processor":{check_input:[1,1,1,""],get_input:[1,1,1,""],get_output:[1,1,1,""],set_input:[1,1,1,""]},"cil.framework.VectorData":{as_array:[1,1,1,""],clone:[1,1,1,""],copy:[1,1,1,""],dot:[1,1,1,""],dtype:[1,1,1,""],exp:[1,1,1,""],fill:[1,1,1,""],get_data_axes_order:[1,1,1,""],get_dimension_axis:[1,1,1,""],get_slice:[1,1,1,""],log:[1,1,1,""],max:[1,1,1,""],mean:[1,1,1,""],min:[1,1,1,""],ndim:[1,1,1,""],norm:[1,1,1,""],number_of_dimensions:[1,1,1,""],reorder:[1,1,1,""],sapyb:[1,1,1,""],shape:[1,1,1,""],size:[1,1,1,""],squared_norm:[1,1,1,""],sum:[1,1,1,""]},"cil.io":{NEXUSDataReader:[4,0,1,""],NEXUSDataWriter:[4,0,1,""],NikonDataReader:[4,0,1,""],RAWFileWriter:[4,0,1,""],TIFFStackReader:[4,0,1,""],TIFFWriter:[4,0,1,""],ZEISSDataReader:[4,0,1,""]},"cil.io.NEXUSDataReader":{get_data_offset:[4,1,1,""],get_data_scale:[4,1,1,""],get_geometry:[4,1,1,""],load_data:[4,1,1,""],read:[4,1,1,""],read_as_original:[4,1,1,""],set_up:[4,1,1,""]},"cil.io.NEXUSDataWriter":{set_up:[4,1,1,""],write:[4,1,1,""]},"cil.io.NikonDataReader":{get_geometry:[4,1,1,""],get_roi:[4,1,1,""],load_projections:[4,1,1,""],read:[4,1,1,""]},"cil.io.RAWFileWriter":{write:[4,1,1,""]},"cil.io.TIFFStackReader":{read:[4,1,1,""],read_as_AcquisitionData:[4,1,1,""],read_as_ImageData:[4,1,1,""],read_rescaled:[4,1,1,""],read_scale_offset:[4,1,1,""]},"cil.io.TIFFWriter":{write:[4,1,1,""]},"cil.io.ZEISSDataReader":{get_geometry:[4,1,1,""],get_metadata:[4,1,1,""],read:[4,1,1,""],set_up:[4,1,1,""],slice_metadata:[4,1,1,""]},"cil.io.utilities":{HDF5_utilities:[4,0,1,""]},"cil.io.utilities.HDF5_utilities":{get_dataset_metadata:[4,1,1,""],print_metadata:[4,1,1,""],read:[4,1,1,""],read_to:[4,1,1,""]},"cil.optimisation.algorithms":{Algorithm:[5,0,1,""],CGLS:[5,0,1,""],FISTA:[5,0,1,""],GD:[5,0,1,""],ISTA:[5,0,1,""],LADMM:[5,0,1,""],PDHG:[5,0,1,""],SIRT:[5,0,1,""],SPDHG:[5,0,1,""]},"cil.optimisation.algorithms.Algorithm":{get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.algorithms.CGLS":{flag:[5,1,1,""],get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.algorithms.FISTA":{__delattr__:[5,1,1,""],__dir__:[5,1,1,""],__eq__:[5,1,1,""],__format__:[5,1,1,""],__ge__:[5,1,1,""],__getattribute__:[5,1,1,""],__gt__:[5,1,1,""],__hash__:[5,1,1,""],__init__:[5,1,1,""],__init_subclass__:[5,1,1,""],__iter__:[5,1,1,""],__le__:[5,1,1,""],__lt__:[5,1,1,""],__ne__:[5,1,1,""],__new__:[5,1,1,""],__next__:[5,1,1,""],__reduce__:[5,1,1,""],__reduce_ex__:[5,1,1,""],__repr__:[5,1,1,""],__setattr__:[5,1,1,""],__sizeof__:[5,1,1,""],__str__:[5,1,1,""],__subclasshook__:[5,1,1,""],__weakref__:[5,2,1,""],get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_step_size:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.algorithms.GD":{armijo_rule:[5,1,1,""],get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.algorithms.ISTA":{__delattr__:[5,1,1,""],__dir__:[5,1,1,""],__eq__:[5,1,1,""],__format__:[5,1,1,""],__ge__:[5,1,1,""],__getattribute__:[5,1,1,""],__gt__:[5,1,1,""],__hash__:[5,1,1,""],__init__:[5,1,1,""],__init_subclass__:[5,1,1,""],__iter__:[5,1,1,""],__le__:[5,1,1,""],__lt__:[5,1,1,""],__ne__:[5,1,1,""],__new__:[5,1,1,""],__next__:[5,1,1,""],__reduce__:[5,1,1,""],__reduce_ex__:[5,1,1,""],__repr__:[5,1,1,""],__setattr__:[5,1,1,""],__sizeof__:[5,1,1,""],__str__:[5,1,1,""],__subclasshook__:[5,1,1,""],__weakref__:[5,2,1,""],get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_step_size:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.algorithms.LADMM":{get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.algorithms.PDHG":{check_convergence:[5,1,1,""],get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_gamma_fconj:[5,1,1,""],set_gamma_g:[5,1,1,""],set_step_sizes:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],update_step_sizes:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.algorithms.SIRT":{get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_relaxation_parameter:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.algorithms.SPDHG":{get_last_loss:[5,1,1,""],get_last_objective:[5,1,1,""],get_output:[5,1,1,""],is_provably_convergent:[5,1,1,""],iterations:[5,1,1,""],loss:[5,1,1,""],max_iteration:[5,1,1,""],max_iteration_stop_criterion:[5,1,1,""],next:[5,1,1,""],objective:[5,1,1,""],run:[5,1,1,""],set_up:[5,1,1,""],should_stop:[5,1,1,""],update:[5,1,1,""],update_objective:[5,1,1,""],verbose_output:[5,1,1,""]},"cil.optimisation.functions":{BlockFunction:[5,0,1,""],ConstantFunction:[5,0,1,""],Function:[5,0,1,""],IndicatorBox:[5,0,1,""],KullbackLeibler:[5,0,1,""],L1Norm:[5,0,1,""],L2NormSquared:[5,0,1,""],LeastSquares:[5,0,1,""],MixedL11Norm:[5,0,1,""],MixedL21Norm:[5,0,1,""],OperatorCompositionFunction:[5,0,1,""],Rosenbrock:[5,0,1,""],ScaledFunction:[5,0,1,""],SmoothMixedL21Norm:[5,0,1,""],SumFunction:[5,0,1,""],SumScalarFunction:[5,0,1,""],TotalVariation:[5,0,1,""],TranslateFunction:[5,0,1,""],WeightedL2NormSquared:[5,0,1,""],ZeroFunction:[5,0,1,""]},"cil.optimisation.functions.BlockFunction":{L:[5,1,1,""],__call__:[5,1,1,""],__init__:[5,1,1,""],__rmul__:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.ConstantFunction":{L:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.Function":{L:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.IndicatorBox":{L:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],num_threads:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""],set_num_threads:[5,1,1,""],set_suppress_evaluation:[5,1,1,""]},"cil.optimisation.functions.KullbackLeibler":{L:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.L1Norm":{L:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.L2NormSquared":{L:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.LeastSquares":{L:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.MixedL11Norm":{L:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.MixedL21Norm":{L:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.OperatorCompositionFunction":{L:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.Rosenbrock":{L:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.ScaledFunction":{L:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.SmoothMixedL21Norm":{L:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.SumFunction":{L:[5,1,1,""],Lmax:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.SumScalarFunction":{L:[5,1,1,""],Lmax:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.TotalVariation":{L:[5,1,1,""],calculate_Lipschitz:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.TranslateFunction":{L:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.WeightedL2NormSquared":{L:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.functions.ZeroFunction":{L:[5,1,1,""],centered_at:[5,1,1,""],convex_conjugate:[5,1,1,""],gradient:[5,1,1,""],proximal:[5,1,1,""],proximal_conjugate:[5,1,1,""]},"cil.optimisation.operators":{BlockOperator:[5,0,1,""],ChannelwiseOperator:[5,0,1,""],CompositionOperator:[5,0,1,""],DiagonalOperator:[5,0,1,""],FiniteDifferenceOperator:[5,0,1,""],GradientOperator:[5,0,1,""],IdentityOperator:[5,0,1,""],LinearOperator:[5,0,1,""],MaskOperator:[5,0,1,""],MatrixOperator:[5,0,1,""],Operator:[5,0,1,""],ScaledOperator:[5,0,1,""],SparseFiniteDifferenceOperator:[5,0,1,""],SymmetrisedGradientOperator:[5,0,1,""],ZeroOperator:[5,0,1,""]},"cil.optimisation.operators.BlockOperator":{T:[5,1,1,""],__getitem__:[5,1,1,""],__init__:[5,1,1,""],__rmul__:[5,1,1,""],adjoint:[5,1,1,""],column_wise_compatible:[5,1,1,""],direct:[5,1,1,""],domain_geometry:[5,1,1,""],get_as_list:[5,1,1,""],get_item:[5,1,1,""],get_norms_as_list:[5,1,1,""],get_output_shape:[5,1,1,""],is_linear:[5,1,1,""],norm:[5,1,1,""],range_geometry:[5,1,1,""],row_wise_compatible:[5,1,1,""],set_norms:[5,1,1,""]},"cil.optimisation.operators.ChannelwiseOperator":{__init__:[5,1,1,""],adjoint:[5,1,1,""],calculate_norm:[5,1,1,""],direct:[5,1,1,""]},"cil.optimisation.operators.CompositionOperator":{__init__:[5,1,1,""],calculate_norm:[5,1,1,""],direct:[5,1,1,""],is_linear:[5,1,1,""]},"cil.optimisation.operators.DiagonalOperator":{__init__:[5,1,1,""],adjoint:[5,1,1,""],calculate_norm:[5,1,1,""],direct:[5,1,1,""]},"cil.optimisation.operators.FiniteDifferenceOperator":{adjoint:[5,1,1,""],direct:[5,1,1,""]},"cil.optimisation.operators.GradientOperator":{adjoint:[5,1,1,""],calculate_norm:[5,1,1,""],direct:[5,1,1,""]},"cil.optimisation.operators.IdentityOperator":{__init__:[5,1,1,""],adjoint:[5,1,1,""],calculate_norm:[5,1,1,""],direct:[5,1,1,""]},"cil.optimisation.operators.LinearOperator":{PowerMethod:[5,1,1,""],__init__:[5,1,1,""],adjoint:[5,1,1,""],calculate_norm:[5,1,1,""],dot_test:[5,1,1,""],is_linear:[5,1,1,""]},"cil.optimisation.operators.MaskOperator":{__init__:[5,1,1,""]},"cil.optimisation.operators.MatrixOperator":{__init__:[5,1,1,""],adjoint:[5,1,1,""],direct:[5,1,1,""]},"cil.optimisation.operators.Operator":{__init__:[5,1,1,""],__neg__:[5,1,1,""],__rmul__:[5,1,1,""],__sub__:[5,1,1,""],__weakref__:[5,2,1,""],calculate_norm:[5,1,1,""],direct:[5,1,1,""],domain_geometry:[5,1,1,""],is_linear:[5,1,1,""],norm:[5,1,1,""],range_geometry:[5,1,1,""],set_norm:[5,1,1,""]},"cil.optimisation.operators.ScaledOperator":{__init__:[5,1,1,""],adjoint:[5,1,1,""],direct:[5,1,1,""],is_linear:[5,1,1,""],norm:[5,1,1,""]},"cil.optimisation.operators.SparseFiniteDifferenceOperator":{direct:[5,1,1,""]},"cil.optimisation.operators.SymmetrisedGradientOperator":{adjoint:[5,1,1,""],direct:[5,1,1,""]},"cil.optimisation.operators.ZeroOperator":{__init__:[5,1,1,""],adjoint:[5,1,1,""],calculate_norm:[5,1,1,""],direct:[5,1,1,""]},"cil.plugins.TomoPhantom":{get_ImageData:[6,3,1,""]},"cil.plugins.astra":{FBP:[6,0,1,""],ProjectionOperator:[6,0,1,""]},"cil.plugins.astra.FBP":{get_output:[6,1,1,""],set_input:[6,1,1,""]},"cil.plugins.ccpi_regularisation.functions":{FGP_TV:[6,0,1,""],FGP_dTV:[6,0,1,""],TGV:[6,0,1,""],TNV:[6,0,1,""]},"cil.plugins.ccpi_regularisation.functions.FGP_dTV":{__call__:[6,1,1,""],__init__:[6,1,1,""],__rmul__:[6,1,1,""],convex_conjugate:[6,1,1,""]},"cil.plugins.ccpi_regularisation.functions.TGV":{__call__:[6,1,1,""],__init__:[6,1,1,""],__rmul__:[6,1,1,""],convex_conjugate:[6,1,1,""]},"cil.plugins.ccpi_regularisation.functions.TNV":{__call__:[6,1,1,""],__init__:[6,1,1,""],__rmul__:[6,1,1,""],check_input:[6,1,1,""],convex_conjugate:[6,1,1,""]},"cil.plugins.tigre":{FBP:[6,0,1,""],ProjectionOperator:[6,0,1,""]},"cil.plugins.tigre.FBP":{get_output:[6,1,1,""],set_input:[6,1,1,""]},"cil.processors":{AbsorptionTransmissionConverter:[7,0,1,""],Binner:[7,0,1,""],CentreOfRotationCorrector:[7,0,1,""],MaskGenerator:[7,0,1,""],Masker:[7,0,1,""],Normaliser:[7,0,1,""],Padder:[7,0,1,""],RingRemover:[7,0,1,""],Slicer:[7,0,1,""],TransmissionAbsorptionConverter:[7,0,1,""]},"cil.processors.AbsorptionTransmissionConverter":{get_output:[7,1,1,""],set_input:[7,1,1,""]},"cil.processors.Binner":{get_output:[7,1,1,""],process:[7,1,1,""],set_input:[7,1,1,""]},"cil.processors.CentreOfRotationCorrector":{get_output:[7,1,1,""],image_sharpness:[7,1,1,""],set_input:[7,1,1,""],xcorrelation:[7,1,1,""]},"cil.processors.MaskGenerator":{get_output:[7,1,1,""],mean:[7,1,1,""],median:[7,1,1,""],quantile:[7,1,1,""],set_input:[7,1,1,""],special_values:[7,1,1,""],threshold:[7,1,1,""]},"cil.processors.Masker":{get_output:[7,1,1,""],interpolate:[7,1,1,""],mean:[7,1,1,""],median:[7,1,1,""],set_input:[7,1,1,""],value:[7,1,1,""]},"cil.processors.Normaliser":{estimate_normalised_error:[7,1,1,""],get_output:[7,1,1,""],set_input:[7,1,1,""]},"cil.processors.Padder":{constant:[7,1,1,""],edge:[7,1,1,""],get_output:[7,1,1,""],linear_ramp:[7,1,1,""],reflect:[7,1,1,""],set_input:[7,1,1,""],symmetric:[7,1,1,""],wrap:[7,1,1,""]},"cil.processors.RingRemover":{get_output:[7,1,1,""],set_input:[7,1,1,""],xRemoveStripesVertical:[7,1,1,""]},"cil.processors.Slicer":{get_output:[7,1,1,""],process:[7,1,1,""],set_input:[7,1,1,""]},"cil.processors.TransmissionAbsorptionConverter":{get_output:[7,1,1,""],set_input:[7,1,1,""]},"cil.recon":{FBP:[8,0,1,""],FDK:[8,0,1,""]},"cil.recon.FBP":{get_filter_array:[8,1,1,""],reset:[8,1,1,""],run:[8,1,1,""],set_fft_order:[8,1,1,""],set_filter:[8,1,1,""],set_filter_inplace:[8,1,1,""],set_image_geometry:[8,1,1,""],set_input:[8,1,1,""],set_split_processing:[8,1,1,""]},"cil.recon.FBP.FBP":{run:[0,1,1,""]},"cil.recon.FDK":{get_filter_array:[8,1,1,""],reset:[8,1,1,""],run:[8,1,1,""],set_fft_order:[8,1,1,""],set_filter:[8,1,1,""],set_filter_inplace:[8,1,1,""],set_image_geometry:[8,1,1,""],set_input:[8,1,1,""]},"cil.utilities":{quality_measures:[9,4,0,"-"]},"cil.utilities.dataexample":{SIMULATED_CONE_BEAM_DATA:[9,0,1,"id0"],SIMULATED_PARALLEL_BEAM_DATA:[9,0,1,""],SYNCHROTRON_PARALLEL_BEAM_DATA:[9,0,1,""],TestData:[9,0,1,""]},"cil.utilities.dataexample.SIMULATED_CONE_BEAM_DATA":{get:[9,1,1,"id1"]},"cil.utilities.dataexample.SIMULATED_PARALLEL_BEAM_DATA":{get:[9,1,1,""]},"cil.utilities.dataexample.SYNCHROTRON_PARALLEL_BEAM_DATA":{get:[9,1,1,""]},"cil.utilities.dataexample.TestData":{load:[9,1,1,""],random_noise:[9,1,1,""],scikit_random_noise:[9,1,1,""]},"cil.utilities.display":{show1D:[9,0,1,""],show2D:[9,0,1,""],show_geometry:[9,0,1,""]},"cil.utilities.display.show1D":{figure:[9,2,1,""],save:[9,1,1,""]},"cil.utilities.display.show2D":{save:[9,1,1,""]},"cil.utilities.display.show_geometry":{save:[9,1,1,""]},"cil.utilities.jupyter":{islicer:[9,0,1,""],link_islicer:[9,0,1,""]},"cil.utilities.quality_measures":{mae:[9,3,1,""],mse:[9,3,1,""],psnr:[9,3,1,""]}},objnames:{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","attribute","Python attribute"],"3":["py","function","Python function"],"4":["py","module","Python module"]},objtypes:{"0":"py:class","1":"py:method","2":"py:attribute","3":"py:function","4":"py:module"},terms:{"0000654846240296":5,"0005647295658866":5,"00186":5,"003":6,"005":7,"008":5,"008567":7,"010":5,"018":5,"0192":[2,5],"0193":[2,5],"020":5,"0251":5,"025129":6,"055010":6,"080716542":5,"09076934x":5,"100":[4,5,6],"1007":5,"1015":5,"1016":6,"1046":5,"1088":6,"1098":[2,5],"1102995080":5,"1109":5,"1137":5,"120":[5,7],"128":[6,7],"1321":5,"1364":[6,7],"145":5,"180":7,"183":5,"1887":8,"1976":6,"200":[4,7],"2001":5,"2008":8,"2009":5,"2010":5,"2011":5,"2016":5,"2017":8,"2018":[5,6],"2019":[5,6,9],"202":5,"2020":[2,5],"20200192":[2,5],"20200193":[2,5],"2021":[2,5],"2022":0,"2028250":5,"2057":6,"20channel":5,"2204":5,"2419":5,"2434":5,"255":9,"256":9,"2783":5,"2808":5,"2_2":[3,5],"2beta":5,"2ca":5,"2pi":6,"2wx":5,"300":4,"360":6,"360deg":7,"377":5,"379":5,"381":5,"400":5,"430":5,"48289":8,"4t_":5,"500":9,"550":4,"7142857142857":4,"9225":5,"9780898719277":5,"9ntwu9megq":2,"abstract":5,"boolean":[1,5,6,7,8,9],"byte":5,"case":[1,4,5,7,9],"class":[0,1,2,4,6,7,8,9],"default":[0,1,4,5,6,7,8,9],"final":5,"float":[1,4,5,6,7,8,9],"function":[1,2,3,4,8,9],"import":[4,5,6,7,8,9],"int":[0,1,4,5,6,7,8,9],"j\u00f8rgensen":2,"long":[1,5],"new":[1,2,5],"return":[0,1,4,5,6,7,8,9],"richt\u00e1rik":5,"sch\u00f6nlieb":5,"static":[1,4,5,7,9],"true":[1,4,5,6,7,8,9],"try":1,"var":9,"while":[2,5],AND:9,ARE:9,BUT:9,DLS:9,FOR:9,For:[0,1,2,4,5,6,7,9],IDEs:0,NOT:9,One:[7,9],SUCH:9,THE:9,The:[0,1,2,3,4,5,6,7,8,9],Then:5,There:1,These:[4,7],USE:9,Use:[0,2,5,9],Used:9,Uses:[5,7],Will:[1,9],With:[3,5],__array_priority__:5,__call__:[5,6],__delattr__:5,__dir__:5,__eq__:5,__format__:5,__ge__:5,__getattribute__:5,__getitem__:5,__gt__:5,__hash__:5,__iadd__:5,__idiv__:5,__imul__:5,__init__:[5,6],__init_subclass__:5,__isub__:5,__iter__:5,__itruediv__:5,__le__:5,__lt__:5,__mul__:5,__ne__:5,__neg__:5,__new__:5,__next__:5,__radd__:5,__rdiv__:5,__reduce__:5,__reduce_ex__:5,__repr__:5,__rmul__:[5,6],__rpow__:5,__rsub__:5,__rtruediv__:5,__setattr__:[1,5],__sizeof__:5,__str__:5,__sub__:5,__subclasscheck__:5,__subclasshook__:5,__weakref__:5,_as_gen:9,_dual:[5,6],_gradient:5,_po_class:0,_pre_filt:0,_process_chunk:0,_setup_po_for_chunk:0,_slices_per_chunk:0,abc:5,abcmeta:5,abl:[3,5,6],about:[4,7],about_original_data:4,abov:[2,3,5,6,9],abs:[1,5,7],absolut:[5,7,9],absorpt:2,absorptiontransmissionconvert:7,abspath:4,acceler:[3,5,7],accept:[0,1,4,5,7],access:5,accord:1,accordingli:5,accumul:1,accur:[5,6,8],accuraci:7,achiev:[3,5,7],acquir:[3,5],acquisit:[1,2,3,4,5,6,8,9],acquisition_geometri:[0,4,6,9],acquisitiondata:[2,3,5,7,8,9],acquisitiondatasetn:7,acquisitiongeomerti:1,acquisitiongeometri:[2,3,4,5,6,7,9],across:[6,7],act:5,activ:0,actor:[3,5],actual:[0,5],ad1:4,adapt:9,add:[0,1,5,6,9],added:[5,6],addit:[0,1,5,7,8,9],adher:0,adjoint:[0,5,6],adjoint_weight:6,adjust:4,admm:5,advanc:[0,3,5],advis:9,after:[5,7,9],ag1:4,against:9,agre:0,aim:2,algebr:[1,5],algebra:[1,5,8],algorithm:[2,3,6,7,8],alia:[1,4,5,9],align:[1,5,7],all:[0,1,4,5,6,7,8,9],alloc:[0,1,5,8],allow:[1,3,4,5,6,7,8,9],alon:9,along:[1,4,5,7,9],alpha:[3,5,6],alphabet:4,also:[0,2,3,4,5],altern:[4,5],although:5,alwai:[4,5],ametova:5,amir:5,amount:[3,5,9],analyt:[2,5],ang_tol:7,angl:[1,4,6,7],angle_unit:[1,6],angular:[1,6,7],ani:[0,1,3,5,6,9],anisotrop:[5,6],anoth:5,antonin:5,aop:5,apach:0,apart:7,api:9,appear:7,append:5,appli:[1,3,4,5,6,7,8,9],applic:[0,5],apply_circular_mask:1,appropri:[0,1,5,6],approx:5,approxim:[4,6],arbitrari:5,area:[6,8],arg:[0,1,5,9],argmin:[3,5,6],argument:[0,1,5,9],aris:9,armijo:5,armijo_rul:5,around:5,arrai:[0,1,3,4,5,7,8,9],arrang:[3,4],artefact:1,articl:[2,6],artifact:7,arxiv:5,as_arrai:1,ascent:5,aspect:9,assembl:3,assign:7,assum:[5,9],astra:[1,2,3,7,8],asymmetr:7,asymptot:5,attribut:[1,3,4,7],augment:5,author:[0,9],auto:5,automat:7,avail:5,averag:[4,7],avinash:5,avoid:[5,7],axes:[1,4,7],axi:[1,4,7,9],axis_0:4,axis_1:4,axis_2:4,axis_label:[4,9],axis_labels_1:4,axis_labels_2:4,axis_nam:7,axis_name1:7,axis_name2:7,axpbi:[1,5],azimuth:9,b_i:5,back:[3,4,6,8,9],backend:[5,7,8],background:5,backproject:[5,8],backward:[1,4,5,6],backward_project:6,bar:5,base:[0,1,2,3,7,8,9],basi:0,basic:[1,2,4,5],basicconfig:7,batch:1,bdc1:[1,5],bdc2:[1,5],bdc:1,beam:[1,2,6,7,9],becaus:[5,9],beck:5,becom:5,been:[4,5,6,7],beer:7,befor:[4,5,7,9],begin:[0,3,5,7],behav:[1,5],behaviour:[4,5,7,9],being:[2,7,9],below:[3,5,7,9],berlin:8,best:[6,7],beta:5,betck:5,better:[3,5],between:[1,3,5,6,7,8],beyond:[3,9],bibian:5,big:5,bin:[4,7],binari:[1,4,9],binary_oper:[1,5],binner:2,binom:[3,5],biologi:5,bit:4,blob:[4,5,9],block:[1,2],blockdatacontain:[2,3,9],blockfunct:[3,5],blockgeometri:[2,3,5,6],blockoper:[3,5,6],blur:7,bmatrix:5,bnd_cond:5,boat:9,bool:[4,5,7,9],boolian:1,border:7,both:[1,2,3,5,7],bottom:[0,1],bound:5,boundari:[5,7],box:[2,9],broadcast:6,brows:4,build:[2,3,5],burca:5,busi:9,buzug:8,bypass:1,cach:5,calcul:[1,4,5,6,7,9],calculate_lipschitz:5,calculate_norm:5,call:[3,4,5,6,8],callback:5,camera:9,can:[0,1,2,3,4,5,6,7,8,9],cannot:9,cap:0,capabl:6,care:9,carola:5,cast:1,caus:[7,9],ccpi:[2,4],ccpi_regularis:6,cdot:5,ceil:[0,5],center:[3,5,7,9],center_i:1,center_x:1,center_z:1,centered_at:5,centr:[1,2,9],centreofrotationcorrector:7,cern:6,certain:5,cgl:[2,3],chambol:5,chan:5,chang:[0,4,5,6,9],channel:[1,2,5,6,7,9],channel_label:1,channelwiseoper:5,characterist:3,check:[1,4,5],check_converg:5,check_input:[1,6],choos:5,chosen:5,chunk:[0,4,8],cil:[1,3,4,5,7,8,9],cil_log_level:7,circ:5,circular:[1,3,6,8],clair:5,classmethod:9,clear:5,clearli:0,clip:9,clone:[0,1,5],close:[0,5],cmake:0,cmap:9,code:[0,1,2,4,5,6,7,9],coincid:7,col:5,collect:[2,5],collim:3,color:9,colorbar:9,colormap:9,colour:9,column:[1,4,5,9],column_wise_compat:5,com:[0,2,5,6,9],comment:0,common:3,commonli:1,commut:[1,5],compar:9,comparison:[5,9],compat:[1,4,5,6,8],complex128:1,complex:[1,5],compli:0,complianc:0,compon:[5,7,8],composed_with_adjoint:5,composit:2,compositionoper:5,compress:4,compressed_data:4,compris:[3,5],comput:[5,6,8],computation:5,computer:5,concret:5,conda:0,conda_prefix:0,condit:[0,5,9],cone2d:2,cone3d:2,cone:[1,2,6,7,9],config:[0,4],configpars:4,configur:[0,2,4,5,6,7,8],conjug:[1,5,6],consecut:5,consequenti:9,consid:[2,3,5],consist:[1,5],constant:[5,6,7],constant_valu:7,constantfunct:5,constrain:5,constraint:[5,6],construct:[2,4,5,8],constructor:5,contain:[0,2,3,4,5,7,8,9],content:[4,5],continu:5,contract:9,contribut:[2,5,7],contributor:9,control:[0,5,8],convent:[2,3,5],converg:5,convert:[2,9],convex:[5,6],convex_conjug:[5,6],coordin:9,copi:[0,1,5],copyright:[0,9],core:[0,2,3,5],correct:[1,5,7,8],corrector:2,correl:[5,7],correlation_spac:5,correspond:[4,5,7,9],corrupt:9,cosin:8,costli:5,could:[1,5],counter_offset:4,courtesi:[4,5],cpu:[5,6],creat:[0,1,3,4,5,7,8,9],create_cone2d:[1,6],create_cone3d:[1,6],create_local_env_for_cil_development_test:0,create_parallel2d:1,create_parallel3d:1,creation:5,creator:[2,5,6],criteria:7,criterion:[5,6],crop:[4,7],cross:7,cubic:7,cuda:6,current:[0,1,5],custom:[5,8],customis:[6,8],cut:8,cutoff:8,damag:9,dark:7,dark_field:7,data:[2,4,5,6,8],data_bin:7,data_centr:7,data_channel0:9,data_channel1:9,data_dir:9,data_pad:7,data_rang:9,data_sl:7,data_typ:4,datacontain:[2,4,5,6,7,9],datacontainer0:1,datacontainer1:1,dataexampl:[8,9],dataord:2,dataprocessor:2,dataset:[0,1,2,3,4,6,7,8],date:2,davi:8,dc1:9,dc2:9,dcmake_install_prefix:0,dealloc:5,deblur:5,debug:7,decnum:7,decompos:5,deep_copi:1,def:[0,5],defin:[1,2,3,4,5,6,7,9],definit:[0,3,5,6],degre:[1,6,7,9],delattr:5,delplanck:5,delta:5,delta_dark:7,delta_flat:7,demo:[3,5],denois:5,denot:5,dens:5,depend:[0,3,4,7],deprec:[1,5,7],depth:4,deriv:[5,9],descent:5,describ:[1,3,4,5,6],descript:[3,6,7,8],design:[3,5],desir:[5,7],desiri:7,dest_sel:4,destin:4,detail:[1,2,7],detect:7,detector:[1,3,4,7,8],detector_direction_i:1,detector_direction_x:1,detector_i:1,detector_posit:1,detector_x:1,determin:[1,6],devaiat:7,devel:2,develop:[2,3,5],deviat:[7,9],devic:6,diag:5,diagon:5,diagonaloper:5,diamond:2,dict:[4,5,7],dictionari:[1,4,7],differ:[2,3,5,6,7,9],differenti:5,digaonaloper:5,dimens:[0,1,4,5,6,7,9],dimension:[5,9],dimension_label:[1,5,7],dir:5,direct:[1,4,5,6,9],direct_method:6,direct_onli:5,direction0:9,direction1:9,directli:[1,4,5,7],directori:[0,4,9],discard:5,disclaim:9,discord:2,disk:4,displai:[2,3],distanc:[1,3,5,9],distribut:[0,5,9],divid:[0,1,5,7],divis:[1,5,7],doc:[0,4,5,7],docs_environ:0,docstr:2,document:[6,9],doe:[0,1,5,6,7,9],doi:[2,5,7],domain:[5,8,9],domain_geometri:5,domain_init:5,domin:5,done:[1,5],dot:[1,5],dot_test:5,doubl:7,down:9,download:5,downsampl:7,dset_path:4,dtype:[1,4,5,6,9],dual:5,dualiti:5,due:[5,7],dure:[0,1,5],dynam:[2,5],each:[0,1,4,5,7,9],earli:5,earlier:6,easiest:0,easili:5,edg:[1,7],edoardo:5,edu:5,effect:5,ehrhardt:5,eigenvalu:5,eigenvector:5,either:[0,3,5,7,9],element:[1,4,5,7],elev:9,elif:0,els:[0,6],email:0,embed:0,emiss:5,emit:3,emploi:2,empti:1,enabl:2,enclos:0,end:[0,3,4,5,7],end_valu:7,endors:9,enforc:[2,5],engin:[1,5],enough:2,ensur:7,entri:4,env:0,environ:0,environment_nam:0,epsilon:5,eqnarrai:5,equal:[1,5,6,9],equival:[3,4,5],erfcinv:7,erni:5,error:[1,7,9],essenti:0,esser:5,estim:7,estimate_normalised_error:7,eta:[5,6],euclid:5,euclidean:[1,5],eval:4,evalu:5,evangelo:5,evelina:5,even:[1,5,9],event:[5,9],everi:[5,7,9],everyth:4,evolv:0,exact:[4,5],exampl:[1,4,5,6,7,8,9],except:0,excess:0,exclus:[7,9],execut:5,exemplari:9,exist:5,exp:1,expect:[1,7],expens:5,explicit:5,explicitli:9,expon:7,expos:9,express:[0,1,3,5,9],ext:5,extend:[5,7,9],extens:4,extract:[4,9],extrapol:7,f_1:5,f_i:5,f_n:5,fact:[1,4,5],factor:[3,4,7],fail:[1,5],fals:[0,1,4,5,7,8,9],fan:2,fanbeam:2,fardel:5,fashion:5,fast:[5,6],faster:5,favour:0,fbp:[0,1,2,3,7],fdk:[2,3,6,7],fdk_cuda:6,feldkamp:8,fft:8,fft_order:8,fgp:[5,6],fgp_dtv:6,fgp_tv:6,fidel:[3,5],field:[0,3,7],figsiz:9,figur:9,file:[0,2,3,5],file_nam:4,filenam:[4,9],fill:[0,1,4,6,7,8],filter:[3,6,8],filter_inplac:0,find:[0,5,7],fine:7,finit:5,finitedifferenceoper:5,first:[3,4,5,6,7,9],firstli:[2,5],fista:2,fit:[1,5,7,9],fix:5,fix_rang:9,flag:5,flat:7,flat_field:7,flatten:[5,7],flip:4,fliplr:4,float32:[1,4,5,6],float64:1,fname:4,folder:[0,4],follow:[0,1,4,5,7,8,9],fontsiz:9,forc:1,fork:7,form:[3,5,8,9],format:[0,3],format_spec:5,formatt:5,formul:[2,5],formula:5,forth:5,forward:[5,6],forward_project:6,found:[2,5,9],fourier:8,frac:[3,5,6],frame:1,framework:[2,4],frequenc:8,frequency_cutoff:8,from:[1,2,3,4,5,6,8],fromfil:4,full:[0,3,4,8],fulli:[0,4],fundament:5,further:[0,2,5,8],futher:[6,8],futur:5,gamma:[5,6],gamma_fconj:5,gamma_g:5,gantri:3,gap:[5,7],gaussian:9,gemma:5,gener:[0,1,2,4,5,6,9],generalis:[5,6],genericlli:5,geometr:6,geometri:[0,2,4,5,6,7],geometry_bin:7,geometry_sl:7,geq1:5,geq2:5,get:[4,5,8,9],get_as_list:5,get_data_axes_ord:1,get_data_offset:4,get_data_scal:4,get_dataset_metadata:4,get_dimension_axi:1,get_filter_arrai:8,get_geometri:4,get_imagedata:6,get_imagegeometri:[0,1,6],get_input:1,get_item:[1,5],get_last_loss:5,get_last_object:5,get_metadata:4,get_norms_as_list:5,get_ouput:[6,7],get_output:[1,5,6,7],get_output_shap:5,get_roi:4,get_slic:[1,9],getattr:5,getlogg:7,git:[0,2],github:[0,2,5,6,9],give:[1,3,7],given:5,global:[5,9],gm_domain:5,gm_rang:5,goal:3,good:9,govern:0,gpu:6,gradient:[5,6],gradientoper:2,grai:9,greater:[1,8],greatli:3,grid:9,ground_truth:9,group:[4,5],guarante:5,guess:5,guid:[2,5],guidelin:2,hadamard:5,half:[5,7],ham:8,handl:[1,2,3,8],hann:8,happen:1,hard:7,hardwar:8,has:[0,1,3,4,5,6,7],hash:5,have:[0,1,3,4,5,7,8],hdf5:2,hdf5_util:4,hdl:8,height:9,held:1,help:[0,5,6],helper:5,henc:5,here:[0,5],hereof:5,high:[2,5],higher:[8,9],highli:[5,8],hold:[1,5,7],home:[1,4,5,6,7,8,9],horizont:[1,4,7],horizontal_i:[1,5,7,9],horizontal_x:[1,5,7,9],hotdog:9,how:5,howev:[4,5,9],html:[0,4,5,7,9],http:[0,2,4,5,6,7,8,9],hybrid:5,i_0:4,ideal:7,ident:5,identifi:[0,7],identityoper:5,ieee:5,ignor:[5,6,7],illustr:3,ima:7,imag:[0,2,3,4,5,6,7,8],image_geometri:[0,4,6,8,9],image_sharp:7,imagedata:[0,2,3,5,6,7,8,9],imagegeometri:[2,3,4,5,6,7,8,9],implement:[2,5],impli:[0,9],impos:[3,5],in_plac:1,inch:9,incid:[3,7],incident:9,includ:[1,5,7,9],inclus:7,incorpar:6,incorrect:7,increas:[5,8],independ:[1,4,5],index:[1,4,5,7],indic:[1,2,4,7,8],indicatorbox:5,indirect:9,individu:5,industri:5,inequ:5,inexact:5,inf:[5,7],infin:5,infinit:5,influenc:3,info:[4,5,6,7],inform:[0,1,2,4,5,6,7,9],infrastructur:5,infti:5,ingredi:5,inherit:[1,5],ini:4,inifnam:4,initi:[4,5,6,7,9],initial_angl:1,initial_bin:7,initialis:[1,4,5,7],inlin:5,inner:[1,5],innov:0,inpaintingand:5,inplac:8,input:[0,1,2,5,6,7,8,9],insid:[1,5],instal:[0,5,6],instanc:[0,1,4,5],instanti:[1,5],instead:[0,5,7,9],instruct:0,instrument:[3,7],integ:[5,6,7,9],intend:5,intens:7,interact:[2,5],interest:[1,7],intermedi:9,intern:[1,4],interpoalt:7,interpol:[6,7],interpret:[5,7,8],interrupt:9,intersect:6,interv:[5,9],introduct:2,intuit:9,invers:5,invok:5,iop:6,iopscienc:6,ipywidget:9,irrespect:5,is_compat:[1,5],is_fortran:4,is_linear:5,is_provably_converg:5,is_virtu:4,islic:2,isotrop:[5,6],issubclass:5,ista:2,iter:[3,5,6,9],its:[0,5,9],itself:[0,5],jakob:5,januari:5,join:2,journal:5,json:4,julian:5,jun:5,jupyt:9,just:1,k_i:5,kak:5,keep:[5,9],kei:[0,1,4,7],keyward:5,keyword:[1,5],kind:0,kinemat:7,kingdom:0,kl_div:5,kmax:5,knowledg:[3,5],known:5,kress:8,kullback:5,kullbackleibl:2,kwarg:[0,1,5,6,7,9],l11:2,l1norm:5,l21:2,l2norm_:5,l2normsquar:5,lab:3,label:[1,4,5,9],ladmm:2,lagrangian:5,lak:[6,8],lambert:7,langl:[5,6],languag:[0,6],larg:[1,5],larger:5,largest:5,last:[5,7],law:[0,7],layout:4,lead:[4,7],least:[1,2,3],leastsquar:5,left:[1,4,5,9],leftrightarrow:[5,6],legend:9,leibler:5,length:[1,5,8,9],leq1:5,leq:5,less:5,let:5,level:[2,4,5,7,9],liabil:9,liabl:9,librari:[0,1,2,3,5],licens:0,light:2,like:[3,4,5],limit:[0,5,6,9],line:[4,9],line_colour:9,line_styl:9,linear:[5,7],linear_ramp:7,linearoper:5,linestyl:9,link:[0,2,5],link_islic:2,linspac:6,lionheart:5,lipschitz:5,lipshitz:5,list:[1,2,4,5,8,9],lmax:5,load:[4,9],load_data:4,load_project:4,loader:3,local:[2,9],local_var:9,localvar:9,locat:[1,7],log0:5,log10:5,log:[0,1,5,7,8],log_fil:5,logan:8,logarithm:7,look:4,loop:[4,5,7],loss:[5,7,9],lossi:4,low_val:9,lower:[5,6,7,9],lvert:5,machin:3,mad:7,mae:9,magnif:3,magnitud:5,mai:[0,1,2,5,7,8,9],mail:2,main:[2,3,5],mainli:3,maintain:9,make:[0,3,5],malcolm:5,manchest:0,mani:5,manipul:[2,3],manual:[4,9],map:[5,9],marc:5,markiewicz:5,martin:5,mask:[1,2,5],masker:7,maskgener:7,maskoper:5,master:[5,9],match:[1,5,6],materi:9,math:[1,5],mathbb:5,mathcal:5,mathemat:[2,5],mathrm:[3,5,6],matplotlib:9,matric:5,matrix:[3,5,9],matrixoper:5,matthia:5,max:[1,5,6,9],max_:5,max_iter:[5,6],max_iteration_stop_criterion:5,max_quantil:7,max_val:7,maximis:7,maximum:[1,5,6],mbox:[5,6],mean:[1,5,7,9],meant:0,measur:[3,5,7,8],median:7,medicin:5,medium:5,member:0,memori:[1,5,8],merchant:9,met:[5,9],meta:1,metadata:[2,4],method:[1,2,3,4,5,6,7,8],metric:2,midlin:7,might:5,min:[1,5,9],min_:5,min_intens:7,min_quantil:7,min_val:7,min_x:5,mingqiang:5,minim:[4,5],minimis:5,minimum:[1,5,6],minmax:9,mirror:7,misalign:7,miss:7,mix:2,mixedl11norm:5,mixedl21norm:5,mkdir:0,mode:[1,4,5,7,9],model:6,modern:8,modif:9,modifi:[1,8],modul:[3,5,6,7,8],modulu:5,moment:5,monitor:5,mop:5,mop_norm:5,more:[1,3,4,5,7,8,9],moreau:5,most:[1,5],mri:5,mse:9,multi:[2,4,5,9],multichannel:[2,5,6],multicontrast:5,multipl:[0,1,4,5,6,7,9],multiplc:5,multipli:[1,5,7],multiprocess:5,must:[0,1,4,5,7,8,9],mx1:5,my_data:4,nabla:5,name:[0,1,4,5,7,9],nan:[5,7],nbyte:4,ndarrai:[1,4,5,7,8,9],ndim:[1,4,6],nearest:7,necessari:[0,1,4],need:[0,4,5,7,9],neg:[4,5,6,7,8,9],neglig:9,neither:9,nest:[1,5,9],net:8,neumann:5,neutron:7,new_ord:1,newlin:5,next:[1,5,7,9],nexu:[2,3],nexusdataread:4,nexusdatawrit:4,nice:5,nikon:[2,3],nikondataread:4,nois:[5,9],noisy_data:5,non:[0,2,5,6],none:[0,1,4,5,6,7,8,9],nonneg:6,nor:9,norm2sq:5,norm:[1,2,6],normal:[1,5],normalis:[2,4],notat:5,note:[4,5,6,7,8,9],notebook:3,noth:5,notic:[4,5,9],notimpl:5,nov:5,now:[3,5,6],num_batch:1,num_channel:1,num_chunk:0,num_col:9,num_model:6,num_pixel:1,num_pixels_h:1,num_pixels_v:1,num_thread:[1,5],numba:5,number:[1,2,3,4,5,6,7,9],number_of_dimens:1,numer:1,numpi:[1,4,5,7,8,9],numpy_vers:0,numpydoc:0,nx1:5,nxs:4,object:[1,2,3,4,5,7],objective_funct:5,obtain:[0,4],occur:9,off:[5,8],offset:[0,1,4,6,7,8],often:0,omega:5,one:[1,2,3,5,7,9],ones:[4,5],onli:[0,1,4,5,6,7,8,9],onto:[3,5,7],op0:5,op1:5,op2:5,oper:[0,1,2,3,7],operatorcompositionfunct:5,optim:[2,5],optimis:[2,3,6,8],option:[0,1,4,5,6,7,8,9],orbit:8,order:[1,4,5,8,9],ordin:4,org:[0,2,4,5,6,7,9],orient:[0,2,5],origin:[0,1,4,5,9],original_data:4,other:[1,2,5,7,9],otherwis:[1,5,9],otim:5,our:[1,2,3,5],out:[0,1,4,5,6,7,8,9],outcom:5,outer:9,outlier:7,output:[0,1,2,4,5,7,8,9],outsid:[1,7,8,9],over:[1,5,7],overrid:5,overridden:5,overset:5,own:0,owner:0,p_i:5,pack:4,packag:[0,2,5],pad:7,pad_valu:7,pad_width:7,padder:2,page:[2,4],pair:[5,9],panel:[0,1,7],paper:2,papoutselli:[2,5],parallel2d:2,parallel3d:2,parallel:[1,2,6,7,9],param:[1,5,9],paramet:[0,1,3,4,5,6,7,8,9],parent:1,pars:4,part:[2,5,6],partial_:5,particular:[5,9],partit:1,pasca:5,pass:[0,1,5,6,7,8,9],path:[4,9],pawel:5,pbar:0,pdf:5,pdf_1:5,pdhg:2,pdhg_vs_spdhg:5,peak:9,penalis:5,pepper:9,per:[5,9],percent:9,percentag:1,perform:[1,5,7],period:5,permiss:[0,9],permit:9,permut:1,pet:5,peter:5,phantom:6,phil:2,philip:5,philosoph:5,photon:[7,8],physic:5,pickl:5,pixel:[1,3,4,6,7,8,9],pixel_num_v:0,pixel_s:1,pixel_size_h:1,pixel_size_v:1,pjm:5,place:[1,3,8],placehold:[1,5],plantagi:8,play_interv:9,pleas:[0,1,2,3,6,7],plot:9,plugin:[2,3,7],png:9,pock:5,point:[1,3,5,9],pointer:1,poisson:[5,9],poissonloglikelihoodwithlinearmodelformean:5,poorli:9,popul:7,posit:[0,1,5,6,7,8,9],positron:5,possibl:[1,5,9],power:[1,2,5,8,9],powermethod:5,practic:[5,7],pre:[2,3,5,8],precalcul:5,preced:[1,5],precondit:5,predefin:8,prefix:4,prepar:8,prepend:5,present:[1,5,9],preserv:9,preval:9,previou:[5,6,7],primal:5,principl:5,print:[0,4,5,7],print_interv:5,print_metadata:4,prior:[3,5,9],prob:5,probabl:5,problem:[2,3,5,6,9],problem_:[5,6],process:[0,1,3,5,6,7,8],processor:[1,2,3,6],procur:9,produc:9,product:[1,5,9],profit:9,progress:7,proj:5,proj_filt:0,project:[2,3,4,5,7,8],projecteuclid:5,projection_index:7,projectionoper:6,projector:[3,6,8],promot:9,prompt:5,proper:9,properti:[1,2,5],proport:9,protect:0,protocol:5,prototyp:[2,5],provabl:5,provid:[0,1,2,3,4,5,6,7,8,9],prox:[5,6],prox_:5,proxim:[5,6],proximal_conjug:5,pseudo:9,psnr:9,purpos:[5,9],pydata:0,pyplot:9,python2:[1,5],python3:0,python:[2,5,7],python_vers:0,qeq0:6,quad:5,quadrat:[5,7],qualiti:[2,3],quality_measur:9,quantil:7,quarter:7,r_1:3,r_2:3,rad:8,radia:2,radian:1,radiat:3,radiu:1,rai:[1,3,6],rainbow:9,rais:[0,1,5],ral:5,ram:[6,8],ramp:7,random:[1,5,9],random_int:1,random_nois:9,random_permut:1,rang:[0,5,6,7,8,9],range_geometri:5,range_init:5,rangl:[5,6],rapid:[2,5],rare:9,rasch:5,rate:5,rather:[5,7],ratio:[6,9],raw:2,rawfilewrit:4,ray_direct:1,reach:[3,5,6],read:[2,7],read_arrai:4,read_as_acquisitiondata:4,read_as_imagedata:4,read_as_origin:4,read_data:4,read_dtyp:4,read_resc:4,read_scale_offset:4,read_shap:4,read_to:4,reader:[2,3],real:[1,2,3,5],recal:5,receiv:5,recognis:[3,5],recommend:[7,8],recon:[0,2,3],reconstruct:[0,1,2,3,4,5,6,7],reconstructor:[0,2,3,6],recov:5,rect:8,recurs:[0,4],redistribut:9,reduc:[1,3,5,8,9],reduct:1,refer:[0,1,2,3,4,6,7,8,9],referenc:[0,1,6,7,8],reflect:[5,7],region:7,regular:5,regularis:[2,3,5],rel:[5,6,7],relat:[1,5],relax:5,relev:4,remain:7,remaind:0,remov:2,reorder:1,repeat:5,replac:[0,9],repo:0,repositori:[2,3],repositoryy:5,repr:5,repres:[1,4,5,7,9],reproduc:[2,9],request:[0,1,4,7,8,9],requir:[0,1,5,6,7,8],rescal:[4,6],rescaled_data:4,research:0,reserv:9,reset:8,reshap:[4,5],resid:4,resolut:[1,7],resolution_chart:9,resort:1,respect:[1,3,4,5,7,9],rest:5,restart:5,restor:5,resul:[1,5],result:[1,2,3,4,5,6,7,8,9],ret:0,retain:9,return_al:5,revers:[1,5],rewritten:5,rgensen:5,right:[1,4,5,9],rightarrow:5,ring:2,ringremov:7,rof:5,roi:[4,7],roll:7,root:[4,5],rosenbrock:5,rotat:[1,2,3,6],rotation_axis_direct:1,rotation_axis_posit:1,round:9,routin:[5,8],row:[0,1,3,4,5],row_wise_compat:5,royal:5,royalsocietypublish:5,rsta:[2,5],rule:5,run:[0,1,5,6,7,8],rvert_:5,ryan:5,s10107:5,s10589:5,s10851:5,saddl:5,sai:5,salt:9,salt_vs_pepp:9,same:[0,1,4,5,6,7,9],sampl:[3,5],sapyb:[1,5],satisfi:5,save:[3,4,5,9],savefig:9,scalar:[1,5,6],scale:[2,4,5,7,9],scaledfunct:5,scaledoper:5,scaleoffset:4,scan:[3,7],scatter:[3,5],schemat:9,schonlieb:5,scienc:5,scikit:9,scikit_random_nois:9,scipi:5,screen:5,script:0,search:[7,9],search_rang:7,second:[3,5,7,9],secondli:2,section:[4,5],see:[0,1,5,6,7,9],seed:[1,5,9],select:[3,4,8,9],selector:9,self:[0,1,5,6,8],sensibl:4,separ:[0,5,9],sequenti:[1,9],serial:5,serv:0,server:0,servic:9,set:[0,1,2,4,5,6,7,8],set_:0,set_angl:[1,6],set_channel:[1,6],set_fft_ord:8,set_filt:8,set_filter_inplac:8,set_gamma_fconj:5,set_gamma_g:5,set_image_geometri:8,set_input:[1,6,7,8],set_label:1,set_norm:5,set_num_thread:5,set_panel:[1,6],set_relaxation_paramet:5,set_split_process:[0,8],set_step_s:5,set_suppress_evalu:5,set_up:[4,5],setattr:5,setlevel:7,setter:2,sever:7,sgn:5,shall:9,shape:[0,1,4,5,9],share:5,sharp:7,shepp:8,shift:5,shinkoper:5,shortcut:4,shorter:5,should:[0,1,4,5,6,7,8,9],should_stop:5,show1d:2,show2d:2,show:9,show_geometri:2,shown:9,shrinkag:5,siam:5,siddon:6,side:7,sigma:[5,7],sigma_1:5,sigma_:5,sigma_iw_i:5,sigma_iw_ix_i:5,sign:[1,5,9],signal:9,signatur:[5,6],signific:3,simpl:[0,2,6,8],simple_phantom_2d:9,simpli:3,simplifi:5,simul:[2,3,5],simulated_cone_beam_data:[8,9],simulated_parallel_beam_data:[8,9],simulated_sphere_volum:9,simultan:5,singl:[1,3,4,5,7,8,9],singular:5,sinogram:[1,7],sirf:5,sirt:2,size:[0,1,4,5,6,7,9],skimag:9,skip:4,slanei:5,slice:[1,2,3,4,7,8],slice_index:7,slice_list:9,slice_metadata:4,slice_numb:9,slicer:2,slices_per_chunk:[0,8],slider:9,slight:7,small:[0,5,6,9],smooth:[2,6],smoothmixedl21norm:5,soc:2,societi:5,softwar:[0,5,9],softx:6,sol:[5,6],solut:[3,5,6],solv:[2,3,5,9],some:[5,7],some_data:1,someth:4,soon:5,sop:5,sort:1,sourc:[1,2,3,4,5,6,7,8],source_posit:1,source_sel:4,space:[5,6],spacechannel:5,spars:5,sparsefinitedifferenceoper:5,spatial:[1,5,7],spdhg:2,special:[5,7,9],special_valu:7,specif:[0,4,5,9],specifi:[1,4,5,7,9],speckl:9,spectral:[2,3,5],sphere:9,sphinx:0,split:[5,8],springer:[5,8],sqrt:[1,5,6,7],squar:[1,2,3,9],squared_norm:1,stabl:[4,7,9],stack:[4,7],stage:3,stagger:1,standard:[1,3,4,7,8,9],stanford:5,start:[0,4,5,7,9],statement:7,stationari:3,statist:8,statu:5,std:7,step:[0,3,4,5,6,7],step_siz:5,stephen:5,sting:1,stochast:5,stop:[5,6,7],store:[0,1,5],store_output:1,str:[1,4,5,6,7,9],strategi:5,strict:9,strictli:5,stride:1,string:[1,4,5,6,7,8,9],stripe:7,strong_convexity_const:[5,6],strongli:[5,6],structur:5,style:[0,7],sub:6,subclass:[1,4,5],subject:5,submodul:0,subplot:9,subproblem:5,subsequ:5,subset:5,substitut:9,subtract:[1,5],suffici:3,suit:3,suitabl:[0,1,7],sum:[1,5],sum_:5,sumfunct:5,sumscalarfunct:5,sup:[5,6],support:[5,7],suppress:[0,1,5,6,7,8,9],suppress_evalu:5,sure:[0,5],swap:5,symmetr:[5,7],symmetrisedgradientoper:5,sync:5,synchrotron:3,synchrotron_parallel_beam_data:9,syntax:0,system:[1,2,3,5],system_descript:0,tabul:5,take:[1,4,5,7,8],target:[0,7],task:6,tau:[5,6],tau_:5,team:9,teboul:5,techniqu:[3,5],tempor:[5,6],temporari:8,temporarili:9,term:[3,5,6],test:[0,2,3,5],testdata:9,text:[0,4,5],textbf:5,tgv:6,than:[4,5,6,7,8],thei:[0,1,5,7,9],them:[4,5,9],theme:0,theoret:7,theori:9,therefor:[1,5,6],theta:5,theta_:5,thi:[0,1,3,4,5,6,7,8,9],thieleman:5,thoma:5,those:1,thread:[1,5],three:[3,5],threshold:[5,7],threshold_factor:7,threshold_valu:7,through:[4,9],tiff:[2,9],tiffstackread:4,tiffwrit:4,tigr:[1,2,3,7,8],tikhonov:[3,5],tild:[3,5],time:[0,3,5,8,9],tip:5,titl:9,tmp_nexu:4,tnv:6,tofil:4,togeth:[4,7],toggl:5,toler:[5,6,7],tomograph:[1,2,5],tomographi:[2,5,8],tomographicimag:[0,2],tomophantom:[2,3],toni:5,too:8,tool:3,toolbox:[6,8],toolkit:[3,6],top:[1,9],tort:9,tot_slic:0,total:[0,2],totalvari:[5,6],tqdm:0,trade:5,trajectori:[3,6],tran:2,transact:5,transform:8,translat:[5,7],translatefunct:5,transmiss:[2,3],transmissionabsorptionconvert:7,transpos:[4,5],treat:5,trigger:5,trivial:2,truedivis:5,tune:[7,8],tupl:[1,4,5,7,9],turner:5,two:[1,5,7,8,9],twx:5,txm:4,txrm:4,type:[0,1,3,4,5,6,7,8,9],typic:[3,5],uint16:4,uint8:4,unari:[1,5],unary_oper:[1,5],unbin:7,unchang:5,uncompress:4,under:[0,5],underbrac:5,underscor:0,underset:[3,5,6],understand:0,unexpect:9,uniform:[1,9],uniqu:[1,9],unit16:4,unit:[0,1,5],univers:0,unknown:[3,5],unless:[0,7],unmask:7,unpack:4,unreli:7,unsign:[4,9],until:5,updat:[0,5,7,8],update_object:5,update_objective_interv:5,update_step_s:5,upper:[5,7,9],url:5,usag:[5,6,7],use:[0,1,2,3,5,6,7,8,9],used:[0,1,2,3,4,5,6,7,8,9],useful:[1,2,5],user:[0,1,3,5,7,8],uses:[5,6,7,9],using:[0,1,3,4,5,6,7,8,9],util:[2,3,5,8],vai:5,valid:9,valu:[1,4,5,7,8,9],valueerror:[0,5],vararg:5,variabl:5,varianc:9,variat:2,variou:9,vaue:7,vector:[1,5,7],vectordata:2,verbos:[0,5,8],verbose_output:5,veri:5,versatil:[2,5],version:[0,5,6],vertic:[1,4,7],via:5,view:[0,1,3,9],view_dist:9,vision:5,visualis:2,vmatrix:[3,5],volum:[0,1,2,4,5,6,7,8],voxel:[5,6],voxel_num_i:1,voxel_num_x:1,voxel_num_z:1,voxel_size_i:1,voxel_size_x:[1,6],voxel_size_z:1,wai:[0,1,5,9],want:[1,5],warm:5,warm_start:5,warn:7,warr:5,warranti:[0,4,9],weak:5,web:5,websit:2,weight:[5,6],weightedl2normsquar:5,well:[2,3,5],were:7,wether:5,what:[0,4,5],when:[0,3,4,5,6,9],where:[1,3,5,7,9],wherea:5,whether:[1,4,5,6,9],which:[1,3,4,5,7,9],whichev:[1,8],white:4,white_level:7,whole:1,widget:9,width:[7,8,9],william:5,window:7,wise:[1,5],wither:5,within:0,without:[0,4,5,7,9],wname:7,word:0,work:[0,1,3,4,5],would:[4,5],wrap:[5,7],wright:5,write:[0,2,3,5],writer:[2,3],written:[3,4,5,6,9],wrt:5,www:0,x_0:5,x_1:5,x_axis_label:9,x_i:5,x_k:5,x_n:5,xcorrel:7,xiaoqun:5,xin:5,xremovestripesvert:7,xshape:5,xtekct:4,y_axis_label:9,year:0,yet:5,yield:[5,8],yml:0,you:[0,2,4,7],your:[0,6,7,8],yyyi:0,zeiss:2,zeissdataread:4,zero:[1,5,7],zerofunct:5,zerooper:5,zhang:5,zhu:5},titles:["Developers\u2019 Guide","Framework","Welcome to CIL\u2019s documentation!","Introduction","Read/ write AcquisitionData and ImageData","Optimisation framework","CIL Plugins","Processors","Recon","Utilities"],titleterms:{"class":5,"function":[5,6],"new":0,Use:1,absorpt:7,acquisitiondata:[1,4],acquisitiongeometri:1,algorithm:5,analyt:8,astra:6,base:5,beam:[3,8],binner:7,block:[3,5],blockdatacontain:[1,5],blockgeometri:1,box:5,build:0,ccpi:6,centr:7,cgl:5,channel:3,cil:[0,2,6],cite:2,composit:5,cone2d:1,cone3d:1,cone:[3,8],configur:1,contact:2,contain:1,content:2,contribut:0,convent:0,convert:7,corrector:7,creator:0,data:[1,3,7,9],datacontain:1,dataord:1,dataprocessor:1,dataset:9,demo:2,develop:0,diamond:9,displai:9,docstr:0,document:[0,2],exampl:[0,2],fan:3,fanbeam:1,fbp:[6,8],fdk:8,file:4,fista:5,framework:[1,3,5],from:[0,7,9],gener:7,geometri:[1,3,8,9],gradientoper:5,guid:0,guidelin:0,hdf5:4,imag:9,imagedata:[1,4],imagegeometri:1,index:[2,9],indic:5,interact:9,introduct:3,islic:9,ista:5,kullbackleibl:5,l11:5,l21:5,ladmm:5,least:5,light:9,link:9,link_islic:9,local:0,manipul:7,mask:7,method:0,metric:9,mix:5,multi:3,nexu:4,nikon:4,norm:5,normalis:7,object:[0,9],oper:[5,6],optimis:5,other:[0,6],padder:7,parallel2d:1,parallel3d:1,parallel:[3,8],pdhg:5,plugin:6,pre:7,processor:7,project:6,properti:0,qualiti:9,raw:4,read:4,reader:4,recon:8,reconstruct:8,reconstructor:8,refer:5,regularis:6,remov:7,render:0,ring:7,rotat:7,set:9,setter:0,show1d:9,show2d:9,show_geometri:9,simpl:5,simul:9,sirt:5,slice:9,slicer:7,smooth:5,softwar:2,sourc:[0,9],spdhg:5,squar:5,system:9,test:9,thi:2,tiff:4,tigr:6,todo:5,tomophantom:6,total:[5,6],transmiss:7,trivial:5,util:[4,9],variat:[5,6],vectordata:1,visualis:9,volum:9,welcom:2,work:2,write:4,writer:4,zeiss:4}}) \ No newline at end of file