diff options
-rw-r--r-- | Wrappers/Python/ccpi/optimisation/functions/FunctionComposition.py | 60 | ||||
-rw-r--r-- | Wrappers/Python/ccpi/optimisation/functions/functions.py | 3 |
2 files changed, 5 insertions, 58 deletions
diff --git a/Wrappers/Python/ccpi/optimisation/functions/FunctionComposition.py b/Wrappers/Python/ccpi/optimisation/functions/FunctionComposition.py index 5b6defc..f24dc10 100644 --- a/Wrappers/Python/ccpi/optimisation/functions/FunctionComposition.py +++ b/Wrappers/Python/ccpi/optimisation/functions/FunctionComposition.py @@ -7,9 +7,11 @@ Created on Wed Mar 6 19:45:06 2019 """ import numpy as np -from ccpi.optimisation.funcs import Function +#from ccpi.optimisation.funcs import Function +from ccpi.optimisation.functions import Function from ccpi.framework import DataContainer, ImageData, ImageGeometry from ccpi.framework import BlockDataContainer +from ccpi.optimisation.functions import BlockFunction class FunctionOperatorComposition(Function): @@ -51,63 +53,7 @@ class FunctionOperatorComposition(Function): return self.adjoint(self.function.gradient(self.operator.direct(x))) -class BlockFunction(Function): - - def __init__(self, operator, *functions): - - self.functions = functions - self.operator = operator - self.length = len(self.functions) - - super(BlockFunction, self).__init__() - - def __call__(self, x): - - tmp = operator.direct(x) - - t = 0 - for i in range(tmp.shape[0]): - t += self.functions[i](tmp.get_item(i)) - return t - - def call_adjoint(self, x): - - tmp = operator.adjoint(x) - - t = 0 - for i in range(tmp.shape[0]): - t += self.functions[i](tmp.get_item(i)) - return t - - def convex_conjugate(self, x): - - ''' Convex_conjugate does not take into account the BlockOperator''' - t = 0 - for i in range(x.shape[0]): - t += self.functions[i].convex_conjugate(x.get_item(i)) - return t - - - def proximal_conjugate(self, x, tau, out = None): - - ''' proximal_conjugate does not take into account the BlockOperator''' - out = [None]*self.length - for i in range(self.length): - out[i] = self.functions[i].proximal_conjugate(x.get_item(i), tau) - - return CompositeDataContainer(*out) - - def proximal(self, x, tau, out = None): - - ''' proximal does not take into account the BlockOperator''' - out = [None]*self.length - for i in range(self.length): - out[i] = self.functions[i].proximal(x.get_item(i), tau) - return CompositeDataContainer(*out) - - def gradient(self,x, out=None): - pass class FunctionComposition_new(Function): diff --git a/Wrappers/Python/ccpi/optimisation/functions/functions.py b/Wrappers/Python/ccpi/optimisation/functions/functions.py index f40abb9..8632920 100644 --- a/Wrappers/Python/ccpi/optimisation/functions/functions.py +++ b/Wrappers/Python/ccpi/optimisation/functions/functions.py @@ -9,7 +9,8 @@ Created on Thu Feb 7 13:10:56 2019 """ import numpy as np -from ccpi.optimisation.funcs import Function +#from ccpi.optimisation.funcs import Function +from ccpi.optimisation.functions import Function from ccpi.framework import DataContainer, ImageData, ImageGeometry from operators import CompositeDataContainer, Identity, CompositeOperator from numbers import Number |