def __init__(self, functions): """Functions must currently be a tuple or list with two projection operators. """ self.functions = functions # from algorithms import ProjectionADMM # self.proj_op = ProjectionADMM() from parsimony.algorithms.explicit import DykstrasProjectionAlgorithm self.proj_op = DykstrasProjectionAlgorithm()
class CombinedProjectionOperator(Function, ProjectionOperator): def __init__(self, functions): """Functions must currently be a tuple or list with two projection operators. """ self.functions = functions # from algorithms import ProjectionADMM # self.proj_op = ProjectionADMM() from parsimony.algorithms.explicit import DykstrasProjectionAlgorithm self.proj_op = DykstrasProjectionAlgorithm() def f(self, x): val = 0 for func in self.functions: val += func.f(x) return val def proj(self, x): """The projection operator corresponding to the function. From the interface "ProjectionOperator". """ proj = self.proj_op.run(self.functions, x) return proj